![](/img/trans.png)
[英]Multiple obj+mtl loading with Three.js crashes especially on iOS
[英]Preloading Obj+Mtl Objects in Three.js
我需要用Three.js(不是相同的文件)预加载一些obj + mtl文件,并且在所有对象加载完毕后,我需要调用另一个函数。
我尝试放置一个布尔变量,该变量会在加载每个obj时更改,并执行一个函数来确认是否所有对象都已加载,但由于某些原因页面崩溃而无法正常工作。
我在数组中有所有的obj和mtl路径。
这是我在做什么的一个例子。 http://pastie.org/10297027
我试图将load函数放在for语句中,但是效果不佳
你能帮助我吗?
new THREE.MTLLoader()
.setPath( 'models/obj/male02/' )
.load( 'male02_dds.mtl', function ( materials ) {
materials.preload();
new THREE.OBJLoader()
.setMaterials( materials )
.setPath( 'models/obj/male02/' )
.load( 'male02.obj', function ( object ) {
object.position.y = - 95;
scene.add( object );
}, onProgress, onError );
} );
OBJMTLLoader
是depricated 。 您应该结合使用OBJLoader
和MTLLoader
。
这是一个例子
请使用three.js加载管理器执行此任务,此处是执行方法。
创建一个经理:
var manager = new THREE.LoadingManager();
manager.onProgress = function ( item, loaded, total ) {
// this gets called after an object has been loaded
};
manager.onLoad = function () {
// everything is loaded
// call your other function
};
使用管理器创建加载器并加载项目:
var OBJMTLLoader = new THREE.OBJMTLLoader( manager );
OBJMTLLoader.load(urlsOBJ[0], urlsMTL[0], function(object) {
// stuff you do in your callback
var newObject = object.clone();
newObject.position.set(140, 10, 10);
newObject.rotation.x = -99;
scene.add(newObject);
objectArray.push(newObject);
});
在three.js r71中测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.