unity关于程序获得lightmap,光照贴图以及对应的所在光照贴图的位置

前一段时间,项目游戏要换场景资源,美术部把做好的场景模型经过光照贴图处理;让我替换资源,但是我一看傻眼了,这么资源要替换,后来我观察发现,原来的场景里的模型和现在的一样,但是,就是少了光照烘焙信息:

有三个办法可以解决:

1,手动把资源一一替换,麻烦,累,谁都不想干;

2,:我们可以找到某个prefab的名字,然后直接替换prefab,然后把名字再改为一样,能解决模型,和光照信息;

比如要替换a.prefab;  路径: Assets/Res/Prefabs/road/a.prefab

Gameobject a=Gameobject.Find("a");
 Gameobject road = Resources.LoadAssetAtPath ( "Assets/Res/Prefabs/road/a.prefab", typeof ( GameObject ) ) as GameObject;
 GameObject roadinstance=Instantiate ( road, Vector3.zero, Quaternion.identity ) as GameObject;
roadinstance.transform.localPosition = a.transform.localPosition;
                    roadinstance.transform.localEulerAngles = a.transform.localEulerAngles;
                    roadinstance.transform.localScale = a.transform.localScale;
                    roadinstance.name =a.name;
                    DestroyImmediate ( g );
这个可能会有问题,一定要把替换的信息全替换了,代码量会多,要考虑全。

ok,问题解决了。

3,如果说模型和要替换的模型都一样;这是我们就直接修改它的光照贴图信息就ok了

那么renderer.lightmapTilingOffset,及renderer.lightmapIndex,解决了我们的问题

lightmapTilingOffset是该模型所在光照贴图的位置,lightmapIndex是该模型所用到那一张光照贴图;

例如:在场景中的b.prefab的光照信息丢失了,那么我就找到原来的b.prefab例如是a.prefab,进行烘焙,要保证b.prefab的模型和a.的模型一致

b.renderer.lightmapTilingOffset=a.renderer.lightmapTilingOffset;

b.renderer.lightmapIndex=a.renderer.lightmapIndex;

问题解决啦,很不错吧!

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tianyongheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值