ARKit和SceneKit中的遮挡材质或保留着色器

8
我看到一些 ARKit 示例,其中材料 A 阻挡了材料 B,形成了遮挡效果、黑洞或掩模。但是所有这些示例似乎都使用了 Unity 引擎(我可能错了)。我希望能够利用苹果已有的工具来实现这一点,或者使用 Metal Shader。

想知道是否有人知道一个诀窍可以在 ARKit 中进行这个操作,或者以 SceneKit 术语,当两个物体重叠时,想要一个物体遮挡另一个物体,使其空白。这不能是 CSG,因为那将会过于昂贵?


很有趣的是看看苹果是否支持ARKit/SceneKit中的遮挡。从我迄今所见到的有限的SceneKit来看,似乎并不支持?遮挡数学是复杂的。 - xta
你能链接到那些例子吗? - diviaki
1个回答

9
为了生成一个称为“遮挡材质”的保留掩码,可以使用.colorBufferWriteMask实例属性,在渲染材质时写入深度数据。请注意保留HTML标记。
sphere.geometry?.firstMaterial?.colorBufferWriteMask = []

然后分配适当的对象渲染顺序:

sphere.renderingOrder = -100  

最后,让SceneKit在渲染材质时从/写入深度缓冲区:

sphere.geometry?.firstMaterial?.writesToDepthBuffer = true
sphere.geometry?.firstMaterial?.readsFromDepthBuffer = true

sphere.geometry?.firstMaterial?.isDoubleSided = true

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接