I'll be using this sketchbook thread as a place to warehouse write-ups that wouldn't really fit anywhere else. Most of the content will cover concepts and fundamentals related to hard surface modeling with some broader commentary on the creative process.
Replies
@LaurentiuN Thanks! Plan on working through a few more lighting and texturing write-ups on different assets.
@Alex_J Thanks, it was a neat project and it's cool to see it in LandNav.
@sacboi Thank you, really appreciate the support. The lighting breakdown is completed and can be viewed on the previous page.
@SnowInChina Thanks! Happy new year to you as well.
Texturing breakdown
This write-up is a brief overview of the processes used to create PBR textures for a hard surface model with subtle weathering effects. The documentation for most of the popular texture authoring tools does a good job of covering the technical side of things. So the majority of the focus here will be the decision making process that drives the artistic components of texture creation.
All that said, there is one technical thing worth mentioning: The quality of the baked input textures does tend to have an impact on the overall quality of the output textures and the texture authoring experience. Which is why it's generally advisable to identify and resolve any significant issues with the bake setup before moving forward with the texturing.
Check that the UV layout has appropriate padding and textel density. Make sure that any hard edges in the low poly model are paired with UV splits. Try to minimize UV distortion and straighten the UV islands whenever possible. Run a few test bakes then adjust the high poly and low poly models to resolve all of the major artifacts.
Try to keep things as orderly as possible. Take the time to setup a well organized material ID map. Document the baking setup and note when any unconventional shortcuts are used to meet deadlines. This way, if the work is handed off to someone else or if there's future revisions, there won't be a bunch of time wasted trying to guess, remember or reverse engineer whatever process was used to generate the input textures.
Smart materials and masks tend to rely on the input textures for information about the model's surface. So having clean bakes for the normal, ambient occlusion and curvature maps can help make the texturing process a bit easier.
Blocking out the lighting and material values is a good place to start most texturing projects. Look at the reference images and try to create several different lighting setups that match the typical environmental conditions. It's often helpful to have a dark, neutral and bright environment setup. Frequently rotate the camera and lighting setup to check the material values from different angles. This makes it easier to see how the base materials will perform under various in-game lighting conditions.
The material block out is all about establishing the base values for the diffuse, roughness and metalness channels. It's important to work through the material block out before adding any weathering overlays. This is because it tends to be a lot easier to nail the look of clean materials that haven't been obscured by additional layers of environmental build up and damage effects.
Visual identification of specific materials is usually filtered through some kind of evaluative hierarchy: shape, color, reflectivity, physical [damage] state, surface texture, etc. These sort of subtle details tend to be highly contextual and help convey information about what the underlying material is supposed to be made of. Break down complex materials into individual layers and work through the inputs for each of the texture channels.
Ask and answer questions about the physical properties of the object. Use visual cues in the reference images to answer any questions. What is it? A compass. What color is it? Green / olive drab. What's it made out of? Painted metal. What type of paint is generally used? Single stage semi gloss. What condition is it in? Slightly worn. What environmental clues are present? Sandy dust, light brown dirt and grease smudges on flat surfaces.
Additional surface details that weren't part of the high poly model can also be added during the material block out. Things like paint build up around the edges of shapes and fine micro surface textures are fairly easy to add using smart masks and triplanar texture projection. How well the chosen input values and texture overlays represent the actual materials (Metal, plastic, paint, etc.) is an important part of creating convincing textures.
Working through the material block out then adding the major wear states can make it easier to figure out exactly where to place the dirt and grime layers. There's a maxim in the scale modeling community that's something along the lines of "Well sculpted models practically paint themselves." Same sort of logic applies here. Physical surface texture and damage tends to accumulate loose environmental matter over time. So it can make sense to start with the damage layers then add the weathering on top of it.
Effective use of texture details and weathering effects will help an object have greater visual impact and can also be used as storytelling elements. Damage effects can be used to indicate whether something is broken or about to break. Visible repairs can be used to indicate how reliable something is. Dirt, grime and wear marks can be used to indicate how old something is, how much it's been used or how it should be used.
Gather additional reference images of the same object or similar objects in a variety of different wear states. Study the references and note how each type of physical material tends to have it's own unique accumulation and wear patterns. Categorize the types of damage and weathering effects, based attributes like shape or location, then come up with a rough plan for where they should appear on the model.
Smart materials and masks offer a tempting solution to try and add all of these details with just a couple of layers but the results often look overly flat or sort of muddy. Most of the time this is because there just isn't enough separation between the individual effects and it's difficult to control the granularity of how the individual details blend together. That's not to say that things can't be done efficiently. There just needs to be enough subtle difference between things to create the illusion of things building up over time.
Any damage that breaks through a coating should generally be on it's own layer. These layers can be stacked on top of each other and the width of the masks can be adjusted so it reveals subtle steps in height difference between the paint, primer and bare metal. Putting each type of unique damage effect into it's own layer not only makes it easier to adjust each element independently but it also helps simulate the built up appearance that tends to happen over time.
Start with the clean base materials. Add wear through damage that reflects how the object contacts or interacts with the environment and any moving parts. Once the primary damage pass is complete, the weathering layers can be added on top of the existing materials.
These weathering layers can be made up of wet or dry materials like: oil, grease, paint, water, dust, dirt, lint, sawdust, metal shavings, environmental particulates, etc. It can make sense to start with a subtle layer of semi-wet materials, like accumulated grease, since this will help inform where the next set of dry layers should stick to the model.
Wet material layers can also be used to suggest how other entities interact with the object and communicate their relative scale. Under harsh conditions or in the presence of certain environmental conditions there may not be any clear shape signatures like fingerprints. This is because grease and oils usually mix with environmental elements like dirt and are easily disturbed by interactions with things like cloth, plant material, plastic coverings, water immersion, heat sources, etc.
It's important to have subtle variations in the roughness values. When the object is viewed from a distance the individual materials should have a relatively uniform appearance but when viewed up close or under specific cross lighting conditions the other materials present in the weathering overlays should become more apparent.
After the first wet weathering pass is added, it makes sense to add a few broad layers of dry weathering materials. Preferably in contrasting colors, with a darker base and lighter accent layer on top. The base layer of dirt is usually wider than the accent layer. Each of these contrasting dirt layers should generally target different areas of the model to provide some visual interest but there should also be some areas where they overlap to maintain chronological continuity.
Another wet weathering pass provides some additional visual interest and should generally be a more fluid material like oil. The glossiness of this second wet layer can be moderated with another subtle dry pass and accented with clumps of dirt, lint, fragmented plant matter, etc. These final dry layers are mostly used to break up the larger patches of accumulated weathering materials and provide a visual break or bridge between the various weathering layers.
Layers of dust, dirt and other particles can be used to hint at the presence of certain environmental conditions in the game world. Multiple shades of dirt with different grain compositions can be used to suggest that the object has been to multiple geographic locations. Strongly emphasizing just one type of dirt is a good way of communicating the idea that the object has only been to one location or that it's been stored for a long period of time.
Dirt and dust tend to accumulate in corners, behind shallow ridges and on or near wet areas. Each type of material used in the dry weathering layers will tend to behave differently. Three basic shades of dust [dark, neutral and light] and a few variations of dirt particles should be enough for most basic projects.
In this example, the subtle dust layer is a darker color and it accumulates on the flatter surfaces. The heavy dust layer has a slightly brighter color and collects around the tighter corners. These contrasting dust layers blend together around transitional areas and certain flat spots that are partially cleaned by regular use. On top of this first set of dry weathering layers is another wet layer with oily smudges and some partial finger prints. This suggests that the object is used often in an outdoor environment.
A very thin layer of fine dust gets caught behind the subtle ridge of paint around the edges of the shapes. This thin layer of dust has a slightly lighter color than the heavy layer of dust and just provides some visual contrast that helps outline the shapes. It's also useful for breaking up the monotonous tones of the first dry weathering pass.
The smaller void shapes are partially filled with a crumbly looking dirt that's lighter than the rest of the dry weathering layers. This contrast helps draw attention to these areas and also suggests that it's recently been to a place that's completely different from the previous environment. A top layer with small dust speckles helps cover the areas between the dirt in the corners and the patches of dust that accumulate on the flat surfaces. This helps unify the dry weathering layers and the size of the particles also provides a scale reference.
When creating multiple assets for the same game world, it can be helpful to develop specific rules for the weathering layers so everything is fairly consistent. On this project the older layers were darker and the newer layers were brighter. There's also a visible difference in the brightness and glossiness (sharpness of the reflections) on the different wet layers. Which helps suggest the age of the materials, since the more volatile components have evaporated off with passing time.
It's also important to test the combined weathering passes under various lighting conditions to make sure everything will behave correctly in-engine. This will help ensure that everything has a cohesive look and that none of the individual layers have material vales or texture patterns that break the immersion. Most of the subtle micro texture variations in the normal and roughness channels should be barely visible under regular conditions. Only under the right lighting, when the camera or environment lights hit at glancing angles, should some of these details become visible.
Diffuse colors that are relatively close together can make it difficult to spot some of the finer details. As the lighting rolls across the surface it will pick up on the different values in the normal and roughness channels. Which can help enhance or suppress the visibility of certain details. This can be used to create a layered look where only certain weathering elements will be visible at any given time. Which can help harmonize the different layers so they blend together in a cohesive way that doesn't appear too stylized or artificially flattened.
Under more diffuse lighting conditions, where everything is evenly lit, the differences in the roughness values should be fairly subtle. Equipment that looks like it's been dragged to hell and back is it's own aesthetic category but reality is often a bit more muted. Especially when it comes to precision instruments or something that needs to be properly maintained so it will function reliably. The weathering cues should match the game world's back story and the wear level should match the age of the object and it's intended use. Just because they're storytelling elements doesn't mean they are the entire story.
Previous lighting breakdown: https://polycount.com/discussion/comment/2764276/#Comment_2764276
Amazing breakdown man, your modeling/baking/texturing is top notch!
Fantastic breakdown. Now that's "paying close attention to detail."
@LaurentiuN Thanks! Usually find that texturing isn't as fun as modeling but having clean bakes does make it a lot more enjoyable.
@Alex_J Thank you. Always trying to push quality and efficiency. Ironically some of the write ups take longer than the production work.
Currently working through a very brief overview of the modeling, unwrapping and baking for this project. After that the intent is to work through posting the back log of modeling write-ups from mentoring and some other thoughts about texturing and game art in general.
Thank you so much!!! Your article and cases helped me a lot, wish you a happy life!
Modeling breakdown
This write-up is a summary of the different modeling processes and the reasons they were used to create specific parts of the models. The amount of planning and research required varies based on the complexity of the project. Creating a rough outline of the intended workflow can help evaluate how technical constraints may affect the individual processes. Thinking about how the asset will be used in-game, along with the art style and technical constraints, will help determine how accurate the model and textures need to be.
Objectives for this project are relatively straightforward: Since the asset will be used in a simulation the model and textures will need to look fairly realistic. It will also fill the screen when the player is reading the dial and sighting landmarks but the model and textures will need to be optimized to fit within allotted resource footprint. The ideal poly budget is between 10,000-12,000 triangles with a maximum of two materials. One set of textures for transparent materials and the other for opaque materials. Dimensional accuracy is also important because the linear graduation marks on the side of the base can be used to measure distance on in-game maps.
The accuracy of a model's details tends to be limited by the quality of the reference material. Physical access, scan data and detailed drawings are ideal reference sources for real objects. These types of references can be measured directly and that makes it a lot easier to establish real world scale. Which helps create a model with accurate proportions. Photographs and illustrations can also be used as references but require a bit more effort to use effectively. Collect, compare, cross check and cull the reference images until there's a set that accurately represents the subject.
Reference images of key angles (Top, front, side, etc.) can be aligned and overlapped to create a reference sheet. The object's overall dimensions can then be used to estimate the size of key features on the reference sheet. Following the reference sheet while also using these dimensions and incremental snapping (In real world units.) should produce a model that's built close to scale with fairly accurate proportions.
Obscure topics tend to be more difficult to research but there's usually a lot of usable reference material for most objects. It's often helpful to start the search with broad terms then refine the keywords as the terminology used to describe the components becomes more familiar. Collector or enthusiast communities can be great resources for reference material and specialized information. Locating useful reference sources just takes a bit of effort and persistent searching.
A few quick tests with primitive shapes can be used to evaluate the optimal number of segments for the low poly model and verify the dimensional accuracy of key features. Small scale samples like this can be used to identify potential issues, isolate specific variables and test different solutions. The simplicity of these test models also makes it a lot easier to resolve proportion and topology issues with the major forms, without having to invest a significant amount of time.
The initial block out just establishes the overall scale and proportions of the basic shapes. These shapes are then used as a base for the detailed block out. Individual features are added to the model in a series of iterative detail passes. Boolean operations are used to join the individual mesh components and modifiers are used to generate precise curves, bevels and copies of repetitive shapes. This helps keep the individual mesh components fairly simple. Which makes it a lot easier to make major changes without having to manually re-work large sections of the model.
Both halves of the model were blocked out at the same time. It's just easier to show progress on each half separately.
The first couple of detail passes are focused solely on blocking out the larger components. Smaller details will be added in subsequent passes. Deciding which details get added to a specific stage of the block out comes down to two basic factors: context and consistency. Context means looking at decisions in relative terms that relate to things like scale, in-game usage, workflow, etc. Consistency means looking at the overall goals for the project and previous decisions then applying the same logic in a uniform way.
E.g. adding all of the text to the base mesh would easily push the model beyond the resource budget for the low poly but adding the linear gradation marks may be necessary to increase the accuracy of the map readings. Especially for users with lower end systems that can't display textures at full resolution. This is where using modifiers to generate certain features provides a lot of flexibility that hedges future change requests.
Updating complex details or toggling them on and off with the modifier stack means that both the high poly and low poly models can be generated from the same base mesh. Which can help streamline a lot of the high poly to low poly workflow and allows for a more pragmatic approach towards high poly modeling. This block out strategy is generally compatible with both subdivision modeling and boolean re-meshing workflows.
E.g. there's a lot of text and repetitive surface details on the larger components and it's easier to run those parts through a boolean re-meshing and polishing workflow in ZBrush. The rest of the smaller components are fairly simple shapes. So, it makes more sense to use a subdivision modeling workflow with a mix of floating and solid geometry to create those parts.
It's also important to keep things organized. Logical and consistent naming conventions will make it easier to locate files. Notes with the settings used for different modeling operations, like the various re-meshing and polishing steps, will make it easier to update the model after making changes. General process notes will also be helpful for handing off project files or when revising a project that needs adjustments 6-12 months down the road.
Below is a visual outline of the basic workflow for this asset and a brief description of the modeling techniques used during each stage of the process.
Certain parts of this workflow could have been simplified further. Mainly the high poly re-meshing and polishing but trading a small increase in speed just isn't worth the reduced flexibility. The primary advantage of this workflow is only having to build the base mesh once and being able to use that one mesh to generate both the high poly and low poly model. Which makes it a lot easier to push any last minute changes through without having to do a lot of re-work.
Low poly optimization is pretty straightforward: turn off the modifiers used to generate the edge and surface details. Setup the mesh smoothing groups then unwrap and pack the UVs. Adjust the split placement and re-pack as needed to maximize the quality. Run several test bakes before accepting a layout.
Hard edges [edge splits] are placed to control the smoothing behavior on the low poly. If the mesh shading and normal bakes look good then it's generally acceptable to have larger smoothing groups and some gradation in the normal map. Each new UV island increases the amount of texture space lost to padding. So, unnecessary hard edges effectively reduce the overall textel density of a model.
UV splits can be placed at the same time to back the hard edges and control the UV unwrap. Hiding splits and seams along the natural breaks in the shapes can help reduce the visibility of any minor artifacts that may appear along the split edges. It may also be necessary to adjust the scale of the UV islands, based on their distance from the players camera, to optimize the textel density for the mesh's size on screen and visibility. The goal here is to use an appropriate number of seams, placed in a way that balances straightening the UVs with minimizing any noticeable distortion and limiting the total number of UV islands.
In the end, adding the linear graduation marks and lettering with texture masks would have simplified the high poly process. The base model could have just been left blank and used to create a subdivision high poly where the edge loops are generated with a bevel / chamfer modifier. Once again, the tradeoff in time saved just wasn't worth the headache of solving potential accuracy issues with the linear graduation marks and this would have also made it extremely difficult to pivot to a fully modeled low poly if the project required it.
Alternately: a full sculpt pass could have been done on the high poly model but much of the damage was fairly shallow. So it made more sense to just paint the texture masks and use the height values to generate the changes in the normal maps. This also made it easier to gradually reveal the different layers in the materials and turn specific types of damage on or off based on the different wear states. Much faster than manually sculpting these details.
Some additional write-ups on related topics:
Block outs and incremental progression.
https://polycount.com/discussion/comment/2751240/#Comment_2751240
Mesh complexity and shape accuracy
https://polycount.com/discussion/comment/2751340/#Comment_2751340
Isolating variables and iterating to solve complex problems.
https://polycount.com/discussion/comment/2760744/#Comment_2760744
Per usual, knocked my socks off 😀
Agree with Sacboi, you are just *bows down*
@RRRabbit Thanks for the comment! Glad the write-ups were helpful.
@sacboi Thanks! It was a bit shorter and took longer than expected but happy to hear it was on par with the previous write-ups.
@wirrexx Thank you, really appreciate your support and contributions to the how do I model this thread.
Upcoming content: Next few posts will be a mix of visual process breakdowns for hard surface shapes, along with some additional thoughts on other art processes.
frankpolygon is a higher being, we can just sit back and admire his work.
Subdivision sketch: turbocharger compressor housing.
This write-up is a brief process overview that shows how segment matching, during the initial block out, can make blending complex shapes together a lot easier. The order of operations and choice of modeling tools may be different for each shape but the important thing is to try and match the geometry of the intersecting meshes. Getting everything to line up is mostly about creating curved surfaces with a consistent number of edge loops that are shared between the adjacent shapes. Solving these types of topology flow issues early on in the modeling process is one of the keys to efficient subdivision modeling.
For this example, it made the most sense to start with the largest shape first, because it was the most complex. Since curves can be used to generate procedural geometry, it's a fairly straightforward process to adjust the density of the circular cross section, number of segments along the path and taper the end of the spiral. This flattened helical shape was created by splitting a Bézier circle, extruding one side and adjusting the curve's geometry settings.
The center of the housing was created by outlining the shape's profile then using a modifier to sweep it the same number of segments as the adjacent shape.
Details like the outlet flange can also be sketched flat then extruded and rounded over with modifiers.
Smaller surface details are added towards the end of the block out. Since the base shapes are still procedural geometry, it's fairly easy to adjust the number of segments in the larger shapes so all of the circular bosses are supported by adjacent geometry.
Once the block out is completed the shapes can be merged with boolean operations. Any stray geometry can be removed or blended into the existing shapes with operations like limited dissolve, merge by distance, snap merge, etc. It may also be necessary to make room for the support loops by moving some of the vertices along the surface of the shapes. However, most of the topology flow issues should resolve cleanly because of the segment matching.
After the base mesh is completed, a chamfer modifier can be used to generate the support loops around the edges that define the shapes. (Highlighted in the example below.) Using a modifier to add the support loops isn't strictly necessary but it helps preserve the simplicity of the base mesh. Which makes it a lot easier to adjust the shapes and sharpness of the edges when the subdivision preview is applied.
Below is what the final base mesh looks like, along with a couple of mesh previews with the chamfer and subdivision modifiers active.
While it is possible to manually create these shapes and try to plan out all of the segment counts ahead of time, using procedural geometry generated by curves and modifiers makes the process a lot easier. It's also important to try and solve most of the topology flow issues at the lowest level possible. This will help prevent a lot of unnecessary work whenever the mesh density has to be increased to support smaller details.
Another thing to keep in mind is that efficient subdivision modeling is often about making tradeoffs that compliment the model's intended use. The important thing is to try and balance accuracy and efficiency. In the context of high poly modeling for game assets, segment matching doesn't always have to be perfect. More often then not, close enough will be good enough.
Recap:
Evaluate the shapes in the references and figure out which part constrains the rest of the nearby surfaces. Establish the block out using a reasonable amount of geometry. Match the number of segments in the intersecting geometry to the adjacent shapes. Try to maintain consistent distribution of edge loops along curved surfaces. Rely on specific tools and modifiers that can generate accurate geometry to make things easier. Solve major topology issues before subdividing and adding smaller details.
Thank you for another awesome write-up, Frank. So informative, and it's really great to be reminded to use modifiers and procedural geometry as much as possible to make the work easier. Thanks for that! You inspire me to do some more hard-surface modelling. Soon as my bad monster-sculpt is finished xD
@KebabEmperor Thanks for the kind words. Just comes down to making a lot of sample models and sharing the results.
@tatertots Thank you and you're welcome! Glad to hear that these posts encourage artists to continue exploring subdivision hard surface modeling.
Subdivision block out: stamped dust cover.
This is a quick look at how multiple bevel / chamfer modifiers can be used to generate relatively complex shape intersections from a simple block out. Basic modeling operations are used to create the rough block out and leaving the mesh a quad grid makes it a lot easier to visualize different topology routing options.
All of the extraneous geometry is then cleaned up with a limited dissolve operation. While this isn't strictly necessary, it does improve the visual cleanliness of the mesh. If the final base mesh is going straight through to a subdivision modeling workflow then it probably makes sense to just leave the quad grid in place.
Each set of curved features has it's own bevel modifier that's controlled by separate vertex groups. This means that changing the shape profile or number of segments in each curved surface is easy as going into the modifier panel and adjusting the settings. Since the geometry generated by these modifiers remains editable, it's possible to adjust the density of the mesh throughout the entire block out stage. Which makes it a lot easier to do segment matching as shapes are added or revised.
After blocking out the basic proportions and primary shapes, rounded edges can be added with another bevel modifier. Edge weights are used to control both the placement and width of the rounded edges. Adjusting the smoothness of the shapes is easy as changing the number of segments generated by the bevel modifier. Which makes it really easy to preview low poly optimizations.
Once the appropriate level of mesh density is established, any stray geometry can generally be removed with either weld or planar decimation modifiers and the rest of the n-gons in the mesh can be filled with a triangulation modifier. Parts of the mesh that are larger or closer to player's camera will tend to need slightly more geometry than shapes that are smaller or further away. In certain situations it may also make sense to do some final manual cleanup with edge dissolve operations.
The same sort of approach can be used to generate a high poly from the block out but the base mesh can be a lot simpler, since that makes it a lot easier to solve any topology flow issues and the subdivision modifier will smooth out the entire surface of the mesh. Constrained cut and join through operations can be a quick way to organize any trouble spots in the base mesh's topology flow and final support loops can generally be added with another bevel modifier.
Subdivision sketch: radial selector switch.
This write-up is a brief overview of how resolving topology issues, before moving on to the next level of mesh complexity, can help make subdivision modeling processes a lot easier to manage.
It often makes sense to start the block out by establishing the larger shapes and curved surfaces but it's also important to include any complex shape intersections, that could constrain the nearby geometry, when planing out the order of operations and topology flow. Basic modeling operations like [constrained] extrude, inset and bevel / chamfer can be used to generate accurate angles and curves that preserve the underlying edge structure.
Surface shapes, especially along curved areas, can be defined by adding loop cuts that follow the existing topology flow. Constrained cut operations can also be used to slice through the existing geometry. This is an easy way to connect nearby loops in a way that defines the straight edges of the surface features. Extraneous edge loops generated by these operations can be left in place to preserve the shapes for additional modeling operations but it is important to remove left over geometry as soon as it's no longer needed. After outlining the surface shapes, connect and dissolve operations can be a quick way to organize edge loops along a surface.
Extruding edges into existing shapes sometimes requires cutting holes in the surface of the mesh. Bridge and fill operations can be a quick way to close these holes but mismatched edge segments can leave behind triangles and n-gons. Both can be left in to make additional modeling operations easier or when they have minimal impact on surface quality.
If it's necessary to resolve the mesh as all quads, it can make sense to work through adding secondary shape details that can be used to even out the segment count of adjacent loops. Focus on creating accurate shapes first then adjust the number of segments in secondary details, to resolve the topology flow issues at the lowest possible level, before complicating the mesh by adding lots of support loops.
After the major surface features are established, it should be fairly straightforward to continue adding smaller details. Keeping the edge flow relatively tidy after adding each shape and breaking the mesh up into tileable sections will also make it a lot easier to add the final support loops.
Boolean operations and other modifiers can be used to speed up the block out process but the same fundamental principles of subdivision modeling still apply. The increased flexibility of these tools makes it a lot easier to adjust each shape independently and experiment with different segment counts to find complimentary geometry. Without having to rely on lucky guesses or having to manually rework the same shape multiple times.
In this example: the basic profile is created from a flat outline and a modifier is used to sweep it around the central axis of the shape. Another modifier is used to generate the outer round over. The curves of the subtractive boolean object are also created with modifiers. This setup makes it incredibly easy to adjust the number of segments in the features of the primary shape.
Once all of the segments in the shapes are roughly aligned the modifiers can be applied and the mesh can be cleaned up with a merge by distance operation. Multiple mirror modifiers make it possible to split the base mesh into the smallest possible tiling segment. Which makes it a lot easier to work on the topology routing. Additional edge loops are cut in to provide structure and resolve the mesh to quads then the support loops are added around the shapes using a bevel / chamfer modifier. So adjusting the softness of the edges is easy as changing the modifier's settings.
Final surface details can be added using grid fill, proportional editing and basic inset operations.
Frank As I am getting more custom to Blender, would you mind if you have the time, to show the second process with a video. One of the thing I found i have a hard time with blender, is trying to match segments. This due to Blender breaking the ability to adjust segments when an item have been moved.
That's why you use modifiers like Screw, Bevel and Radial Array. Modifiers are non-destructive, you can adjust values anytime you want and it makes trying & failing easier.
With experience, you will get to know how many segments you need for details depending on their scale, visibility, etc.
that's not the issue for me, I come from 3ds max bg. Adjusting a primitive when rotating and moving is very easy. In Blender I have to use modifiers that need to be on the right axis from the get go to actually make that work. Rotating them makes them change shape sometimes, and that is something I am not used to.
@wirrexx Currently putting together a brief video of the modifier based process and will follow up by posting it here.
Most of the modifiers in Blender inherit a transform orientation that's based on the object's stored rotation. Managing this, along with object origin points, does add another layer of complexity but also provides flexibility in how things can be setup. Transforms in object mode can be stored and reset but the same operations in edit mode cannot, since they are directly changing the mesh. So, it's often helpful to keep the object's transforms zeroed out to match the global values. Depending on the follow up questions this topic could become it's own write-up or video.
really apprecaite you going over and beyond for me! Thank you once again for taking care of the community.
"Most of the modifiers in Blender inherit a transform orientation that's based on the object's stored rotation. Managing this, along with object origin points, does add another layer of complexity but also provides flexibility in how things can be setup. Transforms in object mode can be stored and reset but the same operations in edit mode cannot, since they are directly changing the mesh. So, it's often helpful to keep the object's transforms zeroed out to match the global values. Depending on the follow up questions this topic could become it's own write-up or video."
Indeed succinctly put, had struggled with this very issue for some time when first starting out so similarly curious in your approach.
@wirrexx
"really apprecaite you going over and beyond for me! Thank you once again for taking care of the community."
+1
@wirrexx @sacboi Below is a link to the video showing the boolean block out process described in the write-up.
This is just one example, there's other ways to use the same tools to accomplish similar results. When to apply the modifiers really comes down to how the model will be used and whether or not there's a possibility of revisions. Generally a good idea to save a copy of the working files before applying the modifiers and moving on to the next stage in the modeling process. Just comes down to finding an order of operations that works best for the individual artist and the project.
@FrankPolygon yeah i dont lurk here.. just happened to turn the webpage on! :D Thank you
ok just watched it. MIND F***ING BLOWING! thank you
Very nice video, thanks 👍️
@FrankPolygon
Awesome, appreciate the time and effort spent on describing your workflow with that accompanying vid which I think clarifies quite nicely reasoning behind each operation in more detail when utilizing a non destructive subd workflow. Certainly in my humble opinion a efficient time performant process that I'll look further into potentially applying for an upcoming personal project - thanks again for sharing.
I wish I'd spotted something like this thread long ago. This could be used as a modelling book lol. Awesome works. 😯
@wirrexx Not a problem. There's definitely some things Blender handles differently. Good to hear the video was helpful in visualizing the process.
@Fabi_G Glad you liked it. Appreciate the support!
@sacboi Thanks! There's so many interesting workflows for hard surface modeling now but it does seem like there's a significant efficiency bonus that comes from being able to do a lot of the work in a single application. It's also nice to have a process that's structured around creating a base model with features and surfaces that can be adjusted quickly. This kind of flexibility makes it a lot easier to send the model out to the more specialized applications when it's required.
@RocketAlex Thank you. The Polycount community has a long running modeling thread that's definitely worth checking out.
Awesome video, Frank! So good to actually see the process with the modifiers, that you're using to sub-d model efficiently. It's one thing to know you should use modifiers, but another to actually see them being applied in a workflow and seeing how you can actually use them to their fullest.
If you're taking requests for videos, I've been pretty stumped trying to figure out how to do pic 5 and 6 of the pistol in this post.
https://polycount.com/discussion/comment/2731641/#Comment_2731641
This is awesome education!
I have a question, regarding the :
Modeling process 2 (≈ 3-5 individual operations.)
How do I fill the gap of these uneven edge loops?
A 'Fill' command doesn't work.
Thanks!
@tatertots Thanks! Appreciate hearing how the video was helpful. Figuring out when it makes sense to use modifiers, instead of directly editing the mesh, is definitely one of the challenges to incorporating them into an existing modeling workflow.
@Oreazt Sketching shape profiles with flat primitives is something that will be covered in at least one upcoming write-up and that will probably get it's own video as well. Depending on how long it takes to make that content, I will look at making a shorter video covering the process used in that previous example and tag you when the video is available.
@itaibachar Thank you. The exact process for creating faces between edges and closing non-manifold shapes varies based on the application. When using Blender there's a few different operations that can be used. Each behaves differently so it may be necessary to only select half of the edges for the tool to recognize the open area of the shapes.
Additional documentation for these types of tools can be found in the manual:
https://docs.blender.org/manual/en/latest/modeling/meshes/editing/face/fill.html
https://docs.blender.org/manual/en/latest/modeling/meshes/editing/vertex/make_face_edge.html
https://docs.blender.org/manual/en/latest/modeling/meshes/editing/edge/bridge_edge_loops.html
https://docs.blender.org/manual/en/latest/modeling/meshes/editing/face/grid_fill.html
Thank you for taking the time to reply and explain so much!
I actually work in Maya, but trying to learn the concepts as you show them.
Cheers!
itai
It ain't pretty but, in Maya, so far as I know, this may be the best way with the least fuss, to fill it; connect the inside cylinder to the outside with one polygon using the Append to polygon tool; then you can use fill hole to fill in the rest. Then you can delete the one extra edge you'll be left with.
It's possible there's a better way, but opening Maya up to take a look, this is the first way that came to me as a long-time Maya user.
Thats a good idea!
Thanks Andrew,
Cheers.
Subdivision sketches: miscellaneous cylinder topology.
These are a few examples of simple topology layouts that use segment matching to resolve shape intersections on curved surfaces. Only the key loop paths are shown, to simplify the presentation, and the n-gons could be resolved to all quad geometry using grid fill or manual loop cuts. Most of these shapes can be created with basic modeling operations. So this post is just a test for smaller pieces of content that don't require a lot of explanation. The next couple of posts will be the usual long form write-ups.
Angled cylindrical boss intersecting both flat and curved surfaces.
Toroidal section with intersecting cylinder.
Chamfered cylinder with rounded boss.
Hey Frank, just want to say your topology is always an inspiration. If I'm ever stuck on how something should flow, I am certain to find the answers in your posts!
In your last example, I actually had an similar case with the angled cylindrical boss intersecting flat and curved surfaces last year for a project, this one just had a few more extruding cylinders on the top. Looking at your topology though I see where I may have been able to improve the edge flows of each cylinder. Based on the reference, because this was a real-world object, I did end up filling in more of the top with tris because I couldn't quite make each top cylinder perfectly flow to each other and just time limitations. The project has shipped but it doesn't hurt to touch up previous work for practice and portfolio.
If you had to model this, how might you approach making the main glass body? I had started with polygons but after making the main connections I just wasn't retaining the smooth bevel of the main cylinder body, so I ended up building more of my intersecting cylinders and their connection bevels with nurbs surfaces and converting to polygons. It was kind of round a bout and not ideal workflow, but ended up working for the production.