纹理打包机

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如何通过TestNG中的Selenium Webdriver使用文本属性识别元素   java Maven:检查网站是否在部署后运行   java Android:是否可以使用不同铃声的双sim卡来接收每个sim卡的呼叫?   java不知道如何运行这个pdfbox注释示例   java无线电组作为循环页面指示器   java SonarQube漏洞:用POJO/DTO替换此持久实体   安全性将证书导入Java密钥库,JVM将忽略新证书   java如何加载yaml属性,即使用Jackson数据格式的地图列表?   java Gradlew不工作(失败:使用exeption构建。)   java对象。要求我的dialogflow聊天机器人应用程序没有任何问题   java如何使HashSet<T>在HashSet时调用T.equals(Object)。调用add()   插件1.11 Java Spigot/Bukkit编程将HashMap保存/加载到配置中。yml   James中的javasentbox   java正则表达式删除的特殊字符   java如何在AmazonS3上使用预先签名的url进行复制?   java在JOptionPane中插入双变量   排序按字母顺序对字符串排序而不进行比较的程序。至(Java)   Tomcat应用程序中的java随机ConcurrentModificationException