在SceneKit 中并不是所有的光都能產(chǎn)生陰影, 只有spot和directional能產(chǎn)生照射的陰影.
兩個(gè)示例
Snowman
Directional shadows
與Spot shadows不同,由于與光源的距離變化,定向光投射的陰影的大小不會(huì)改變。然而,陰影的長度受到光線撞擊3D對(duì)象的角度的影響,就像您的陰影長到日落時(shí)一樣。
定向光在投射陰影時(shí)有點(diǎn)奇怪,因?yàn)楣?jié)點(diǎn)的比例屬性在確定其創(chuàng)建的陰影區(qū)域方面起著重要的作用。SceneKit從光節(jié)點(diǎn)的角度創(chuàng)建2D陰影貼圖。定向光忽略位置信息,因?yàn)楣饩哂泻愣ǖ姆较颉6ㄏ驘粜枰队啊_@就是為什么尺度屬性控制正投影的可見范圍。
如果您在場景中使用定向燈,并且沒有看到陰影,則可能需要調(diào)整scale屬性。
下圖顯示了調(diào)整方向光的節(jié)點(diǎn)scale對(duì)結(jié)果陰影的影響:
以1的比例,您可以清楚地看到在x和y方向上剪切的正方形陰影。 當(dāng)您將縮放比例增加到2時(shí),您將開始注意到圓形身體的陰影,但仍然沒有手,鼻子或頭部。 最后,通過將比例增加到5,您可以看到所有的身體部位,甚至是尖的鼻子。
下面試陰影的具體屬性設(shè)置
Behaviour:確定光線是否投射陰影。
?Color:確定陰影投射的顏色。您可以修改顏色和透明度級(jí)別;這讓其他顏色通過陰影顯示。
?Sample radius:場景套件可以通過將3D對(duì)象的輪廓渲染到2D陰影貼圖上來產(chǎn)生柔和的陰影;該半徑用于生成幾個(gè)樣本陰影貼圖。較小的半徑將導(dǎo)致更清晰的陰影,而較大的半徑將產(chǎn)生更柔和的陰影。
?Near clipping/Far clipping:來自光源的這些值范圍之外的任何對(duì)象都不會(huì)產(chǎn)生陰影,從而剪切自己的陰影。性能開始成為問題時(shí),該屬性可以調(diào)整。
?Scale:確定生成的陰影貼圖的分辨率。 1的比例將產(chǎn)生最高分辨率,而較高的值產(chǎn)生較低分辨率的陰影貼圖。
?Sample count:此屬性與樣品半徑屬性緊密配合使用。指定較高數(shù)量的陰影樣本會(huì)產(chǎn)生更柔和的陰影。
?Bias:有時(shí)渲染的陰影可能無法像預(yù)期的那樣渲染到所有像素上,導(dǎo)致稱為陰影偏差的效果。您可以使用此屬性來修復(fù)這些類型的物體。
下圖顯示了以相當(dāng)大的sample radius調(diào)整陰影sample count對(duì)spot light shadow的影響:
樣本計(jì)數(shù)為2,您可以看到產(chǎn)生的兩個(gè)不同的陰影。 將樣本數(shù)量提高可產(chǎn)生更多的陰影樣本,最終以最右側(cè)的柔和陰影結(jié)束。
下圖顯示shadow scale對(duì)陰影分辨率的影響
分辨率為1,您可以看到一個(gè)很好的清脆的陰影邊緣。 推動(dòng)陰影映射分辨率降低會(huì)產(chǎn)生更為嚴(yán)重的陰影。
Spot shadows
下圖顯示了以相當(dāng)大的sample radius調(diào)整陰影sample count對(duì)spot light shadow的影響:
樣本計(jì)數(shù)為1會(huì)創(chuàng)建一個(gè)清晰,清晰和清晰的陰影。 樣本計(jì)數(shù)為2,您可以清楚地看到兩個(gè)不同的陰影,就像陰影是由兩個(gè)接近的光源產(chǎn)生的。 將樣品計(jì)數(shù)推至5,產(chǎn)生更柔和,更平滑的陰影。