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:
Here is the result with 8 Run....20 Mins and 18% .....rhaaaa 4hours by hand
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.
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
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:
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.
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.
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.
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.
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
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.
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)
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.
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.
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.
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.
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 ?
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
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.
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 ^^
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.
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?
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.
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...
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.
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 ?
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.
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?
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.
Replies
hope those fixes are helping with those hole and overlap detection errors
keep me posted if its working now *g*
run only 4 solutions to Check overlaps. 6,88% wasted
Thanks to this obj file i was able to find nearly all those overlapping bugs
I'll try out the new beta later.
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 ?
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:
Here is the result with 8 Run....20 Mins and 18% .....rhaaaa 4hours by hand
2. https://dl.dropboxusercontent.com/u/106098513/gg.obj something didn't import correctly into the program
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.
post update... take a look to the last one 18 % ...damned !!!!
This tool can be a timesaver *g*
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
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:
prepearing next upload now
On my todo list already need to read and handle the mesh data as well for that.
@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:
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.
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
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.)
- 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 TexturesThe 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.
thanks man. much appreciated!
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: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.
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.
I'll give it a shot!
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:
one of my friends also mentioned this. i will look into it when the the rest is done
searching now for possible ways to publish it (unity store, gumroad etc).
should be in the near future when all works out well
yep, on my next todo list
well, the math that i use behind the scene can be used for that. but its heavy cpu intensive ^^
downloaded and going to do some tests
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.
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.
Vote to get it Greenlit
IPackThat on Steam Greenlight
cheers :nerd:
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.
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