你好,我正在尝试在three.js中将MTL文件添加到我的OBJ模型中。我已经加载了OBJ模型并准备解决这个问题。但是,当我添加了使用MTLLoader
加载MTL文件的代码后,它没有通过mtlLoader.load(url, ....)
(即在添加了这段代码之后,只有场景被渲染而里面什么都没有)。我正在使用警报来跟踪代码的进度,并且在此语句之前收到了警报,但之后没有收到。我找到的所有解决方案都包括使用OBJMTLLoader
,但它不再是当前版本(r74)的three.js的一部分。
你好,我正在尝试在three.js中将MTL文件添加到我的OBJ模型中。我已经加载了OBJ模型并准备解决这个问题。但是,当我添加了使用MTLLoader
加载MTL文件的代码后,它没有通过mtlLoader.load(url, ....)
(即在添加了这段代码之后,只有场景被渲染而里面什么都没有)。我正在使用警报来跟踪代码的进度,并且在此语句之前收到了警报,但之后没有收到。我找到的所有解决方案都包括使用OBJMTLLoader
,但它不再是当前版本(r74)的three.js的一部分。
这段代码来自于官方的加载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 );
});
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
mtlLoader.load(url,function(materials){}
后面直接放置了一个警报语句,但它从未到达此语句。 - RPBruiserloader.setPath不是一个函数
? - RPBruiser