Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Colors Three.js加载单个.obj模型,如何显示顶点颜色_Colors_Three.js_.obj - Fatal编程技术网

Colors Three.js加载单个.obj模型,如何显示顶点颜色

Colors Three.js加载单个.obj模型,如何显示顶点颜色,colors,three.js,.obj,Colors,Three.js,.obj,我不熟悉Three.js(3D),有一个简单的问题。我有以下代码可以正常工作,但我认为结果失去了颜色,因为我打开了带有3D Buidler(WIN10)的test.obj文件,模型表面有很多颜色。为什么? 代码 var loader = new THREE.OBJLoader() loader.load( 'test.obj', function ( object ) { object.position.y = 0; scene.add( object );

我不熟悉Three.js(3D),有一个简单的问题。我有以下代码可以正常工作,但我认为结果失去了颜色,因为我打开了带有3D Buidler(WIN10)的test.obj文件,模型表面有很多颜色。为什么?

代码

var loader = new THREE.OBJLoader()
loader.load( 'test.obj', function ( object ) {
    object.position.y = 0;
    scene.add( object );                
} );
我想它是顶点颜色,如何显示它的顶点颜色

var loader = new THREE.OBJLoader2()
loader.load( 'test.obj', function ( object ) {
    object.position.y = 0;
    scene.add( object );                
} );
我尝试过OBJLoader2.js,但它不工作,需要一些设置吗

由Three.js加载的结果:

3D Builder加载的结果:


将.mtl文件与.obj文件一起使用

var onProgress = function ( xhr ) {
                if ( xhr.lengthComputable ) {
                    var percentComplete = xhr.loaded / xhr.total * 100;
                    console.log( Math.round(percentComplete, 2) + '% downloaded' );
                }
            };

            var onError = function ( xhr ) { };

            THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );

            //Car model
            var mtlLoader = new THREE.MTLLoader();
            mtlLoader.setPath( '../materials/car/' );
            mtlLoader.load( 'car.mtl', function( materials ) {

                materials.preload();

                var objLoader = new THREE.OBJLoader();
                objLoader.setMaterials( materials );
                objLoader.setPath( '../materials/car/' );
                objLoader.load( 'car.obj', carObject, onProgress, onError );

            });

            function carObject(object){
                object.rotation.y = 1.55;
                object.position.z = 105;
                object.position.y = 1.15;

                object.scale.x = object.scale.y = object.scale.z = 0.15;
                    //object.rotation.x = 6.5;
                    //object.position.z = 50;

                scene.add( object );
            }
            //end car model
最后我发现:
我将OBJLoader2.js的版本更改为1.3.0。

您可能需要检查材料在通过
ObjLoader加载后是如何进行保护的。您可能需要为材质指定一些值。谢谢,但我在3D Builder打开.obj文件时没有做任何操作,并且没有.mtl文件,因此不知道如何解决此问题。正如我之前指出的,OBJLoader可能丢失了一些材质参数,因此,您必须通过代码重新指定材质值。你能上传原始纹理吗?我刚刚上传了obj文件(只有一个.obj文件,很抱歉文件链接,因为我没有足够的声誉.TT)@sensensen使用
OBJLoader2.js
,你应该可以看到顶点颜色。谢谢,但是只有一个.obj文件,然后看这里[link]只有一个.obj文件,没有图片,没有.mtl文件