not not yet- perhaps you have an idea on how to implement such? After all I can't place visual markers in the UV editor.
But you can align a set of edges e.g a loop or a set of vertex points to a straight line with one key using
Perhaps you can provide a screenshot or illustrate a bit better where you would use it for?
This was just an idea I came across when I had to fix a mesh and mirror it over. Instead of re-flattening and making an all new texture I was trying to line it up with what I currently have so I thought I would just manually suck in the edges.
Then I noticed moving the outside points of the shell (with soft-selection on) constrained to the edge would still keep my mirror seam with the belts on the other side in the texture correct. Otherwise only moving in X & Y has guess work.
Just an idea...it seems moving points constrained to edges would be nice to have.
I see now what you mean and why to use it. I have thought about a few ways and it might be possible but it will not be added anytime soon. I would have to run a timer that would constantly check if vertex points were moved when the constraint is activated and fix it after each frame (on enter frame update). I think its rather a smal thing and thus not on the high priority list.
What you can do however now already is pressing this button to swap UVW with XYZ data and edge slide those edges in the editMesh (in that case) edit tools. Once you are done you simply hit the swap button again. I know the background image is the missing but that's a doable workaround for now.
I am almost done, here is a facelifting preview of the renewed icons:
The pick button will calculate the pixel per unit aka texel density of the either:
a.) selected/ picked object (not sure yet)
b.) selected UV faces
edit: updated the GUI shot preview a few times, the pixel per units have been changed to more iconic labels so that it translates units in a way everyone will hopefully recognize without saying m, meters or other confusing terms.
there are times when I need to align 2 UV's that are very close together and I couldnt stack them together without using mop's UV tools (to align specifically along the U axis and V axis when I want)
One solution was to enable snap and click on the UVs onto the other, but that takes more effort than highlighting both UVs and pressing align-to-U/V key.
could you guys give me some typical Texel values, like how many Pixels per meter or unit you guys typically use?
I want to build in a auto conversion because for example 512 pix / 128 units = 1024 pix / 256 units = 8 pix / 2 units
but nobody would probably go for 8 pix / 2 units for example but perhaps rather aim at 512 pix / 128 units.
If store within the script a table with common matches I can set the values to the common used ones as soon one uses the pipette for picking up a texture density aka texel.
...there are times when I need to align 2 UV's that are very close together and I couldnt stack them together without using mop's UV tools (to align specifically along the U axis and V axis when I want)
One solution was to enable snap and click on the UVs onto the other, but that takes more effort than highlighting both UVs and pressing align-to-U/V key.
I am not getting that, what is "need to align 2 UV's" in your vocab? as U and V are just the axis. Do you mean shells, edges or texture vertices ?
And again by "stacking" do your perhaps mean weld or collapse which are already build in max - or do you mean the stacking function of my set that tries to stack UV shells?
If you try to weld them you need to make sure that the threshold radius is big enough- collapse should work always (not sure if it is provided in max by default though).
...Do you have a paypal account. . . I feel like I should pay you something for this :P
eh no thanks- I feel honored (not just by you but anyone who left some joyful comments), - but that is not necessary.
I am a happy student just the way I am, there are already enough people that want to feed and lure me with money
There is a reason why I provided the code for free it is because:
- I want a stable UVW tool base that I and others can use anywhere without trouble
- learn from, with and by others (like in this thread)
- building up a portfolio piece
but if you want to support this maybe tell others you know about it or post it in other 3d forums you are active in. A year or two ago UV editing was still often a pain and rare topic among scripters or the big 3 3d software packages, but things are already changing which makes me happy as I have kind of a strong interest in texturing and mapping stuff in general.
Hmm, for the texel size entry, I would probably just have 2 drop-downs or text entry fields ... one with standard texture sizes ( 128, 256, 512, 1024, 2048, 4096 ) and the other with per-unit ratios ( 1, 2, 4, 8 ) then users can pick whichever combination they want. Or manually type-in something instead.
What I did for mine was just have 3 buttons ( 2:1, 4:1, 8:1 ) and then defaulted texture size to 1024, and it would only be overridden if you have a texture assigned to the object... so if you slap a 2048 x 2048 onto the object, and hit the 2:1 button, it would use the 2048 size as calculation. I guess that's not quite as flexible as allowing the user to pick both values though.
MoP: its a little bit more complex on my side because I have 3 input values and simple ratios wont do it alone.
My goal is to be able to define a fixed value like pixels per 3d unit so that I can guarantee that exactly that amount of pixels per square area of a poly/mesh is used not more, not less very accurate actually. This has the advantage that texture sizes of different objects can be different and you can operate on multiple objects at once.
The other advantage fixed values have over just a single set of fraction is that it is easier to imagine and compare the values with the ones in your engine.
So I was hoping some of you could help me out with typical values used in common engines or games e.g Unreal, CounterStrike, HL2, GOW,... because I highly assume that most of those games have a target Texel value that thy try to keep constant even more in contrast with automated UV space created from build editors like radiant, unrealEditor,...
Maybe I will add a list of such common games and engines so that it will fill in values for those engines.
nah not collapsing or welding, I want them to be separate shells - heres a rough example with 2 slightly different spheres in size and shape
What I did was make 2 spheres, make one slightly bigger and edit the shape a bit, flatten uvs, cut them in half and then used your "stack" tool to do this
What I want to do is align the circled UVs so they are on the same space, you can do this by selecting the 2 vertices and keep scaling until they meet up, or use mops tools and select the 2 UVs and align by U, and then align by V.
UV snapping would work too but that would not be good because its best to get the average position of the 2 selected UVs in this situation.
(this is not a practical example)
I usually stack uvs like this for organically shaped manually-mirrored objects that arent 100% symmetrical (slight tweaks), but I still want the 2 halves to share the same UV space as eachother. Your tool can be used to align them if I select neighbouring UVs along each axis, but that would ruin the shape I want.
And welding them together would be very messy too.
Maybe I'm doing something wrong and shouldnt even run into this "situation"... Please tell me if I am
mops suggestion seams bang on. ive always worked in 64/128/256/512:1
with the 2d to 3d thingumybob, would it be possible to instaed of switching between the two, have a second set of shells appear as 2d and have the 3d one reference the uvs from it, so that you could see the effect on the 3d while woring on it. this would be majorly usefull as say i wanted to relax the mesh i could do the same opperation on the flat one and the uvs should stay correct and stretch free.
I've usually talked texel densities in terms of 4 meter chunks, and I usually work with 3dsmax generic units as cm's. So I'd be looking at 512/400, 256/400 and 128/400 usually.
@ Yozora: at first I did not get your idea - but I understand it now - you want to place the verts of booth shells each on a counter pair - so that it looks welded or merged though the vertex points itself are not really welded but instead just on top of each other.
I have some thoughts on a better stack algorhythem and one idea I had on that was to eventually snap the border vertices of the shells on each other.
with the 2d to 3d thingumybob, would it be possible to instaed of switching between the two, have a second set of shells appear as 2d and have the 3d one reference the uvs from it, so that you could see the effect on the 3d while woring on it. this would be majorly usefull as say i wanted to relax the mesh i could do the same opperation on the flat one and the uvs should stay correct and stretch free.
you mean like a clone or perhaps reference to the selected object that updates itself per frame or each time you edit the UV in 3d world space? - I think that is very difficult if not hardly impossible for me.
I had though another idea on this some days ago it would go like this:
when pulling the UV to the 3d world space it would generate an additional plane object below the UV mesh with a texture preview on it with the same texture as the original object. That way one could see the texture below the UV-Mesh wires. Erh but thats all complicated and perhaps more a priority later.
@ glib: thx for the values
the multi object processing was kinda hard for me getting running propper - all to often the last days the script would crash or hang at certain conditions. That's why things got delayed but I got it working now - and
-> it's non destructive <-
meaning that it creates modifiers like xReset if needed and always a UVWunwrap to make sure that the texel density is equal on the selected objects with uwrapped shells. Now that is done I want to finish the aiding functions such as the texel pipette before the public release which includes...
the new calculate needed texture size. That script will actually calculate the texture space in ² you would need for the selected object with the given texel density. That's the first time I have seen something like that and it would answer for the first time the question of how big a texture should be.
changes:
- texel tools: pick ratio (not yet perfect, will add look up table of common values)
- texel tools: apply texel ratio: works on multiple objects per UV shell proportional
- re-ordered GUI and retouched icons
will update the next day the help site and link here to the icons so its even more clear which new icon does what.
it normalizes your UV islands so that every island on the model matches the desired texel density (pixels per unit)
The eyedropper lets you pick an object with the desired density, and the texel button scales the UVs for all your selected objects. Very quick, very cool, very helpful.
Ah, I understand now... Oh my, that sounds so handy!
I wonder what the hell is Autodesk doing, renderhjs is doing this on his freetime and was able to script some really kick ass tools! they should stop implementing shitty features on their app, and start improving stuff like the UVW editor!
the Texel stuff is typical what level artists need - because typically a BSB level already provides a solid and clean texel density (how many pixels per unit). The problem arises when working with external tools such as 3dsmax, maya,... where UV generation is not automaticly done and objects are more complex or organic (hence more complex UV sets).
But just to make sure here is a typical workflow: in these textfields you enter first the texture resolution (e.g 512 * 512 stands as '512'). The second input fields stands for the units where as you enter the unit length of a wall or something that needs to fill up with the amount of pixels.
alternativly you can hit this button and pick any object and it will return its total texture unit texture space (based on the texture size on the top) as a root (so no more pixels² [remember the 512² is written here as just '512']).
Same goes for the unit - it is just represented by a length unit- not a shape area that would be measured in ².
Since it is only a ratio the values might be in some cases big or odd but I am working on a look up table that will take common fractures into common read able values.
this last button will apply the texel density (the values from the 2 input textfields + the texture resolution at the top) to the selected objects, yes you can select multiple objects.
What it does in detail is
1.) looping through the objects
2.) check if the object is scaled, and if so add a Xreset modifier (so you can undo later anytime)
3.) apply a UVW unwrap modifier
4.) count the UV shells
5.) loop through the UV shells and calculate it's Mesh unit size + it's UV texture size
6.) compare the 2 values of the mesh size and UV size and scale each shell to the ratio it should have
I still have some ideas on improving this, for example now it injects always the textfield texture size of the toolbar and not dynamicly of each object if it is available (e.g the object has already a texture assigned). But those are perhaps minor things right now- but I just wanted to let you know the details.
@[HP]: a friend yesterday forwared me a link of www.game-artist.net, thx for that. And as for the AO settings he is right they are missing because I still did not finished the options toolbar which will propably be included within v1.5 or so.
ya, I just made a cube of the proper size (20') and applied my texture to it (512^2) and then hit pick off that. Much easier to do for me, than to figure out all them complicated numbers (especially when I'm not using "units" but actually doing things in feet/inches)
1 more tool suggestion This time for the packing tool.
I'm not sure if this is possible to do.
But instead of packing the shells in the most optimal way by rotating them ..etc. Would it be possible to have an option where I can do a rough layout of all the shells then have a tool that would move those shells within a defined distance between each other, but at the same time keeping the same uv layout?
1 more tool suggestion This time for the packing tool.
I'm not sure if this is possible to do.
But instead of packing the shells in the most optimal way by rotating them ..etc. Would it be possible to have an option where I can do a rough layout of all the shells then have a tool that would move those shells within a defined distance between each other, but at the same time keeping the same uv layout?
This would be truly awesome. Something like 'try to maintain shell proximity'.
you guys mean something like this ? where it tries to move the shells closer to each other until a certain padding space is crossed between the shells.
I actually would already have an idea on how to solve this. I worked before on some complex pathfinding stuff I think I can take some knowledge from that into this and check for shell collisions.
you guys mean something like this ? where it tries to move the shells closer to each other until a certain padding space is crossed between the shells.
I actually would already have an idea on how to solve this. I worked before on some complex pathfinding stuff I think I can take some knowledge from that into this and check for shell collisions.
some stuff (maybe already mentioned - i dont know)
-setup button, is it broken/non functional at the moment? (I though ive seen it working somewhere in this thread..)
-i dont like that your script forces the polygon fill stuff in the uv editor as it hides information when uvs are overlapping, I hope my little hack to stop the filling doesnt generate any bad side effects
-rightklick iron / relax, it might be better canceling the relax when selecting another element in the uv editor (and yes i understand that would reduce somewhat the workflow when relaxing different stuff one after another - but at the moment i feel more like im more often undoing wrong klicks..)
yeah frist pointers I ran into, whole alignment and texel stuff is really slick and sexy.
Holy fuck RenderHJS, the Texel eyedrop/paste just did about an hour's worth of normal work time in about 15 seconds.
Seriously awesome work dude, I can't express how amazingly helpful this is!
I just did this too and it was amazing. Like, got me better results and saved me a day of work. This was absolutely wonderful for re-normalizing a whole bunch of pieces I had unwrapped through a variety of methods (lots of pelts and unwrap UVs) that broke normalization. I had to explode all my elements to do it, though - maybe adding a simple function to do that, or getting it to work on an element, rather than object, basis? We've got a bunch of in-house tools and one of them explodes meshes for me so I was cool but for home use and other folks being able to quickly explode an object would be useful to work in conjunction with that tool.
i use the stitch functions all the time but the way they're located in max is a pain in the ass, could you add it asa button, with an input for the bias etc. i had it set up in maya in a silmiar way and just having it right there releives alot of clicks.
also i had the idea that it would be nice to have a slider that would update in realtime, so that you could make quick post stitch adjustments.
and man thank for saving me a load of time today, max is almost getting enjoyable to uv in
kio: yes setup is still not integrated, so is not yet the save last settings which will be hopefully working in a near future version.
At the moment I dont know a better way of canceling the relax simulation because I can not intercept the call backs of the UV editor sadly. Will have a look at the fill mode.
Ghostscape: yes I mentioned that before that the texel apply script is not yet final because assigning to a selection of your UV is yet missing.
today I was testing max2010 and noticed that the GUI was messed up in the default dark theme, even worse they changed some major GUI things like how colors are used. And I think it caused some of the missing icons , this is how it looks here with 3dsmax2010
for some reason I can't reapply custom bitmap data values on buttons. Will have to contact autodesk about that. makes me a bit angry that things changed there.
The other thing that annoys me that the new 3dsmax forces anti-aliasing in the GUI on me even though I disabled it in windows itself - so there are some minor pixel shiftments because of that.
..i use the stitch functions all the time but the way they're located in max is a pain in the ass, could you add it asa button, with an input for the bias etc. i had it set up in maya in a silmiar way and just having it right there releives alot of clicks.
oh yes so defenitly - I hate that spot as well. I already planned that some time ago.
with the slider, do you mean like controlling the threshold that determinds at which point to snap selected edges with their counter parts? - maybe a spinner would be better here since it is smaller and taking up less GUI space.
kio: yes setup is still not integrated, so is not yet the save last settings which will be hopefully working in a near future version.
At the moment I dont know a better way of canceling the relax simulation because I can not intercept the call backs of the UV editor sadly. Will have a look at the fill mode.
okey I guess the fill mode option would be a nice thingie for the yet not working settings menu - until then i'll use my mighty hacking skillz...
yeah, there's even a Stitch button in max UVW editor? I use the "S" key, but I had to search for it and manually assign it to that key.
Btw guys, bit of a random question. I use XSI at work, and I really like XSI UVW editor.
XSI has a button that let's you view the UV's overlaps in real time, is there anything like this on max?
Example:
As you can see, the overlapped UV's are shaded red in the UVW editor window.
PS. Too bad about max2010 mess up with the icons... Oh autodesk, autodesk never changes. Maybe you could make a version for max2010, and another version for prior versions?
Just downloaded this new version and it has really come along!
A couple of things that would be really handy in my opinion though:
The ability to bind opening the Textools toolbar to a kepress/ custom toolbar button as I don't need it open all the time as happens currently by sticking thhe .mzp in the startup scripts folder.
The ability to keep my current UV editor window preferences such as line colour, grid size etc. I am pretty set in my ways with the colour setup of the UV window, having the grid displayed etc and having it changed by launching the uv window from the toolbar throws me off. Is there any way I can change it back to my original settings now that the script has swapped them?
One thing that would be useful would be a transform dialog of some sort. Something that would bring up a text input window for movement/scale/rotation. That way I can offset duplicate UVs by 1 or scale them down exactly 50% or whatever.
Is there any way I can change it back to my original settings now that the script has swapped them?
A button to toggle this would be appreciated. I've come to like your settings for my unwrap stage, but if I'm tweaking uvs over a texture it's nearly impossible to work with.
going on the stitch thing, weld is also a pain, a button+ value box would be ace for this.
is there any way of making max only weld uvs that are physically attached, i much preffered mayas ability to do this, esp as sometimes shells spilt for no reason, and if they are over the top of one anoter, welding can lead to problems
A useful set of align tools would be selecting verts then having the option to align them to the farthest vertex in +U/-U/+V/-V. Rather than the current align tool, which averages the U or V coord of all the vertices selected.
I've gotten used to it in modo and it's really handy when you've unwrapped bits just as you want them and then want to align more stuff to the same U or V coord afterwards, without moving the original points like averaging would.
Like the 4 buttons seen in the centre of this image;
Some really neat stuff, though. Thanks for all the effort you've put into this. I'm very pleased to see the same functionality of my align-UV-island-to-edge modo script in Max \o/
The only issue I have with it is that using UltraMon and Vista, you get about a 3 pixel wide gap that's active on the window bar between the close button and the switch to other monitor button. Bit of a pain to move it around.
I'm using version 1.20. The pack tool doesn't seem to be respecting my pixel padding. No matter what size texture or padding I input in the top boxes, hitting pack will pack my uvs with zero space between them. I don't have a texture assigned to my object, could that be why?
Oh and the right-click function on the iron button's tooltip still says it will open the relax dialogue, but it instead starts the relax function on your selection without showing the dialogue.
- minimize mode (double click on header logo, to shrink and expand the toolbar) this way it is taking less GUI space while still being present. It is a quick solution for the demand of having it able to run - which I will add at some time.
- max 2010 GUI bugs workaround (max2010 displays some text buttons instead of image buttons). In other words it is now usable in max2010 as well.
- setup rollout floater when you press the "setup" button
- ability to stores settings in a local *.ini file, currently the following gets stored and recalled:
└- panel position
└- panel start minimized
└- background color view (UV editor and flat view)
└- last used texture size
└- last used padding size
└- start as minimize mode
- debugging tools for maxscript development but also you to see where things are stored (macroscripts, *.ini files), but also inspect UV map channels. It can be accessed from the setup panel (lowest rollout there)
- texel transformation now works also on UV sub-selections (transforms only affected UV shells of the face selection). The pipette does not yet work on sub selection of UV or obj face selections.
- removed $.unwrap2.setFillMode 2; which forced the UV editor to render selections as solid fills and under some max9 installations under vertex mode weired display errors, see also this thread http://boards.polycount.net/showthread.php?t=62742
- fixed pixel padding in the packing function (I devided integer through integer which in maxscript case could not be delivered in the desired float value)
- optimized a little bit the explode UV selection to more usefull shells
- fixed the open in PS for max9 as it used a method that was only available for max 2008 (some array stuff)
- removed 1 button/ icon in the texel category as it was not yet useable
Replies
This was just an idea I came across when I had to fix a mesh and mirror it over. Instead of re-flattening and making an all new texture I was trying to line it up with what I currently have so I thought I would just manually suck in the edges.
Then I noticed moving the outside points of the shell (with soft-selection on) constrained to the edge would still keep my mirror seam with the belts on the other side in the texture correct. Otherwise only moving in X & Y has guess work.
Just an idea...it seems moving points constrained to edges would be nice to have.
What you can do however now already is pressing this button to swap UVW with XYZ data and edge slide those edges in the editMesh (in that case) edit tools. Once you are done you simply hit the swap button again. I know the background image is the missing but that's a doable workaround for now.
I am almost done, here is a facelifting preview of the renewed icons:
The pick button will calculate the pixel per unit aka texel density of the either:
a.) selected/ picked object (not sure yet)
b.) selected UV faces
edit: updated the GUI shot preview a few times, the pixel per units have been changed to more iconic labels so that it translates units in a way everyone will hopefully recognize without saying m, meters or other confusing terms.
there are times when I need to align 2 UV's that are very close together and I couldnt stack them together without using mop's UV tools (to align specifically along the U axis and V axis when I want)
One solution was to enable snap and click on the UVs onto the other, but that takes more effort than highlighting both UVs and pressing align-to-U/V key.
Do you have a paypal account. . . I feel like I should pay you something for this :P
I want to build in a auto conversion because for example
512 pix / 128 units = 1024 pix / 256 units = 8 pix / 2 units
but nobody would probably go for 8 pix / 2 units for example but perhaps rather aim at 512 pix / 128 units.
If store within the script a table with common matches I can set the values to the common used ones as soon one uses the pipette for picking up a texture density aka texel.
I am not getting that, what is "need to align 2 UV's" in your vocab? as U and V are just the axis. Do you mean shells, edges or texture vertices ?
And again by "stacking" do your perhaps mean weld or collapse which are already build in max - or do you mean the stacking function of my set that tries to stack UV shells?
If you try to weld them you need to make sure that the threshold radius is big enough- collapse should work always (not sure if it is provided in max by default though).
eh no thanks- I feel honored (not just by you but anyone who left some joyful comments), - but that is not necessary.
I am a happy student just the way I am, there are already enough people that want to feed and lure me with money
There is a reason why I provided the code for free it is because:
- I want a stable UVW tool base that I and others can use anywhere without trouble
- learn from, with and by others (like in this thread)
- building up a portfolio piece
but if you want to support this maybe tell others you know about it or post it in other 3d forums you are active in. A year or two ago UV editing was still often a pain and rare topic among scripters or the big 3 3d software packages, but things are already changing which makes me happy as I have kind of a strong interest in texturing and mapping stuff in general.
What I did for mine was just have 3 buttons ( 2:1, 4:1, 8:1 ) and then defaulted texture size to 1024, and it would only be overridden if you have a texture assigned to the object... so if you slap a 2048 x 2048 onto the object, and hit the 2:1 button, it would use the 2048 size as calculation. I guess that's not quite as flexible as allowing the user to pick both values though.
My goal is to be able to define a fixed value like pixels per 3d unit so that I can guarantee that exactly that amount of pixels per square area of a poly/mesh is used not more, not less very accurate actually. This has the advantage that texture sizes of different objects can be different and you can operate on multiple objects at once.
The other advantage fixed values have over just a single set of fraction is that it is easier to imagine and compare the values with the ones in your engine.
So I was hoping some of you could help me out with typical values used in common engines or games e.g Unreal, CounterStrike, HL2, GOW,... because I highly assume that most of those games have a target Texel value that thy try to keep constant even more in contrast with automated UV space created from build editors like radiant, unrealEditor,...
Maybe I will add a list of such common games and engines so that it will fill in values for those engines.
What I did was make 2 spheres, make one slightly bigger and edit the shape a bit, flatten uvs, cut them in half and then used your "stack" tool to do this
What I want to do is align the circled UVs so they are on the same space, you can do this by selecting the 2 vertices and keep scaling until they meet up, or use mops tools and select the 2 UVs and align by U, and then align by V.
UV snapping would work too but that would not be good because its best to get the average position of the 2 selected UVs in this situation.
(this is not a practical example)
I usually stack uvs like this for organically shaped manually-mirrored objects that arent 100% symmetrical (slight tweaks), but I still want the 2 halves to share the same UV space as eachother. Your tool can be used to align them if I select neighbouring UVs along each axis, but that would ruin the shape I want.
And welding them together would be very messy too.
Maybe I'm doing something wrong and shouldnt even run into this "situation"... Please tell me if I am
with the 2d to 3d thingumybob, would it be possible to instaed of switching between the two, have a second set of shells appear as 2d and have the 3d one reference the uvs from it, so that you could see the effect on the 3d while woring on it. this would be majorly usefull as say i wanted to relax the mesh i could do the same opperation on the flat one and the uvs should stay correct and stretch free.
thanks a lot man.
@ Yozora: at first I did not get your idea - but I understand it now - you want to place the verts of booth shells each on a counter pair - so that it looks welded or merged though the vertex points itself are not really welded but instead just on top of each other.
I have some thoughts on a better stack algorhythem and one idea I had on that was to eventually snap the border vertices of the shells on each other.
you mean like a clone or perhaps reference to the selected object that updates itself per frame or each time you edit the UV in 3d world space? - I think that is very difficult if not hardly impossible for me.
I had though another idea on this some days ago it would go like this:
when pulling the UV to the 3d world space it would generate an additional plane object below the UV mesh with a texture preview on it with the same texture as the original object. That way one could see the texture below the UV-Mesh wires. Erh but thats all complicated and perhaps more a priority later.
@ glib: thx for the values
the multi object processing was kinda hard for me getting running propper - all to often the last days the script would crash or hang at certain conditions. That's why things got delayed but I got it working now - and
-> it's non destructive <-
meaning that it creates modifiers like xReset if needed and always a UVWunwrap to make sure that the texel density is equal on the selected objects with uwrapped shells. Now that is done I want to finish the aiding functions such as the texel pipette before the public release which includes...
the new calculate needed texture size. That script will actually calculate the texture space in ² you would need for the selected object with the given texel density. That's the first time I have seen something like that and it would answer for the first time the question of how big a texture should be.
download:
http://www.renderhjs.net/bbs/polycount/texture_maxscript_tools/uv_toolbox_1.20.mzp
changes:
- texel tools: pick ratio (not yet perfect, will add look up table of common values)
- texel tools: apply texel ratio: works on multiple objects per UV shell proportional
- re-ordered GUI and retouched icons
will update the next day the help site and link here to the icons so its even more clear which new icon does what.
Great job you're doing here, this is a must have!
Seriously awesome work dude, I can't express how amazingly helpful this is!
The eyedropper lets you pick an object with the desired density, and the texel button scales the UVs for all your selected objects. Very quick, very cool, very helpful.
I wonder what the hell is Autodesk doing, renderhjs is doing this on his freetime and was able to script some really kick ass tools! they should stop implementing shitty features on their app, and start improving stuff like the UVW editor!
But just to make sure here is a typical workflow:
in these textfields you enter first the texture resolution (e.g 512 * 512 stands as '512'). The second input fields stands for the units where as you enter the unit length of a wall or something that needs to fill up with the amount of pixels.
alternativly you can hit this button and pick any object and it will return its total texture unit texture space (based on the texture size on the top) as a root (so no more pixels² [remember the 512² is written here as just '512']).
Same goes for the unit - it is just represented by a length unit- not a shape area that would be measured in ².
Since it is only a ratio the values might be in some cases big or odd but I am working on a look up table that will take common fractures into common read able values.
this last button will apply the texel density (the values from the 2 input textfields + the texture resolution at the top) to the selected objects, yes you can select multiple objects.
What it does in detail is
1.) looping through the objects
2.) check if the object is scaled, and if so add a Xreset modifier (so you can undo later anytime)
3.) apply a UVW unwrap modifier
4.) count the UV shells
5.) loop through the UV shells and calculate it's Mesh unit size + it's UV texture size
6.) compare the 2 values of the mesh size and UV size and scale each shell to the ratio it should have
I still have some ideas on improving this, for example now it injects always the textfield texture size of the toolbar and not dynamicly of each object if it is available (e.g the object has already a texture assigned). But those are perhaps minor things right now- but I just wanted to let you know the details.
@[HP]: a friend yesterday forwared me a link of www.game-artist.net, thx for that. And as for the AO settings he is right they are missing because I still did not finished the options toolbar which will propably be included within v1.5 or so.
1 more tool suggestion This time for the packing tool.
I'm not sure if this is possible to do.
But instead of packing the shells in the most optimal way by rotating them ..etc. Would it be possible to have an option where I can do a rough layout of all the shells then have a tool that would move those shells within a defined distance between each other, but at the same time keeping the same uv layout?
This would be truly awesome. Something like 'try to maintain shell proximity'.
where it tries to move the shells closer to each other until a certain padding space is crossed between the shells.
I actually would already have an idea on how to solve this. I worked before on some complex pathfinding stuff I think I can take some knowledge from that into this and check for shell collisions.
Exactly like that!
-setup button, is it broken/non functional at the moment? (I though ive seen it working somewhere in this thread..)
-i dont like that your script forces the polygon fill stuff in the uv editor as it hides information when uvs are overlapping, I hope my little hack to stop the filling doesnt generate any bad side effects
-rightklick iron / relax, it might be better canceling the relax when selecting another element in the uv editor (and yes i understand that would reduce somewhat the workflow when relaxing different stuff one after another - but at the moment i feel more like im more often undoing wrong klicks..)
yeah frist pointers I ran into, whole alignment and texel stuff is really slick and sexy.
I just did this too and it was amazing. Like, got me better results and saved me a day of work. This was absolutely wonderful for re-normalizing a whole bunch of pieces I had unwrapped through a variety of methods (lots of pelts and unwrap UVs) that broke normalization. I had to explode all my elements to do it, though - maybe adding a simple function to do that, or getting it to work on an element, rather than object, basis? We've got a bunch of in-house tools and one of them explodes meshes for me so I was cool but for home use and other folks being able to quickly explode an object would be useful to work in conjunction with that tool.
But yeah this stuff is totally the shit.
i use the stitch functions all the time but the way they're located in max is a pain in the ass, could you add it asa button, with an input for the bias etc. i had it set up in maya in a silmiar way and just having it right there releives alot of clicks.
also i had the idea that it would be nice to have a slider that would update in realtime, so that you could make quick post stitch adjustments.
and man thank for saving me a load of time today, max is almost getting enjoyable to uv in
At the moment I dont know a better way of canceling the relax simulation because I can not intercept the call backs of the UV editor sadly. Will have a look at the fill mode.
Ghostscape: yes I mentioned that before that the texel apply script is not yet final because assigning to a selection of your UV is yet missing.
today I was testing max2010 and noticed that the GUI was messed up in the default dark theme, even worse they changed some major GUI things like how colors are used. And I think it caused some of the missing icons , this is how it looks here with 3dsmax2010
for some reason I can't reapply custom bitmap data values on buttons. Will have to contact autodesk about that. makes me a bit angry that things changed there.
The other thing that annoys me that the new 3dsmax forces anti-aliasing in the GUI on me even though I disabled it in windows itself - so there are some minor pixel shiftments because of that.
edit: oh yes so defenitly - I hate that spot as well. I already planned that some time ago.
with the slider, do you mean like controlling the threshold that determinds at which point to snap selected edges with their counter parts? - maybe a spinner would be better here since it is smaller and taking up less GUI space.
cheers looking forward toit
okey I guess the fill mode option would be a nice thingie for the yet not working settings menu - until then i'll use my mighty hacking skillz...
Btw guys, bit of a random question. I use XSI at work, and I really like XSI UVW editor.
XSI has a button that let's you view the UV's overlaps in real time, is there anything like this on max?
Example:
As you can see, the overlapped UV's are shaded red in the UVW editor window.
PS. Too bad about max2010 mess up with the icons... Oh autodesk, autodesk never changes. Maybe you could make a version for max2010, and another version for prior versions?
A couple of things that would be really handy in my opinion though:
The ability to bind opening the Textools toolbar to a kepress/ custom toolbar button as I don't need it open all the time as happens currently by sticking thhe .mzp in the startup scripts folder.
The ability to keep my current UV editor window preferences such as line colour, grid size etc. I am pretty set in my ways with the colour setup of the UV window, having the grid displayed etc and having it changed by launching the uv window from the toolbar throws me off. Is there any way I can change it back to my original settings now that the script has swapped them?
but doing so in real time would not be so handsome as it might slow down the editor
A button to toggle this would be appreciated. I've come to like your settings for my unwrap stage, but if I'm tweaking uvs over a texture it's nearly impossible to work with.
going on the stitch thing, weld is also a pain, a button+ value box would be ace for this.
is there any way of making max only weld uvs that are physically attached, i much preffered mayas ability to do this, esp as sometimes shells spilt for no reason, and if they are over the top of one anoter, welding can lead to problems
I've gotten used to it in modo and it's really handy when you've unwrapped bits just as you want them and then want to align more stuff to the same U or V coord afterwards, without moving the original points like averaging would.
Like the 4 buttons seen in the centre of this image;
Some really neat stuff, though. Thanks for all the effort you've put into this. I'm very pleased to see the same functionality of my align-UV-island-to-edge modo script in Max \o/
The only issue I have with it is that using UltraMon and Vista, you get about a 3 pixel wide gap that's active on the window bar between the close button and the switch to other monitor button. Bit of a pain to move it around.
Oh and the right-click function on the iron button's tooltip still says it will open the relax dialogue, but it instead starts the relax function on your selection without showing the dialogue.
here is a little update that might fix some stuff for you people
download:
http://www.renderhjs.net/bbs/polycount/texture_maxscript_tools/uv_toolbox_1.40.mzp
1.4 changes
- minimize mode (double click on header logo, to shrink and expand the toolbar) this way it is taking less GUI space while still being present. It is a quick solution for the demand of having it able to run - which I will add at some time.
- max 2010 GUI bugs workaround (max2010 displays some text buttons instead of image buttons). In other words it is now usable in max2010 as well.
- setup rollout floater when you press the "setup" button
- ability to stores settings in a local *.ini file, currently the following gets stored and recalled:
└- panel position
└- panel start minimized
└- background color view (UV editor and flat view)
└- last used texture size
└- last used padding size
└- start as minimize mode
- debugging tools for maxscript development but also you to see where things are stored (macroscripts, *.ini files), but also inspect UV map channels. It can be accessed from the setup panel (lowest rollout there)
- texel transformation now works also on UV sub-selections (transforms only affected UV shells of the face selection). The pipette does not yet work on sub selection of UV or obj face selections.
- removed $.unwrap2.setFillMode 2; which forced the UV editor to render selections as solid fills and under some max9 installations under vertex mode weired display errors, see also this thread
http://boards.polycount.net/showthread.php?t=62742
- fixed pixel padding in the packing function (I devided integer through integer which in maxscript case could not be delivered in the desired float value)
- optimized a little bit the explode UV selection to more usefull shells
- fixed the open in PS for max9 as it used a method that was only available for max 2008 (some array stuff)
- removed 1 button/ icon in the texel category as it was not yet useable