查看: 1453|回复: 3
打印 上一主题 下一主题

[经验分享] 静态模型的光照贴图与顶点光照比较

[复制链接]

711

主题

10

听众

5805

积分

高级设计师

Rank: 6Rank: 6

纳金币
2954
精华
3

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-5-26 02:25:56 |只看该作者 |倒序浏览

通常有个误解就是,Vertex-Lighting是一种不费的静态模型打光手段,因此应该被作为提升地图运行效率和减少文件尺寸的手段。这种观点,在这两方面其实都有问题。

Lightmap使用平展开的一套UV,如同普通皮肤贴图所需的。Lightmap的贴图大小可以灵活设置,比如64x64。这种方式提供了每像素的光照数据。

Vertex-Lighting使用的数据结构,包含每个顶点所受光照的亮度和色彩信息。该数据结构消耗特定量的内存,这个量是由模型的顶点数量决定的,不能随意改变。

在多数情况下,静态模型应该设成使用Lightmap,因为这可以产生最好的视觉效果,最好的运行效率,而且比Vertex-Lighting消耗更少的内存Lightmap和Vertex-Lighting相比较,具有如下优点:

    Lightmap可以减少CPU和GPU的占用;
    Lightmap让CPU需要计算的光照和物体间的互动更少;
    Lightmap不需要在GPU的多重pass中被渲染;
    Lightmap pass被整合进Emissive(自发光)pass中,因此可以缩短渲染时间;
    Lightmap可以表现交错覆盖于静态模型三角面上的复杂的每像素光照,然而Vertex-Lighting只能表现顶点到顶点之间线形的渐变;

    使用Lightmap的静态模型,可以通过优化使用更少的三角形,获得额外的效率提升。为使用Vertex-Lighting而制作的模型,通常需要较高的细分度,获得更多的顶点来改善顶点之间的光照过渡,然而这种做法的副作用是提升了模型的三角形数量并影响运行效率;

    静态模型上的Lightmap可以设置为使用很小的分辨率,比如16x16或32x32,来减少内存开支。这对于远离游戏中心区域的静态模型来说,非常有 用,这同样也适合受光很均匀的模型。Vertex-Lighting就不具有这种优化的便利,它总是消耗同样数量的内存来存放模型全部顶点的数据结构;

    Lightmap可以通过调整UV的布局,来进行优化以提供尽可能好的光照质量。比如,有一个球形岩石,可以将它的底部的三角形的UV尺寸做得很小,从而 让这部分在整个Lightmap的UV上面只占据很小一块,这样,对于顶部和侧面来说,就获得了更大的贴图面积于是有更精细的光照效果。Vertex- Lighting的精度总是对应于顶点数,而效果又受模型实际大小的影响(就是说缩小了看还可以的模型,放大比如一百倍,由于顶点不能改变,所以效果也变 糙一百倍,而Lightmap因为可以灵活设置精度不存在这个问题),并且不能被优化;

如果静态模型的三角形和顶点数量很少的话,那使用Vertex-Lighting可能会比使用Lightmap占用更少的内存,然而,使用Lightmap绝对是看起来更好的,效率也更高的。使用Lightmap让LD可以优化光照的质量和内存的占用。
所以Lightmap显然是比Vertex-Lighting更好的选择。

举个例子:

比如使用UT3这游戏的静态模型HU_Deco_Pipes.SM.Mesh.S_HU_Deco_Pipes_SM_Pipe01

该模型有2555个三角形和2393个顶点:

如果在场景中放置此模型的420个实例,并且都使用Vertex-Lighting,那么总共消耗11MB内存;

如果在场景中放置此模型的420个实例,并且都使用32x32的Lightmap,那么总共消耗850kb内存;

如果在场景中放置此模型的420个实例,并且都使用64x64的Lightmap,那么总共消耗3.3MB内存;
占用内存的量,也会在地图文件的尺寸上有所表现。

这个例子中的一部分实例,其所用的Lightmap的精度,可以设到128x128或者更高以便获得最佳的光照效果,而仍然使用相比Vertex-Lighting来说更少的内存。并且使用Lightmap的版本,要比Vertex-Lighting版本在渲染上快8-10个百分点。
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-5-26 03:50:56 |只看该作者
thank you for the tutorial!
回复

使用道具 举报

无效楼层,该帖已经被删除
wucnj    

1

主题

1

听众

3160

积分

中级设计师

Rank: 5Rank: 5

纳金币
1065
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2014-5-26 10:08:55 |只看该作者
感谢分享!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-17 05:34 , Processed in 0.652917 second(s), 33 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部