Home 3D Art Showcase & Critiques

Lunar Camera

1
insane polycounter
Offline / Send Message
Amsterdam Hilton Hotel insane polycounter
Making this doodad in the spare time to experiment with a different (for me) hardsurface workflow.

All the modeling is being done inside Proboolean objects in Max, then exported to Zbrush, converted to Dynamesh objects and polished (automatic processes - no brushwork - takes about a minute), then imported back to Max and decimated with the proOptimize modifier.

This is similar to what the Massive guys did for the guns on Division a few years ago. The main difference is that the modeling is all being done in Max and all the boolean operands remain live and editable at any point. ZB is only being used as an "edge processor." 

My hope is that the lowpoly can similarly be automated within Max. Because the operands remain live, things like the amount of curves in cylinders remain parametric and can just be dialed down. ~90% of the cleanup can hopefully be done using a combination of the vert weld and turn-to-poly modifiers.

The design here is based on a Fairchild lunar camera but I'm not keeping it particularly accurate, just an eyeball guideline.


Replies

  • Jaston3D
    Offline / Send Message
    Jaston3D polycounter lvl 8
    Thanks for sharing the workflow! Sounds super fast!
    The model looks sweet too!
  • Amsterdam Hilton Hotel
  • beefaroni
    Offline / Send Message
    beefaroni sublime tool
    Nice! I've been doing a similar process in Maya. Unfortunately, it's not quite as editable after the booleans, but man does it make the high poly process SUPER quick. I feel like methods like these will only get quicker as ZBrush gets more powerful. 


  • Amsterdam Hilton Hotel
  • Gazu
    Offline / Send Message
    Gazu polycounter lvl 12
  • cookedpeanut
    Offline / Send Message
    cookedpeanut polycounter lvl 13
    Could you make a demonstration for this for us non Max users, I'm interested to see the workflow...
  • kohg
    Offline / Send Message
    kohg polycounter lvl 9
    Are these the highpolys inside max we're seeing?
  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    @kohg Yeah these are Max renders
  • MeshMagnet
    Offline / Send Message
    MeshMagnet polycounter lvl 9
    Interesting technique.

    I have a question.

    When you bring it into ZBrush, after you Dynamesh it, are you hitting clay polish?



    Mind going into a bit more detail?
  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    I've been using the Polish slider under the Deformation tab



    The circle / asterisk to the right of the slider toggles whether the effect has hard edges, or smooth edges. For this I've been running it on the smooth setting (asterisk) first to get rid of any remaining segments on rounded parts, and then the hard setting (circle) to shore up the edges.

    Also when you send in rounded parts, like the sphere or cylinders in your screenshot there, you'll probably have to have more initial sides to avoid visual segmentation post-Dynamesh.
  • MeshMagnet
    Offline / Send Message
    MeshMagnet polycounter lvl 9
  • Amsterdam Hilton Hotel
  • MeshMagnet
    Offline / Send Message
    MeshMagnet polycounter lvl 9
    Nice, I'm assuming that's the high poly?
  • Gazu
    Offline / Send Message
    Gazu polycounter lvl 12
    Wait...i know that ProBooleans gives some really dirty results. For example a lot of unnecessary vertices which has to be cleaned up.
    So you just loaded the Messy ProBooleans Mesh in zBrush, Dynameshed it and Polished it?

    DId you cleaned the ProBoolens in Max before?
    Thanks,
    Gazu
  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    Gazu said:
    Wait...i know that ProBooleans gives some really dirty results. For example a lot of unnecessary vertices which has to be cleaned up.
    So you just loaded the Messy ProBooleans Mesh in zBrush, Dynameshed it and Polished it?

    DId you cleaned the ProBoolens in Max before?
    Thanks,
    Gazu
    ZBrush typically does a very good job importing messy geometry and Dynameshing it, I'd say a 90-95% success rate. For anything that doesn't work so well I run this macro on it in Max:
    macroScript QuickLowpolyStack
    category:"Bolton Tools"
    toolTip:"Quick Lowpoly Stack"
    (
    	if (selection.count > 0) then
    	(
    		modPanel.addModToSelection (Vol__Select ()) ui:on
    		$.modifiers[#Vol__Select].level = 1
    			
    		modPanel.addModToSelection (Vertex_Weld ()) ui:on
    		$.modifiers[#Vertex_Weld].threshold = 0.05
    			
    		modPanel.addModToSelection (Turn_to_Poly ()) ui:on
    		$.modifiers[#Turn_to_Poly].selectionConversion = 1
    		$.modifiers[#Turn_to_Poly].limitPolySize = on
    		$.modifiers[#Turn_to_Poly].keepConvex = on
    			
    		modPanel.addModToSelection (Edit_Poly ()) ui:on
    	)
    )


  • another caveman
    Offline / Send Message
    another caveman greentooth
    Nice work here!
    So what is your plan next? Are you willing to make a low mesh with baked normals? If you do, how do you plan to remove all those details/chamfers from your geometry?

    Well I guess you saved some mid-res mesh?
  • Gazu
    Offline / Send Message
    Gazu polycounter lvl 12
    Gazu said:
    Wait...i know that ProBooleans gives some really dirty results. For example a lot of unnecessary vertices which has to be cleaned up.
    So you just loaded the Messy ProBooleans Mesh in zBrush, Dynameshed it and Polished it?

    DId you cleaned the ProBoolens in Max before?
    Thanks,
    Gazu
    ZBrush typically does a very good job importing messy geometry and Dynameshing it, I'd say a 90-95% success rate. For anything that doesn't work so well I run this macro on it in Max:
    macroScript QuickLowpolyStack
    category:"Bolton Tools"
    toolTip:"Quick Lowpoly Stack"
    (
    	if (selection.count > 0) then
    	(
    		modPanel.addModToSelection (Vol__Select ()) ui:on
    		$.modifiers[#Vol__Select].level = 1
    			
    		modPanel.addModToSelection (Vertex_Weld ()) ui:on
    		$.modifiers[#Vertex_Weld].threshold = 0.05
    			
    		modPanel.addModToSelection (Turn_to_Poly ()) ui:on
    		$.modifiers[#Turn_to_Poly].selectionConversion = 1
    		$.modifiers[#Turn_to_Poly].limitPolySize = on
    		$.modifiers[#Turn_to_Poly].keepConvex = on
    			
    		modPanel.addModToSelection (Edit_Poly ()) ui:on
    	)
    )


    Thanks :)
  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    Nice work here!
    So what is your plan next? Are you willing to make a low mesh with baked normals? If you do, how do you plan to remove all those details/chamfers from your geometry?

    Well I guess you saved some mid-res mesh?
    Probooleans retain all of their individual operands as live, editable objects.



    This makes it easy to go into each operand and reduce segment counts, remove tertiary details etc. Note how this is still a Proboolean object and we haven't done anything destructive.



    Now our problem is unwelded verts, n-gons, and concave polygons. We can solve all of these problems with a simple modifier stack - Vol. Select to grab the verts, Vertex Weld to weld them, and Turn to Poly to divide our n-gons into convex quads. This is reduced to 1 click or button press with the macro script I posted above.



    This is still a live, editable Proboolean object. All the operations remain nondestructive.

    The only problem remaining is the TTP modifier produces a few awkwardly thin or long triangles, so we put an Edit Poly mod on top, which is where we'll make our final geo tweaks. If we need to revise things later, this is the only part that we will have to remove. Since it exists as a modifier we are at least preserving the underlying, procedural work.
  • Bek
    Offline / Send Message
    Bek interpolator
    Interesting stuff, and very impressive results.
    I've been using the Polish slider under the Deformation tab


    Out of curiosity is there any way to avoid completely how the smooth edges inflate outwards, causing the flat area to look slightly inset/indented? If I squint reallll hard I can kind of see this on most flat surfaces (in this screenshot, the bottom left hand corner), but it's a very minor thing. Is it just a tradeoff between more edge smoothness (higher polish value) and less indentation?
    JoshuaG said:
    Beefaroni you should check out Modo then, so that way you can edit the booleans any time you want.
    I assume you're talking about mesh fusion (since modo has no parametric stuff for nondestructive booleans) - unfortunately mesh fusion only works with subdivision surfaces, which is useless here - the whole idea being working with simple shapes and letting zbrush do the heavy lifting.



  • Fansub
    Offline / Send Message
    Fansub sublime tool
    Interesting workflow Ben !

    I've been using a similar workflow in Maya but with GoZ in Maya and a Macro that applies the Dynamesh+Polish then GoZ again.The only thing that sucks about Maya is the way everything is destructive tho.
  • cookedpeanut
    Offline / Send Message
    cookedpeanut polycounter lvl 13
    Somewhat the same method is described in this video, although they add an extra step into the workflow...
    https://youtu.be/MVHPSnBlIrU
  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    Bek said:

    Out of curiosity is there any way to avoid completely how the smooth edges inflate outwards, causing the flat area to look slightly inset/indented? If I squint reallll hard I can kind of see this on most flat surfaces (in this screenshot, the bottom left hand corner), but it's a very minor thing. Is it just a tradeoff between more edge smoothness (higher polish value) and less indentation?
    It seems unavoidable although you get it less with the closed circle / asterisk setting of Polish. Maybe there's another way to smooth everything out without getting the inflated effect.
  • 2013
    Offline / Send Message
    2013 polycounter lvl 2
    Bek said:

    Out of curiosity is there any way to avoid completely how the smooth edges inflate outwards, causing the flat area to look slightly inset/indented? If I squint reallll hard I can kind of see this on most flat surfaces (in this screenshot, the bottom left hand corner), but it's a very minor thing. Is it just a tradeoff between more edge smoothness (higher polish value) and less indentation?
    It seems unavoidable although you get it less with the closed circle / asterisk setting of Polish. Maybe there's another way to smooth everything out without getting the inflated effect.

    Hi guys,

    @Amsterdam Hilton Hotel, thank you for sharing your approach to hard surface modeling, atm I'm working on the same thing  :)
    I mean what is the best way to make HP and LP at the same time, I am also a 3ds Max user, so for sure I will try your way.

    Anyway few days ago I had the same problem with "Polish" in ZBrush, and this is my solution for polishing edges.

    Regards









  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    How straighforward is it to convert a Meshfusion object into a lowpoly?
  • BeardedMike
    Offline / Send Message
    BeardedMike polycounter lvl 7
    Very interesting! Thank you for sharing.  I was considering something similar this weekend using turbo smooth "by smoothing groups" option, and using zbrush to soften the edges.  I wonder if this would translate over, Could save a ton of time in some situations.
  • CreativeHD
    Offline / Send Message
    CreativeHD polycounter lvl 6
    This is really cool, I am going to have to try it out!
  • xXCrimsonWolfXx
    Offline / Send Message
    xXCrimsonWolfXx polycounter lvl 4
    Very, You just make it into an airtight mesh and make sure there are no holes or overlaps in the topology. However, if you want to make a low poly, you should really do so in another program, since Modo's viewport with extremely dense meshes is unbearable to create a low poly with. I might also want to add that you CAN'T simply delete edges and move a few vertices from a high poly with Mesh Fusion. You will need to either use standard boolean operations with the pieces of geometry you used to make the high poly (which will lead to a lot of cleanup since booleans are as dirty as a guerrilla's backside) or start completely from scratch with a fresh mesh. Maya's topology tools would help a lot, but not so much with making perfectly even shapes like cylinders or cubes. 
  • poopipe
    Offline / Send Message
    poopipe grand marshal polycounter
    This is the only way to make hardsurface modelling tolerable. I've been using this and similar techniques for a few years now and working any other way drives me mad..

    A couple of things I'm sure you've already tried but... 

    you'll probably find using proboolean's decimation/edge removal options can do a lot of the work your script and stack are doing but in a less destructive way. 

    you can often get away with using a chamfer modifier controlled by smoothing group assignments instead of the zbrush step if the object has a fairly consistent mesh density.  


  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    poopipe said:
    you can often get away with using a chamfer modifier controlled by smoothing group assignments instead of the zbrush step if the object has a fairly consistent mesh density. 
    I got one for that too - used to be the main way I did HP work
    macroScript QuickSubdivisionStack
    category:"Bolton Tools"
    toolTip:"Quick Subdivision Stack"
    (
        if (selection.count == 1) then
        (
            macros.run "Modifiers" "Smooth"
            $.modifiers[#Smooth].autosmooth = on
               
            macros.run "Modifiers" "ChamferMod"
            $.modifiers[#Chamfer].chamfertype = 1
            $.modifiers[#Chamfer].limiteffect = on
            $.modifiers[#Chamfer].smoothingoption = 2
            $.modifiers[#Chamfer].SmoothType = 1
            $.modifiers[#Chamfer].limiteffect = on
               
            macros.run "Modifiers" "TurboSmoothMod"
            $.modifiers[#TurboSmooth].isolineDisplay = on
            $.modifiers[#TurboSmooth].iterations = 2
        )
    )
  • xXCrimsonWolfXx
    Offline / Send Message
    xXCrimsonWolfXx polycounter lvl 4
    I also highly recommend checking out OpenSubdiv. It's pretty powerful and should be included in Max 2015
  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    Well, I've detailed a Proboolean / Dynamesh workflow for blockout through HP through LP. I would love to hear more about one based on Meshfusion or OpenSubdiv in more detail.
  • sziada
    Offline / Send Message
    sziada polycounter lvl 12
    man this is some good stuff, thanks for sharing this btw
  • tynew
    Offline / Send Message
    tynew polycounter lvl 9
    Awesome stuff, I remember s6 showing this high poly method as well in the model dem shapes thread a couple years back I think. How much control over edge width do you  have in zbrush and did you end up bridging max to zbrush with a script? I can see exporting and importing hundreds of high poly objects getting mundane, unless the entire mesh is blocked out first and done all at once.

    Also how much different is this to just using quadify mesh modifier to control edges and a turbosmooth on top? Double smooth method can be used with this if needed as well. Edit: looks like the in-max method only works for simple-moderate geo. If it's complex like Gazu's mesh below it'll turn into polygon soup.


  • MaxHoek
    Offline / Send Message
    MaxHoek polycounter lvl 10
    @Amsterdam Hilton Hotel i love the proboolean tool in max. i think its very underrated, and im still learning it how to use correctly. beacause sometimes its very picky. thanks for the little script, its very helpfull to resolve some of the problems of the tool! 

    @tynew wow! nice idea man! this is looking sooo easy, there is also no exporting needed! never thought about that. im hyped :o
  • Gazu
    Offline / Send Message
    Gazu polycounter lvl 12
    I tried it out.
    I ProBooled a quick model in Max, then i imported the model into zBrush where i turned on Dynamesh with about 2 Million Polygons.
    I used polish and clay polish to make the edges smooth and clean. I like the results but i would like it more when the results would came out cleaner
    Straight outta Max, ProBoolean Only:


    HighPoly after Polish and ClayPolish:

    Ok but not perfect:


    Would be cool when the surface would come out pretty well.
    The Surface looks a bit like a Normalmap with Compression artifacts on some spots on the model:

  • tynew
    Offline / Send Message
    tynew polycounter lvl 9
    @MaxHoek
    It's definitely not flawless with complex geometry. With the max method you'll have to know how many segments things need to be, how the modifiers/double smooth will affect them etc. The quadify mesh modifier works insanely well for simple-moderate geo and I'd say its faster than modeling finicky bits by hand. Here is a thread that was was pretty informative but this one required a collapse and cleanup: http://polycount.com/discussion/106272/perplexed-still-on-low-high-poly-manipulation/p1

    Tried your method mr Bolton and its pretty quick for results. Although I too get the same issue as Gazu with weird artifacts, I'm curious if those artifacts will bake down.


  • Gazu
    Offline / Send Message
    Gazu polycounter lvl 12
    This is from the "Polish"
    I think its not avoidable.
    You can also try ClayPolish.
  • Grumpntug
    Offline / Send Message
    Grumpntug polycounter lvl 11
    This thread has been like hard surface porn for me. Need to dump Maya for a bit and get back into Max. Thanks for sharing!
  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    tynew said:
    Also how much different is this to just using quadify mesh modifier to control edges and a turbosmooth on top? Double smooth method can be used with this if needed as well. Edit: looks like the in-max method only works for simple-moderate geo. If it's complex like Gazu's mesh below it'll turn into polygon soup.
    Dynamesh works for pretty arbitrary geometry. With Quadrify things with intersecting complex curves don't work so well. I put together this crank case this morning:



    I tried using Quadrify Mesh on that and it turned into a disaster. But something that's mostly built from rectangular solids would probably be fine using that method


    As far as the edges go, it seems like you have three ways to control that a bit
    - try different polish values / settings
    - try higher or lower dynamesh resolution
    - try changing object size in zbrush (for example, scale 0.1x on export from max, then 10x on import back to max)
  • BeardedMike
    Offline / Send Message
    BeardedMike polycounter lvl 7
    tynew said:
    Also how much different is this to just using quadify mesh modifier to control edges and a turbosmooth on top? Double smooth method can be used with this if needed as well. Edit: looks like the in-max method only works for simple-moderate geo. If it's complex like Gazu's mesh below it'll turn into polygon soup.
    Dynamesh works for pretty arbitrary geometry. With Quadrify things with intersecting complex curves don't work so well. I put together this crank case this morning:


    I tried using Quadrify Mesh on that and it turned into a disaster. But something that's mostly built from rectangular solids would probably be fine using that method


    As far as the edges go, it seems like you have three ways to control that a bit
    - try different polish values / settings
    - try higher or lower dynamesh resolution
    - try changing object size in zbrush (for example, scale 0.1x on export from max, then 10x on import back to max)
    I have a question, using this method of you have a single mesh with certain areas that need more or less tight edge radius than the rest, is there a way to control that?  Would you just apply a chamfer to those areas before exporting to zbrush?
  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    Yeah, I've been using either a subtractive mesh or a chamfer modifier for those cases.
  • Gazu
    Offline / Send Message
    Gazu polycounter lvl 12
    Looks like a Cover of an Engine! Nice ^^
    Its a really fast and cool way to design some nice shapes. At the end its about playing with different settings like polish and dynamesh resolution. The cool thing is that we dont need subdivision modeling like for modos mesh fusion.
    Dynamesh makes it :)

    Hey Ben, have you some kind of normal artifacts on your high poly model , like i have? And do you avoid that with different polish/claypolish/dynamesh resolution settings?
  • xXCrimsonWolfXx
    Offline / Send Message
    xXCrimsonWolfXx polycounter lvl 4
    I highly recommend watching these videos 

    OpenSubdiv:
    https://www.youtube.com/watch?v=QFckVSyvVy4
    https://www.youtube.com/watch?v=UQ0xF4_1jSY

    This one introduces something called CreaseSet Modifiers, which allow you to generate crease sets that allow you to change the creasing on the fly with different values and naming orders. 
    https://www.youtube.com/watch?v=1Cy3niOZ7nA
  • BeardedMike
    Offline / Send Message
    BeardedMike polycounter lvl 7
    I highly recommend watching these videos 

    OpenSubdiv:
    https://www.youtube.com/watch?v=QFckVSyvVy4
    https://www.youtube.com/watch?v=UQ0xF4_1jSY

    This one introduces something called CreaseSet Modifiers, which allow you to generate crease sets that allow you to change the creasing on the fly with different values and naming orders. 
    https://www.youtube.com/watch?v=1Cy3niOZ7nA
    Amsterdam Hilton Hotel said:
    Yeah, I've been using either a subtractive mesh or a chamfer modifier for those cases.

    Amazing thank you guys!  I'm starting my first model with this workflow tonight.
  • Mossbros
    Offline / Send Message
    Mossbros polycounter lvl 9
    I highly recommend watching these videos 

    OpenSubdiv:
    https://www.youtube.com/watch?v=QFckVSyvVy4
    https://www.youtube.com/watch?v=UQ0xF4_1jSY

    This one introduces something called CreaseSet Modifiers, which allow you to generate crease sets that allow you to change the creasing on the fly with different values and naming orders. 
    https://www.youtube.com/watch?v=1Cy3niOZ7nA

    Opensubdiv is good in theory, but in all my practice using it, it gives really bad edge transitions. As it seems to keep the edge sharp, add geometry and then transition the curve with the tangent normals not the actual surface geometry.
  • kohg
    Offline / Send Message
    kohg polycounter lvl 9
    Gazu said:
    Wait...i know that ProBooleans gives some really dirty results. For example a lot of unnecessary vertices which has to be cleaned up.
    So you just loaded the Messy ProBooleans Mesh in zBrush, Dynameshed it and Polished it?

    DId you cleaned the ProBoolens in Max before?
    Thanks,
    Gazu
    ZBrush typically does a very good job importing messy geometry and Dynameshing it, I'd say a 90-95% success rate. For anything that doesn't work so well I run this macro on it in Max:
    macroScript QuickLowpolyStack
    category:"Bolton Tools"
    toolTip:"Quick Lowpoly Stack"
    (
    	if (selection.count > 0) then
    	(
    		modPanel.addModToSelection (Vol__Select ()) ui:on
    		$.modifiers[#Vol__Select].level = 1
    			
    		modPanel.addModToSelection (Vertex_Weld ()) ui:on
    		$.modifiers[#Vertex_Weld].threshold = 0.05
    			
    		modPanel.addModToSelection (Turn_to_Poly ()) ui:on
    		$.modifiers[#Turn_to_Poly].selectionConversion = 1
    		$.modifiers[#Turn_to_Poly].limitPolySize = on
    		$.modifiers[#Turn_to_Poly].keepConvex = on
    			
    		modPanel.addModToSelection (Edit_Poly ()) ui:on
    	)
    )


    I can't really read scriptsese, but what this script does is clean any unnecessary/extra vertices in the zbrush dyameshed mesh you import into max right?
  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    It's for cleaning up raw boolean objects in max. It just adds the Vol. Select, Vertex Weld, Turn to Poly, and Edit Poly modifiers and configures them a bit. I don't do anything to the Dynameshed object except put the proOptimizer modifier on it to decimate it.
  • Amsterdam Hilton Hotel
    Offline / Send Message
    Amsterdam Hilton Hotel insane polycounter
    Gazu said:
    Hey Ben, have you some kind of normal artifacts on your high poly model , like i have? And do you avoid that with different polish/claypolish/dynamesh resolution settings?
    Yeah I have them. You can kind of minimize them with the right settings. At a certain point they won't matter once baked.
  • Pedro Amorim
    Nothing would happen
  • MisterSande
    Offline / Send Message
    MisterSande polycounter lvl 8
    some great looking results. This remind me a bit of my MODO edge round shader workflow which basically replaces the shader with the "polish" function from Zbrush. The advantage of using the shader is that your geometry is already mid- to low-poly so it would make it easier to work with.

    Its really cool seeing these alternative workflows popping up for high poly modeling. Anything that speeds up the proces and allows for more creativity to flow is awesome.

    Meshfusion just popped up as well, although it has allot of problems as of now.
1
Sign In or Register to comment.