我无法对具有json数据的3d对象实施LOD。
这是我的实现:
loader.load('models/robot-threejs/robot.json', function(object){
var lod = new THREE.LOD(object);
for (var i=1; i<=3;i++) {
console.log("this"+i);
lod.addLevel(object,i);
}
lod.updateMatrix();
lod.matrixAutoUpdate = false;
// lod.updateMatrix();
// lod.matrixAutoUpdate = false;
scene.add(lod);
//scene.add(object);
// object.position.set(30, 30, 30);
})
最佳答案
您实施的THREE.LOD
错误。
构造函数不接受任何参数,因此,当您执行以下操作时:new THREE.LOD(object);
,它什么也不做。您只需要使用new THREE.LOD();
您要向LOD添加相同的网格3次,因此不会有任何区别。如果要详细查看任何更改,则需要创建具有不同几何形状的单独的网格。请记住,您必须自己生成这些几何。 Three.js不会自动为您更改几何形状。但是您可以为此使用SimplifyModifier。
不知道为什么要玩矩阵更新。这里没有理由。
如果要详细查看更改,还需要在渲染循环上调用lod.update(camera)
。
我强烈建议您阅读the documentation for LOD并通读this example中的代码以更好地了解其工作原理。