Home Technical Talk

UV Packer IPackThat

2456719

Replies

  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    finaly here is the update
    • fixed obj asci layout with negative index values
    • fixed layered polygon detection
    • handling uv verts with x > 1 (moved to 0 - 1 space)
    • fixed bug with aborting compression (could not stop sometimes)
    • fixed polygon color filling (sideeffect of layerd polygons bug)
    • reduced contour slope threshholds ( less contour points = a bit faster )
    • fixed merge cluster
    • added disable find smallest bound to cluster settings (will prevent the clusters from rotating freely to find their smallest bounds
    • fixed contour errors ( where producing holes instead of outlines)

    hope those fixes are helping with those hole and overlap detection errors :)
    keep me posted if its working now *g*
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    @Stromberg90]

    run only 4 solutions to Check overlaps. 6,88% wasted

    Stromberg_Fixed.jpg

    Thanks to this obj file i was able to find nearly all those overlapping bugs :)
  • Stromberg90
    Offline / Send Message
    Stromberg90 polycounter lvl 11
    Awesome, happy to provide it :)
    I'll try out the new beta later.
  • Smoluck
    Offline / Send Message
    Smoluck polycounter lvl 7
    I've been really impressed by your tool Snoelk (sounds close to my nickname ^^)

    So i've talk about your tools on few 3D forum in France:
    Modology Modo (Luxology / The Foundry)
    Mayalounge Maya (do i need to precise ^^)

    I hope you will got some returns from French users that use Modo (Luxology) and/or Maya

    PS : Did you've looked at the Collada DAE file format or LWO (Lightwave) to support Multi UV Set ?
  • Kbrom12
    Offline / Send Message
    Kbrom12 polycounter lvl 8
    Played with this tonight on a few meshes. Very Impressed so far...Also can't wait for a loading bar :-)
  • Smoluck
    Offline / Send Message
    Smoluck polycounter lvl 7
    I supposed that the Greenish color and Blue means if the UVshell are pointing inwards or outwards isn't it ?

    What is the good setup All Blue or All Green (for preserving same orientation for "text" in 3D)

    Also i notice on my 16 Thread Xeon Setup (2 x 4Cores Xeon 5520), that at this time the program crunch 8 to 29 % of the Cpu Power. Do there is kind of limits to 4 Thread in it ?


    just a basic run with 1 solution:
    ipackthat_basictest_hd.gif

    Here is the result with 8 Run....20 Mins and 18% .....rhaaaa 4hours by hand :'(
    8run_ipackthat_hd.jpg
  • LeanderCorp
    1. Shut up and take my money.
    2. https://dl.dropboxusercontent.com/u/106098513/gg.obj something didn't import correctly into the programgg.jpg
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    Blue color means overlaps. Like 10 polygons stacked on each other. Green means normal single uv shell.

    The packer uses threads for finding possible solutions for a shell per angle.
    Right now I'm limiting for environment cores.
    Maybe I can make the max threads an optional parameter for the packing settings.
    0 means then default environment CPU cores. Higher number limit to this amount.
  • Smoluck
    Offline / Send Message
    Smoluck polycounter lvl 7
    Ok, yes i've made UVSplit on some Smoothing group parts so that's why i got Blue sometimes. I understand now.

    post update... take a look to the last one 18 % ...damned !!!!
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    Smoluck wrote: »
    Ok, yes i've made UVSplit on some Smoothing group parts so that's why i got Blue sometimes. I understand now.

    post update... take a look to the last one 18 % ...damned !!!!

    This tool can be a timesaver *g*
  • Shrike
    Offline / Send Message
    Shrike interpolator
    you could add a feature to select some uv islands that would have higher texel density.
    I can imagine if you are doing a weapon and need to increase ironsights parts per example, that you are pretty stuck with your generated UV. Very important for doing first person models and so on
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    1. Shut up and take my money.
    2. https://dl.dropboxusercontent.com/u/106098513/gg.obj something didn't import correctly into the program

    Are you using the latest version ?
    Will download and debug your file ASAP :)

    Update:
    Found the bug. When merging layers the bound check did not check with an epsilon.
    Doing some minor optimisations and will upload an update soon :)

    Update next:
    if you take a close look to the bottom status bar you will notice some nice new stuff :cool:

    LeanderCorp_Fixed.jpg

    prepearing next upload now
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    Shrike wrote: »
    you could add a feature to select some uv islands that would have higher texel density.
    I can imagine if you are doing a weapon and need to increase ironsights parts per example, that you are pretty stuck with your generated UV. Very important for doing first person models and so on

    On my todo list already :) need to read and handle the mesh data as well for that.
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    here a new update
    • fixed intersection test bug (bounds where not using the right epsilon, thanks to LeanderCorp )
    • added progress bar as background of the status bar (many asked for it :D )
    • status bar now shows more datas
      • after what solution the better one was found
      • the time when the last solution was found (total run time of start packing)
      • the current solution test count and the total run time

    @LeanderCorp Your final packed Obj file
    9,28% wasted after 3 tries and 5m 48s 525ms

    settings where 4096 with 16 pixels margin

    cheers :nerd:
  • tar
    Offline / Send Message
    tar polycounter lvl 8
    I tried the first version and the last version, with the first one I didn't have any problem (I always try to stay away from overlapping stuff when baking). With the last one however some uv islands don't import properly (see attachments).

    Here are two obj files, exactly the same part of the mesh the difference is that in one the uv island is scaled up in the dcc tool and the problem disappears.

    https://www.dropbox.com/s/0g1hk2n6kqnwdxb/test_ipacker.rar?dl=0

    I tried quite a lot of meshes and this is not a very common problem.

    By the way the text on the loading bar is constantly disappearing.

    Any rough eta? :)
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    tar wrote: »
    I tried the first version and the last version, with the first one I didn't have any problem (I always try to stay away from overlapping stuff when baking). With the last one however some uv islands don't import properly (see attachments).

    Here are two obj files, exactly the same part of the mesh the difference is that in one the uv island is scaled up in the dcc tool and the problem disappears.

    https://www.dropbox.com/s/0g1hk2n6kqnwdxb/test_ipacker.rar?dl=0

    I tried quite a lot of meshes and this is not a very common problem.

    By the way the text on the loading bar is constantly disappearing.

    Any rough eta? :)

    mhm, it looks like they are overlaps. that is only a visual problem. the data itself is right. i will look into it now. :poly115:
    The flickering inside the progressbar i noticed myself. will fix it in the next version (first implementation of the progressbar was a bit hacky :nerd:)

    Update:
    i think the problem is the automatic overlap detection. The verts where the face are shown white are very very close to each other. So the Overlap detection thinks its an overlap. The epsilon to detect close verts is to large.
    Will check and fix it later. But this is only a visual bug. The meshdata itself wont produce errors.
  • skankerzero
    Hey man! they just pointed me to this thread and I'm at work, so I can't really read the whole thread, but here is my requests:

    Can we flag islands that can be shrunken down to fill gaps?
    CAn we flag islands that we want to be overlapped? (similar objects, etc.)

    Here are my thoughts on UV Mapping so you can get a sense of what I'm talking about.
    https://dl.dropboxusercontent.com/u/70269048/uv_mapping%20_thoughts_skankerzero.jpg
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    Cool ideas.

    Can we flag islands that can be shrunken down to fill gaps?
    • should be not hard to implement. like you have written will be packed last to fill gaps
    • user will have to enter a range min max scale for better handling.

    Can we flag islands that we want to be overlapped? (similar objects, etc.)
    • this wont work well. the problem is where do you want them to be moved and overlapped ? Thats why i want to make it possible to merge clusters. You will move a cluster where you want and merge it with the underlying cluster.
    Use existing Textures
    • will be work also. mark a cluster not to tuch at all. it will stay where it is. if you scale the work area from to 1:2 they will be shown stretched. but when they are all writen back the uv area will be stretched back to 1:1 back
  • LeanderCorp
    First of all - I'ts super awsome someone really want's to adress this issue seriously, because all possibilities of automatic UV mapping thus far lack in robustnes - to say the least.

    The thing I like about 3ds max uv packing is that It won't rotate clusters. Sometimes you just don't want do do that. Maybe certain clusters could be marked as "non rotatable" ? Of course at the expense of wasted space.
  • LeanderCorp
    [PB]Snoelk wrote: »

    @LeanderCorp Your final packed Obj file
    9,28% wasted after 3 tries and 5m 48s 525ms

    settings where 4096 with 16 pixels margin

    cheers :nerd:

    thanks man. much appreciated!
  • Dantert
    Offline / Send Message
    Dantert polycounter lvl 10
    sweet, can't wait to try it :)
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    First of all - I'ts super awsome someone really want's to adress this issue seriously, because all possibilities of automatic UV mapping thus far lack in robustnes - to say the least.

    The thing I like about 3ds max uv packing is that It won't rotate clusters. Sometimes you just don't want do do that. Maybe certain clusters could be marked as "non rotatable" ? Of course at the expense of wasted space.


    check cluster settings tab. there you can change some properties of every cluster you select (and mutli select)
    things you can change
    • Is Rectangle (rotations are done only from 0° to 180° otherwise 0° to 360°)
    • Can Rotate (if checked the cluster can rotate otherwise it can't)
    • Disable Find Smallest Bounds (if a cluster can rotate it will be rotated in very small steps to find that rotation where the bounding box is smallest)
    • Rotation steps ( what is the smallest rotation increment step for rotating from 0° to 360° or 0° to 180° if its a RectangleLike)
    cheers :nerd:
  • Quack!
    Offline / Send Message
    Quack! polycounter lvl 17
    I ran the latest version of IPackThat, it got my 70k tri mech at 4096 to 91% Coverage in 6 hours of overnight, hands off rendering. That is amazing. I can't say enough how awesome I think this tool is.

    With that said, Request Time™!

    I would like to be able to enter a target percentage coverage, e.g. 90% and have the program terminate when it has hit that number. So on long computations like my mech, I can limit the time.
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    Consider it done. Will be in the next submit :)
  • Erigo
    Great stuff! Huge props man !
  • skankerzero
    So I've been messing with it this morning. Here are some thoughts:

    One thing that I really miss in UVLayout is the ability to create selection groups out of clusters.
    The reason I'm always turned off from automatic solutions for packing is the lack of logic when it is packing the clusters. This of course is not anyone's fault as it's just doing it's task. That being said, when I unwrap, I try my best to keep geometric groups together. i.e. All the hair clusters or leg clusters next to each other.
    The beauty of selection boxes in UVLayout was that you could pack all the clusters that were part of the box. So I would be able to select the leg clusters then just pack those together within their own box. I'm not sure why they got rid of this function, or maybe it's just very well hidden, but when I would go into Max, some of my work was already solved.

    Either way, I'd love to see something like this. That or give the option for clusters to want to stay near shared edges or geometry objects.


    I imagine one day someone will make a GUI that will allow me to click on a cluster, drag it around, and all the other clusters are constantly fitting around as I manipulate the selected cluster.
  • skankerzero
    Interesting work around.

    I'll give it a shot!
  • beefaroni
    Offline / Send Message
    beefaroni sublime tool
    Neat piece of software. Will have to give this a try on my next model!!
  • Joopson
    Offline / Send Message
    Joopson quad damage
    When will a version be available where you can save? I'd be willing to buy it even at this stage, if it meant access to it once it's done, and the ability to save now. It's really great, from what I've seen.
  • haiddasalami
    Offline / Send Message
    haiddasalami polycounter lvl 14
    Man love how fast the tool is updating! :)
  • Reowwww
    Offline / Send Message
    Reowwww polycounter lvl 6
    I have been longing for a techy to do this forever. TuT Finally, someone took the initiative.
  • Darkmaster
    Offline / Send Message
    Darkmaster polycounter lvl 11
    Gonna play with this at work today. I've been waiting for something like this for awhile!!
  • ZacD
    Offline / Send Message
    ZacD ngon master
    Not sure if anyone mentioned it yet, but it would be cool to see some settings optimized for light maps (UE4 in particular :P), things like snapping to pixels and setting up certain grid values.
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    new small update with some preperations for next updates
    • fixed overlap polygon detection epsilon (was to large) (tar)
    • added Desired Used Area to stop contiuing compressing when reached (Quack!)
    • fixed progress bar flickering (tar)
    • ui preperarions for cluster grouping (skankerzero)
      • same group clusters staying to each other
    • ui preperarions for ignore processing (skankerzero)
      • dont to anything with that cluster
    • ui preperarions for hole filling clusters (skankerzero)
      • will be packed at last and scaled down to max scale down if not fitting


    im thinking of an possible improvment with ddo. UV got a third component. The Z is never used for anything. There i could paint values from white to black over a cluster from top to down. now the cluster have its orientation encoded inside the z value and it can be rotated as you want. maybe this is for use with ddo ?


    cheers :nerd:
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    ZacD wrote: »
    Not sure if anyone mentioned it yet, but it would be cool to see some settings optimized for light maps (UE4 in particular :P), things like snapping to pixels and setting up certain grid values.

    one of my friends also mentioned this. i will look into it when the the rest is done :)

    Joopson wrote: »
    When will a version be available where you can save? I'd be willing to buy it even at this stage, if it meant access to it once it's done, and the ability to save now. It's really great, from what I've seen.

    searching now for possible ways to publish it (unity store, gumroad etc).
    should be in the near future when all works out well :)

    One thing that I really miss in UVLayout is the ability to create selection groups out of clusters. The reason I'm always turned off from automatic solutions for packing is the lack of logic when it is packing the clusters. This of course is not anyone's fault as it's just doing it's task. That being said, when I unwrap, I try my best to keep geometric groups together. i.e. All the hair clusters or leg clusters next to each other.

    yep, on my next todo list

    I imagine one day someone will make a GUI that will allow me to click on a cluster, drag it around, and all the other clusters are constantly fitting around as I manipulate the selected cluster.

    well, the math that i use behind the scene can be used for that. but its heavy cpu intensive ^^
  • Tvidotto
    Offline / Send Message
    Tvidotto polycounter lvl 9
    wow! that looks amazing!

    downloaded and going to do some tests
  • Swizzle
    Offline / Send Message
    Swizzle polycounter lvl 15
    Joopson wrote: »
    When will a version be available where you can save? I'd be willing to buy it even at this stage, if it meant access to it once it's done, and the ability to save now. It's really great, from what I've seen.

    I 100% agree with this. I'd love to buy a license for this as soon as possible, especially if it has an activation/licensing system similar to the one Marmoset uses (log in to activate it on a computer, log into another computer using the same license and it deactivates for the other computer, etc.). A limited number of activations that could be transferred between computers (similar to the Zbrush model) would also work fine for my purposes.
  • ZacD
    Offline / Send Message
    ZacD ngon master
    Maybe you could look at Steam for distribution as well.
  • Tzur_H
    Offline / Send Message
    Tzur_H polycounter lvl 9
    I've just tried it and compared to Headus with a very basic and easy OBJ. It's doing a damn fine job, but that's only because of the ability to rotate in such fine degrees, correct?
    oycIXWt.jpg
    You can still do that in Headus. Set up your boxes for each cluster, then just hide the shells you don't want to pack. So if you're packing all the leg clusters, hide everything but the leg shells, pack, unhide everything, move on to the next cluster, hide everything else, pack, etc.
    An easier way is to mouse over the box you want to pack and use the "[" key. It will only pack the shells inside the box. If you use "[" outside a box it will fire the "pack all" command.
    Couple more neat things you can do with boxes:
    1. You can pack a box inside a box. For example - nails UVs in one box, along with hands UVs in another box, it's like parenting :]
    2. You can manipulate the shape of the boxes, and it will change the way the UV shells are being packed within. For example - a long, skinny rectangle will result in the UVs being packed that way and so on.
    3. You can place a box manually in the 0-1 space, tag it with "{" key, it will turn blue, meaning it's no longer free. When you run "pack all" Headus will move and pack everything except that box.
  • Francois_K
    Offline / Send Message
    Francois_K interpolator
    German Efficency
  • handofgold
    Offline / Send Message
    handofgold polycounter lvl 3
    Very nice packing:) It chocked me coming from 3ds max.
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    Checking Steam Greenlight now. Stay tuned for new infos
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    IPackThat is now out on Steam Greenlight.

    Vote to get it Greenlit :)

    IPackThat on Steam Greenlight

    cheers :nerd:
  • roosterMAP
    Offline / Send Message
    roosterMAP polycounter lvl 12
    looks amazing!
  • Zieg_Reborn
    Offline / Send Message
    Zieg_Reborn triangle
    Not sure if this has been mentioned yet, and I didn't see it in the feature list, but is there a possibility of adding a feature to allow directional packing? As in allowing UV islands to be laid out with a specific direction in mind; specifically for shader use.

    i.e. wet, rainy surface shaders where water is running down the mesh as the rain runs off it is easier done when the mesh UV's are all facing downward. I don't like having to add world space calculations into the shader if I can help it.

    Though I'm sure I could just lay them out myself and keep rotation turned off when packing, but it's just that added step...
  • Quack!
    Offline / Send Message
    Quack! polycounter lvl 17
    Not sure if this has been mentioned yet, and I didn't see it in the feature list, but is there a possibility of adding a feature to allow directional packing? As in allowing UV islands to be laid out with a specific direction in mind; specifically for shader use.

    i.e. wet, rainy surface shaders where water is running down the mesh as the rain runs off it is easier done when the mesh UV's are all facing downward. I don't like having to add world space calculations into the shader if I can help it.

    Though I'm sure I could just lay them out myself and keep rotation turned off when packing, but it's just that added step...

    This is a great suggestion, I would find this very useful when doing shader fx of all types.
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    mhh for this all uv layout should be facing the right direction when loaded.
    then you could tell where all shells should point (up, down, left, right).
    All rotations will then be locked and only rotated once to the right facing.
    this what you meant ?

    should not be to hard to implement thou
  • Quack!
    Offline / Send Message
    Quack! polycounter lvl 17
    Yes it would be best if it was automatic, that it could determine the orientation itself. Unwrapping your model and keeping the UV islands properly oriented by hand could get out of control.
  • [PB]Snoelk
    Offline / Send Message
    [PB]Snoelk polycounter lvl 7
    i see, will see what i can do. the orientation the user want for the packing should be float angle or only a small drop down with up, left, right, down?
  • Zieg_Reborn
    Offline / Send Message
    Zieg_Reborn triangle
    Yeah that's essentially it. Would be helpful for projects with more complex weather-based shaders, such as rain or snow buildup. Generally when I have to do this by hand I use a simple arrow texture instead of a checker texture when laying out my UV's. but automation is always welcome. Especially with larger assets.
2456719
Sign In or Register to comment.