ios - SceneKit 在多个透明平面上延迟阴影

标签 ios swift scenekit augmented-reality arkit

问题

我已经设置了一个最小的 SceneKit 项目,其中包含一个默认飞机和一个充当阴影接收器的透明平面的场景。我复制了这个设置,所以有两个飞机和两个透明阴影平面。

有一个转换阴影的定向光,其 shadowMode 属性设置为 .deferred。当两个阴影平面重叠时,离相机较近的平面会“剪掉”离相机较远的平面上的阴影。

我知道这是因为飞机的 Material 将其 .writesToDepthBuffer 属性设置为 true。但是,如果没有它,延迟阴影将不起作用。

Missing Shadow

问题

有没有办法在多个重叠平面上显示阴影?我知道我可以使用 SCNFloor 来显示多个阴影,但我特别希望在具有不同 Y 位置的多个平面上显示阴影。想一想 ARKit 中检测到多个平面的场景。

代码

我在 GitHub 上设置了一个最小的项目在这里。

最佳答案

使阴影平面的两个 Y 值足够接近将解决 cutoff 问题。

关于ios - SceneKit 在多个透明平面上延迟阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55812756/

相关文章:

ios - 在 iOS8 上,以横向模式显示我的应用程序会隐藏状态栏,但在 iOS 7 上,状态栏会同时显示在两个方向上

ios - 安装新的 cocoapod 后缺少所需的模块

ios - 如何向 Collection View 单元格添加按钮

ios - 使用隐藏的 SCNNode 捕获 SCNView 的图像/屏幕截图 : drawViewHierarchyInRect afterScreenUpdates not working

swift - 如何访问 Swift 中其他类中的枚举值?

scenekit - Swift 3.0 如何使用 startDeviceMotionUpdates(to : withHandler)?

ios - UIView subview 的动画效果不流畅

iphone - ViewController 已加载,但 View 未显示

ios - 更新到React Native 0.60+之后未链接动态库

ios - 如何将 didFinishPickingMedia 与多个 UIImages 一起使用