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
The model looks sweet too!
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?
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.
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
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 ) )
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?
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.
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?
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.
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.
https://youtu.be/MVHPSnBlIrU
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
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.
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.
@tynew wow! nice idea man! this is looking sooo easy, there is also no exporting needed! never thought about that. im hyped
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:
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.
I think its not avoidable.
You can also try ClayPolish.
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)
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?
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
Amazing thank you guys! I'm starting my first model with this workflow tonight.
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.
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.