最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

法線貼圖(凹凸貼圖)

2020-06-15 11:20 作者:unity_某某師_高錦錦  | 我要投稿


NormalMap

法線貼圖 (Normal Map) 是一種凹凸貼圖 (Bump Map)。它們是一種特殊的紋理,可讓您將表面細(xì)節(jié)(如凹凸、凹槽和劃痕)添加到模型,從而捕捉光線,就像由真實(shí)幾何體表示一樣。

例如,您可能希望顯示一個(gè)表面,在表面上有凹槽和螺釘或鉚釘,比如飛機(jī)機(jī)身。為實(shí)現(xiàn)此目的,一種方法是將這些細(xì)節(jié)建模為幾何體,如下所示。

細(xì)節(jié)建模飛機(jī)金屬板為真實(shí)幾何體

根據(jù)具體情況,將這些微小的細(xì)節(jié)建模為“真實(shí)”幾何體通常并非一種好的思路。在右側(cè),您可以看到構(gòu)成單個(gè)螺絲頭的細(xì)節(jié)所需的多邊形。在具有大量精細(xì)表面細(xì)節(jié)的大型模型上,這種方案需要繪制極大數(shù)量的多邊形。為了避免這種情況,我們應(yīng)使用法線貼圖來表示精細(xì)的表面細(xì)節(jié),而使用分辨率較低的多邊形表面來表示模型的較大形狀。

如果我們改用凹凸貼圖來表示此細(xì)節(jié),則表面幾何體可以變得簡單得多,并且細(xì)節(jié)將通過紋理呈現(xiàn),用紋理來調(diào)節(jié)表面如何反射光?,F(xiàn)代圖形硬件可以非??焖俚赝瓿纱诉^程。現(xiàn)在,金屬表面可變?yōu)橐粋€(gè)簡單多邊形平面,而螺釘、鉚釘、凹槽和劃痕將捕捉光線,并會因?yàn)榧y理而顯得有深度。

在法線貼圖中定義了螺釘、凹槽和劃痕,此貼圖將修改從這個(gè)簡單多邊形平面的表面反射光線的方式,給人以 3D 細(xì)節(jié)的印象。除了鉚釘和螺釘外,紋理還可以讓我們包含大量其他細(xì)節(jié),如細(xì)微的凹凸和劃痕。

在現(xiàn)代游戲開發(fā)的美術(shù)制作流程中,美術(shù)師將使用他們的 3D 建模應(yīng)用程序基于超高分辨率的源模型生成法線貼圖。然后將法線貼圖映射到可直接用于游戲的較低分辨率的模型版本,從而使用法線貼圖渲染原始的高分辨率細(xì)節(jié)。

如何創(chuàng)建和使用凹凸貼圖

凹凸貼圖是一種相對較舊的圖形技術(shù),但仍然是創(chuàng)建高細(xì)節(jié)度的逼真實(shí)時(shí)圖形所需的核心方法之一。凹凸貼圖通常也稱為法線貼圖高度貼圖 (Height Map),但這些術(shù)語的含義略有不同,下文稍后將進(jìn)行說明。

什么是表面法線?

為了真正解釋法線貼圖的工作原理,我們將首先介紹什么是“法線”以及如何在實(shí)時(shí)光照中使用法線??赡茏罨镜睦泳褪且粋€(gè)模型的每個(gè)表面多邊形僅根據(jù)相對于光線的表面角度獲得光照。表面角度可表示為表面垂直方向突出的一條線,而相對于表面的該方向(矢量)即稱為“表面法線”,或簡稱為法線。

兩個(gè) 12 面圓柱體,左側(cè)帶有平面著色,右側(cè)帶有平滑著色

在上圖中,左圓柱體具有基本的平面著色,并且每個(gè)多邊形根據(jù)其與光源的相對角度進(jìn)行著色。每個(gè)多邊形上的光照在多邊形區(qū)域內(nèi)保持恒定,因?yàn)樵摫砻媸瞧教沟?。以下是顯示了線框網(wǎng)格的同樣兩個(gè)圓柱體:

兩個(gè) 12 面圓柱體,左側(cè)帶有平面著色,右側(cè)帶有平滑著色

右側(cè)的模型與左側(cè)的模型具有相同數(shù)量的多邊形,但是顯示為平滑著色;多邊形上的光照產(chǎn)生了曲面外觀。為什么會這樣?原因是用于反射光線的每個(gè)點(diǎn)處的表面法線沿著多邊形的寬度逐漸變化,所以對于表面上的任何給定點(diǎn),光反射表現(xiàn)為好像該表面是彎曲的而不是實(shí)際的平坦恒定多邊形。

以 2D 圖的形式查看時(shí),平面著色圓柱體外側(cè)的三個(gè)表面多邊形將如下所示:

以 2D 圖的形式查看時(shí),三個(gè)多邊形上的平面著色

表面法線用橙色箭頭表示。這些值用于計(jì)算光線如何從表面反射,所以您可以看到光線沿著每個(gè)多邊形的長度具有相同響應(yīng),因?yàn)楸砻娣ň€指向相同的方向。因此就會產(chǎn)生“平面著色”,這也是左圓柱體的多邊形看起來有硬邊的原因。

然而,對于平滑著色的圓柱體,表面法線在平面多邊形上發(fā)生變化,如下所示:

以 2D 圖的形式查看時(shí),三個(gè)多邊形上的平滑著色

法線方向在平面多邊形表面上逐漸變化,因此表面上的著色產(chǎn)生了平滑曲線的印象(如綠線所示)。這不會影響網(wǎng)格的實(shí)際多邊形性質(zhì),只會影響在平面表面上計(jì)算光照的方式。這種明顯的曲面并不存在,以掠射角觀察這些面時(shí)將揭示出平面多邊形的真實(shí)性質(zhì),但從大多數(shù)視角看,圓柱體看起來具有平滑的曲面。

使用這種基本平滑著色時(shí),實(shí)際上只根據(jù)每個(gè)頂點(diǎn)來存儲確定法線方向的數(shù)據(jù),因此該表面上的變化值是從一個(gè)頂點(diǎn)到下一個(gè)頂點(diǎn)之間進(jìn)行插值的。在上圖中,紅色箭頭表示每個(gè)頂點(diǎn)存儲的法線方向,橙色箭頭表示多邊形區(qū)域上的內(nèi)插法線方向的示例。

什么是法線貼圖?

法線貼圖使表面法線的這種修改更進(jìn)一步,使用紋理來存儲有關(guān)如何修改模型上的表面法線的信息。法線貼圖是映射到模型表面的圖像紋理,類似于常規(guī)顏色紋理,但法線貼圖紋理中的每個(gè)像素(稱為紋理像素)表示平面法線方向與平面(或平滑插值)多邊形“真實(shí)”表面法線之間的偏差。

以 2D 圖的形式查看時(shí),三個(gè)多邊形的法線貼圖

該圖再次以 2D 形式表示 3D 模型的表面上的三個(gè)多邊形,每個(gè)橙色箭頭對應(yīng)于法線貼圖紋理中的像素。下面的是法線貼圖紋理的單像素切片。在中心位置,您可以看到法線已被修改,在多邊形的表面上呈現(xiàn)出幾個(gè)凹凸的外觀。因?yàn)檫@些修改過的法線將用于光照計(jì)算,所以這些凹凸只會由于表面上的光照顯示情況而變得明顯。

原始法線貼圖文件中可見的顏色通常具有藍(lán)色色調(diào),并且不包含任何實(shí)際的淺色或深色著色,這是因?yàn)檫@些顏色本身不打算按原樣顯示。實(shí)際上,每個(gè)紋理像素的 RGB 值表示方向矢量的 X、Y 和 Z 值,并作為對多邊形表面的基本內(nèi)插平滑法線的修改而應(yīng)用。

法線貼圖紋理示例

這是一個(gè)簡單的法線貼圖,包含一些凸起的矩形和文本的凹凸信息。此法線貼圖可導(dǎo)入到 Unity 中,并放入標(biāo)準(zhǔn)著色器的 Normal Map 字段中。在材質(zhì)中與顏色貼圖(Albedo 貼圖)相結(jié)合并應(yīng)用于上述圓柱體網(wǎng)格的表面時(shí),結(jié)果如下所示:

應(yīng)用于上面使用的圓柱體網(wǎng)格表面的法線貼圖示例

同樣,這不會影響網(wǎng)格的實(shí)際多邊形性質(zhì),只會影響在表面上計(jì)算光照的方式。表面上明顯凸起的字幕和形狀并不存在,以掠射角觀察這些面時(shí)將揭示出平面表面的真實(shí)性質(zhì),但從大多數(shù)視角看,圓柱體現(xiàn)在看起來具有從表面凸起的浮雕細(xì)節(jié)。

如何獲取或制作法線貼圖?

法線貼圖通常與模型或紋理一起由 3D 或紋理美術(shù)師制作而成,并且通常鏡像出反照率貼圖的布局和內(nèi)容。有時(shí),法線貼圖是手工制作的,有時(shí)是從 3D 應(yīng)用程序中渲染出來的。

如何從 3D 應(yīng)用程序渲染法線貼圖超出了本文檔的范疇,但基本概念是 3D 美術(shù)師將制作模型的兩個(gè)版本:一個(gè)以多邊形包含所有細(xì)節(jié)的高分辨率模型,還有一個(gè)可立即用于游戲的低分辨率模型。高分辨率模型的細(xì)節(jié)化程度太高,無法在游戲中以最佳狀態(tài)運(yùn)行(網(wǎng)格中有太多三角形),但需要在 3D 建模應(yīng)用程序中用于生成法線貼圖。然后,低分辨率版本的模型可以忽略非常精細(xì)的幾何細(xì)節(jié),這些細(xì)節(jié)現(xiàn)在已存儲在法線貼圖中,因此可以使用法線貼圖來渲染該模型。一個(gè)典型的用例就是顯示角色服裝上的折痕、按鈕、搭扣和接縫的凹凸細(xì)節(jié)。

有一些軟件包可以分析常規(guī)攝影紋理中的光照,并從中提取法線貼圖。為此,需要假設(shè)原始紋理從恒定方向接受光照,還要分析明暗區(qū)域并假設(shè)其與傾斜表面對應(yīng)。但是,當(dāng)實(shí)際使用凹凸貼圖時(shí),您需要確保反照率紋理沒有來自圖像中任何特定方向的光線(理想情況下應(yīng)表示完全沒有光線的表面的顏色),因?yàn)?Unity 將根據(jù)光線方向、曲面角度和凹凸貼圖信息計(jì)算出光照信息。

下面提供了兩個(gè)例子,一個(gè)是簡單的重復(fù)石墻紋理及其對應(yīng)的法線貼圖,另一個(gè)是角色的紋理圖集及其對應(yīng)的法線貼圖:

石墻紋理及其對應(yīng)的法線貼圖紋理
角色紋理圖集及其對應(yīng)的法線貼圖紋理圖集

凹凸貼圖、法線貼圖和高度貼圖有什么區(qū)別?

法線貼圖高度貼圖都是凹凸貼圖的類型。二者都包含一些數(shù)據(jù)用于表示較簡單多邊形網(wǎng)格的表面上的明顯細(xì)節(jié),但各自卻以不同的方式存儲這些數(shù)據(jù)。

左側(cè)是用于石墻凹凸貼圖的高度貼圖。右側(cè)是用于石墻凹凸貼圖的法線貼圖

在上方左側(cè),您可以看到用于石墻凹凸貼圖的高度貼圖。高度貼圖是一種簡單的黑白紋理,其中每個(gè)像素表示該點(diǎn)在表面上看起來應(yīng)該凸起的程度。像素顏色越白,該區(qū)域看起來越高。

法線貼圖是 RGB 紋理,其中每個(gè)像素表示表面看起來應(yīng)該面向的方向的差異(相對于其未經(jīng)修改的表面法線)。由于矢量存儲在 RGB 值中的方式,這些紋理往往為藍(lán)紫色調(diào)。

現(xiàn)代實(shí)時(shí) 3D 圖形硬件依賴于法線貼圖,因?yàn)榇祟愋偷馁N圖包含了必要的矢量來修改在表面上反射光線的方式。Unity 還可接受高度貼圖類型的凹凸貼圖,但必須在導(dǎo)入時(shí)將其轉(zhuǎn)換為法線貼圖才能使用。

為什么呈現(xiàn)紫藍(lán)色?

了解這一點(diǎn)對于使用法線貼圖并不重要!跳過這一段是可以的。但是,如果真的想知道,請參考以下信息:RGB 顏色值用于存儲矢量的 X、Y、Z 方向,其中的 Z 為“向上”(與 Unity 通常使用 Y 作為“向上”的慣例相反)。此外,紋理中的值視為經(jīng)過減半處理,即添加了 0.5 的系數(shù)。這樣就能存儲所有方向的矢量。因此,為了將 RGB 顏色轉(zhuǎn)換為矢量方向,必須乘以 2,然后減去 1。例如,RGB 值 (0.5, 0.5, 1) 或十六進(jìn)制的 #8080FF 將得到矢量 (0,0,1),這便是用于法線貼圖的“向上”,并表示模型表面沒有變化。這就是您在此頁面前面的法線貼圖“示例”的平面區(qū)域中看到的顏色。

一個(gè)法線貼圖僅使用 #8080FF,此值轉(zhuǎn)換為法向矢量 0,0,1,即“筆直向上”。這不會對多邊形的表面法線進(jìn)行任何修改,因此不會對光照產(chǎn)生任何變化。任何與此顏色不同的像素都會產(chǎn)生指向不同方向的矢量,因此會修改用于計(jì)算該點(diǎn)處光發(fā)射的角度。

一個(gè) (0.43, 0.91, 0.80) 值將得出 (–0.14, 0.82, 0.6) 矢量,這是對表面的大幅修改。在石墻法線貼圖的明亮青色區(qū)域中一些石頭邊緣可以看到這樣的顏色。最終結(jié)果是,這些邊緣按照非常不同的與石頭較平坦面的角度捕捉光線。

這些石頭的法線貼圖中的明亮青色區(qū)域顯示了針對每塊石頭頂部邊緣多邊形表面法線的大幅修改,使它們能夠以正確的角度捕捉光線

法線貼圖

無凹凸貼圖效果的石墻。巖石的邊緣和小平面不能捕捉場景中的定向太陽光。
采用凹凸貼圖的相同石墻。朝向太陽的石頭邊緣反射的定向太陽光與石頭的正面非常不同,邊緣反射光照朝向其他方向。
位于另一個(gè)不同光照場景中的相同凹凸貼圖石墻。點(diǎn)光源火炬照亮了石頭。根據(jù)基本模型(多邊形)光線照射角度并通過法線貼圖中的矢量進(jìn)行調(diào)整后產(chǎn)生石墻每個(gè)像素的光照。因此,面向光源的像素較明亮,而背離光源的像素更暗或處于陰影中。

如何導(dǎo)入和使用法線貼圖和高度貼圖

像往常一樣,可通過將紋理文件放入 Assets 文件夾的方式導(dǎo)入法線貼圖。但是,需要告訴 Unity,此紋理為法線貼圖。為此,可在導(dǎo)入檢視面板 (Inspector) 設(shè)置中將“Texture Type”設(shè)置更改為“Normal Map”。

Texture Type

要將黑白高度貼圖作為法線貼圖導(dǎo)入,除了需要選中“Create from Greyscale”選項(xiàng)外,過程幾乎完全相同。

Create from Greyscale

選中“Create From Greyscale”后,檢視面板中將顯示 Bumpiness 滑動條。從高度貼圖中的高度進(jìn)行轉(zhuǎn)換時(shí),可使用此滑動條來控制法線貼圖中的角度劇烈程度。較低的凹凸值意味著,即使高度貼圖中的鮮明對比度也會轉(zhuǎn)換為平緩的角度和凹凸。較高的值會產(chǎn)生夸張的凹凸和對凹凸的高對比度光照響應(yīng)。

將高度貼圖作為法線貼圖導(dǎo)入時(shí)的低和高凹凸設(shè)置以及對模型產(chǎn)生的最終效果。

在資源中放入法線貼圖后,可將其放入檢視面板中的材質(zhì) Normal Map 字段。標(biāo)準(zhǔn)著色器有一個(gè) Normal Map 字段,許多較舊的舊版著色器也支持法線貼圖。

將法線貼圖紋理放入使用標(biāo)準(zhǔn)著色器的材質(zhì)中的正確插槽

如果導(dǎo)入了法線貼圖或高度貼圖,但未將其標(biāo)記為法線貼圖(通過選擇?Texture Type: Normal Map,如上所述),材質(zhì)檢視面板將發(fā)出有關(guān)此問題的警告并提供修復(fù)此問題的解決方案,如下所示:

嘗試使用未在檢視面板中標(biāo)記為法線貼圖的法線貼圖時(shí),系統(tǒng)會顯示“Fix Now”警告。

單擊“Fix Now”與在紋理檢視面板設(shè)置中選擇?Texture Type: Normal Map?具有相同的效果。如果您的紋理確實(shí)是發(fā)現(xiàn)地圖,此操作將起作用。但是,如果是灰度高度貼圖,系統(tǒng)不會自動檢測到這一情況,因此對于高度圖,必須始終在紋理的 Inspector 窗口中選中“Create from Greyscale”選項(xiàng)。

輔助法線貼圖

您可能還注意到,標(biāo)準(zhǔn)著色器的材質(zhì)檢視面板下方較遠(yuǎn)位置還有第二個(gè) Normal Map 字段。此選項(xiàng)允許您使用額外的法線貼圖來創(chuàng)建額外的細(xì)節(jié)。您可以使用與常規(guī) Normal Map 字段相同的方式將法線貼圖添加到此字段中,但此處的意圖是您應(yīng)當(dāng)使用不同的平鋪比例或頻率,從而使兩個(gè)法線貼圖以不同的比例一起生成高細(xì)節(jié)級別。例如,常規(guī)法線貼圖可能定義墻壁或車輛上的鑲板細(xì)節(jié),并使用面板邊緣的凹槽。輔助法線貼圖可為表面上的劃痕和磨損提供非常精細(xì)的凹凸細(xì)節(jié),因此能夠使用基礎(chǔ)法線貼圖的比例的 5 至 10 倍進(jìn)行平鋪。這些細(xì)節(jié)可能非常精細(xì),只有仔細(xì)檢查時(shí)才能看到。要在基礎(chǔ)法線貼圖上有這么多細(xì)節(jié),基礎(chǔ)法線貼圖必須非常大,但是通過將二者放在不同比例下,可使用兩個(gè)相對較小的法線貼圖紋理來實(shí)現(xiàn)較高的整體細(xì)節(jié)級別。


法線貼圖(凹凸貼圖)的評論 (共 條)

分享到微博請遵守國家法律
右玉县| 尼木县| 余江县| 神木县| 德令哈市| 衡阳县| 崇州市| 新平| 通化县| 德化县| 鹤岗市| 保德县| 禄丰县| 绿春县| 泽州县| 佛教| 香格里拉县| 琼海市| 福清市| 噶尔县| 邯郸市| 双辽市| 伊宁县| 什邡市| 左云县| 侯马市| 顺义区| 武强县| 青铜峡市| 四会市| 永宁县| 泾川县| 大余县| 沙洋县| 甘德县| 康定县| 余姚市| 和平区| 西宁市| 香港 | 轮台县|