Unity 2019.2中爲Sprite新引入的“Secondary Texture”中比較特殊的“Normal Map”和“Mask Texture”的簡介

目錄

 

下面是對2D精靈(Sprite)的“Secondary Texture”的一些解釋說明

下面是對2D精靈(Sprite)的“Secondary Texture”中的“Normal Map”和“Mask Texture”這兩種比較特殊的“Secondary Texture”的說明


 

在Unity 2019.2版本中,官方引入了2D光照系統,爲了讓2D精靈(Sprite)在2D光照系統下表現的更加真實,官方還爲2D精靈(Sprite)引入了“Secondary Texture”,這樣我們就可以爲一個2D精靈(Sprite)添加多個“Secondary Texture”(目前最多支持8個,最常用的就是“Normal Map”和“Mask Texture”這兩種)來配合2D光照系統使用,從而讓2D精靈(Sprite)在2D光照下的顯示效果更加豐富,更加逼真。

爲2D精靈(Sprite)添加“Secondary Texture”的具體方法:參見官方文檔

 

 

下面是對2D精靈(Sprite)的“Secondary Texture”的一些解釋說明


1、爲2D精靈(Sprite)添加“Secondary Texture”的功能只能在Unity 2019.2及以後的版本中使用,因爲“Secondary Texture”是配合2D光照系統使用的,所以它必須在支持2D光照系統的Unity版本中使用,而2D光照系統是在Unity 2019.2才被引入的。

2、一個2D精靈(Sprite)允許添加最多8個“Secondary Texture”,不過我們一般最多隻會添加兩個“Secondary Texture”,一個是“Normal Map”,一個是“Mask Texture”,而這兩個貼圖也不一定要同時添加使用,它們是相互獨立的。

 

 

下面是對2D精靈(Sprite)的“Secondary Texture”中的“Normal Map”和“Mask Texture”這兩種比較特殊的“Secondary Texture”的說明


1、2D精靈(Sprite)的“Secondary Texture”中的“Normal Map”的作用就是和2D光照系統相互作用爲2D精靈(Sprite)表面產生一種“凹凸感和陰影效果”,這樣一來2D精靈(Sprite)在2D燈光的“照亮”下才會顯得更加立體,更加真實。2D精靈(Sprite)的“Secondary Texture”中“Mask Texture”的作用是和2D光照系統相互作用爲2D精靈(Sprite)產生一些“特殊的效果”,關於“Mask Texture”的作用以及作用原理的詳細講解可以參見我的另一篇原創博客

2、“Normal Map”和“Mask Texture”的本質就是圖片,而常用的圖片格式就是PNG。我們將“Normal Map”或“Mask Texture”導入到Unity的項目中的時候,在對應的Inspector面板上應該將“Texture Type”屬性改成“Sprite (2D and UI)”(這一點雖然Unity的官方文檔沒有明確的說明,但是Unity官方推出的一個Demo中就有體現,Demo的名稱是“Lost Crypt”,在Asset Store上可以下載到)。“Normal Map”根據它的名稱我們很容易將Inspector面板上的“Texture Type”屬性設置成“Normal map”,但這是不對的,因爲“Texture Type”設置成“Normal map”只是針對爲3D模型的貼圖(Texture)設置法線貼圖(Normal Map)的時候使用,即如果這張圖片的作用是爲3D模型的貼圖(Texture)設置法線貼圖(Normal Map),那麼這張圖片才需要設置成“Normal Map”,其實設置高度貼圖(Height Map)的時候,圖片的“Texture Type”屬性也是設置成“Normal map”,但是它們都是爲3D模型設置的,並不適用於2D精靈(Sprite)。2D燈光處理法線貼圖(Normal Map)和3D燈光處理法線貼圖(Normal Map)的過程是不同的,前者只需要處理由x和y軸構成的一個平面上的法線,而後者需要處理由x、y和z軸兩兩構成的三個平面上的法線。“Mask Texture”雖然名字裏有“Texture”,但是我們仍然需要將Inspector面板上的“Texture Type”屬性改成“Sprite (2D and UI)”。

3、我們在Sprite Editor中爲2D精靈(Sprite)添加“Secondary Texture”的時候可以看到,每個“Secondary Texture”只有兩個屬性,一個是“Name”,用於設置貼圖的名稱,通過名稱我們可以區分不同的貼圖,另一個就是“Texture”,我們在這裏添加具體的貼圖資源,那麼問題就出現了,我們應該如何指定“Secondary Texture”的類型呢?它是屬於“Normal Map”還是屬於“Mask Texture”呢?答案是通過“Name”屬性來區分。無論是第三方的Package,還是我們自己的Package,如果想要區分2D精靈(Sprite)的“Secondary Texture”的類型,只能靠“Name”屬性來區分,第三方的Package通過自己定義的一些字符串常量來指定哪些“Secondary Texture”屬於“Normal Map”,哪些“Secondary Texture”屬於“Mask Texture”(我們自己寫Package的時候也應該採用這種方法)。對於2D光照系統而言,它屬於Unity官方的Package,它同樣爲2D精靈(Sprite)的“Secondary Texture”的“Name”屬性定義了兩個字符串常量來區分“Normal Map”和“Mask Texture”,如果“Name”屬性值設置成了“_NormalMap”,那麼對應“Texture”屬性設置的圖片資源就充當“Normal Map”和2D燈光系統配合使用,如果“Name”屬性值設置成了“_MaskTex”,那麼對應“Texture”屬性設置的圖片資源就充當“Mask Texture”和2D燈光系統配合使用,這裏的“Name”屬性值雖然允許我們隨便設置,但是如果要配合2D燈光系統使用,那麼就必須按照規定設置,否則設置的”Normal Map“和”Mask Texture“都不會起作用。

關於2D精靈(Sprite)的“Secondary Texture”中兩個比較特殊的貼圖(Texture),”Normal Map“和”Mask Texture“,的詳細用法請參見我的另一篇原創博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章