我知道这是一个众所周知的问题,但我无法找到一个好的答案。
我的用法
我使用three.js显示通过无人机图片(here an example)创建的3D模型。
问题
我无法渲染沉重的模型(1M顶点,2M面):Chrome或WebGl崩溃。
我尝试了什么
我在所有测试中使用了Threejs.org示例,以确保不是我的代码不起作用。我在带有--max_old_space_size = 6144标志的x64 Chrome上进行了测试。
可能的解决方案
如何重现
对于代码,我使用Threejs.org上的基础示例。对于模型:
任何想要加载大的想法? 谢谢!
编辑1:
我试图在SuccessCallback中放置一个断点,以查看RAM的过载是在加载期间还是之后。我无法点击断点,因此RAM的重载在SuccessCallback之前。
然后我一步一步地在ColladaLoader中找到了使用这么多RAM的内容。这是" callstack" :
我可以进行任何其他测试以找出此问题的原因吗? 感谢
答案 0 :(得分:0)
你的纹理很大,而且你不需要它们,因为你的模型已经烘焙了顶点颜色,包括烘烤的灯光。因此,您的模型不需要紫外线。
使用ColladaLoader2
和此模式。它应该工作。
var loader = new THREE.ColladaLoader();
loader.load( 'BigModel.dae', function ( collada ) {
var dae = collada.scene;
dae.traverse( function( child ) {
if ( child instanceof THREE.Mesh ) {
child.geometry.removeAttribute( 'uv' ); // you don't need it
child.material = new THREE.MeshBasicMaterial( { // scene lights not required
vertexColors: THREE.VertexColors // you have them, use them
} );
scene.add( child );
}
} );
} );
three.js r.86