Not by default. You will probably have to check out highend3d.com and search for a planar script. I'm pretty sure one exists, but I don't have the details.
pior had a thread asking for something similar from memory. might be worthwhile running a search for it. other than that. this aint a proper ' make planar ' kinda thing but so far as :
Basically something that will align poly/edge/vert to a single axis?
I don't know how the max tool works. But isn't that the same thing as scaling something to 0% on one axis? I guess it averages things out but if that isn't a problem then I don't see why you can't use that.
yeah, for planar along X,Y,Z you can simply scale while holding J to snap to 0%
for arbitrary planes like in Max, though it's a bit more difficult. I always meant to have a go, but I imagine there's a script for it somewhere already
yeah, for planar along X,Y,Z you can simply scale while holding J to snap to 0%
for arbitrary planes like in Max, though it's a bit more difficult. I always meant to have a go, but I imagine there's a script for it somewhere already
I think there's a tool that let's you change the axis based on different things... Local Tool maybe? I haven't used Maya in a while so I wouldn't really know. heh.
Yeah but that's always the same old thing : you don't want to have to go and mess with some temporary axis setting when all you want is to flatten faces...
Obviously it's good enough if you only have a couple faces to flatten. But if you use flatten as a modeling tool (jumping all around the model to select and flatten faces in need of straightening), you really want to select, hit a button to flatten to average, jump to the next face(s), hit the button again ... This needs to be fast.
Since Maya cannot do that I personally end up eyeballing such things, correcting planes at vertex level - it slows down things alot...
I wrote this little script that averages verts on whichever axis you specifiy - I use this one quite a bit. Of course, it doesn't average on anything except the world X ,Y, or Z (or all 3) - so maybe not exactly what you're looking for - but it might help.
////////////////////////////////////////////////////////////// // Average_Verts.mel // FUNCTION: Averages vert position on X, Y, Z, or all axes //////////////////////////////////////////////////////////////
//build the window if (`window -ex AvgVert`) deleteUI AvgVert; window -w 400 -h 100 -title "Average Verts" AvgVert; //define the layout of the buttons columnLayout; radioCollection AllRadioButtons; radioButton -label "x" -changeCommand "changeRadio" -select RadioButton1; radioButton -label "y" -changeCommand "changeRadio" RadioButton2; radioButton -label "z" -changeCommand "changeRadio" RadioButton3; radioButton -label "ALL" -changeCommand "changeRadio" RadioButton4; //button to do average button -w 150 -label "Average!" -c "DoAverage"; showWindow AvgVert; global string $selectedAxis = "x"; global proc changeRadio() { // If we are here, the radio buttons have changed state. // We need to find out which button is selected. string $selectedButton = `radioCollection -query -select AllRadioButtons`; global string $selectedAxis;
if ($selectedButton == "RadioButton1") { $selectedAxis = "x"; print "x selected"; } else if ($selectedButton == "RadioButton2") { $selectedAxis = "y"; print "y selected"; } else if ($selectedButton == "RadioButton3") { $selectedAxis = "z"; print "z selected"; } else { $selectedAxis = "all"; print "all selected"; } } global proc DoAverage () { global string $selectedAxis; string $selVtx[] = `filterExpand -sm 31 -ex 1 -fp 1`; if (size($selVtx)<2) error "Not enough vertices selected."; float $bB[6] = `polyEvaluate -bc`; float $averX = ($bB[1]+$bB[0])/2; float $averY = ($bB[3]+$bB[2])/2; float $averZ = ($bB[5]+$bB[4])/2; if ($selectedAxis == "x") { move -a -x $averX; } else if ($selectedAxis == "y") { move -a -y $averY; } else if ($selectedAxis == "z") { move -a -z $averZ; } else { move -a -x $averX; move -a -y $averY; move -a -z $averZ; }
I just had a shot at making a make planar in maya.
I ended up using some pretty lame hacks, but it should work. I'm surprised that I can't find a tool anywhere to do this better. The biggest problem with mine is it flushes your construction history when using the average plane. In the future I'd like to do the math and also make a slider that determines where the plane will be (interpolate between min/max along the plane/axis)
just wanted to say thanks funky bunnies, Im gonna have a go at using that script I really dont like eyeballing or doing wierd snapping on important stuff like this.
Basically just makes it planar depending on the axis you scale in. It's the same as turning on discrete scaling (and rotating for that matter) in the settings of these tools. Except when you turn it off, you can use J to activate it without having to go into the settings. Obviously works the other way around as well. It just speeds up your workflow. I suck at explaining, so:
yeah actually i think all of this is possible without a script now
aside from holding J or whatever hotkey you set to 'Discrete Scale' to snap to 0 while you're scaling, you should now have 'Normals Average' as an option in the 'Tool Settings' panel - along with several other options to effectively planarize it however you want
just in case anyone's using an older maya, or they still want to use that script i updated the link in my above post
yeah, discreet tool ftw. Gets a bit annoying because it's one of those functions who keeps turning itself on and off pretty randomly, but with that being said I cant imagine my life with maya without it anymore.
Basically just makes it planar depending on the axis you scale in. It's the same as turning on discrete scaling (and rotating for that matter) in the settings of these tools. Except when you turn it off, you can use J to activate it without having to go into the settings. Obviously works the other way around as well. It just speeds up your workflow. I suck at explaining, so:
wierd my maya doesnt seem to do that at all when I hold J no idea whats wrong. Ive been using funky bunnies script instead cause at least I can tell its working.
Replies
http://orderindebris.exorsus.net/misc/jkbFlattenVerts_2.1.rar
for arbitrary planes like in Max, though it's a bit more difficult. I always meant to have a go, but I imagine there's a script for it somewhere already
I think there's a tool that let's you change the axis based on different things... Local Tool maybe? I haven't used Maya in a while so I wouldn't really know. heh.
Obviously it's good enough if you only have a couple faces to flatten. But if you use flatten as a modeling tool (jumping all around the model to select and flatten faces in need of straightening), you really want to select, hit a button to flatten to average, jump to the next face(s), hit the button again ... This needs to be fast.
Since Maya cannot do that I personally end up eyeballing such things, correcting planes at vertex level - it slows down things alot...
//////////////////////////////////////////////////////////////
// Average_Verts.mel
// FUNCTION: Averages vert position on X, Y, Z, or all axes
//////////////////////////////////////////////////////////////
//build the window
if (`window -ex AvgVert`) deleteUI AvgVert;
window -w 400 -h 100 -title "Average Verts" AvgVert;
//define the layout of the buttons
columnLayout;
radioCollection AllRadioButtons;
radioButton -label "x" -changeCommand "changeRadio" -select RadioButton1;
radioButton -label "y" -changeCommand "changeRadio" RadioButton2;
radioButton -label "z" -changeCommand "changeRadio" RadioButton3;
radioButton -label "ALL" -changeCommand "changeRadio" RadioButton4;
//button to do average
button -w 150 -label "Average!" -c "DoAverage";
showWindow AvgVert;
global string $selectedAxis = "x";
global proc changeRadio()
{
// If we are here, the radio buttons have changed state.
// We need to find out which button is selected.
string $selectedButton = `radioCollection -query -select AllRadioButtons`;
global string $selectedAxis;
if ($selectedButton == "RadioButton1")
{
$selectedAxis = "x";
print "x selected";
}
else if ($selectedButton == "RadioButton2")
{
$selectedAxis = "y";
print "y selected";
}
else if ($selectedButton == "RadioButton3")
{
$selectedAxis = "z";
print "z selected";
}
else
{
$selectedAxis = "all";
print "all selected";
}
}
global proc DoAverage () {
global string $selectedAxis;
string $selVtx[] = `filterExpand -sm 31 -ex 1 -fp 1`;
if (size($selVtx)<2) error "Not enough vertices selected.";
float $bB[6] = `polyEvaluate -bc`;
float $averX = ($bB[1]+$bB[0])/2;
float $averY = ($bB[3]+$bB[2])/2;
float $averZ = ($bB[5]+$bB[4])/2;
if ($selectedAxis == "x")
{
move -a -x $averX;
}
else if ($selectedAxis == "y")
{
move -a -y $averY;
}
else if ($selectedAxis == "z")
{
move -a -z $averZ;
}
else
{
move -a -x $averX;
move -a -y $averY;
move -a -z $averZ;
}
}
I ended up using some pretty lame hacks, but it should work. I'm surprised that I can't find a tool anywhere to do this better. The biggest problem with mine is it flushes your construction history when using the average plane. In the future I'd like to do the math and also make a slider that determines where the plane will be (interpolate between min/max along the plane/axis)
anyway, grab it here if you want
(edit: updated links to the updates i made to the script a while back just in case anyone still wants it)
[ame="http://www.youtube.com/watch?v=T06DGdLMijg"]Maya Snapping holding J - YouTube[/ame]
aside from holding J or whatever hotkey you set to 'Discrete Scale' to snap to 0 while you're scaling, you should now have 'Normals Average' as an option in the 'Tool Settings' panel - along with several other options to effectively planarize it however you want
just in case anyone's using an older maya, or they still want to use that script i updated the link in my above post
wierd my maya doesnt seem to do that at all when I hold J no idea whats wrong. Ive been using funky bunnies script instead cause at least I can tell its working.