0

我正在尝试使用 OBJLoader 导入一个 obj,但它没有正确导入

obj是这样的 - Obj img
目标图像

它正在导入这个 - 三个 js 中的 Obj
三个js中的obj

发生的事情是整个 obj 没有很好地导入。

我该怎么办?

我正在做的代码是

var objLoader = new THREE.OBJLoader();
        var mtlLoader = new THREE.MTLLoader();
            mtlLoader.setTexturePath("obj2/");
            mtlLoader.setPath(  "obj2/"  );
            mtlLoader.load( "Mules/Base_10.mtl", function( materials ) {
                materials.preload();
                objLoader.setMaterials( materials );
                objLoader.load( 'obj2/Mules/Base_10.obj', function ( object ) {

                        object.traverse( function ( child )
                        {
                            if ( child instanceof THREE.Mesh )
                            {
                                meshes.push(child);
                            }
                        });
                        var object = meshes[meshes.length-1];
                        object.position.y = -0.05;
                        object.position.x = 0;
                        object.position.z = 0;

                        object.name = "salto";
                        scene.add(object);
                    }, onProgress, onError );
            }); 

谢谢你。

4

1 回答 1

1

问题是:

                object.traverse(...);
                var object = meshes[meshes.length-1]; //<-- you overriding the object, with the last mesh. 
                object.position.y = -0.05;
                object.position.x = 0;
                object.position.z = 0;

                object.name = "salto";
                scene.add(object); //<-- than you add the object to your scene.

不要覆盖对象。此外,您不需要遍历对象,因为您会将整个对象添加到场景中。无论如何你对你的网格什么都不做:)

所以试试这个:

                object.position.y = -0.05;
                object.position.x = 0;
                object.position.z = 0;

                object.name = "salto";
                scene.add(object);
于 2018-08-22T13:52:51.260 回答