RPB*_*ser 4 javascript 3d three.js
您好,我试图弄清楚如何将MTL文件添加到我的OBJ中的three.js.我装载了OBJ,然后回来解决这个问题.现在当我添加要使用MTLLoader
它加载的MTL文件的代码时,它没有被传递mtlLoader.load(url, ....)
(因为在添加这些代码之后,现在只有场景被渲染而内部没有任何内容).我正在使用警报来跟踪代码的进度,并在此声明之前收到警报,但之后没有收到警报.我发现的所有解决方案都包括使用OBJMTLLoader
它不再是当前版本的three.js(r74)的一部分.
此代码取自加载obj + mtl的官方示例:
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setBaseUrl( 'obj/male02/' );
mtlLoader.setPath( 'obj/male02/' );
var url = "male02_dds.mtl";
mtlLoader.load( url, function( materials ) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( 'obj/male02/' );
objLoader.load( 'male02.obj', function ( object ) {
object.position.y = - 95;
scene.add( object );
}, onProgress, onError );
});
Run Code Online (Sandbox Code Playgroud)
http://threejs.org/examples/#webgl_loader_obj_mtl
您现在可以通过以下方式将材料分配给OBJ:
objLoader.setMaterials( materials );
如果你想操纵这些材料,mtlLoader
回调中给你的是一个实例THREE.MTLLoader.MaterialCreator
.所以你可以用materials.getAsArray()
例如材料.查看所有可能功能的来源:https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/MTLLoader.js#L138-L417