Three.js threejs线框不适用于OBJMTLLoader

Three.js threejs线框不适用于OBJMTLLoader,three.js,Three.js,当我使用OBJMTLLoader以三个JS加载我的对象时,线框控件对于OBJLoader是单独工作的,但是对于OBJMTLLoader它不工作 var loader = new THREE.OBJMTLLoader(); loader.load( 'obj/male02/male02.obj', 'obj/male02/male02_dds.mtl', function ( object ) { object.children[

当我使用OBJMTLLoader以三个JS加载我的对象时,线框控件对于OBJLoader是单独工作的,但是对于OBJMTLLoader它不工作

var loader = new THREE.OBJMTLLoader();
                loader.load( 'obj/male02/male02.obj', 'obj/male02/male02_dds.mtl', function ( object ) {
                  object.children[0].geometry.computeFaceNormals();
                  var  geometry = object.children[0].geometry;
                          console.log(geometry);
                  THREE.GeometryUtils.center(geometry);
                  geometry.dynamic = true;
                  var material = new THREE.MeshLambertMaterial({color: 0xffffff, shading: THREE.FlatShading, vertexColors: THREE.VertexColors });
                  mesh = new THREE.Mesh(geometry, material);  
                  scene.add( mesh );
                } );



function wireframe(){
                 //alert('hhhhhh');
                 mesh.material.wireframe = true;
              mesh.material.color = new THREE.Color( 0x6893DE  );
                }
但它会导致以下错误,因此我的模型不会显示在查看器上, 所以这里我想知道我们可以在任何类型的3d模型上创建线框

对象。子对象[0]。几何体未定义


即使
objmtloader
返回一个
THREE.Object3D
对象,该对象没有
.children
,也不应假定
.children
类型为
THREE.Mesh
。因此,为了找到
THREE.Mesh
,实际上应该
traverse()
三个.Object3D

object.traverse( function ( child ) {

if ( child instanceof THREE.Mesh )

    // do something with the geometry

} );

Hi@gaitat现在我没有任何错误,但我应用了几何体和网格,但线框仍然不起作用,下面是代码对象。遍历(函数(child){if(child instanceof THREE.mesh){child.geometry.computeFaceNormals();var geometry=child.geometry;geometry.dynamic=true;}); var material=new THREE.MeshLambertMaterial({color:0xffffff,shading:THREE.FlatShading,VertexColor:THREE.VertexColor});网格=新的三个网格(几何体、材质);场景。添加(网格);在
traverse()
函数内定义
几何体
,然后在函数外使用它。这是一个范围问题。如果我在内部遍历()上使用几何体,我会得到相同的结果,如果(三个.Mesh的子实例){child.geometry.computeFaceNormals();var geometry=child.geometry;console.log(geometry);geometry.dynamic=true;var material=new THREE.MeshLambertMaterial();网格=新的三个。网格(几何体、材质);};在此JSFIDLE中,您可以更改
useWireFrame
的值以查看效果。最初,我为球体设置了材质,然后使用
traverse()
将该材质更改为线框。嘿,这很好,非常感谢您的回答,这里我们使用了MeshNormalMaterial,我们可以使用线框对象上使用的默认材质吗??