首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将矩形图像数据打包为正方形纹理

将矩形图像数据打包为正方形纹理
EN

Stack Overflow用户
提问于 2008-11-04 23:57:59
回答 4查看 18.4K关注 0票数 20

我有N项2D图像数据将是矩形的,我想尽可能有效地将它们打包成一个2次方的纹理。

一个简单、低效和幼稚的算法实现来打包这些rects是很容易的,但我相信人们已经想出了算法来尽可能高效地完成这项工作。我已经找到了各种关于光照贴图打包的参考资料,这与我正在寻找的相似,但是光照贴图的算法倾向于将非矩形图像考虑在内,这实际上比我需要的更复杂。

有谁有提示吗?我应该在谷歌上搜索算法或论文作者的名字?

谢谢。

EN

回答 4

Stack Overflow用户

发布于 2008-11-05 04:09:08

我需要做的正是你所描述的事情。

这是我使用的Python代码,它是Python Cookbook中的一个食谱:

Recipe 442299: pack multiple images of different sizes into one image

票数 8
EN

Stack Overflow用户

发布于 2008-11-05 00:30:45

你在一维中的问题叫做装箱。也许这对你的搜索是一个好的开始。

注意,你想要解决的问题真的很难(它是NP难的)。所以你不应该去寻找最优解,而应该去寻找一些聪明的启发式算法。

我认为自下而上的动态编程对于1D装箱是可能的,但对于2D情况是不可能的。

你可以通过只解决一维问题来简化你的问题,做一些限制,比如把纹理在一维上切成几个(大小可变的)切片。

另一种可能是在其上运行元启发式优化,如进化算法或粒子群优化。

票数 6
EN

Stack Overflow用户

发布于 2012-04-27 02:40:30

非常好和简单的打包算法可以在这里找到:http://www.blackpawn.com/texts/lightmaps/

它的实现只需要200行C++代码,不会更多(我想您已经有了位图操作例程)。

关于背后的理论,有Jukka Jylänki的介绍(查找“打包垃圾桶的一千种方法”)。

这篇论文的作者提供了C++库,从我的角度来看,它确实很臃肿,但另一方面,它有很多选择,并且有很好的文档。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/263932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档