![](/img/trans.png)
[英]Is it possible to calculate a sine of timeline's `Time`variable in SceneKit?
[英]SceneKit: Is it possible to cast an shadow on an Transparent Object?
我想在OSX上的SceneKit中在一个完全透明的平面上投下阴影。 我几个小时以来一直在努力解决这个问题而且没有任何解决方案。
我的目的是生成具有透明背景的几个对象的屏幕截图,以及不可见平面上的阴影。
你对我如何用苹果SceneKit做这个有什么建议吗?
我是否必须编写自己的着色器,我可以使用着色器修改器进行此操作还是可以使用内置函数?
更新:
我为需要的人找到了另一种解决方案:
SCNBlendModeMultiply
。 SCNLightingModelLambert
。 这是有效的,因为任何颜色乘以白色(1,1,1)都会返回自身而朗伯光模型不会考虑定向光,因此平面将始终是看起来像透明的背景颜色。 此解决方案的另一个好处是您不需要更换灯光的阴影渲染模式。
对于习惯Xcode检查员的人。
根据SceneKit:什么是新的 。
首先,在模型下添加一个平面。 然后阻止它写入colorBuffer。 其次,将灯光模型的阴影渲染模式更改为延迟。 请注意,您必须使用可投射阴影的灯光。
郭小姐,你的解决方案有效。 这里的解决方案是代码:
光源配置:
light.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.4)
light.shadowMode = .deferred
对于地板(即对象下面的SCNFloor):
material.diffuse.contents = UIColor.white
material.colorBufferWriteMask = SCNColorMask(rawValue: 0)
我对你的问题没有答案,但我有一个解决方法:
CIColorInvert
和CIMaskToAlpha
核心图像过滤器 您将获得具有正确Alpha通道和透明阴影的图像。 您需要调整材料和灯光以获得所需的结果。
阴影可能会变得更亮,并且唯一的方法是将其渲染为另一个图像,并在Mask to Alpha步骤之后用黑色填充它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.