我正在尝试在 OSX 上的 SceneKit 中的一个完全透明的平面上转换阴影。几个小时以来,我一直在努力解决这个问题,但没有找到任何解决方案。
我的目的是生成几个对象的屏幕截图,这些对象具有透明背景和不可见平面上的阴影。
你对我如何用苹果 SceneKit 做这个有什么建议吗?
我是否必须编写自己的着色器,我可以使用着色器修改器来实现它,还是可以使用内置功能?
最佳答案
更新:
我为任何需要的人找到了替代解决方案:
- 在3D模型下创建一个白色平面,注意平面颜色必须是纯白色。
- 将平面 Material 的混合模式设置为
SCNBlendModeMultiply
。 - 将飞机 Material 的灯光模型设置为
SCNLightingModelLambert
。
这是可行的,因为任何颜色乘以白色 (1, ,1, 1) 都会返回自身,而兰伯特光模型不会考虑定向光,因此平面将始终是看起来像透明的背景色。这个解决方案的另一个好处是你不需要改变光的阴影渲染模式。
对于习惯于检查 Xcode 的人。
根据 SceneKit: What's New .
首先,在您的模型下添加一个平面。然后阻止它写入 colorBuffer。 其次,将光照模型的阴影渲染模式更改为延迟。请注意,您必须使用可以转换阴影的光。
关于macos - SceneKit:是否可以在透明对象上转换阴影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30975695/