纹理打包机

txtrpacker的Python项目详细描述


纹理打包机(基于执行单元有限公司的http://www.executionunit.com/blog/2013/04/12/python-script-to-build-a-texture-page-or-sprite-sheet/

https://coveralls.io/repos/github/brean/txtrpacker/badge.svg?branch=master

为什么要打包纹理/图像?

如果您正在制作游戏,则告诉硬件更有效:

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/

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在导入到Google工作表时使用ApachePOI显示系列标签   java在Swing表上修改数据生成SQL   java TCP数据包在网络级别合并   java自动连线bean在线程位置为空   javasocket。禁用无线连接时getOutputStream()阻塞   JSON上的javascript字符串数组。stringify输出unicode字符   java在Oracle数据库中存储不同类型数据的最佳体验   Spring MVC中模板引擎后的java进程输出   不知从哪里来的java空字符串。   如何加载java。使用Adobe Flex的客户端的属性文件?   java如何替换多层括号之间的所有内容?   {JSONObject必须以java'开头   java使用commandButton或commandLink返回并管理HTML控件值   java Android大文本视图动态   java JMock需要自定义类   java Android应用程序在emulator中工作,但在设备中失败   java连接到derby数据库时使用什么文件路径格式?   java在一个函数调用中返回两个结果?