我有一个带有隐形物体的 ARKit 场景SCNPlane
:
plane.geometry?.firstMaterial?.colorBufferWriteMask = []
该平面放置在地面上,用于渲染deferred shadows
来自放置在场景中的其他对象。
我想渲染另一个SCNPlane
它应该与不可见平面处于同一水平面(相同Z
-协调)。问题是,每次新对象位于不可见平面下时,它根本不会被渲染。
有什么方法可以渲染位于不可见平面下的物体吗?
您可以使用以下代码行来实现它:
shadowsPlane.geometry?.materials.first?.writesToDepthBuffer = true
shadowsPlane.geometry?.materials.first?.readsFromDepthBuffer = true
选择两个实例属性之一.colorBufferWriteMask
:
shadowsPlane.geometry?.materials.first?.colorBufferWriteMask = []
为对象设置渲染顺序,例如:
shadowsPlane.renderingOrder = -1 // the nearest layer
当然,使用适当的.lightingModel
实例属性:
shadowsPlane.geometry?.materials.first?.lightingModel = .constant
请记住,两个平面之间会有一些微小的气隙:
shadowsPlane.position = SCNVector3(x: 0, y: 0, z: 0)
floorPlane.position = SCNVector3(x: 0, y: -0.01, z: 0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)