最近在研究用three.js创建3D场景,有个地形模型,obj格式的,原始大小6.9mb。加载的时候偏慢,遂考虑压缩模型的方式,找了一圈,发现threejs已经提供了一个工具,使用python执行就能把obj文件转成二进制文件。我使用过后得到的文件大小降为3.3mb,太爽了(再加一句,转成json文件是6.7mb)。
完整的命令方式在这里
https://github.com/mrdoob/three.js/blob/master/utils/converters/obj/convert_obj_three.py
具体使用方法可以百度,网上有很多帖子,就不再赘述了。
加载的时候使用THREE.BinaryLoader方法来加载模型,接受两个参数(geometry,materials),分别是模型和材质。materials还是个数组,用于接收多种材质的。代码如下:
var loader = new THREE.BinaryLoader();
loader.load(url, function( geometry,materials ) {
........
转换没遇到问题,在贴图的时候遇到问题,因为我的模型还有个贴图,当我加载完成把模型放入场景后发现贴图被拉伸了,变成了这个样子