跳转至

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