Three.js Threejs objmtlloader黑色模型

Three.js Threejs objmtlloader黑色模型,three.js,rendering,loader,.obj,Three.js,Rendering,Loader,.obj,我对ThreeJS是新手,我做了这个例子,展示了我们的一个模型。 我创建了一个Petrie3Dviewer,并在HTML页面中创建了一个查看器对象,该对象将.obj和.mtl文件作为输入。奇怪的是,物体显示为黑色,然后当我开始交互时,纹理出现了。我尝试了我认为的一切:不同的浏览器,使纹理更小,不同的计算机,没有什么我得到一个随机行为的所有时间。 我试过FIrefox,主要是Chrome。 似乎我需要在加载obj文件后强制渲染,但objmtloader.js没有为其提供任何事件 非常感谢你的帮助

我对ThreeJS是新手,我做了这个例子,展示了我们的一个模型。

我创建了一个Petrie3Dviewer,并在HTML页面中创建了一个查看器对象,该对象将.obj和.mtl文件作为输入。奇怪的是,物体显示为黑色,然后当我开始交互时,纹理出现了。我尝试了我认为的一切:不同的浏览器,使纹理更小,不同的计算机,没有什么我得到一个随机行为的所有时间。 我试过FIrefox,主要是Chrome。 似乎我需要在加载obj文件后强制渲染,但objmtloader.js没有为其提供任何事件

非常感谢你的帮助。 最好的,
GC

您应该在
Animate
函数中调用
this.DoRender
,以渲染帧

this.Animate = function() { 
    this.orbitControls.update();
    this.Animate();
    requestAnimationFrame(this.Animate.bind(this));
}
此时,仅当用户使用
OrbitControls
更改透视图时,才调用渲染函数。而且,由于纹理是异步加载的,因此在第一次渲染帧时它还没有准备好

this.Animate = function() { 
    this.orbitControls.update();
    this.Animate();
    requestAnimationFrame(this.Animate.bind(this));
}