I have seen some examples demo of ARKit where material A is blocking material B, kind of creating occlusion effect, or black hole, or masking. But all of them seems to be using
Yes, it's definitely possible to use a 3D object as a hold-out mask, a.k.a. Occlusion Material
in iOS and macOS apps. An instance property, called .colorBufferWriteMask
, actually writes depth channel information when rendering the material. So you need the following value for this property for masking object:
sphere.geometry?.firstMaterial?.colorBufferWriteMask = []
...and don't forget to assign an appropriate rendering order (closest to the camera):
sphere.renderingOrder = -50
..and give two values that determine whether SceneKit produces depth information when rendering the material or not:
sphere.geometry?.firstMaterial?.writesToDepthBuffer = true
sphere.geometry?.firstMaterial?.readsFromDepthBuffer = true