【threejs】每天一個小案例講解:常見材質

??代碼倉

GitHub - TiffanyHoo/three_practices: Learning three.js together!

可自行clone,無需安裝依賴,直接liver-server運行/直接打開chapter01中的html文件

運行效果圖

知識要點

1. MeshBasicMaterial(基礎網格材質)

? 特點:不響應光照,僅顯示顏色或紋理,性能消耗低。

? 適用場景:靜態背景、2D界面元素、不需要光影效果的模型(如線框模型)。

? 關鍵參數:

? color:設置基礎顏色(如0xff0000為紅色)。

? wireframe:是否以線框模式顯示(true/false)。

2. MeshStandardMaterial(標準網格材質)

r71版本開始引入

? 特點:基于物理渲染(PBR),支持金屬度、粗糙度等物理屬性,響應環境光和直射光,效果更真實。

? 適用場景:大多數需要真實光影效果的模型(如金屬、石材、塑料等)。

? 關鍵參數:

? metalness:金屬度(0為非金屬,1為金屬)。

? roughness:粗糙度(0為光滑,1為粗糙)。

? map:紋理貼圖(如木紋、石紋)。

3. MeshPhongMaterial(馮氏材質)

? 特點:經典光照模型,高光效果明顯,計算速度比標準材質快,但真實感稍弱。

? 適用場景:需要高光效果的非金屬物體(如車漆、光滑塑料)。

? 關鍵參數:

? specular:高光顏色。

? shininess:高光強度(值越大,高光點越小越亮)。

4. MeshLambertMaterial(蘭伯特材質)

? 特點:響應光照,但無高光效果,表面呈啞光質感,光線均勻漫反射。

? 適用場景:布料、紙張、泥土等無光澤物體。

? 關鍵參數:

? color:基礎顏色,受光照影響會變化。

5. SpriteMaterial(精靈材質)

? 特點:用于2D精靈對象(始終面向相機),常作為粒子效果或廣告牌。

? 適用場景:煙霧、火焰、草叢等需要快速渲染的2D元素。

? 關鍵參數:

? map:精靈紋理(如火焰貼圖)。

? sizeAttenuation:是否隨距離縮放大小(true/false)。

6. ShaderMaterial(著色器材質)

? 特點:自定義GLSL著色器代碼,靈活性極高,可實現復雜視覺效果(如動態流體、發光效果)。

? 適用場景:特效、動畫、個性化渲染需求。

? 使用要點:需編寫vertexShader(頂點著色器)和fragmentShader(片元著色器),并通過uniforms傳遞參數。

材質選擇建議

? 追求真實感:優先用MeshStandardMaterial(PBR)。

? 性能優先或無光照需求:用MeshBasicMaterial或MeshLambertMaterial。

? 快速實現高光效果:選MeshPhongMaterial。

? 2D粒子或廣告牌:用SpriteMaterial。

? 自定義特效:使用ShaderMaterial。

核心運行代碼

// create a frame
var frameGeometry = new THREE.BoxGeometry(4, 4, 4);
var frameMaterial = new THREE.MeshBasicMaterial({color: 0xff0000, wireframe: true});
var frame = new THREE.Mesh(frameGeometry, frameMaterial);// position the frame
frame.position.x = 10;
frame.position.y = 2;
frame.position.z = 0;// add the frame to the scene
scene.add(frame);

參考官網:https://threejs.org/docs/#api/en/materials

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84597.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84597.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84597.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

springboot后端與鴻蒙的結合

軟件:鴻蒙devceo3.1,springboot項目采用IDEA 目的: 1、結合springboot后端與鴻蒙的結合運用。 2、Log日志查看console語句的信息。 3、引入 import http from ohos.net.http。 4、調用springboot后端提供的鏈接發送post 5、TextInput的…

minio集群通過mc mirror命令進行定時備份,支持X86和arm兩種架構

文章目錄 前言一、思路二、使用步驟1.下載mc二進制文件2.手動測試備份命令3.配置定時任務4.成功截圖 總結 前言 通過mc mirror命令對minio集群進行定時備份。 一、思路 通過mc mirror命令配合crond定時任務進行周期性的備份 二、使用步驟 1.下載mc二進制文件 wget https:…

三大能力升級,為老項目重構開辟新路徑

在軟件技術飛速迭代的今天,老項目重構是開發者們繞不開的難題。接口實現缺失、業務邏輯矛盾、架構規劃偏離等問題如同攔路虎,讓重構工作舉步維艱。而傳統的 AI 輔助方式,因未充分關聯項目實際情況,猶如 “空中造樓”,難…

AES加密

AES加密算法詳解 AES(Advanced Encryption Standard)是一種對稱密鑰分組加密算法,用于保護電子數據的安全性。其核心特點是通過相同的密鑰進行加密和解密,屬于對稱加密體系。。以下從核心特性、加密流程及安全性三方面展開說明&a…

關于聯詠(Novatek )自動曝光中Lv值的計算方式實現猜想

目錄 一、常見Lv對應的實際場景 二、常見光圈值 三、最小二乘法計算SV中的系數K

[docker]鏡像操作:關于docker pull、save、load一些疑惑解答

在使用 Docker 的過程中,鏡像管理是極其重要的一環。無論是拉取、保存還是加載鏡像,每一個步驟都可能遇到一些疑問或者誤區。 本文將結合實際案例,對常見的 Docker 鏡像操作問題進行系統性總結,幫你更好地理解 Docker 鏡像的工作機…

SFTrack:面向警務無人機的自適應多目標跟蹤算法——突破小尺度高速運動目標的追蹤瓶頸

【導讀】 本文針對無人機(UAV)視頻中目標尺寸小、運動快導致的多目標跟蹤難題,提出一種更簡單高效的方法。核心創新在于從低置信度檢測啟動跟蹤(貼合無人機場景特性),并改進傳統外觀匹配算法以關聯此類檢測…

什么是滲透測試,對網站安全有哪些幫助?

在網絡安全的戰場中,網站如同暴露在數字世界的堡壘,時刻面臨著黑客攻擊的威脅。而滲透測試,就像是為網站進行一場 “模擬攻防演練”,它以黑客的思維和手段,主動出擊,探尋網站潛在的安全漏洞。究竟什么是滲透…

KU115LPE-V10型FPGA加速卡

KU115LPE-V10是一款基于PCI Express總線通信的FPGA加速類產品。 該產品基于Xilinx公司的的高性能Kintex Ultra-Scale FPGA設計,配置最大兩組DDR4緩存單元,每組最大支持4GB容量,72bit(包含ECC,8bit)&#x…

【筆記】Blockchain

區塊鏈Blockchain是一種分布式數據庫技術,其核心特點在于去中心化、不可篡改和透明性。它通過一系列按照時間順序排列的數據塊(即“區塊”)組成,每個數據塊都包含了一定時間內的一系列信息交易,并通過密碼學方法確保這…

GitHub Desktop Failure when receiving data from the peer

目錄 安裝Github Desktop簡易省流助手 解決 Git 克隆時出現的 "Failure when receiving data from the peer" 錯誤1. 網絡連接問題原因:解決辦法: 2. Git 配置問題原因:解決辦法: 3. GitHub 服務故障原因:解…

疏錦行Python打卡 DAY 27 函數專題2:裝飾器

def logger(func):def wrapper(*args, **kwargs):print(f"開始執行函數 {func.__name__},參數: {args}, {kwargs}")result func(*args, **kwargs)print(f"函數 {func.__name__} 執行完畢,返回值: {result}")return resultreturn wr…

大模型布署如何選擇GPU資源?

當前主流GPU型號及其顯存大小(顯存“大小”)的詳細分類匯總,結合消費級、專業工作站級及數據中心級三大應用場景,數據綜合自行業常用型號及最新產品信息(截至2025年6月): 🎮 一、消費…

目標檢測——YOLOv12算法解讀

論文:YOLOv12: Attention-Centric Real-Time Object Detectors (2025.2.18) 作者:Yunjie Tian, Qixiang Ye, David Doermann 鏈接:https://arxiv.org/abs/2502.12524 代碼:https://github.com/sunsmarterjie/yolov12 YOLO系列算法…

JavaEE-Maven

maven Maven是?個項?管理?具, 通過pom.xml?件的配置獲取jar包,?不??動去添加jar包。 maven簡單, ?便, 提?我們的開發效率, 減少我們的開發Bug。 IDEA本?已經集成了Maven, 我們可以直接使?, ?需安裝。 創建maven項目 name是項目名 location是項目路徑 …

使用 C/C++的OpenCV 實時播放火柴人愛心舞蹈動畫

使用 C/OpenCV 實時播放火柴人愛心舞蹈動畫 本文將介紹如何使用 C/OpenCV 庫實時創建一個動畫窗口:一個火柴人捧著愛心跳舞,同時另一個愛心從遠處飛來并逐漸變大。動畫會實時在 OpenCV 窗口中播放,直到用戶按下按鍵退出。 準備工作 確保你…

復現論文報錯解決

文章目錄 一、 The detected CUDA version (12.9) mismatches the version that was used to compile PyTorch (11.8)二、error -- unsupported GNU version! gcc versions later than 11 are not supported!三、Unknown encoder libx264四、下載速度太慢、無法遞歸下載項目 一…

Python 實現 Web 靜態服務器(HTTP 協議)

目錄 一、在本地啟動 HTTP 服務器1. Windows 下安裝 node.js1)下載安裝包2)配置環境變量3)安裝鏡像4)node.js 的常用命令 2. 安裝 http-server 服務3. 使用 http-server 開啟服務1)使用 http-server2)詳解 …

MPMA:Preference Manipulation Attack Against Model Context Protocol

概要 MCP作為提供給LLM作為工具調用的標準化協議被廣泛應用,但是MCP在安全方面還比較脆弱。本文提出了一種MPMA攻擊方法通過在工具的名字或描述中插入具有操控性的文字、短語來操控LLM選擇MCP server的過程。 不了解MCP的具體細節可以看看我寫的這篇文章MCP 場景…

Vim 替換命令完整學習筆記

Vim 替換命令完整學習筆記 文章目錄 Vim 替換命令完整學習筆記1. 核心概念2. 替換命令基本語法2.1 基本格式2.2 分隔符選擇2.3 范圍指定 3. 替換標志詳解3.1 基礎標志3.2 高級標志3.3 標志組合 4. 正則表達式在替換中的應用4.1 基礎正則表達式4.2 字符類和量詞4.3 分組和引用 5…