gpt4 book ai didi

swift - ARKit 和 SceneKit 中的遮挡 Material 或保持着色器

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:37 28 4
gpt4 key购买 nike

我看过一些 ARKit 的示例演示,其中 Material A 阻挡 Material B,有点创建遮挡效果,或黑洞,或 mask 。但他们似乎都在使用 Unity 引擎(我可能错了)。我想使用 Apple 已经提供的功能来做到这一点。或者可能使用 Metal Shader。

想知道是否有人知道 ARKit 或什至在 SceneKit 术语中允许这样做的技巧,当 2 个对象重叠时,但希望一个对象遮挡另一个对象,使另一个对象为空。不能是 CSG 吧,因为那太贵了?

最佳答案

要生成保留 mask (也称为遮挡 Material ),请使用.colorBufferWriteMask,它是在渲染 Material 时写入深度数据的实例属性。

sphere.geometry?.firstMaterial?.colorBufferWriteMask = []

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

sphere.renderingOrder = -100  

最后,允许 SceneKit 在渲染 Material 时读取/写入深度缓冲区:

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

sphere.geometry?.firstMaterial?.isDoubleSided = true

enter image description here

关于swift - ARKit 和 SceneKit 中的遮挡 Material 或保持着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45772265/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com