THREE.js几千个网格根据到焦点的距离调整不透明度

时间:2014-03-29 05:06:32

标签: three.js glsl shader

我想基于它们与焦点的接近度来调整网格的不透明度。现在,我只是迭代网格并根据它们与焦点的距离来调整它们的不透明度。

在伪代码::

set_opacities: () ->
  for mesh in @group.children
    # we have the camera looking at this point "focus"
    # objects in the focal point should become opaque
    distance_to_focus = mesh.position.distanceTo(focus)
    opacity = @options.delta / distance_to_focus
    mesh.material.opacity = opacity

这适用于少量网格,但是当有几千个网格时可能会相当昂贵。我没有太深入地调查着色器。但是,我觉得是时候利用着色器来提高性能了。如何根据使用着色器到焦点的距离来更改网格的不透明度?三个人是否为这种情况建立了内置,还是自己编写?

还有其他可能值得研究的策略吗?在这种情况下,合并网格并不理想,因为我不断添加更多因此,我认为不断重新计算整个几何图形会变得很昂贵。

0 个答案:

没有答案