ARKit——在不可见平面下渲染 3D 对象
ARKit – Rendering a 3D object under an invisible plane
我有一个不可见的 ARKit 场景 SCNPlane
:
plane.geometry?.firstMaterial?.colorBufferWriteMask = []
此平面放置在地面上,用于从放置在场景中的其他对象渲染deferred shadows
。
我想渲染另一个 SCNPlane
,它应该与不可见平面处于同一水平(相同的 Z
坐标)。问题是,每次新对象在不可见平面下时,根本不会渲染。
有什么方法可以在不可见平面下渲染物体吗?
You can achieve it using the following lines of code:
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)
我有一个不可见的 ARKit 场景 SCNPlane
:
plane.geometry?.firstMaterial?.colorBufferWriteMask = []
此平面放置在地面上,用于从放置在场景中的其他对象渲染deferred shadows
。
我想渲染另一个 SCNPlane
,它应该与不可见平面处于同一水平(相同的 Z
坐标)。问题是,每次新对象在不可见平面下时,根本不会渲染。
有什么方法可以在不可见平面下渲染物体吗?
You can achieve it using the following lines of code:
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)