纹理打包机
txtrpacker的Python项目详细描述
纹理打包机(基于执行单元有限公司的http://www.executionunit.com/blog/2013/04/12/python-script-to-build-a-texture-page-or-sprite-sheet/)
为什么要打包纹理/图像?
如果您正在制作游戏,则告诉硬件更有效:
use packed texture 1 draw primitive 1,2,3,4,5,6 use packed texture 2 draw primitive 7,8,9,10
比
use texture 1 draw primitive 1 use texture 2 draw primitive 2 ...
做得越少,渲染效率就越高。
如果你是一个网站,然后再次要求客户端浏览器加载一个大图像(通常称为精灵表)比要求它加载更多更小的纹理更快。
算法
我们将要使用的算法称为装箱。我们希望将纹理打包成一个更大的纹理,并尽量减少浪费空间。请注意,总会有一些浪费的空间,这是一个np完全问题,装箱只是给你一个很好的解决方案,而不是一个完美的解决方案
二维装箱的工作原理是使用源图像细分目标图像,创建目标图像的“使用”区域树。这听起来有点复杂,但其实很简单。
用法
可以从命令行运行python代码来打包目录中的一组png:
usage: txtrpacker.py [-h] [-v] [-pad PAD] [-sort SORT] [-maxdim MAXDIM] [--log LOG] src dst A utility to take a set of png images and pack them in to a power of two image with pading. The placements of the source images is printed to stdout in the format: "filename x y x2 y2" positional arguments: src src directory dst dest png file optional arguments: -h, --help show this help message and exit -v enable verbose mode -pad PAD padding on each side of the texture (default: 2) -sort SORT sort algorithm one of maxheight,maxwidth,maxarea (default: maxarea) -maxdim MAXDIM maximum texture size permissable. --log LOG Logging level (INFO, DEBUG, WARN) (default: INFO)
使用您可以输入的示例数据:
./txtrpacker.py -pad 4 ./testart output.png
注
此项目是使用Pyscaffold 2.2.1建立的。详细信息和用法 有关pyscaffold的信息,请参见http://pyscaffold.readthedocs.org/。