![](/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.