我遇到的问题是当我有一个网格,其中只有网格的一些面应该是半透明的,而对象的其余部分应该是不透明的。任何人都知道我应该如何解决这个问题?如何渲染部分半透明的网格?
下面是对这个问题的更多描述:清晰度:在我们的浏览器中,如果它们具有相同的材质属性,我们会合并多个网格物体。
然后,如果用户点击合并对象,我们会发现被点击的表面和该面部对象的原始ID。然后,我们只用我们自己的自定义着色器突出显示该对象的面部。
现在的问题是,如果我们使材料透明的(因此所选择的部分是半透明的),则整个合并的网格是透明的,该模型的不透明部分被呈现透明。
你可以看到一些视觉问题,在这样的画面:
我对我们如何能够解决这个问题,但他们都将增加存储多思路消耗和复杂度:
丢弃应该是透明的碎片,然后用选定的面和透明材质创建一个新的网格。
创建一个透明的整个合并网格的副本,然后只渲染透明对象中的选定对象面并丢弃原始非透明网格中的片段。
任何人都有更好的主意吗?
使用三个r84。
你对所有的盒子都有'.transparent = true'吗? – prisoner849
所有的盒子都是这个例子中的一个网格,所以通过设置材质为透明的,所以我可以显示一些透明的面孔,这样所有的盒子都是透明的。 – Krigsdal
使用深度剥离你可以实现你想要的,但我认为three.js本身并不实现它。我认为你的最佳策略是将你的“分组网格”分成几个网格,并独立处理每个“盒子”。透明度在3D渲染中从来不是一个微不足道的问题。 – 2017-10-19 09:39:29