meanwhile at microdee's lab: RectPack

December 1, 2016 posted by: microdee Guest Post

Yo vvvvellas! I decided to write a little devblog here for stuff I’m adding to my packs, because as you could notice I’m not too good with keeping you guys updated about what’s going on around my contribs, not anymore! so for start:

newest addition to mp.essentials is 2 rectangle packing nodes most obviously used for texture packing to an atlas with 2 different algorithms. RectPack (2d Czachurski) and RectPack (2d ChevyRay). Versions are actually carrying the name of the guys whom I ripped of.

The more advanced and most of the cases better algorithm is provided by Patryk Czachurski here: https://github.com/TeamHypersomnia/rectpack2D I ported his code to C# and you can see the result with 413 random rectangles in the above screenshot. Each rectangle has sides between 250-1250 pixels and the Czachurski node packs them into ~15080×15074 pixels sized space. This algorithm also provides multiple sheets (or bins or slices) of atlasses if the input rectangles wouldn’t fit in the desired box size. Here is an example with textures using 8448×8832 pixels:

The other algorithm provided by Chevy Ray Johnston here: https://github.com/ChevyRay/RectanglePacker might be easier to use, less intelligent and you don’t have to specify a box size.

However notice it is not at all as efficient as Czachurski in terms of filling the space with lots of rectangles. Same random rectangles are using 22845×24232 pixels. It does a slightly better job at mostly square shaped textures though (here 8448×8704 pixels)

you can get it here: md.ecosystem.mpbeta-contribution through vpm. Enjoy!

Immediate Update

Immediately after writing this post I’ve noticed some differences between my results and the results at Czachurski’s repo and I’ve noticed that apparently C++ sort is the reverse of C# LINQ sort. Now the Czachurski node produces results are replaced now they are more similar to the original ones.


Comments:

Comments are no longer accepted for this post.

digitalwannabe
01.12.2016 - 13:54
yeah!
joreg
01.12.2016 - 14:16
devblog! so very much appreciated..keep’em coming! and who’s next?
microdee
23.02.2017 - 20:55
@Patryk Czachurski: Nah it was totally readable and straightforward code. Here’s my C# implementation: https://github.com/microdee/mp.essentials/blob/master/src/transform/CzachurskiRectanglePackerNode.cs For my education what you consider bad in your code?
microdee
08.05.2018 - 02:16
@Patryk Czachurski: niiiice! and thanks for the reminder, I need to freshen up a bit my texture atlas handling too so yup still interested ;)

Contact


Imprint

vvvv - Dießl & Gregor GbR
Oranienstrasse 10
10997 Berlin/Germany
VAT: DE275566955

groupӘvvvv.org

Follow us

Mastodon.social
Pixelfed.social
Github
Vimeo
Youtube

Sign up for our Newsletter

Your subscription could not be saved. Please try again.
Your subscription has been successful.