【发布时间】:2019-09-12 17:31:03
【问题描述】:
问题
我已经设置了一个最小的 SceneKit 项目,该项目包含一个包含默认飞机的场景,该飞机具有一个充当阴影接收器的透明平面。我复制了这个设置,所以有两个飞机和两个透明阴影平面。
有一个投射阴影的定向光,其shadowMode 属性设置为.deferred。当两个阴影平面重叠时,离相机较近的平面会“切掉”离相机较远的平面上的阴影。
我知道这是因为飞机的材质将其.writesToDepthBuffer 属性设置为true。但是,如果没有这个,延迟阴影将不起作用。
问题
有没有办法在多个重叠平面上显示阴影?我知道我可以使用SCNFloor 来显示多个阴影,但我特别希望在具有不同 Y 位置的多个平面上产生阴影。想想 ARKit 中检测到多个平面的场景。
代码
我已经在GitHub 这里建立了一个最小的项目。
【问题讨论】:
-
如果您移动 ship 或 ship2 而不是 shipMesh,您将始终看到两个阴影。这是在回答你的问题吗?
-
@E.Coms 的问题是第二个阴影被最靠近相机的阴影平面剪裁了。您可以看到它有部分阴影,但有一个角被切掉。
-
让两个阴影平面的 Y 值略有不同如何?
标签: ios swift scenekit augmented-reality arkit