如何在3D JSON资产上实现基本的LOD机制

时间:2018-10-31 15:18:34

标签: javascript three.js 3d

我无法对具有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);
    
})

1 个答案:

答案 0 :(得分:2)

您实施的THREE.LOD错误。

  1. 构造函数不接受任何参数,因此,当您执行此操作时:new THREE.LOD(object);,它什么都不做。您只需要使用new THREE.LOD();
  2. 您要将相同的网格物体添加到LOD 3次,因此不会有任何区别。如果要详细查看任何更改,则需要创建具有不同几何形状的单独的网格。请记住,您必须自己生成这些几何。 Three.js不会自动为您更改几何形状。但是您可以为此使用SimplifyModifier
  3. 不确定为什么要使用矩阵更新。这里没有理由。
  4. 如果要详细查看更改,还需要在渲染循环上调用lod.update(camera)

我强烈建议您阅读the documentation for LOD并通读this example中的代码以更好地了解其工作原理。