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