unity动态改变自发光

unity5.0很早以前可以动态改自发光

也就是自发光对GI有影响

不过很少有人注意到这点

主要是在动态和静态上也存在不同的情况

有时候用处还是很明显的

下面是在unity5.5上做的测试

首先 作为自发光的物体必须是静态的,

其次材质的emission必须放上图片或者有颜色


然后烘焙和实时分为三种情况

而且emission下有三个选项,none就是自发光不管在哪个模式下都不对全局光产生影响

realtime就是在实时的情况下可以通过代码DynamicGI.UpdateMaterials来调整自发光的亮度或者颜色等等

baked当然也能通过代码调整,但必须是只开了pre的情况下才行,如果既开了pre又开了baked,那么只有设置成realtime才能的才能改变


如果场景只设置了baked,只有烘焙效果,并不能有实时效果

当然两个都没有的话,就没有烘焙效果和实时效果了


下面是控制代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class UpdataGI : MonoBehaviour {
    float tempTime = 0.001f;
	void Update () {
        if (tempTime < 1) tempTime += 0.001f;
        else
            tempTime = 0;
        this.gameObject.GetComponent().material.SetColor("_EmissionColor", Color.HSVToRGB(tempTime, 1,2));
        DynamicGI.UpdateMaterials(this.gameObject.GetComponent());
    }
}

unity动态改变自发光_第1张图片



图片效果比较像面光源

下面可以用setTexture方式赋值来控制自发光

注意使用的是_EmissionMap

     _Color
     _MainTex
     _Cutoff
     _Glossiness
     _Metallic
     _MetallicGlossMap
     _BumpScale
     _BumpMap
     _Parallax
     _ParallaxMap
     _OcclusionStrength
     _OcclusionMap
     _EmissionColor
     _EmissionMap
     _DetailMask
     _DetailAlbedoMap
     _DetailNormalMapScale
     _DetailNormalMap
     _UVSec
     _EmissionScaleUI
     _EmissionColorUI
     _Mode
     _SrcBlend
     _DstBlend
     _ZWrite







你可能感兴趣的:(unity)