use*_*553 5 augmented-reality ios scenekit swift arkit
我已经看到了ARKit的一些示例演示,其中材料A阻止了材料B,产生了遮挡效果,或者出现了黑洞或遮罩。但是它们似乎都在使用Unity引擎(我可能错了)。我想使用Apple已经提供的功能来做到这一点。或者使用Metal Shader。
想知道是否有人知道有一个技巧可以使ARKit甚至用SceneKit术语实现,当2个对象重叠但希望一个对象遮挡另一个对象,而使另一个对象为空时。CSG不可能正确,因为那太贵了吗?
谢谢!
是的,绝对可以将 3D 对象用作保持蒙版,也就是Occlusion Material在 iOS 和 macOS 应用程序中。一个名为 的实例属性.colorBufferWriteMask实际上是在渲染材质时写入深度通道信息。因此,您需要此属性的以下值来屏蔽对象:
sphere.geometry?.firstMaterial?.colorBufferWriteMask = []
Run Code Online (Sandbox Code Playgroud)
...并且不要忘记分配适当的渲染顺序(最接近相机):
sphere.renderingOrder = -50
Run Code Online (Sandbox Code Playgroud)
..并给出两个值来确定SceneKit在渲染材质时是否产生深度信息:
sphere.geometry?.firstMaterial?.writesToDepthBuffer = true
sphere.geometry?.firstMaterial?.readsFromDepthBuffer = true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |