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
Javascript 具有对象材质的threejs线框_Javascript_Three.js - Fatal编程技术网

Javascript 具有对象材质的threejs线框

Javascript 具有对象材质的threejs线框,javascript,three.js,Javascript,Three.js,我想获取从objmtloder加载的对象的线框,因此这里的代码如下所示 var loader = new THREE.OBJMTLLoader(); loader.load( 'obj/male02/male02.obj', 'obj/male02/male02_dds.mtl', function ( object ) { object.traverse( function ( child ) {

我想获取从
objmtloder
加载的对象的线框,因此这里的代码如下所示

var loader = new THREE.OBJMTLLoader();
                loader.load( 'obj/male02/male02.obj', 'obj/male02/male02_dds.mtl', function ( object ) {

                    object.traverse( function ( child ) {

                    if ( child instanceof THREE.Mesh )
                    {
                    child.geometry.computeFaceNormals();
                    var  geometry = child.geometry;
                    console.log(geometry);
                    geometry.dynamic = true;
                    material = new THREE.MeshLambertMaterial();
                    mesh = new THREE.Mesh(geometry, material);
                    scene.add(mesh);

                    var useWireFrame = true;
                        if (useWireFrame) {
                            mesh.traverse(function (child) {
                                if (child instanceof THREE.Mesh) child.material.wireframe = true;
                            });
                        }

                    }

                    object.position.y = - 80;
                    scene.add( object );

                    });

                } );

这很好,我可以看到我的对象上的线框,不幸的是,这里我的对象材质被更改为
meshlambertmater
。但是我想用加载的对象的默认材质获得对象的线框,我可以使用threejs文档中的各种材质,但是没有一种材质会给我默认对象材质的结果,我通过添加child.material for material修复了它,所以这里是答案

loader.load( 'obj/male02/male02.obj', 'obj/male02/male02_dds.mtl', function ( object ) {

                    object.traverse( function ( child ) {

                    if ( child instanceof THREE.Mesh )
                    {
                    //child.geometry.computeFaceNormals();
                    var  geometry = child.geometry;
                    //console.log(geometry);
                    //geometry.dynamic = true;
                    material = child.material;
                     mesh = new THREE.Mesh(geometry, material);
                        scene.add(mesh);

                    var useWireFrame = true;
                        if (useWireFrame) {
                            mesh.traverse(function (child) {
                                if (child instanceof THREE.Mesh) 
                                {
                                child.material.wireframe = true;
                                child.material.color = new THREE.Color( 0x6893DE  );
                                }
                            });
                        }

                    }

                    object.position.y = - 80;
                    //scene.add( object );

                    });

这里我添加了
material=child.material
geometry=child.geometry类似而且它工作得很好

我通过为材质添加child.material来修复它,所以下面是答案

loader.load( 'obj/male02/male02.obj', 'obj/male02/male02_dds.mtl', function ( object ) {

                    object.traverse( function ( child ) {

                    if ( child instanceof THREE.Mesh )
                    {
                    //child.geometry.computeFaceNormals();
                    var  geometry = child.geometry;
                    //console.log(geometry);
                    //geometry.dynamic = true;
                    material = child.material;
                     mesh = new THREE.Mesh(geometry, material);
                        scene.add(mesh);

                    var useWireFrame = true;
                        if (useWireFrame) {
                            mesh.traverse(function (child) {
                                if (child instanceof THREE.Mesh) 
                                {
                                child.material.wireframe = true;
                                child.material.color = new THREE.Color( 0x6893DE  );
                                }
                            });
                        }

                    }

                    object.position.y = - 80;
                    //scene.add( object );

                    });
这里我添加了
material=child.material
geometry=child.geometry类似并且它工作得很好