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(如果有的话)的方法。