基礎(chǔ)紋理

相關(guān)概念

紋理

用一張圖片控制模型的外觀
具體的做法是將一張圖“黏”在模型表面籽御,逐紋素控制模型的顏色

紋理映射坐標

模型頂點在紋理中對應(yīng)的2D坐標
利用紋理展開技術(shù)可將紋理映射坐標存儲到模型的各頂點上
用(u,v)表示,稱為UV坐標
UV坐標的范圍通常會被歸一化到0~1范圍內(nèi)

單張紋理

簡單實現(xiàn)

用紋理代替物體的漫反射顏色

Porperties中聲明紋理屬性
_Specular ("Specular", Color) = (1,1,1,1)
CG代碼片中聲明匹配的變量
// 用 紋理名_ST 聲明某個紋理的屬性 (ST: scale translation)
// 縮放,平移  xy存儲的是縮放值,.zw存儲的是偏移值
float4 _MainTex_ST;  
在頂點著色器中使用屬性_MainTex_ST對頂點紋理進行變換殴玛,得到紋理坐標
// 先縮放,再偏移
o.uv = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
在片元著色器中,在計算漫反射時使用紋理的紋素值
// 反射率:對紋理進行采樣(被采樣紋理, 紋理坐標)得到紋素值  ,再乘以顏色得到材質(zhì)的反射率
fixed3 albedo = tex2D(_MainTex, i.uv).rgb * _Color.rgb;
// 環(huán)境光 : 反射率與環(huán)境光相乘得到環(huán)境光
fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz * albedo;
// 漫反射
fixed3 diffuse = _LightColor0.rgb * albedo * max(0, dot(worldNormal, worldLightDir));

紋理相關(guān)屬性

紋理相關(guān)屬性.png
TextureType

為導(dǎo)入的紋理選擇類型(如法線等)
選擇正確的類型能讓Unity對紋理進行優(yōu)化

WrapMode

當紋理坐標超過0~1范圍后垄懂,如何平鋪紋理
2種模式

  • Repeat:紋理不斷重復(fù)
  • Clamp:截取到邊界值厘擂,形成條形結(jié)構(gòu)
FilterMode

當紋理由于變換而產(chǎn)生拉伸時,會采用哪種濾波模式

  • Point:最近鄰濾波匣吊,采樣像素數(shù)只有1個(像素風(fēng)格)
  • Bilinear:線性濾波,找到4個鄰近像素寸潦,對它們進行線性插值(模糊)
  • Trilinear:與Bilinear類似色鸳,在mipmap間進行混合
    效果(圖片質(zhì)量)提升,耗費性能增大
Generate Mip Maps

紋理縮屑:原紋理多個像素對應(yīng)到一個目標像素
使用多級漸遠紋理(mipmapping)解決

  • 多級漸遠紋理
    將原紋理提前用濾波處理得到很多更小的圖像命雀,形成若干層,每層毒上一層的圖像進行了降采樣
    實時運行時斩箫,根據(jù)物體與攝像機的距離使用對應(yīng)的紋理(空間換時間)
MaxSize

導(dǎo)入的紋理可以非正方形吏砂,但其長寬都應(yīng)是2的冪

Format

Unity內(nèi)部用來存儲紋理的格式
紋理格式精度越高撵儿,效果越好,占用的內(nèi)存空間越大

凹凸映射

目的:用一張紋理修改模型表面的法線狐血,為模型提供更多的細節(jié)(不會真的改變模型的頂點位置)
進行凹凸映射的方法

  • 高度紋理(映射):模擬表面位移统倒,得到修改后的法線值
  • 法線紋理(映射):直接存儲表面法線

高度紋理

高度圖中存儲高度值,表示模型表面局部的海拔高度
顏色深淺表示:顏色越淺表面越向外凸起氛雪,顏色越深表面越向里凹
優(yōu)點:直觀
缺點:計算復(fù)雜

法線紋理

法線方向與像素值

紋理圖中存儲的是表面的法線方向?qū)?yīng)的像素值
因為法線方向(-1,1)與像素(0,1)的分量不一樣房匆,因此需要通過映射將法線方向值映射到像素值上
像素值 =(法線方向值+1)/ 2

法線紋理圖中存儲的法線方向在哪個坐標空間?

模型空間(因為模型頂點自帶的法線本身就是定義在模型空間)
切線空間:每個頂點有屬于自己的切線空間报亩,該切線空間的原點是頂點本身浴鸿,z軸是法線方向,x軸是切線方向

  • 優(yōu)點:
    自由度高:記錄的是相對法線信息弦追,因此可以將某個紋理應(yīng)用到另一個不同的網(wǎng)格上
    UV動畫:通過移動UV坐標實現(xiàn)凹凸移動的效果
    可重用
    可壓縮:z方向一定為正岳链,因此可以僅存儲xy方向,經(jīng)運算得到z方向

選擇切線空間的法線紋理

實踐

在切線空間下進行光照計算
  • 頂點著色器:將視角方向和光照方向從模型空間變換到切線空間
  • 片元著色器:得到切線空間下的法線(紋理采樣)劲件,與切線空間下的視角方向掸哑、光照方向進行計算,得到光照結(jié)果
在世界空間下進行光照計算
  • 頂點著色器:計算從切線空間到世界空間的變換矩陣
    通過頂點的切線零远、副切線和法線在世界空間下的表示得到
  • 片元著色器:把法線紋理中的法線防線從切線空間變換到世界空間

Unity中的法線紋理類型

將紋理類型設(shè)置為Normal map后苗分,若勾選Create from Grayscale,則會從高度圖生成法線紋理

  • Bumpiness控制凹凸程度
  • Filtering決定計算凹凸程度的方式:Smooth平滑牵辣,Sharp使用Sobel濾波生成法線

漸變紋理

用漸變紋理控制漫反射光照的結(jié)果
通過這種方法可以更靈活地控制光照結(jié)果

步驟

  • 計算halfLambert:通過法線方向和光照方向得到
  • 構(gòu)建紋理坐標
  • 用紋理坐標對漸變紋理(_RampTex摔癣,一維紋理,縱軸方向顏色不變)進行采樣
  • 漫反射顏色:將采樣得到的顏色與材質(zhì)顏色相乘
  • 最終顏色:環(huán)境光+漫反射+高光

需將漸變紋理的WrapMode設(shè)置為Clamp模式纬向,防止在接縫處出現(xiàn)突變择浊,導(dǎo)致黑點

遮罩紋理

遮罩:保護指定區(qū)域,使其不受某些修改

步驟

-通過采樣得到遮罩紋理的紋素值
-使用其中某(幾)個通道值與某種表面屬性相乘逾条,若該通道值為0琢岩,則可以保護表面不受該屬性影響

其他遮罩紋理

可以充分利用一張紋理的RGBA四個通道來存儲不同的屬性

  • R:高光反射強度
  • G:邊緣光照強度
  • B:高光反射的指數(shù)部分
  • A:自發(fā)光強度
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市师脂,隨后出現(xiàn)的幾起案子担孔,更是在濱河造成了極大的恐慌,老刑警劉巖危彩,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攒磨,死亡現(xiàn)場離奇詭異泳桦,居然都是意外死亡汤徽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門灸撰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谒府,“玉大人拼坎,你說我怎么就攤上這事⊥暌撸” “怎么了泰鸡?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長壳鹤。 經(jīng)常有香客問我盛龄,道長,這世上最難降的妖魔是什么芳誓? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任余舶,我火速辦了婚禮,結(jié)果婚禮上锹淌,老公的妹妹穿的比我還像新娘匿值。我一直安慰自己,他們只是感情好赂摆,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布挟憔。 她就那樣靜靜地躺著,像睡著了一般烟号。 火紅的嫁衣襯著肌膚如雪绊谭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天汪拥,我揣著相機與錄音龙誊,去河邊找鬼。 笑死喷楣,一個胖子當著我的面吹牛趟大,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播铣焊,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼逊朽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了曲伊?” 一聲冷哼從身側(cè)響起叽讳,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坟募,沒想到半個月后岛蚤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡懈糯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年涤妒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赚哗。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡她紫,死狀恐怖硅堆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贿讹,我是刑警寧澤渐逃,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站民褂,受9級特大地震影響茄菊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赊堪,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一买羞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧雹食,春花似錦畜普、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至街立,卻和暖如春舶衬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赎离。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工逛犹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梁剔。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓虽画,卻偏偏與公主長得像,于是被迫代替她去往敵國和親荣病。 傳聞我的和親對象是個殘疾皇子码撰,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自VR設(shè)計云課堂[http://www.reibang.com/u/c7ffdc4b379e]Unity S...
    水月凡閱讀 1,020評論 0 0
  • 一個三維場景的畫面的好壞,百分之四十取決于模型个盆,百分之六十取決于貼圖脖岛,可見貼圖在畫面中所占的重要性。在這里我將列舉...
    CXYMichael閱讀 1,635評論 2 5
  • 前言:如果你沒有 OpenGL ES 2 的基礎(chǔ)知識颊亮,請先移步《OpenGL ES 2.0 (iOS) 筆記大綱》...
    半紙淵閱讀 2,110評論 6 10
  • 紋理只是一種能夠應(yīng)用到場景中的三角形上的圖像數(shù)據(jù)柴梆,它通過經(jīng)過過濾的紋理單元(texel,相當于紋理的像素)填充到實...
    Gaolex閱讀 2,836評論 0 1
  • 我是個驕傲的女子终惑。 游走在這個獨我的繁華世界里绍在。 肆意地歌唱。奔跑。凝望揣苏。冥想。 急切而慌亂地宣泄著我的癲狂件舵。 美...
    小洋妮閱讀 299評論 1 3