只需将材料分配给已加载的.OBJ-ThreeJS

时间:2018-08-30 18:24:35

标签: three.js loader .obj

我已经花了三个小时把自己放在头上。 我的问题是,有人会善良地重组我的示例吗,以使我加载的对象带有一种颜色,任何颜色

                var loader = new THREE.OBJLoader()
                loader.load( 'learning/exported1.obj', function ( object ) 
                {
                    object.traverse( function (child)
                    {
                        if ( child instanceof THREE.Mesh )
                        {
                            child.material.color.setHex( 0xffffff );
                        }
                    }
                    var OBJBoundingBox = new THREE.Box3().setFromObject(object);
                    OBJBoundingBox.center(object.position);
                    object.position.multiplyScalar(-1);
                    object.position.x = object.position.x;
                    object.position.y = object.position.y;
                    object.position.z = object.position.z;
                    scene.add( object );

                }, onProgress, onError );

如果我将导线部分扔掉,则对象已成功加载,但是具有简单的白色,因此该对象不会出现在屏幕上...

        <script src="../build/three.js"></script>

    <script src="js/loaders/OBJLoader.js"></script>

    <script src="js/controls/OrbitControls.js"></script>

    <script src="js/shaders/CopyShader.js"></script>
    <script src="js/shaders/SMAAShader.js"></script>

    <script src="js/postprocessing/EffectComposer.js"></script>
    <script src="js/postprocessing/SMAAPass.js"></script>
    <script src="js/postprocessing/RenderPass.js"></script>
    <script src="js/postprocessing/MaskPass.js"></script>
    <script src="js/postprocessing/ShaderPass.js"></script>

    <script src="js/libs/dat.gui.min.js"></script>  

这些是我的进口货,以防您认为问题出在这里

非常感谢,这是我正在独立开发的项目,如果可以运行,我会很喜欢的!

1 个答案:

答案 0 :(得分:0)

我觉得自己是个白痴,但是我想念的是

);

object.traverse函数结尾

var loader = new THREE.OBJLoader()
            loader.load( 'learning/exported1.obj', function ( object ) 
            {
                object.traverse( function (child)
                {
                    if ( child instanceof THREE.Mesh )
                    {
                        child.material.color.setHex( 0xffffff );
                    }
                });
                // ^This over here^
                var OBJBoundingBox = new THREE.Box3().setFromObject(object);
                OBJBoundingBox.center(object.position);
                object.position.multiplyScalar(-1);
                object.position.x = object.position.x;
                object.position.y = object.position.y;
                object.position.z = object.position.z;
                scene.add( object );

            }, onProgress, onError );

现在分配材料与此代码完全兼容。