ThreeJs-04詳解材質與紋理

Heymar-10發表於2024-11-27

一.matcap材質

這個材質不會受到光照影響,但是如果圖片本身有光就可以一直渲染這個圖片本來的樣子,用來將一個圖片紋理渲染到物體上的材質

image-20241121203036600

image-2024112120314790

image-20241121203130183

程式碼實現

載入模型後,開啟紋理渲染,並把它的材質變為這個材質,並且貼上紋理圖

image-20241121203303922

二.Lambert材質

Lambert網格材質是Three.js中最基本和常用的材質之一。本文將詳細介紹Lambert網格材質的定義、特點、應用以及使用方法。

image-20241121203350029

簡單來說就是這個材質當你設定好各種貼圖之後 實現凹凸不平地面等是比較好的

設定好Lambert材質後,打一個光進來,會發現是漫反射啞光的反射類似於

image-20241121204636638

三.phong材質

PHONG材質是Three.js中常用的一種材質,它是一種基於Phong光照模型的材質,可以用於實現高光和陰影效果。Phong光照模型是一種基於漫反射、鏡面反射和環境反射的光照模型,可以用於模擬真實物體的光照效果。

比如塗了漆面的木材,光滑的材質

image-20241121205608593

設定為phone材質,在設定高光顏色就可以形成對點光源的反射

image-20241121205751928

設定好環境貼圖後

image-2024112120583105

程式碼操作

建立光源,把一個平面設定成phone材質

image-20241121210053452

新增環境貼圖

image-20241121210317472

光滑的反射就出來了

GIF

1.實現玻璃水晶效果

image-20241121210637829

載入模型,設定環境光,把這個模型改為phone材質,並且設定兩個折射率

image-20241121211041274

envmap是環境貼圖

image-20241121211105343

image-20241121211116253

如果想要折射效果還需要把環境貼圖改為折射球形,上下不一樣注意

image-20241121211244469

當把上面的反射變為折射後,這裡的反射率也變為了折射率

image-20241121211339694

GIF

四.基礎材質詳解

1.標準網格材質

在 Three.js 中,MeshBasicMaterial 是一個用於建立基本材質的類。它能夠讓您快速建立不需要光照效果的幾何體,並且配置非常簡單,可以使用顏色、透明度和紋理等屬性來自定義材質。MeshBasicMaterial 在 Three.js 中非常重要,因為它是建立簡單3D圖形的常用材質之一,而且渲染速度很快,能夠讓您的應用程式保持流暢的互動體驗。如果您想要建立更復雜的3D圖形,瞭解 MeshBasicMaterial 是非常有用的,因為它是其他更復雜材質的基礎。

注意:標準網格材質需要設定環境貼圖

這裡做一個記錄,系統性的介紹一下各種貼圖的作用,在之前的材質也有各種貼圖,但是標準是最齊全的能夠達到漫反射也能鏡反射

載入一個劍的模型

image-20241121212931300

image-20241121212959222

先上環境貼圖

image-20241121213022720

粗糙度為1,漫反射

image-20241121213104366

粗糙度為0,鏡反射

image-20241121213122418

金屬度為0

image-20241121213134760

金屬度為1

image-20241121213145115

還原預設,先貼上貼圖

image-20241121213227685

金屬度貼圖和金屬度是一個相乘的關係,越大就越金屬

image-2024112121332269法線貼圖實現凹凸不平的效果

image-20241121213350159

凹凸貼圖同理,兩個只能設定一個

置換貼圖可以讓頂點有一個起伏的效果,上面是看起來,這個是真起來

image-20241121213508952

粗糙度貼圖可以讓其光滑

image-20241121213603671

注意:真實環境只需要匯入進來就是這個樣子,不需要一個一個貼圖,只是有時候改可以瞭解

image-20241121213659463

程式碼實現

image-20241121214628508

建立環境貼圖,背景一定要新增

image-20241121220437668

2.物理網格材質

image-202411212116590

物理材質就是能夠在剛才標準材質的基礎上新增更多的功能

透光率

image-20241122204625828

image-20241122204733564

當粗糙度為0,很光滑的時候就完全透明瞭

image-20241122204804798

image-2024112220481002厚度

image-20241122204820807

image-20241122204844113

image-20241122204905093

折射率,反射率

image-20241122204934596

衰減顏色,距離

image-20241122205004480

衰減距離越小,就越快到達衰減顏色

image-20241122205157040

偏紅色

注意:衰減顏色最好都設定1以下不要整的

image-20241122205222422

厚度貼圖

呈現一個不均勻的厚度

image-20241122205424614

image-20241122205451174

GIF

清漆效果與清漆透明度

image-20241122205759196

單純設定一個清漆強度為1後

GIF

清漆光滑度,1漫反射,0鏡反射

image-20241122205955389

map就是透過紋理決定哪些地方要清漆哪些地方不要

image-20241122211724856

中間光滑,周圍不清漆

image-20241122211758974

注意此時應該粗糙度為1,到時候紋理會乘以粗糙度,如果為0始終 都是光滑

image-20241122211904061

image-2024112221191452

法線貼圖

image-20241122211946090

image-20241122212038525

image-20241122212051464

image-20241122212020950

3. 布料織物材料光澤效果

image-20241122212504250

建立一個物理材質球體

image-2024112221310557

設定光澤及顏色後

image-20241122213125629

image-20241122213133129

光澤粗糙程度

image-20241122213159760

設定紋理貼圖

image-20241122213308545

image-20241122213313943

4.肥皂泡、油滴、蝴蝶翅膀等薄膜的虹彩效應

反射出各種顏色的材質

image-20241122213453225

這種效果實際是有兩層組成,外面一層負責反射折射

建立一個基本球體,有粗糙度,透明度,還有一層厚度

image-20241122214131627

image-20241122214150959

設定彩虹色,反射率和彩虹色折射率

image-20241122214426056

GIF

薄膜厚度範圍

預設

image-20241122214542012

設定薄膜厚度貼圖

image-20241122214626750

image-2024112221461734

5.清除物體_幾何體_材質_紋理保證效能和記憶體不洩漏

比如這裡不斷建立一個隨機材質,隨機幾何體的物體,不斷回撥自身

image-20241122215953044

此時cpu使用率和記憶體大小都在不斷增加,到一定程度就會網頁崩潰

GIF

要最佳化這種情況就是

每一幀渲染完畢,render.render就是渲染的語句,就去清除掉物體幾何體等

image-20241122220154401

6.巧用物理發光屬性打造逼真IPHONE產品

在很多建模軟體直接匯出來給到3D匯入會發現有些屬性發光等會缺失,這是因為兩者有些內容並不兼用,所以這個時候通常是載入到three的編輯器裡面,進行編輯之後,滿意之後再匯出到three裡面進行模型載入

剛載入進來

image-20241122221251880

找到螢幕材質,設定好之後匯出

image-20241122222931053

image-20241122222937759

載入進來就行了

image-20241122223013122

7.修改模型光澤效果打造逼真室內場景

image-20241122223145966

剛匯入進來

image-20241122223537547

設定光澤光澤顏色

image-20241122223739589

毛絨效果,法線貼圖

image-20241122224209173

控制角度

如果讓使用者隨意去轉動很容易穿幫

image-20241122224856196

首先設定起始位置

可以新增軌道控制器來輔助檢視

image-20241122225650253

設定相機初始位置,以及一開始看向的角度,x軸是橫向看多寬,y是看多高,要設定lookat一開始看的角度還得配合控制器

image-20241122225756210

image-20241122225836884

image-20241122225823919

image-20241122225912473

image-20241122225928130

image-20241122230031381

GIF

image-20241122230117022

垂直的最小角度是網上旋轉,最大角度是往下旋轉

image-20241122230255085

GIF

水平左右的角度

image-20241122230404132

相關文章