跳转至

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;
    }