three.js MeshPhysicalMaterial

2023-02-16 17:45 更新

MeshStandardMaterial的擴(kuò)展,提供了更高級的基于物理的渲染屬性:

  • Clearcoat: 有些類似于車漆,碳纖,被水打濕的表面的材質(zhì)需要在面上再增加一個透明的,具有一定反光特性的面。而且這個面說不定有一定的起伏與粗糙度。Clearcoat可以在不需要重新創(chuàng)建一個透明的面的情況下做到類似的效果。
  • 基于物理的透明度:.opacity屬性有一些限制:在透明度比較高的時候,反射也隨之減少。使用基于物理的透光性.transmission屬性可以讓一些很薄的透明表面,例如玻璃,變得更真實(shí)一些。
  • 高級光線反射: 為非金屬材質(zhì)提供了更多更靈活的光線反射。
  • Sheen: 可用于表示布料和織物材料。

物理網(wǎng)格材質(zhì)使用了更復(fù)雜的著色器功能,所以在每個像素的渲染都要比three.js中的其他材質(zhì)更費(fèi)性能,大部分的特性是默認(rèn)關(guān)閉的,需要手動開啟,每開啟一項功能在開啟的時候才會更耗性能。請注意,為獲得最佳效果,您在使用此材質(zhì)時應(yīng)始終指定environment map。

示例

例子

materials / variations / physical
materials / physical / clearcoat
materials / physical / reflectivity
loader / gltf / sheen
materials / physical / transmission

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

MeshPhysicalMaterial( parameters : Object )

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

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

屬性(Properties)

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

.attenuationColor : Color

白光到達(dá)衰減距離時因吸收而變成的顏色。默認(rèn)為白色 (0xffffff)。

.attenuationDistance : Float

介質(zhì)的密度,表示為光在與粒子相互作用之前在介質(zhì)中傳播的平均距離。該值以世界空間單位給出,并且必須大于零。默認(rèn)為無窮大。

.clearcoat : Float

表示clear coat層的強(qiáng)度,范圍從0.0到1.0m,當(dāng)需要在表面加一層薄薄的半透明材質(zhì)的時候,可以使用與clear coat相關(guān)的屬性,默認(rèn)為0.0;

.clearcoatMap : Texture

這個貼圖的紅色通道值會與.clearcoat相乘作為整個clear coat的強(qiáng)度值層,默認(rèn)為null。

.clearcoatNormalMap : Texture

用于為clear coat層設(shè)置的獨(dú)立的法線貼圖,默認(rèn)為null。

.clearcoatNormalScale : Vector2

衡量.clearcoatNormalMap影響clear coat層多少的值,由(0,0)到(1,1),默認(rèn)為(1,1)。

.clearcoatRoughness : Float

clear coat層的粗糙度,由0.0到1.0。 默認(rèn)為0.0

.clearcoatRoughnessMap : Texture

此紋理的綠色通道值會與.clearcoatRoughness相乘,用于改變clear coat的粗糙度,默認(rèn)為null

.defines : Object

如下形式的對象:

{

			'STANDARD': ''
			'PHYSICAL': '',

		};

WebGLRenderer使用它來選擇shaders。

.ior : Float

為非金屬材質(zhì)所設(shè)置的折射率,范圍由1.0到2.333。默認(rèn)為1.5。

.reflectivity : Float

反射率,由0.0到1.0。默認(rèn)為0.5, 相當(dāng)于折射率1.5。

這模擬了非金屬材質(zhì)的反射率。當(dāng)metalness為1.0時,此屬性無效。

.sheen : Float

光澤層的強(qiáng)度,范圍是0.0到1.0。默認(rèn)為0.0。

.sheenRoughness : Float

光澤層的粗糙度,由0.0到1.0。默認(rèn)值是1.0。

.sheenRoughnessMap : Texture

此紋理的透明通道會與.sheenRoughness相乘,用于改變光澤層的粗糙度,默認(rèn)為null;

.sheenColor : Color

光澤顏色,默認(rèn)為0xffffff白色。

.sheenColorMap : Texture

此紋理的RGB通道會與.sheenColor光澤顏色相乘,最終作為光澤顏色結(jié)果,默認(rèn)為null。

.specularIntensity : Float

用于控制非金屬材質(zhì)高光反射強(qiáng)度的浮點(diǎn)值。漫反射材質(zhì)對應(yīng)的值為0。范圍從0.0到1.0。 默認(rèn)值為0.0。

.specularIntensityMap : Texture

此紋理的alpha通道將與.specularIntensity相乘,用于逐像素地控制高光強(qiáng)度。默認(rèn)值為null。

.specularColor : Color

非金屬材質(zhì)在垂直于法線方向觀看時的高光反射顏色。默認(rèn)值為0xffffff,白色。

.specularColorMap : Texture

此紋理的alpha通道將與.specularColor相乘,用于逐像素地控制高光顏色。默認(rèn)值為null。

.thickness : Float

表面下方體積的厚度。該值在網(wǎng)格的坐標(biāo)空間中給出。如果值為 0,則材料為薄壁材料。否則材料是體積邊界。默認(rèn)為 0。

.thicknessMap : Texture

定義厚度的紋理,存儲在 G 通道中。這將乘以.thickness。默認(rèn)為空。

.transmission : Float

透光率(或者說透光性),范圍從0.0到1.0。默認(rèn)值是0.0。

很薄的透明或者半透明的塑料、玻璃材質(zhì)即便在幾乎完全透明的情況下仍舊會保留反射的光線,透光性屬性用于這種類型的材質(zhì)。

當(dāng)透光率不為0的時候, opacity透明度應(yīng)設(shè)置為1.

.transmissionMap : Texture

此紋理的紅色通道會與透光性.transmission相乘最為最終的透光性結(jié)果。默認(rèn)為null。

方法(Methods)

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

源碼(Source)

src/materials/MeshPhysicalMaterial.js


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號