【Unity 3 d】UnityにLightmappingを動的にロードする方法
Lightmappingのメリットはもちろん(レンダリング速度が速くて効果的)、以下が解決策です
一.まず、美術はA.Prefabをシーンに置いて光を当て、Lightmappingをレンダリングし、生成されたのはA_であると仮定する.Lightmapping.exr
二.そして、実行時にこのA.Prefabをロードします.この場合、Lightmappingはありません.Aモデルは花です.
三.対応するLightmappingをロードして追加
四.A.PrefabオブジェクトのlightmapIndexの変更
大功を成し遂げる
一.まず、美術はA.Prefabをシーンに置いて光を当て、Lightmappingをレンダリングし、生成されたのはA_であると仮定する.Lightmapping.exr
二.そして、実行時にこのA.Prefabをロードします.この場合、Lightmappingはありません.Aモデルは花です.
三.対応するLightmappingをロードして追加
static public void AddLightmappingTex(string lightmappingFile, int lightmappingIndex)
{
LightmapData[] lightmapArray = LightmapSettings.lightmaps;
lightmapArray [lightmappingIndex].lightmapFar = Resources.Load(path) as Texture2D;
LightmapSettings.lightmaps = lightmapArray;
}
四.A.PrefabオブジェクトのlightmapIndexの変更
static public void SetLightmappingIndex(GameObject obj, int lightmappingIndex)
{
if (obj.renderer != null && obj.renderer.lightmapIndex != -1)
{
obj.renderer.lightmapIndex = lightmappingIndex;
}
int count = obj.transform.childCount;
for (int i=0; i
大功を成し遂げる