3. 材质属性
材质¶
为对象赋予合适的材质,是制作虚拟现实的关键。
属性列表¶
属性 | 属性名 | 类型 | 默认值/可选值 | 说明 |
---|---|---|---|---|
材质名字 | name | string | ||
双面渲染 | doubleSided | bool | true、false | |
主贴图 | mainTexture | string | ||
主贴图颜色 | color | Color | { r: 1, g: 1, b: 1, a: 1 } | |
法线贴图 | bumpMap | string | ||
法线贴图值 | normalMap | float | 0~5 | |
视差贴图 | parallaxMap | string | ||
金属性强度贴图 | metallicGlossMap | string | ||
金属性强度 | metallic | float | 0~1 | |
光滑度贴图 | smoothnessMap | string | ||
光滑度 | glossiness | float | 0~1 | |
自发光 | emissive | bool | true、false | |
自发光贴图 | emissionMap | string | ||
自发光贴图颜色 | emissionColor | Color | { r: 1, g: 1, b: 1, a: 1 } | |
自发光强度 | emissionIntensity | float | 0~4 | |
偏移 | mainOffset | Vector2 | {x:1,y:1} | |
比例 | mainScale | Vector2 | {x:0,y:0} | |
各向异性 | anisotropic | bool | true、false | |
各向异性值 | anisotropy | float | -1~1 | |
屏幕空间反射 | SSR | bool | true、false | |
透明层 | clearCoat | float | 0~0.8 | |
透明层粗糙度 | clearCoatRoughness | float | 0.01~1 |
示例代码¶
// 是否打开各向异性|anisotropic
renderer.materials[0].anisotropic = true;
// 修改各向异性值|anisotropy
renderer.materials[0].anisotropy = 0.8f;
// 是否打开屏幕空间反射|SSR
renderer.materials[0].SSR = false;
// 修改透明层|clearCoat
renderer.materials[0].clearCoat = 0.55f;
// 修改透明层粗糙度|clearCoatRoughness
renderer.materials[0].clearCoatRoughness = 0.45f;
示例案例¶
Renderer_Demo() {
// 获取名称为“Cylinder”的三维物体-圆柱
Actor model = Actor.Find("Cylinder");
// 获取渲染组件
Renderer renderer = model.GetComponent<Renderer>();
// 获取本地Missing Material材质
Material missingmaterial = SceneManager.singleton.Find<Material>("Missing Material");
// 1-调节渲染属性参数
// 修改材质名字
renderer.materials[0].name = "圆柱体";
// 替换材质
// 获取missingmaterial材质的id
renderer.SetMaterialById(missingmaterial._pid);
// 刷新材质
renderer.OnRefreshMaterial();
// 选择渲染模式|mode
Material.SetMaterialRenderingMode(renderer.materials[0], Material.RenderingMode.Opaque);
// 是否打开双面渲染|doubleSided
renderer.materials[0].doubleSided = true;
// 修改主贴图|mainTexture
renderer.mainTexture = "MainTexture.dds";
// 修改主贴图颜色|color
renderer.materials[0].color = new Color(1, 1, 1, 1);//白色
// 修改法线贴图|bumpMap
renderer.bumpMap = "NormalMap.dds";
// 修改法线贴图值|normalMap
renderer.materials[0].normalMap = 1;
// 修改视差贴图|parallaxMap
renderer.materials[0].parallaxMap = "ParallaxMap.dds";
// 2-调节PBR属性参数
// 修改金属性强度贴图|metallicGlossMap
renderer.metallicGlossMap = "MetallicGlossMap.dds";
// 修改金属性强度|metallic
renderer.materials[0].metallic = 0.55f;
// 修改光滑度贴图|smoothnessMap
renderer.smoothnessMap = "SmoothnessMap.dds";
// 修改光滑度|glossiness
renderer.materials[0].glossiness = 0.6f;
// 是否自发光|emissive
renderer.materials[0].emissive = false;
// 修改自发光贴图|emissionMap
renderer.materials[0].emissionMap = "EmissionMap.dds";
// 修改自发光贴图颜色|emissionColor
renderer.materials[0].emissionColor = new Color(0f, 0f, 1f, 1f);//蓝色
// 修改自发光强度|emissionIntensity
renderer.materials[0].emissionIntensity = 1;
// 3-调节UV转换参数
// 修改比例|mainScale
renderer.materials[0].mainScale = new Vector2(3f, 2f);
// 修改偏移|mainOffset
renderer.materials[0].mainOffset = new Vector2(2f, 3f);
// 4-调节高级参数
// 是否打开各向异性|anisotropic
renderer.materials[0].anisotropic = true;
// 修改各向异性值|anisotropy
renderer.materials[0].anisotropy = 0.8f;
// 是否打开屏幕空间反射|SSR
renderer.materials[0].SSR = false;
// 修改透明层|clearCoat
renderer.materials[0].clearCoat = 0.55f;
// 修改透明层粗糙度|clearCoatRoughness
renderer.materials[0].clearCoatRoughness = 0.45f;
}