Home Technical Talk

Discussion: Increasing your speed with highpoly hard-surface modeling

2

Replies

  • Computron
    Options
    Offline / Send Message
    Computron polycounter lvl 7
    Thanks SsSandu_c, I looked in the selection tab of the graphite modeling tool set, I wonder why they put separate them this way?

    Is there any way to quickly modify the soft selection radius like in the video without moving your mouse to a caddy? I prefer if it worked like blender with the scroll wheel. (I think blender even has the option of working in screen space rather than using adjacent vertices.)
  • SsSandu_C
    Options
    Offline / Send Message
    SsSandu_C polycounter lvl 13
    Computron - yeah,... still scratching my head about that... maybe so they were closer to the more common commands... maybe. As for the fallof with the middle mouse button... There was a script for that but it is gone now. It was calledSSFallof Manipulator. You can find more information here I think CodeFather has it or he uses one of his own. You can try Shift from the freeform tab and use it like blender's propotional editing.
  • Computron
    Options
    Offline / Send Message
    Computron polycounter lvl 7
  • PolyHertz
    Options
    Offline / Send Message
    PolyHertz polycount lvl 666
    DEElekgolo wrote: »
    I don't know where I got this script from but it lets you connect shapes and still maintain quads. Requires max 2010 and up.
    F3nV7.gif


    For those that use Maya, here's a script I wrote a while back that does the same thing:
    //name: QuadConnect
    //by: Polyhertz
    
    startQuadConnect;
    
    global proc startQuadConnect ()
    {
    global string $curObj[], $vrts2Tweak[];
    string $origList[];
    
    $origList = `ls -sl -fl`;
    $edjList = `filterExpand -ex 1 -sm 32`;
    polySplitRing -stp 2 -div 1;
    $edjsNew = `filterExpand -ex 1 -sm 32`;
    
    //Get the object name
    string $buff[];
    tokenize $origList[0] "." $buff;
    $curObj[0] = $buff[0];
    select $edjsNew;
        
        
    for ($currentEdj in $edjsNew)
        {
        //Find if new edges have a parallel tri and n-gon with 5 verts, if so make into quad-connection
        $buff = `polyListComponentConversion -tf $currentEdj`;     //edges convert to faces
        $faces = `filterExpand -sm 34 -ex 1 $buff`;                //save faces
        $buff = `polyListComponentConversion -tv $faces[0]`;    //face1 from edge convert to verts
        $e2F1 = `filterExpand -sm 31 -ex 1 $buff`;                //save verts from face1
        $buff = `polyListComponentConversion -tv $faces[1]`;    //face2 from edge convert to verts
        $e2F2 = `filterExpand -sm 31 -ex 1 $buff`;                //save verts from face2
    
        if (size($e2F1) == 3) select $faces[1];
        if (size($e2F2) == 3) select $faces[0];
    
        if (size($e2F1) == 3 && size($e2F2) == 5 || size($e2F2) == 3 && size($e2F1) == 5)
            {
            PolySelectConvert 3; //verts
            $fiveVrts = `ls -sl -fl`; //save verts from face with five sides
            
            select $currentEdj;
            PolySelectTraverse 1; //grow
            PolySelectConvert 3; //verts
            $threeVrts = `ls -sl -fl`; //for future reference, save what verts we wont be needing
            
            select $currentEdj;
            polySubdivideEdge -dv 1;
            PolySelectConvert 3; //verts
            select -d $threeVrts;
            $newVrt = `ls -sl -fl`; //make sure only the newly divided edges middle vert is selected
            
            select $fiveVrts;
            select -d $threeVrts;
            select -add $newVrt;
            $vrts2Tweak = `ls -sl -fl`; //save the two verts we will be connecting to make the quad loop
            
            vConProc;
            select $vrts2Tweak;
            slideProc;
            }
        }
    }
        
        
        
        
        
    global proc vConProc ()
    {
    global string $curObj[];
    
    $origVrts = `ls -sl -fl`;
    select $origVrts[0];
    PolySelectConvert 2;
    $origEdjs1 = `ls -sl -fl`;
    select $origVrts[1];
    PolySelectConvert 2;
    $origEdjs2 = `ls -sl -fl`;
    
    select $origVrts[0];
    $origFacs1 = `polyListComponentConversion -fv -tf`;
    select $origVrts[1];
    $origFacs2 = `polyListComponentConversion -fv -tf`;
    
    //Find what face the verts have in common
    select $origFacs1; 
    select -d $origFacs2;
    select -tgl $origFacs1;
    $facInComm = `ls -sl`;
    
    //Find which of the verts connected edges lie on the shared face(s)
    string $sharedFacEdjs[];
    if (size($facInComm) != 0)
        {
        $facToEdj = `polyListComponentConversion -ff -te`;
        $origEdjsAll = stringArrayCatenate ($origEdjs1, $origEdjs2);
        select $origEdjsAll; select -d $facToEdj;
        select -tgl $origEdjsAll;
        $sharedFacEdjs = `ls -sl`;
        }
    
    if (size($facInComm) >= 1)
        {
        //edge group 1
        select $sharedFacEdjs;
        select -d $origEdjs2; //deselect the second verts edges
        $vrt1SpecialBorder = `ls -sl -fl`; //group 1 edges
        $vrtInfo = `polyInfo -ev $vrt1SpecialBorder[0]`; //primary edge 1 vert info
        string $vrtTokOne[];
        string $crunchy = $vrtInfo[0];
        tokenize $crunchy " " $vrtTokOne;
        
        //edge group 2
        select $sharedFacEdjs;
        select -d $origEdjs1; //deselect the first verts edges
        $vrt2SpecialBorder = `ls -sl -fl`; //group 2 edges
        $vrtInfo = `polyInfo -ev $vrt2SpecialBorder[0]`; //group 2 verts
        string $vrtTokTwo[];
        string $crunchy = $vrtInfo[0];
        tokenize $crunchy " " $vrtTokTwo;
        
        //find the edge numbers
        string $curEdj;
        $curEdj = $vrt1SpecialBorder[0];
        int $edj1Num = (int(match("[0-9]+", `match "\[[0-9]+\]" $curEdj`)));
        $curEdj = $vrt2SpecialBorder[0];
        int $edj2Num = (int(match("[0-9]+", `match "\[[0-9]+\]" $curEdj`)));
        
        //find the original vert numbers
        string $curVrtt;
        $curVrtt = $origVrts[0];
        int $origVrt1Num = (int(match("[0-9]+", `match "\[[0-9]+\]" $curVrtt`)));
        $curVrtt = $origVrts[1];
        int $origVrt2Num = (int(match("[0-9]+", `match "\[[0-9]+\]" $curVrtt`)));
        
        //Determin if verts are index 0 or 1 for their given edge
        int $slideValOne;
        int $slideValTwo;
        if ($origVrt1Num == $vrtTokOne[2]) $slideValOne = 0;
        if ($origVrt1Num == $vrtTokOne[3]) $slideValOne = 1;
        if ($origVrt2Num == $vrtTokTwo[2]) $slideValTwo = 0;
        if ($origVrt2Num == $vrtTokTwo[3]) $slideValTwo = 1;
        
        polySplit
        -s 1
        -sma 90
        -ep $edj1Num $slideValOne
        -ep $edj2Num $slideValTwo
        $curObj;
        }
    
    select $origVrts;
    }
        
        
        
        
        
    
    global proc slideProc ()
    {
    global string $vrts2Tweak[];
    float $slidePercent = 0.66666;
    
    //Get the verts x/y/z positions
    $xyzOne = `xform -q -ws -t $vrts2Tweak[0]`;
    $xyzTwo = `xform -q -ws -t $vrts2Tweak[1]`;
    
    //Find the difference between each verts x/y/z value
    $xDif = ($xyzOne[0] - $xyzTwo[0]);
    $yDif = ($xyzOne[1] - $xyzTwo[1]);
    $zDif = ($xyzOne[2] - $xyzTwo[2]);
    if ($xDif < 0) {$xDif = $xDif * -1;}
    if ($yDif < 0) {$yDif = $yDif * -1;}
    if ($zDif < 0) {$zDif = $zDif * -1;}
    
    //How far along the edge to slide
    float $slideVal[2];
    $slideVal[0] = ($xDif * $slidePercent);
    $slideVal[1] = ($yDif * $slidePercent);
    $slideVal[2] = ($zDif * $slidePercent);
    
    //Determin where to slide to
    float $xyzThree[];
    if ($xyzOne[0] < $xyzTwo[0])
        {$xyzThree[0] = ($xyzOne[0] + $slideVal[0]);}
        else
        {$xyzThree[0] = ($xyzOne[0] - $slideVal[0]);}
    if ($xyzOne[1] < $xyzTwo[1])
        {$xyzThree[1] = ($xyzOne[1] + $slideVal[1]);}
        else
        {$xyzThree[1] = ($xyzOne[1] - $slideVal[1]);}
    if ($xyzOne[2] < $xyzTwo[2])
        {$xyzThree[2] = ($xyzOne[2] + $slideVal[2]);}
        else
        {$xyzThree[2] = ($xyzOne[2] - $slideVal[2]);}
    
    move $xyzThree[0] $xyzThree[1] $xyzThree[2] $vrts2Tweak[1];
    clear $vrts2Tweak;
    }
    
    select -cl;
    
  • passerby
    Options
    Offline / Send Message
    passerby polycounter lvl 12
    thanks for that script, PolyHertz it;s something i miss when moveing stuff back into maya since modo and voidworld just do that automatcally
  • knak47
    Options
    Offline / Send Message
    I have 2009 and I would like to use IC.PolySplitRing more but I am stuck using the old "Connect" feature which is slow. The reason I don't use IC.PolySplitRing to insert my edge loops is because it cant be placed into an "Edit Poly" modifier and therefor cant be toggled off later when reconstructing the low poly. This leaves you having to manually remove any support loops you have created. Anyone know how IC.PolySplitRing can be embedded into an "Edit Poly" modifier? Maybe a script for it?

    Also I was trying to find PolyBoost, is the only option to purchase it? All the download links I found were broke.
  • passerby
    Options
    Offline / Send Message
    passerby polycounter lvl 12
    knak47 wrote: »
    I have 2009 and I would like to use IC.PolySplitRing more but I am stuck using the old "Connect" feature which is slow. The reason I don't use IC.PolySplitRing to insert my edge loops is because it cant be placed into an "Edit Poly" modifier and therefor cant be toggled off later when reconstructing the low poly. This leaves you having to manually remove any support loops you have created. Anyone know how IC.PolySplitRing can be embedded into an "Edit Poly" modifier? Maybe a script for it?

    Also I was trying to find PolyBoost, is the only option to purchase it? All the download links I found were broke.

    why not do you block out all your shapes first, copy it to a new layer than start adding support edges.
  • Kovac
    Options
    Offline / Send Message
    Kovac polycounter lvl 18
    Excellent thread! Thanks a bunch for suggesting Magic Hotkey, that script is amazingly effective!

    I just picked up Quad Chamfer yesterday and have yet to get a lot of basic shapes working with the Parallel option. I've been emailing Marius and hopefully he can shed some light on it, otherwise I may just have a $30 chamfer tool:poly122:
  • knak47
    Options
    Offline / Send Message
    passerby wrote: »
    why not do you block out all your shapes first, copy it to a new layer than start adding support edges.

    Yeah that's an option, I was just hopIng someone had another workaround.

    So can I find Polyboost for free anywhere?
  • Popeye9
    Options
    Offline / Send Message
    Popeye9 polycounter lvl 15
    I tend to use the quad menu a lot since you can repeat operations by clicking on the header. Not only goodfor modeling but when I uv I find it beneficial.
  • Fang
    Options
    Offline / Send Message
    Fang polycounter lvl 7
    Here's a lil tip that I didn't really consider until today, you can use soft selections in conjunction with the modifier tree.
    This way you can localize modifiers with a nice falloff.

    I can definitely see this saving you some time when used right.

    softselModifiers.JPG
  • DEElekgolo
    Options
    Offline / Send Message
    DEElekgolo interpolator
    In max if you press ctrl and click a different sub-object level then all the components that use that vertex or edge or polygon will be converted to the new level.

    By different sub object levels I mean these:
    Tr6Me.png

    If you use shift instead it will select the border edges.
    GUID-837B9960-F7C8-452D-BACA-38B02A774DBD-low.png
  • Mark Dygert
    Options
    Offline / Send Message
    knak47 wrote: »
    Yeah that's an option, I was just hopIng someone had another workaround.

    So can I find Polyboost for free anywhere?
    It's only for older versions of max 2009 and lower and I think it costs $100-200? It was included in 2010 as graphite modeling tools free of charge.
  • TeZzy
    Options
    Offline / Send Message
    TeZzy polycounter lvl 12
    @PolyHertz: that is aswesome. thanks for the script!

    Honestly, maya needs some of these tools built in.
  • Oniram
    Options
    Offline / Send Message
    Oniram polycounter lvl 17
    DEElekgolo wrote: »
    In max if you press ctrl and click a different sub-object level then all the components that use that vertex or edge or polygon will be converted to the new level.

    By different sub object levels I mean these:
    Tr6Me.png

    If you use shift instead it will select the border edges.
    GUID-837B9960-F7C8-452D-BACA-38B02A774DBD-low.png


    in addition if you press ctrl+shift when selecting it will grab only the inside verts/edges.

    for doing edgeloops i tend to use nothing other than swift loop. ive set that hotkey up to Shift+S, and then using the existing hotkeys with the tool (CTRL+ALT) the edges conform to whichever edgeloop it is closest to.

    with that ive also setup the hotkey for Set Flow (which seems to have some issues in edge mode in max 2012) to CTRL+SHIFT+S. because of the maxscript error i get when trying to do this with edges, ill just switch to verts using the above method mentioned by DEElekgolo, which isnt a big issue.

    another hokey i setup thats crucial to my workflow is ctrl+g. essentially doing the same thing that G does in maya.. repeat last. this helps tremendously when doing multiple things (connection, chamfer, etc).. so i dont have to worry about the dialogue box coming up all the time.
  • DEElekgolo
    Options
    Offline / Send Message
    DEElekgolo interpolator
    what is an easy way to convert all these hotkey settings to other versions of 3ds max? I notice that XSI has an easy way to migrate settings and scripts and such but what about max?
  • SsSandu_C
    Options
    Offline / Send Message
    SsSandu_C polycounter lvl 13
    I think you can load the MaxStartUI.kbd which holds your keyboard shortcuts in another version. I haven't tried, but someone here might validate or disapprove what I am saying.
  • alexdubbeat
    Options
    Offline / Send Message
    alexdubbeat polycounter lvl 8
    ^^^Yep it works fine. At least with max 2008, 2009, 2010 (and vice versa).
  • Mark Dygert
    Options
    Offline / Send Message
    SsSandu_C wrote: »
    I think you can load the MaxStartUI.kbd which holds your keyboard shortcuts in another version. I haven't tried, but someone here might validate or disapprove what I am saying.
    Yep I save out all of that stuff to a dropbox folder, UI, toolbar, layouts, colors ect... That way wherever you go, they are just a restart away.
  • System
    Options
    Offline / Send Message
    System admin
    @mark How do you save that stuff out, because every time Ive tried to save a custom ui config, when I move to a different computer to load it, it never loads properly.

    What do you need other than the maxstart.max and the MaxStartUI to actually get all your prefs transferred? :/
  • lloyd
    Options
    Offline / Send Message
    Quack! wrote: »
    Great Topic.

    1. Bind SWIFT LOOP to a Key!

    I use Tilde ~

    VIDEO: http://www.screencast.com/t/OXbPgOFTbQ9

    2. Block out the ENTIRE mesh.

    I create an entire mesh and don't add control edges until the very end of object. I do this because I found myself staring at the tiniest details that will get lost in the normal map.

    3. Don't be so exact with your control edges. Video game players will never notice the difference between a connect edge at a Value of 2.12 or a connect value of 1.94. For the overwhelming majority of your edges eyeballing will be more then sufficient. Don't micromanage.


    This, Alt + S
  • xillyriax
    Options
    Offline / Send Message
    xillyriax polycounter lvl 10
    @PolyHertz -
    wow, many thanx :poly121:
  • Computron
    Options
    Offline / Send Message
    Computron polycounter lvl 7
    lloyd wrote: »
    Alt + S

    In case anyone was wondering, Alt+S does this:

    teyeI.png
  • InProgress
    Options
    Offline / Send Message
    InProgress polycounter lvl 14
    In Maya, I removed almost everything to enlarge the viewport and just use the hotbox. That way, I don't have to move the cursor all over the screen for a tool.
  • Brendan
    Options
    Offline / Send Message
    Brendan polycounter lvl 8
    Computron wrote: »
    In case anyone was wondering, Alt+S does this:

    teyeI.png

    Oh God I'm getting AutoCAD 2004 flashbacks. This is a good thing, where can I find this menu in Maya?

    Is there a way to snap at angles as well? In CAD you could define angles or increments, like every 15 degrees.
  • passerby
    Options
    Offline / Send Message
    passerby polycounter lvl 12
    @Brendan the options tab of the that same dialog has rotation snaps, and scaling snaps, you can get to it by right clicking any of the snapping toggles on the top toolbar of max.

    in maya your snapping toggles are in the top toolbar too, for grid, curve and point, which can also be toggled with X C and V, than if you hold W E or R for your transform, rotate and scale tools and hold lmb you can get a markning menu to turn stepping, angle snap and scale snap on and off.

    can also get those options and change the stepping amount by doubble clicking the tool or going to the tool options.
  • TeZzy
    Options
    Offline / Send Message
    TeZzy polycounter lvl 12
    While in move, rotate or scale you can hold j and it will temporarily toggle discrete transform on, allowing you to do angle snapping or move/scale unit increments.
  • artquest
    Options
    Offline / Send Message
    artquest polycounter lvl 13
    I don't see too many maya users posting in this thread so I'll see if I can chip in.

    You don't have to put up with maya's menu lag! You can just memorize the gestures for each tool. As fast as you can do the gesture is the speed at which you can now change tools or perform operations. It's probably the main reason I haven't switched to another package yet. (Although I have my eye on XSI, I hear great things from modelers)

    Also, when it comes to highpoly stuff. Sometimes It's very helpful to rough something out in zbrush in a few minutes, then perform a simple retopo in zbrush using the thickness option in the edit topo menu. Then export your new mesh into maya for cleanup or some holding edges depending on how complicated your mesh. I've found this to be a very quick process.

    Another big thing is pivot snapping and orienting. Align to edge is probably the one I use most.

    Hope this helps someone out there! :)
  • DEElekgolo
    Options
    Offline / Send Message
    DEElekgolo interpolator
    clicking an edge and clicking on another edge that would be in its loop while holding shift will select the entire loop.
  • Mio
    Options
    Offline / Send Message
    Mio polycounter lvl 13
    great thread guys.

    well i got the same short cut key as Xoliul for swift loop : shift +S

    but i barely use it..

    i more like the connect /flow connect /set flow / cut

    becuz in most of my modeling task , i really like to make things done in 3dsmax2k9 with polyboost(which have really unstable swift loop function)

    but the performance of the UI is much better than ribbon in max 2012.



    the " Drag " function in in Graphite is quite handy. you can move vertex/edge/face directly ,like move brush in zbrush or similar action in Silo3d.


    i set up the ring to alt + R , loop to alt+E, which also learned from silo .



    I use FFD alot, it's very powerful to modify the big shape / silhouette.

    i like to assign the unwrap UVW modifier to "F5", turbo smooth to "F6", really use those modifier alot..

    and the double smooth modifier method is really really helpful and big time saver to some tricky parts, even it will lead to heavy poly counts.



    hope that helps :P
  • Artist_in_a_box
    Options
    Offline / Send Message
    Artist_in_a_box polycounter lvl 7
    i wish i could use more hotkeys as this is the kind of modelling I feel I am pretty decent at. The only problem is I hate using any automated process, like swift loop and so on as if they mess up it can be ages until you notice the mistake and by that time too late. I always find that they work most of the time but fixing the error when it messes up that one time pretty much negates all the time i saved until that point.

    The only hot keys I absolutely must use (and i know its not relevant to this thread) is A for quick planar map and D for stitch selected for my unwrapping. In fact A similar thread for unwrappign would be a great idea!
  • MadnessImport
    Options
    Offline / Send Message
    Been looking for this thread for a while
    Kept giving up on searching until i looked through Adams list of started topics

    For Maya:
    2lv20kn.png

    Marking menus shave to much time off of doing just about anythnig if your reflexes are superb

    I put everything in the Hotkey Shift + A

    Now i can finally turn off every piece of the UI but the channel box
    I got tired of there being 2 menus dedicated to Mesh so i put all my most used tools in one Submenu

    Down with Shelves and Ui Up with marking menus and hotkeys!
2
Sign In or Register to comment.