RealityKit:在接地阴影下渲染对象
RealityKit: Render an object under a grounding shadow
我有一个放置标记(一个带有绿色角的简单平面),用于在 ARView
中可视化检测到的平面(通过 ARRaycastResult
)。此放置标记使用 UnlitMaterial
和纹理。只要没有添加其他对象,一切都正常。
当我添加另一个对象时,RealityKit 还会在对象正下方添加接地阴影(不可见平面)。它用作阴影平面并遮挡它后面的所有内容 - 包括我的放置标记。
这是放置标记的图片(部分隐藏在阴影平面下):
有什么办法可以防止这种剪裁吗?我一直在寻找渲染顺序之类的东西(因为 ARKit 确实有),但还没有喜欢 RealityKit 中的任何东西。
如果可能,我想保留阴影平面。
编辑: 添加了隐形平面的正式名称(接地阴影)
如果 AnchoringComponent.Target 的类型为“平面”,Reality kit 会自动添加“接地阴影”。根据 Apple 工程师的说法,这也可以使用带有阴影的 DirectionalLight 并在模型下放置一个平面(带有遮挡材料)来模拟。所以接地阴影可能也是由 OcclusionMaterial 制成的。这也解释了为什么这个接地阴影会遮挡其他物体。
有一个选项可以禁用这些接地阴影的渲染。可以通过将 disableGroundingShadows
选项插入 ARView 的 renderOptions
属性.
来完成
arView.renderOptions.insert(.disableGroundingShadows)
我还没有找到覆盖 OcclusionMaterial(如果有的话)的方法。
我有一个放置标记(一个带有绿色角的简单平面),用于在 ARView
中可视化检测到的平面(通过 ARRaycastResult
)。此放置标记使用 UnlitMaterial
和纹理。只要没有添加其他对象,一切都正常。
当我添加另一个对象时,RealityKit 还会在对象正下方添加接地阴影(不可见平面)。它用作阴影平面并遮挡它后面的所有内容 - 包括我的放置标记。
这是放置标记的图片(部分隐藏在阴影平面下):
有什么办法可以防止这种剪裁吗?我一直在寻找渲染顺序之类的东西(因为 ARKit 确实有),但还没有喜欢 RealityKit 中的任何东西。
如果可能,我想保留阴影平面。
编辑: 添加了隐形平面的正式名称(接地阴影)
如果 AnchoringComponent.Target 的类型为“平面”,Reality kit 会自动添加“接地阴影”。根据 Apple 工程师的说法,这也可以使用带有阴影的 DirectionalLight 并在模型下放置一个平面(带有遮挡材料)来模拟。所以接地阴影可能也是由 OcclusionMaterial 制成的。这也解释了为什么这个接地阴影会遮挡其他物体。
有一个选项可以禁用这些接地阴影的渲染。可以通过将 disableGroundingShadows
选项插入 ARView 的 renderOptions
属性.
arView.renderOptions.insert(.disableGroundingShadows)
我还没有找到覆盖 OcclusionMaterial(如果有的话)的方法。