【发布时间】:2019-07-22 08:34:08
【问题描述】:
我想在 THREE.js 中渲染部分重叠的透明表面。我不是在寻找多个重叠表面的完美渲染,而是希望看起来比当前结果好一点的东西 - 例如,如果我有两个椭球,则中心在后面的那个会参考该深度进行渲染,即使它的表面的一部分有效地在另一个之前。我还应该提到我正在使用 OrbitControls,所以我不能简单地静态订购一次就忘记它们。
我已经看到深度剥离通常是实现此目的的技术,甚至发现有人在 THREE.js 中编写了一个示例。不幸的是,它看起来也相当复杂,并且可能性能很重。我想知道是否有更简单的选择。我考虑过的只是将每个网格拆分为其基本三角形并将每个网格推为一个单独的几何体,但我不知道这会对性能造成多大影响,而且它会使所有进一步的重新缩放/旋转操作变得更加混乱。我看到 THREE 的 BufferGeometry 类有一个“组”选项,该选项将在单独的调用中绘制,但仅此一项似乎并不能解决它。你认为我还能做些什么吗?也许使用自定义着色器?还是我真的应该使用深度剥离?
【问题讨论】:
-
如果你知道自定义着色器。如果您想从某人那里获得帮助,请发布您的尝试(源代码)。 Q 不是 100% 清楚的。
-
我还没有尝试任何具体的东西。我在询问可能的想法,是否可以使用着色器来完成,我并不是说我已经尝试过。
-
总共有多少个三角形?将每个放在一个单独的网格上,您只需将它们作为一个组的父级并移动该组。在你的性能太低之前,我猜最大 1000-2000。
-
@Okarin 可能重复:stackoverflow.com/questions/36947704/…
-
@Okarin 或者,请参阅 stackoverflow.com/questions/13221328/…