预加载对象+Mtl对象在Three.js
Preloading Obj+Mtl Objects in Three.js
我需要用Three.js预加载一些obj+mtl文件(这不是同一个文件),当所有对象都加载时,我需要调用另一个函数。
我试着放一个布尔变量,当每个对象都被加载时,它会发生变化,并做一个函数来确认是否所有对象都被加载,但由于某种原因,页面崩溃了。
我有一个数组中所有的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
被弃用。你应该将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场景中的位置
- 单击以将相机放置在Three js中的对象附近
- Three.js-如何检查对象是否在球体后面(不可见)
- 从Three.js场景中删除许多对象的速度较慢
- 如何将多个 Blender JSON 模型合并到一个 Three.js Object3D 对象中
- Three.js透明对象和颜色更改(load.obj+.mtl)
- three.js CanvasRenderer-设置对象的初始颜色和透明度纹理
- Three.js-显示/隐藏对象的一部分
- Three.js:我可以创建网格来替换很多对象吗
- 如何在Three.js中更改导入对象的宽度/高度
- Three.js隐藏已加载模型的对象
- Three.js自动旋转相机以聚焦对象
- three.js拖动多个对象
- 在javascript(three.js)中使用函数:.load()后,如何防止对象被破坏
- 如何在three.js中创建有光泽的对象
- three.js:透明对象根据相机角度按错误顺序渲染
- Three.js使object3d子对象展开以填充其父对象的边界
- 用鼠标选择对象- Three.js
- 场景中的静态对象- Three.js
- 消失的对象-Three.js CanvasRenderer