標籤:

SceneKit透明物體投射陰影的另外一種方法

很多人在網上搜索如何使用SceneKit在透明物體上投射陰影。

網上的方法基本都是這個。居然沒有簡單可行的第二種方法。

SceneKit: Is it possible to cast an shadow on an Transparent Object?

這個方法不是說不好,但是確實有幾個問題。

1、用到了延遲渲染(deffered),不夠直接

2、在iOS系統OpenGL環境下會觸發一個SceneKit的bug,使得內置shader編譯不過

也就是說這個方法在iOS系統下使用OpenGL進行渲染的場景下是行不通的。

於是我考慮了一下。投射不到透明物體上,那就投射到白色物體上。創建一個白色的plane放在模型下面,混合方式改為Multiply就好了。需要注意的是,Double sided也應該為false。(不然接受投影的plane大小超過屏幕之後,有時會顯示異常)

原理是這種情況下Multiply的混合和Alpha混合也沒區別了,白色就等於Alpha混合中的透明,。白色乘任何顏色都是原色,黑色乘任何顏色都是黑色。


推薦閱讀:

選購一款4k,3d的智能電視,哪個品牌的性價比比較高?
Ls Dyna經典案例之聚能射流3D模擬(dyna_focus)
PAINT 3D從基礎到進階,三分鐘就能掌握3D設計神器!
哪些技術突破導致 3D 列印近些年來如此熱門?
3D生物列印的主要難點是什麼?

TAG:3D | iOS开发 |