SceneKit透明物體投射陰影的另外一種方法
02-05
很多人在網上搜索如何使用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生物列印的主要難點是什麼?