魔兽纹理的一图两用
来源:互联网 发布:xampp linux 64位下载 编辑:程序博客网 时间:2024/04/19 12:46
近来尝试导入魔兽世界的模型,遇到了不少意料之外的事情。比如.m2的顶点竟然是预乘了bone offset矩阵的,让我花了不少时间在找这个矩阵上,结果它根本没有,不需要。最大的意料之外是它一张纹理两种用途,它在纹理的全透明部分又放置了其它纹理内容。原理上很好理解,反正RGBA四个通道是独立的,当A等于0时,也就是完全透明时,RGB的值就没意义了;所以这些RGB完全可以用来存些别的值,只要忽略A就可以使用它们。
在引擎里支持这种情况倒是不难,只要可以选择性的忽略alpha通道就可以了。但毕竟我只是在导入它的模型,而不是要完全支持它的功能,是否要支持这种trick呢?为什么要犹豫,因为专业游戏里的trick太多了,为了减少内存开销,提高性能,它们经常在美工资源上做各种各样的技巧性处理。这些trick又往往都是在特定硬件水平上、针对特定游戏的特殊优化,不具有通用性。比如,当今最常用的一个trick是将法向贴图和高光贴图合并到一张纹理,既节约了显存又提高了速度,但这方法不具有通用性,如果同时又有自发光贴图等,就需要不同的合并方式。这其中一些trick可以由程序预处理生成,而不需要美工制作时就考虑,有些则必须美工周全地考虑到。
这个在透明区域存储其他内容的trick就是美工必须自己考虑的。一方面这对美工的经验水平要求较高,另一方面和当今主流工具相悖。暴雪的美工水平自然不用说,魔兽世界里的模型的纹理大多是256x256以下的单张纹理,光这一点就很牛X。但为了使这么小的纹理能提供足够的细节,它的纹理上的各块区域是经常重复应用到模型上的不同区域的。加上透明区域的两用,最大化了纹理的利用率,使得同一时刻装载的纹理量得到有效压缩。这意味着在造型设计时就需要考虑到纹理子区域的复用,之后万一需要修改调整,要么受限于已有的复用方案,要么需要推倒重来。
另一方面,活用alpha通道的trick越来越难于应用,因为主流的图像工具如Photoshop不再支持独立alpha通道的导入和导出。如前所述,当A为0时,RGB的值是无所谓的,这对web图像而言是可以选择特殊的值以便提高压缩率的,这时A为0的像素的RGB值不再保持原本的值,不能再用于存储别的信息。常用的PNG格式是其中之一,现在只有老版的SuperPNG插件还能导入导出带独立alpha通道的PNG。TGA在Photoshop 7.0也被“优化”了,但之后由于抗议众多,在7.01版又恢复了独立alpha通道的支持,这也是如今游戏业多用TGA格式的一个原因。
- 魔兽纹理的一图两用
- [移动与通讯]手机的军民两用
- 魔兽地图编辑器的使用探讨(一)
- 一脑可以两用吗? —— 别逗了!
- 笔记本电脑装linux服务器和Windows, 一机两用
- 电视电脑盒子,一机两用,电视秒变电脑
- Tricks (四十一)—— 一 list 两用
- 糗。。。变量一个范围下的两用错误
- 整理一个带进度,带速度两用的ProgressBar
- 魔兽的下载
- 魔兽的历史人物
- 关于魔兽的笑话
- 魔兽最后的时刻
- 永远的魔兽
- 魔兽的历史人物
- OpenGL GLSL 一维纹理的使用
- 魔兽
- 魔兽3的地图脚本文件简单分析图
- ER/Studio® 快速入门向导
- zoj 2744
- C标准库源码解剖(2):错误报告errno.h
- 基于Java的全文索引/检索引擎——Lucene
- 高级文件编程——标准文件操作的函数(转)
- 魔兽纹理的一图两用
- zoj 2773
- 简述Android触摸屏手势识别
- 这就是留学
- spring-webmvc.jar
- JAVA写入指定编码的字符到文本文件中
- 在 Linstener 中 调用 spring 的 bean
- IntelliJ IDEA学习中……
- 激光打印胶片