5. 材质属性
材质¶
为对象赋予合适的材质,是制作虚拟现实的关键。
属性列表¶
属性 | 属性名 | 类型 | 默认值/可选值 | 说明 |
---|---|---|---|---|
材质名字 | name | string | ||
双面渲染 | doubleSided | boolean | true、false | |
主贴图 | _mainTexture | / | ||
ORM贴图 | _ormMap | / | ||
主贴图颜色 | color | Color | { r:1, g:1, b:1, a:1 } | |
法线贴图 | _bumpMap | / | ||
法线贴图值 | normalMap | number | 0~5 | |
视差 | enabledParallax | boolean | true、false | |
视差类型 | ParallaxType | number | 3、4 | 4=视差遮蔽,3=陡峭视差 |
视差贴图 | _parallaxMap | / | ||
缩放因子 | ParallaxScale | number | ||
金属性强度贴图 | _metallicGlossMap | / | ||
金属性强度 | metallic | number | 0~1 | |
光滑度贴图 | _smoothnessMap | / | ||
光滑度 | glossiness | number | 0~1 | |
纹理层次偏移 | mipMapOffset | number | 0~1 | |
自发光 | emissive | boolean | true、false | |
自发光贴图 | _emissionMap | / | ||
自发光贴图颜色 | emissionColor | Color | { r:1, g:1, b:1, a:1 } | |
自发光强度 | emissionIntensity | number | 0~4 | |
偏移 | mainOffset | Vector2 | {x:1,y:1} | |
比例 | mainScale | Vector2 | {x:0,y:0} | |
各向异性 | anisotropic | boolean | true、false | |
各向异性值 | anisotropy | number | -1~1 | |
屏幕空间反射 | SSR | boolean | true、false | |
透明层 | clearCoat | number | 0~0.8 | |
透明层粗糙度 | clearCoatRoughness | number | 0.01~1 | |
产生阴影 | EnableShadow | boolean | true、false | |
接受阴影 | ReceiveShadow | boolean | true、false |
示例代码¶
// 选择渲染模式|mode
// 可选值为0~1 即 透明=1/不透明=0
material.SetMaterialRenderingMode(1);
// 是否打开双面渲染|doubleSided
material.doubleSided = true;
// 修改主贴图|mainTexture
material.SetTextureById("_mainTexture" , texture._pid);
// 修改主贴图颜色|color
material.color = { r: 1, g: 0, b: 1, a: 0.60 };
// 修改ORM贴图
material.SetTextureById("_ormMap" , texture._pid);
// 修改法线贴图|bumpMap
material.SetTextureById("_bumpMap" , texture._pid);
// 修改法线贴图值|normalMap
material.normalMap = 1;
示例案例¶
// 材质
renderer_Demo() {
// 获取名称为“Cylinder”的三维物体-圆柱
let renderer_Actor = gVrpManager.Scene().FindActor("Cylinder");
// 获取渲染组件
let renderer = renderer_Actor.GetRenderer();
// 通过贴图name获取贴图身上的属性
let texture =gVrpManager.Scene().FindByName("5.3.dds","Texture");
// 获取材质球的id
let material = gVrpManager.Scene().GetMaterial(renderer.materials[0]._pid);
// 1-调节渲染属性参数
// 修改材质名称|name
material.name = "圆柱体";
// 刷新材质的方法
renderer.OnRefreshMaterial();
// 选择渲染模式|mode
// 可选值为0~1 即 透明=1/不透明=0
material.SetMaterialRenderingMode(1);
// 是否打开双面渲染|doubleSided
material.doubleSided = true;
// 修改主贴图|mainTexture
material.SetTextureById("_mainTexture" , texture._pid);
// 修改主贴图颜色|color
material.color = { r: 1, g: 0, b: 1, a: 0.60 };
// 修改ORM贴图
material.SetTextureById("_ormMap" , texture._pid);
// 修改法线贴图|bumpMap
material.SetTextureById("_bumpMap" , texture._pid);
// 修改法线贴图值|normalMap
material.normalMap = 1;
// 2-调节视差属性参数
// 是否打开视差|enabledParallax
material.enabledParallax = false;
// 修改视差类型|ParallaxType
// 视差类型:4:视差遮蔽、3:陡峭视差
material.ParallaxType = 4;
// 修改视差贴图|parallaxMap
material.SetTextureById("_parallaxMap" , texture._pid);
// 缩放因子|ParallaxScale
material.ParallaxScale = 50;
// 3-调节PBR属性参数
// 修改金属性强度贴图|metallicGlossMap 同mainTexture
material.SetTextureById("_metallicGlossMap" , texture._pid);
// 修改金属性强度|metallic
material.metallic = 0.55;
// 修改光滑度贴图|smoothnessMap
material.SetTextureById("_smoothnessMap" , texture._pid);
// 修改光滑度|glossiness
material.glossiness = 0.6;
// 修改纹理层次偏移|mipMapOffset
material.mipMapOffset = 0;
// 是否自发光|emissive
material.emissive = false;
// 修改自发光贴图|emissionMap
material.SetTextureById("_emissionMap" , texture._pid);
// 修改自发光贴图颜色|emissionColor
material.emissionColor = { r: 1, g: 1, b: 1, a: 1 };
// 修改自发光强度|emissionIntensity
material.emissionIntensity = 1;
// 4-调节UV转换参数
// 修改比例|mainScale
material.mainScale = { x: 3, y: 2 };
// 修改偏移|mainOffset
material.mainOffset = { x: 2, y: 3 };
// 5-调节高级参数
// 是否打开各向异性|anisotropic
material.anisotropic = true;
// 修改各向异性值|anisotropy
material.anisotropy = 0.8;
// 是否打开屏幕空间反射|SSR
material.SSR = false;
// 修改透明层|clearCoat
material.clearCoat = 0.55;
// 修改透明层粗糙度|clearCoatRoughness
material.clearCoatRoughness = 0.45;
// 是否产生阴影|EnableShadow
material.EnableShadow = true;
// 是否接受阴影|ReceiveShadow
material.ReceiveShadow = true;
}