我只有有限的javascript技能,我可以让基本的东西在三个in中工作。现在,我正在与draco导出器进行斗争。
@ Threejs.org有一个example of the Draco exporter
此示例使用生成的网格,并且工作正常:
// export mesh
var geometry = new THREE.TorusKnotBufferGeometry( 50, 15, 200, 30 );
var material = new THREE.MeshPhongMaterial( { color: 0x00ff00 } );
mesh = new THREE.Mesh( geometry, material );
mesh.castShadow = true;
mesh.position.y = 25;
scene.add( mesh );我可以导入.obj,这也很好用
new OBJLoader()
.setPath( '../models/mymodel/' )
.load( 'mymodel.obj', function ( mesh ) {
mesh.traverse( function ( child ) {
if(child.name=='mymodel_part1'){
child.material = Material1;
}
if(child.name=='mymodel_part2'){
child.material = Material2;
}
if(child.name=='mymodel_part3'){
child.material = Material3;
}
} );
scene.add( mesh );
} );现在我想导出网格,但是这不起作用,我得到一个"TypeError: mesh is undefined“。
所以类型是不正确的,但是它应该是什么,我该如何改变它呢?
发布于 2020-07-03 21:48:09
问题是OBJLoader.load()不会生成THREE.Group的一个实例,而不是一个组。因此,您必须首先确定组的后代中的正确网格。但是,这取决于资源,因为OBJ文件可以包含多个网格定义。我准备了一个活生生的例子来演示这个工作流程。重要的代码部分是:
var loader = new OBJLoader();
loader.load( 'https://threejs.org/examples/models/obj/tree.obj', function ( obj ) {
scene.add( obj );
mesh = obj.children[ 0 ];
} );https://stackoverflow.com/questions/62716147
复制相似问题