lightmap如何制作
关于lightmap的制作方法我看资料知道有如下几种:
1.用3dsmax等软件现成的功能直接render to texture导出带有阴影的纹理;
2.用shader计算然后生成图片文件;
在使用的时候可以分为 单纹理贴图(包含光影的纹理) 和 双纹理贴图(原纹理和黑白图混合)。
我看了很多资料了但是心里还是有个模糊的地方,就是在使用双纹理混合的时候怎样保证uv坐标的一致性,比如一个箱子的一面如果它的纹理只平铺一次正好合适,那再贴上一个对应的黑白纹理就可以了。可是如果是一面砖墙,uv各平铺10次,那光影纹理岂不也平铺的10次?怎样避免这种问题,用什么工具可以保存这些信息。 由于我在使用bsp文件,所以使用的建模工具很有局限性,我现在使用的是q3radiant,也没发现里面有什么lightmap功能,3dmax做出的模型 和 烘焙好的lightmap由于种种原理都不能转换成我想要的bsp格式。。。。。。好郁闷啊。。
下面我发个图,最大的疑惑就是用如下的纹理 是怎么渲染出下面带有光影的样子啊?[img=http://hi.csdn.net/attachment/201002/20/4545393_12666719791ZSF.jpg][/img]
看那张黑白纹理不知是不是lightmap,不太像。。
[解决办法]
那个黑白纹理是噪声纹理,不是光照图。
光照图都是缩放使用的,不能使用平铺,就是说,光照图需要对应一套独立的纹理坐标,或者在着色器中动态计算纹理坐标。
[解决办法]
吗呀!这可是个很大很大的问题啦.可我还是初学......我乱说一些与楼主问题无关哒内容吧。
像普通的纹理, 为啦节省内存, 一般都是做成无缝纹理之后重复多次平铺到表面的。这样比使用一张大纹理要节省很多的空间哒。无论是3DSMAX这样的3D软件还是像Q3那样的专业游戏编辑器软件都支持UV平铺哒。这就好像2D游戏中你像仙剑一样使用TILING还是像盟军敢死队一样就是纯手工绘制的大图一样。哪个更节省内存空间?当然是做成仙剑一样哒。如果是这样的话,那普通纹理与LIGHTMAP就肯定不会使用相同的纹理坐标啦。原因很简单,比如一面墙,你可以用一张普通无缝纹理平铺10次来铺满墙面,因为是无缝,因此可以达到满意的效果。但LIGHTMAP不可能是平铺10次哒,因为LIGHTMAP不可能达到无缝,就算是无缝,墙面不同地方的光照肯定是不相同的,就像100个人有100个指纹一样。所以就必须是一张LIGHTMAP铺一面墙。Q3编辑器是肯定支持LIGHTMAP哒。我记得之前我就生成过,3DSMAX当然也可以RENDER哒。使用这二个软件都可以生成哒。我想可能是你太关注程序啦,当然你也可以使用3D引擎哒。但更难的方法就是你自己写啦。这就是更专业,更大的研究课题啦。那就只能是高人来解答啦。
所以从上面来讲,普通纹理与LIGHTMAP肯定不会是一样坐标哒。
但现在的次世代游戏可能就像盟军敢死队一样啦。我看到美工都是通过3DSMAX把一个小木屋,通过UNWRAP UVW把纹理坐标UV都摆放到一张贴图中(就像人物建模一样),然后再画贴图。之后生成AO,SPECULAR和NORMAL。如果是这样的话,那纹理坐标就一样啦。