【问题标题】:How can I prevent certain instances of a instance geometry from disappearing when center position no longer in view?当中心位置不再出现时,如何防止实例几何体的某些实例消失?
【发布时间】:2017-11-09 17:09:54
【问题描述】:

我正在学习 webgl、threejs 和 glsl 着色器。您在下面看到的场景是我尝试使用实例化几何体。我有 3 块“草”。草实际上是由我正在构建的网格中心位置周围的实例圆锥组成的。

如您所见,如果网格的中心位置(用白色线框圆锥标记)不再在相机视图中,所有实例都会消失。

如何防止这种情况发生?

更具体地说:是否所有的草地、所有的火实例或同一时间的所有粒子都应该被同时实例化并以我们认为合适的方式放置在场景周围?我的假设是他们应该这样做。正确的?

【问题讨论】:

    标签: three.js


    【解决方案1】:

    如果您使用InstancedBufferGeometry,有两种方法可以处理截锥体剔除。

    一种方法是关闭网格的截锥体剔除:

    mesh.frustumCulled = false;
    

    如果您的情况已知,另一个选项是手动设置网格几何体的边界球:

    geometry.boundingSphere = new THREE.Sphere( new THREE.Vector3(), radius );
    

    three.js r.88

    【讨论】:

    • 就是这样!谢谢! frustumCulled 是要走的路,因为我将有自定义逻辑来决定在屏幕上显示什么!
    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2016-11-29
    • 1970-01-01
    • 2016-06-25
    相关资源
    最近更新 更多