three.js MeshPhongMaterial

2023-02-16 17:45 更新

一種用于具有鏡面高光的光澤表面的材質(zhì)。

該材質(zhì)使用非物理的Blinn-Phong模型來計算反射率。 與MeshLambertMaterial中使用的Lambertian模型不同,該材質(zhì)可以模擬具有鏡面高光的光澤表面(例如涂漆木材)。MeshPhongMaterial uses per-fragment shading。

在MeshStandardMaterial或MeshPhysicalMaterial上使用此材質(zhì)時,性能通常會更高 ,但會犧牲一些圖形精度。

示例

構(gòu)造函數(shù)(Constructor)

MeshPhongMaterial( parameters : Object )

parameters - (可選)用于定義材質(zhì)外觀的對象,具有一個或多個屬性。 材質(zhì)的任何屬性都可以從此處傳入(包括從Material繼承的任何屬性)。

屬性color例外,其可以作為十六進制字符串傳遞,默認情況下為 0xffffff(白色),內(nèi)部調(diào)用Color.set(color)。

屬性(Properties)

共有屬性請參見其基類Material。

.alphaMap : Texture

alpha貼圖是一張灰度紋理,用于控制整個表面的不透明度。(黑色:完全透明;白色:完全不透明)。 默認值為null。

僅使用紋理的顏色,忽略alpha通道(如果存在)。 對于RGB和RGBA紋理,WebGL渲染器在采樣此紋理時將使用綠色通道, 因為在DXT壓縮和未壓縮RGB 565格式中為綠色提供了額外的精度。 Luminance-only以及l(fā)uminance/alpha紋理也仍然有效。

.aoMap : Texture

該紋理的紅色通道用作環(huán)境遮擋貼圖。默認值為null。aoMap需要第二組UV。

.aoMapIntensity : Float

環(huán)境遮擋效果的強度。默認值為1。零是不遮擋效果。

.bumpMap : Texture

用于創(chuàng)建凹凸貼圖的紋理。黑色和白色值映射到與光照相關的感知深度。凹凸實際上不會影響對象的幾何形狀,只影響光照。如果定義了法線貼圖,則將忽略該貼圖。

.bumpScale : Float

凹凸貼圖會對材質(zhì)產(chǎn)生多大影響。典型范圍是0-1。默認值為1。

.color : Color

材質(zhì)的顏色(Color),默認值為白色 (0xffffff)。

.combine : Integer

如何將表面顏色的結(jié)果與環(huán)境貼圖(如果有)結(jié)合起來。

選項為THREE.MultiplyOperation(默認值),THREE.MixOperation, THREE.AddOperation。如果選擇多個,則使用.reflectivity在兩種顏色之間進行混合。

.displacementMap : Texture

位移貼圖會影響網(wǎng)格頂點的位置,與僅影響材質(zhì)的光照和陰影的其他貼圖不同,移位的頂點可以投射陰影,阻擋其他對象, 以及充當真實的幾何體。位移紋理是指:網(wǎng)格的所有頂點被映射為圖像中每個像素的值(白色是最高的),并且被重定位。

.displacementScale : Float

位移貼圖對網(wǎng)格的影響程度(黑色是無位移,白色是最大位移)。如果沒有設置位移貼圖,則不會應用此值。默認值為1。

.displacementBias : Float

位移貼圖在網(wǎng)格頂點上的偏移量。如果沒有設置位移貼圖,則不會應用此值。默認值為0。

.emissive : Color

材質(zhì)的放射(光)顏色,基本上是不受其他光照影響的固有顏色。默認為黑色。

.emissiveMap : Texture

設置放射(發(fā)光)貼圖。默認值為null。放射貼圖顏色由放射顏色和強度所調(diào)節(jié)。 如果你有一個放射貼圖,請務必將放射顏色設置為黑色以外的其他顏色。

.emissiveIntensity : Float

放射光強度。調(diào)節(jié)發(fā)光顏色。默認為1。

.envMap : Texture

環(huán)境貼圖。默認值為null。

.flatShading : Boolean

定義材質(zhì)是否使用平面著色進行渲染。默認值為false。

.fog : Boolean

材質(zhì)是否受霧影響。默認為true。

.lightMap : Texture

光照貼圖。默認值為null。lightMap需要第二組UV。

.lightMapIntensity : Float

烘焙光的強度。默認值為1。

.map : Texture

顏色貼圖??梢赃x擇包括一個alpha通道,通常與.transparent 或.alphaTest。默認為null。 紋理貼圖顏色由漫反射顏色.color調(diào)節(jié)。

.normalMap : Texture

用于創(chuàng)建法線貼圖的紋理。RGB值會影響每個像素片段的曲面法線,并更改顏色照亮的方式。法線貼圖不會改變曲面的實際形狀,只會改變光照。 如果材質(zhì)具有使用左手慣例創(chuàng)作的法線貼圖,則應取反 normalScale 的 y 分量以補償不同的手性。

.normalMapType : Integer

法線貼圖的類型。

選項為THREE.TangentSpaceNormalMap(默認)和THREE.ObjectSpaceNormalMap。

.normalScale : Vector2

法線貼圖對材質(zhì)的影響程度。典型范圍是0-1。默認值是Vector2設置為(1,1)。

.reflectivity : Float

環(huán)境貼圖對表面的影響程度; 見.combine。默認值為1,有效范圍介于0(無反射)和1(完全反射)之間。

.refractionRatio : Float

空氣的折射率(IOR)(約為1)除以材質(zhì)的折射率。它與環(huán)境映射模式THREE.CubeRefractionMapping 和THREE.EquirectangularRefractionMapping一起使用。 空氣的折射率 (IOR)(大約 1)除以材料的折射率。它與環(huán)境映射模式 THREE.CubeRefractionMapping 一起使用。折射率不應超過1。默認值為0.98。

.shininess : Float

.specular高亮的程度,越高的值越閃亮。默認值為 30。

.specular : Color

材質(zhì)的高光顏色。默認值為0x111111(深灰色)的顏色Color。

這定義了材質(zhì)的光澤度和光澤的顏色。

.specularMap : Texture

鏡面反射貼圖值會影響鏡面高光以及環(huán)境貼圖對表面的影響程度。默認值為null。

.wireframe : Boolean

將幾何體渲染為線框。默認值為false(即渲染為平面多邊形)。

.wireframeLinecap : String

定義線兩端的外觀??蛇x值為 'butt','round' 和 'square'。默認為'round'。

該屬性對應2D Canvas lineJoin屬性, 并且會被WebGL渲染器忽略。

.wireframeLinejoin : String

定義線連接節(jié)點的樣式??蛇x值為 'round', 'bevel' 和 'miter'。默認值為 'round'。

該屬性對應2D Canvas lineJoin屬性, 并且會被WebGL渲染器忽略。

.wireframeLinewidth : Float

控制線框?qū)挾取DJ值為1。

由于OpenGL Core Profile與 大多數(shù)平臺上WebGL渲染器的限制,無論如何設置該值,線寬始終為1。

方法(Methods)

共有方法請參見其基類Material。

源碼(Source)

src/materials/MeshPhongMaterial.js


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號