首页 文章

ARKit 和 SceneKit 中的 Blackhole Shader 或 Hold-Out Shader

提问于
浏览
4

我已经看到了 ARKit 的一些示例演示,其中材料 A 阻塞了材料 B,产生了遮挡效果,或者出现了黑洞或遮罩。但是它们似乎都在使用 Unity 引擎(我可能错了)。我想使用 Apple 已经提供的功能来做到这一点。或者使用 Metal Shader。

想知道是否有人知道有一个技巧可以使 ARKit 甚至用 SceneKit 术语实现,当 2 个对象重叠但希望一个对象遮挡另一个对象,而使另一个对象为空时。 CSG 不可能正确,因为那太贵了吗?

谢谢!

1 回答

  • 2

    是的,在 iOS 11 和 macOS 10.13 中将 3D 对象用作 hold-out 绝对是可能的。

    渲染材料时,称为.colorBufferWriteMask的实例属性实际上会写入深度通道信息。

    sphere.geometry?.firstMaterial?.colorBufferWriteMask = .alpha
    

    在此处输入图片说明

    在此处输入图片说明

    如果要在 iOS 9/10 或 macOS 11/12 中使用黑洞着色器,请查看以下解决方案:iOS 9 中的сolorBufferWriteMask

相关问题