老白之前写过《3DMAX单位管理&UDK导入换算》,已经说明了在udkgame/utgame等基础(摄影机安排)上,UDK的1unit=现实世界的2cm。在这里其实是接着讨论一下材质贴图采用的分辨率和现实世界的尺寸的对应问题。
假设一个箱子,大小为128*128*128(UDK units),当距离摄影机较远时,这个箱子在屏幕上很小;当距离摄影机较近时,屏幕显示越大。如果这个箱子的表面是采用位图贴图的方式建立材质,那么这张位图采用多大的分辨率合适呢?
举个例子,在UDK附带的EpicCitadel游戏里,就有一个箱子,大小正好是128*128*128。参考这个箱子如何决定贴图的分辨率的。
这个箱子采用的材质表达式非常简单,就是直接采用的贴图,而这张贴图的分辨率是1024*1024。
这时再看一下这个箱子的UV坐标。
选中面的中间的大正方形面,大概占据了UV空间的36%(1/4到1/2之间),大正方形面的四周四个大长方形面的UV,基本上叠加在其下,实际大小基本等于大正方形2倍,在UV空间里占差不多大正方形的1/4。所以说大正方形面在对贴图像素采样时,同一个单位下参考像素会较多一些。因为贴图是1024*1024,大正方形面会采样大概36%(1/4到1/2之间)*1024*1024的像素数,而大正方形面实际大小大概是(128*1/2)*(128*1/2),这样算来,大正方形面的采样大概是1unit采样4到8个像素;而四个大长方形面基本上1unit采样0.5到1个像素之间。
在实际游戏中,老白总体感觉这个箱子还是比较真实的。但是当老白的枪贴上这个箱子时,中间的大正方形面能保持逼真,而周围的大长方形面就有些失真了。
失真的感觉来自于哪呢?因为靠近了,表面需要呈现的像素变多,而对应贴图的可采样像素数不够,这时就要用算法弥补,1个像素劈成4个用。由于一般的升采样算法都会使得每一个小块区域内的像素比较一致地接近,人眼很容易感觉出这种规律,就觉得不真实了;另一方面,如果离远了,表面需要呈现的像素变少,那么系统降采样计算,虽然也是通过算法计算出像素,但是一般的算法都自然而然地使每个小块内的像素没有这种人工的规律性,也就可以保持真实的感觉。
这也佐证了epic专家的建议,1个unit一般至少安排2-4个像素。
所以,在实际运用贴图的过程中,如果某个物体只可远观不可亵玩,则可以考虑1unit=1像素或更少,如果某个物体值得细细打量,则1unit安排4-8个像素。如果是一般的物体,安排2-4个像素(1cm=0.5p;1cm=2-4p;1cm=1-2p)。只要保持这个密度,则整个游戏的真实感预计会大幅度提高。