【发布时间】:2014-01-09 04:16:27
【问题描述】:
我正在尝试在我的 ThreeJS 场景中使用 THREE.LOD 对象。我受到http://threejs.org/examples/webgl_lod.html的启发
但我想进一步推动这个想法并使用 DAE 模型(使用这个加载器:http://threejs.org/examples/webgl_loader_collada.html)
问题是我无法切换 lod 级别的可见性。首先,我在我的渲染功能中尝试了一个自动化的功能(基于到相机的距离,在示例中找到):
this.m_Scene.traverse( function ( object ) {
if ( object instanceof THREE.LOD ) {
object.update( that.m_Camera );
}
} );
因为它不起作用(我的所有 lod 都同时显示)。我尝试了更多手动的东西。并且看起来 Object3D.visibility 属性并没有真正被渲染器使用,或者没有被子级继承。
据我了解,此属性适用于网格。但我不确定它是否在渲染时进行检查。
所以这不能按预期工作:
var LodTemporaryObject = new THREE.LOD();
function LoadLod1()
{
//TEST COLLADA LOADER
var loader = new THREE.ColladaLoader();
loader.options.convertUpAxis = true;
loader.load(Lod2Path, function ( collada ) {
dae = collada.scene;
dae.scale.x = dae.scale.y = dae.scale.z = 0.1;
dae.updateMatrix();
dae.visible = false; //THIS HAS NO EFFECT
LodTemporaryObject.addLevel(dae,100);
AddLodToScene(LodTemporaryObject ); //where the lod is added to the threeJS scene object
} );
}
所以问题:我如何实际设置(不)可见的任何 Object3D 或 subScene ?
【问题讨论】:
标签: three.js