Home Digital Sketchbooks
The BRAWL² Tournament Challenge has been announced!

It starts May 12, and ends Oct 17. Let's see what you got!

https://polycount.com/discussion/237047/the-brawl²-tournament

Sketchbook: Frank Polygon

13

Replies

  • HAWK12HT
    Offline / Send Message
    HAWK12HT polycounter lvl 13

    and ensure the smoothing behavior remains consistent.

    @FrankPolygon thank you for such detail write up on baking.

    Quick question, what do you mean by above line smoothing behavior remains consistent? as in 1 smoothing group for full model or split groups on hard edges followed by UV split ?

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    @HAWK12HT Thanks! Good question.

    Low poly smoothing is a term that's kind of ambiguous but it generally means the overall shading of the model. In this context it would include meshes with and without hard edges, provided there's some soft shading.

    It's important to triangulate the low poly before exporting because uncontrolled changes to the mesh can generate different types of normal artifacts. Checking the model in different applications, like Toolbag, Substance Painter, Unity, Unreal, Etc., helps eliminate potential baking issues by verifying the shading behavior is consistent and things like custom normals, smoothing splits, triangulation, etc. were exported / imported properly.

    So, a better choice of words might have been: Triangulate the low poly before exporting to ensure the shading behavior remains consistent.

    @bewsii Reply was delayed but really appreciate your comment. Thanks for sharing your experience! Always good to evaluate different workflows and adapt elements that fit new goals.

  • orangesky
    Offline / Send Message
    orangesky polycounter lvl 5

    @FrankPolygon, thank you so much for this series of posts, it's great to see this amount of detailed breakdowns when it comes to doing this type of modeling.

    I'm enjoying like a little kid reading each of your updates and I love to see how you solve each of the modeling challenges in a smart way. It's quite a vice reading you. 

    Now, I understand that modeling with booleans and N-Gons subdivision can work fabulously on baking models for video games, but would it be possible and acceptable to use this workflow for Pixar film productions? 

    Do you think that submitting a portfolio detailing this workflow could be a problem if the company reviewing my work is used to the classic quad-only workflow?

    I would like to hear your opinion about this and also the opinion of other modelers more talented than me.

    Thank you very much for your attention, I am adapting my workflow following your modeling advice at the moment for my personal project.

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    @orangesky Thanks for the comment. Glad the write-ups have been enjoyable and informative.

    The short answer is: it depends. Context is really important because, even from a broad perspective, there's some significant differences between organic and hard surface modeling. While there's definitely some overlap in the fundamentals of subdivision modeling, these two broad fields are still completely different disciplines. Each with specific sub-focuses that require somewhat unique skill sets. What's acceptable in one instance may not be ideal for another.

    It's the same sort of situation when it comes to 3D modeling for different types of media. E.g. animation, game, VFX, and visualization projects all tend to have specific technical requirements. The various studios that specialize in each of these fields will generally have their own preferred workflow(s) and best practices. Which are sometimes made public through articles, discussions, documentation, interviews, presentations, etc.

    Information that references sources with firsthand experience is probably more accurate than personal opinion. As an example: use cases for triangles and n-gons are discussed in documentation for OpenSubdiv and booleans are also mentioned in other user docs and articles about artists that have worked on feature length animations at the company in question.

    In general though, most technical elements are relatively easy to measure. That's probably why it's tempting to try distilling creative processes down into a set of fixed rules. While this sort of approach can work well enough when just learning the basics. It also tends to restrict problem solving by oversimplifying things and optimizing for binary decision making. Which generally produces less than optimal results when dealing complex problems over a longer period of time and contributes to the perpetuation of technical dogma.

    Just in game art alone, the relatively short evolutionary period of the design tools has already seen several inflection points where established workflows have changed suddenly and artists that were unwilling to at least entertain the idea of doing things differently were completely left behind.

    The switch to PBR texturing workflows and the subsequent rise of dedicated texturing applications is one fairly recent example. Another, which is adjacent to the earlier shift towards sculpting organics, is the rapid evolution of the boolean re-meshing workflow that's now seeing 3D DCC's being replaced with CAD applications. Parametric modeling is accurate and relatively fast. Two things that, arguably, old school, grid based subdivision modeling is not.

    These kinds of rapid paradigm shifts are often focused on moving to processes that offer significant improvements in efficiency and visual fidelity. Something that a lot of the older workflows just can't compete against. That's not to say that elements of these older workflows aren't still relevant. It's just that the weaknesses now outweigh the strengths. Traditional subdivision modeling is no exception to this. Especially when it comes to hard surface content.

    Booleans, modifiers and n-gons speed up different parts of the modeling process but it's important to remember that they're just intermediate steps and aren't the entire workflow. When combined with effective block outs and segment matching strategies, the n-gons in a base mesh can be resolved to all quads if required. So all quad geometry isn't necessarily exclusive to slower, traditional modeling methods like box, point inflation, edge extrusion or strip modeling.

    OhNoNgons.gif

    The takeaway from all this is that the technical elements should be chosen to serve the creative elements that further the story. Not the reverse. Part of improving as an artist is learning to work within resource constraints to creatively solve aesthetic and communication problems while maintaining a cohesive narrative. Which admittedly does require technical understanding. It's just that understanding has to be tempered with other creative skills that might be neglected during these types of discussions.

    Sometimes it's helpful to look at the technical elements of a workflow with a more pragmatic lens. Focusing less on tradition and more on comparing the cost of the inputs [time, emotional capital, etc.] to the value generated. Exploring different workflows also provides some needed contrast that helps identify weaknesses in current workflows. It's that sort of iteration and reflection that moves things forwards.

    Polycount's career and education section is also a great resource for learning about what's expected from artists working in a specific field and is probably a better venue for discussing building a portfolio to land an animation, VFX or film job. Definitely worth the time to read through the advice offered there by other experienced artists that have worked on similar projects.

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: hemispherical intersections.

    This is a quick look at how segment matching can be used to create a clean intersection between the shapes that are commonly found on the ball fence of side by side break actions. Many antiques and some current production examples use the same hand shaping processes. So it's not uncommon to find references with minor shape inconsistencies or blended surfaces that have very gradual transitions. Which means close enough is good enough for most models.

    Segment matching is a fundamental element of most subdivision modeling workflows. Using primitives with an arbitrary number of segments can be a convenient way to start the block out but also tends to produce geometry that makes it difficult to route the loop flow around the base of the shape intersection. Matching the number of segments in the intersecting shapes helps provide a relatively consistent path for the adjacent edge loops. Which not only improves the flow path for the support loops around the base of the intersection but also makes it easier to join the shapes without generating undesired surface deformation.

    Start with a simple block out of all the major shapes. Adjust the number of segments in the round over and the sphere to roughly align the edges around the base of the shape intersection. Use a boolean operation to join the shapes then clean up any stray geometry by merging it down into the vertices of the underlying surfaces.

    Slice across the surface of the sphere to re-route the loop flow and resolve the mesh to all quads by dissolving any left over edges. Depending on the size and position of the sphere and round over, it may be necessary to adjust the position of the corner vertex that turns the loop flow up and around the sphere. The edges that define the shape intersection then become the loop path for the support loops. Which can be added with a bevel / chamfer operation or modifier.

    Example_SUBD_BallFence_1.jpg

    The same approach also works with wider round overs and shallower curves. Simply adjust the amount of geometry so the edges of the shapes align roughly where the surfaces overlap. Use enough geometry to accurately represent the shapes at the desired view distance. Balancing geometry density with editablity.

    Example_SUBD_BallFence_2.jpg

    Quad spheres can also be used with a segment matching strategy but the arbitrary number of segments in the quad sphere means most of the adjustment will need to be done on the shape with the round over. Which tends to make optimizing the sphere side of the intersection a bit more challenging. In some of these cases it's necessary to dissolve the extraneous edges and slide the remaining loop along the surface to form the desired shape.

    Example_SUBD_BallFence_3.jpg

    Recap: Block out the basic shapes and adjust the number of segments in each until the overlapping edges are roughly aligned. This will generally make it easier to clean up boolean operations and provide a clean path, for the support loops, around the shape intersection.

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: studying shapes and simplifying subdivision.

    This write-up is a brief overview of a simple, shape based approach to subdivision modeling. This approach, with the primary focus being to create accurate shapes that define the loop flow paths, can help streamline the modeling process for most hard surface objects.

    Working without enough information to visually interpret the shapes tends to add unnecessary frustration. So, start the modeling process by researching and gathering different references. Which can include things like background information, images, measurements, videos, etc. These references should be used as a guide for modeling real world objects and as a baseline for evaluating the form and function of design concepts.

    Look at the references and think about how the object is made and how it's used. This will provide additional context that ties the real world details from the reference images to the creative narrative used to guide the development the artwork. Something that also helps inform decision making during the modeling process and provides inspiration for developing the visual storytelling elements that carry through to the texturing process.

    Analyze the shapes in the concepts and references. Identify the key surface features and observe how they interact with each other. Establish the overall scale of the object then figure out the proportions between the different shapes that make up the surfaces. Use this information to come up with an order of operations for blocking out the basic shapes. If necessary: draw out the basic primitives that make up the object. Highlight flat areas, curved areas and the transitions between them.

    Example_Bevel_Curve_0.jpg

    Most topology flow issues can be solved during the block out. Which is why it's generally considered best practice to: Use the edges of the existing geometry as support for shape intersections whenever possible. Use the minimum amount of geometry required to create reasonably accurate shapes. Use a segment matching strategy to maintain uniform edge spacing when joining curved shapes.

    Example_Bevel_Curve_1.jpg

    Develop the block out in stages. Keep things relatively simple for the first few iterations of the block out. Larger shapes should generally be defined first, while also keeping the smaller details in mind. Focus on creating shapes that are accurate to the references then solve the major topology flow issues before adding the support loops. Overall mesh complexity can also be reduced by modeling individual components of the object separately.

    Example_Bevel_Curve_2.jpg

    Let the shapes define the loop flow. Some features may have curvature that influences or restricts the loop flow of adjacent surfaces. Block out those shapes first then adjust the number of segments in the adjacent surfaces to roughly match the edges where the two shapes intersect. Any significant difference between the edges of intersecting shapes can usually be averaged out between the support loops.

    Example_Bevel_Curve_3.jpg

    With this iterative approach to blocking out the shapes then solving the topology flow issues, the edges that define the borders of the shapes become the loop paths. Which means most of the support loops can be added by simply selecting those defining edges and using a bevel / chamfer operation to add the outside loops. Alternately, loop cuts and inset operations can also be used when the support loops are only needed on one side of the edges that define the shapes.

    Example_Bevel_Curve_4.jpg

    This shape based loop routing strategy tends to require little manual cleanup and can be mostly automated using modifiers. Something that helps make hard surface subdivision modeling much more approachable. The examples in this write-up show how this basic workflow can be applied to a moderately complex, plastic injection molded part which has a mix of soft, lofted shape transitions and hard seam lines. Which are commonly found on a variety of different hard surface objects. So, the same sort of approach will generally work with most hard surface modeling workflows.

    Recap: Analyze the shapes in the concepts and references. Develop the block out in stages. Let the shapes define the loop flow. Match the segments of intersecting shapes. Use the existing geometry to guide the loop paths. Solve topology issues early on then add the support loops.

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: hand guard.

    This is a follow up to the previous post about shape analysis. It's just a quick look at applying the iterative block out process to larger plastic components. Which are often part of other hard surface objects.

    Identifying how the basic shapes are connected is a fundamental part of subdivision modeling. So, gather a lot of good reference material. Analyze the references to figure out what the shapes are then come up with a plan for connecting those shapes.

    Work through the block out process in stages. Keep things relatively simple early on and focus on creating accurate shapes before adding surface details. This will make it a lot easier to maintain a higher level of surface quality during subsequent modeling operations.

    Example_SUBD_AK_Guard_1.jpg

    Approach the modeling process with specific goals but also be willing to adjust the order of operations based on the actual results. Rather than sticking with preconceived ideas. Focus on getting the shapes right and rely on tools or modifiers to generate curves, complex shape intersections, fillets, roundovers, etc.

    Example_SUBD_AK_Guard_2.jpg

    There's often significant overlap in the poly modeling fundamentals used to develop block outs for both re-meshing and subdivision workflows. Three fundamental concepts that make subdivision modeling more approachable are: use a reasonable amount of geometry in the shapes, adjust the number of segments in the intersecting shapes so they roughly match each other and use the existing geometry as support for shape transitions.

    Example_SUBD_AK_Guard_3.jpg

    Most hard surface game art props aren't required to deform. Which opens up a lot of possibilities for using simplified topology on high poly surfaces that are flat or otherwise well supported. This makes it a lot easier to streamline the modeling process by reducing mesh complexity with workflow elements like booleans, modifiers and n-gons. Something that's still relevant in contemporary re-meshing workflows.

    Example_SUBD_AK_Guard_4.jpg

    In this example: the basic shapes are mostly generated by boolean operations and all of the small support loops are generated by a simple bevel / chamfer modifier. Which means it's possible to adjust the width and profile of the edge highlights by changing the values in the modifier controls. These modifier based support loops are also used to replicate the parting lines. Where the splits in the mold, used to manufacture the real part, generate visible interruptions in the shape transitions.

    Example_SUBD_AK_Guard_5.jpg

    Recap: It's very easy to over focus on the technical aspects of different workflows but one of the core elements of hard surface modeling is being able to recognize and recreate the shapes that make up an object. Regardless of the modeling workflow, using an iterative block out strategy makes it easier to create accurate shape profiles and solve problems sequentially. Without becoming encumbered by minor surface details and managing complex technical elements, that often aren't relevant during the early part of the modeling process.

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: cylinder release.

    This is a quick overview of an iterative block out process, combined with a boolean and modifier based subdivision workflow.

    A significant part of hard surface modeling is figuring out the shapes in the references then generating an accurate block out. Booleans and modifiers help streamline a lot of basic modeling tasks. They also make it easier to adjust individual surface features, without having to remodel large sections of the mesh. Which reduces the amount of work required to make significant revisions to the basic shapes. There's also the added benefit of using the final block out as a base mesh for generating both the high poly and low poly models. Something that's still relevant to contemporary poly re-meshing workflows.


    Example_SUBD_Animation.gif


    In the example above: The curved surfaces are generated by bevel / chamfer modifiers and surface features, like the spherical knurling pattern, are cut in with booleans. Everything in the block out remains editable through the modifier stack. First pass cleanup of the base mesh is handled by modifiers that dissolve extraneous edges by angle and weld any stray vertices by distance. Support loops for the high poly are automatically generated by a simple angle based bevel / chamfer modifier and the width parameter can be adjusted to make the edge highlights sharper or softer.

    Recap: Using an iterative block out process makes it easier to focus on resolving issues with the individual shapes of an object and is a workflow element that's relevant to almost all hard surface modeling workflows. There's also a significant amount of overlap in the poly modeling skills used to develop the block out, base mesh, high poly and low poly models. Which are still relevant to both boolean re-meshing and subdivision workflows. It's these overlapping skills that are worth developing and the associated workflow processes that are worth streamlining.

  • chien
    Offline / Send Message
    chien polycounter lvl 14

    @FrankPolygon thank you for sharing, i will also try apply in my workflow, can i ask if you also make your own maxscript to improve your workflow?

  • danielrobnik
    Offline / Send Message
    danielrobnik polycounter lvl 9

    Thanks Frank, I'm always blown away by how you do things and it's great to be able to learn from it! Also, I love the way you present it all, it must take a while to get all the pics set up just right.

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    @chien Appreciate the comment. Writing custom scripts can be useful for solving specific workflow problems but most of the major 3D DCCs already have a variety of third party solutions that cover common modeling tasks. So, it often makes more sense to look for existing solutions before investing a lot of time, especially when there's a dedicated scripting community.

    @danielrobnik Thanks! Great to hear the write-ups are informative. Producing consistent documentation is a significant time investment but saving the working files often and setting up presentation templates does help streamline the process. Testing the different workflows and summarizing the results is probably the most time consuming part.

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: cylinder details and radial tiling.

    This write-up looks at matching a cylinder's segment count to radially tiled details. While there are different ways to approach adding these details, the focus here is less about specific modeling operations and more about planning during the block out stage.

    Gathering reference material is part of this planning process. Dimensional references, like CAD data, GD&T prints, scans, photogrammetry, etc., are often ideal reference sources but aren't always available. High quality images [photo or video] are an alternate reference source that can also be used to identify detailed features. Different camera angles and lighting setups are often helpful for figuring out how all of the shapes blend together. Near orthographic views are also helpful for establishing the overall scale and proportion.

    Analyzing the shapes in the references usually provides some insight about the minimum number of segments required to accurately block out the basic shapes. Start the shape analysis by identifying the primary forms then look for the smallest details on those forms that need to be accurately modeled. The relative size of these smaller details often constraints the adjacent geometry in a way that's a significant factor in determining how many segments are required in the larger forms.

    Some details are too small to be reasonably integrated into the base mesh. Depending on the visual quality goals, smaller surface details can be added with floating geometry or with texture overlays in the height or normal channels. Figuring out what to simplify on the high poly and low poly models is generally going to be based on artistic elements like style, prominence, typical view distance and other technical constraints like poly count, texture size, texel density, etc.

    Below is a visual example of this type of shape analysis: Overall, the primary form is a basic cylinder with some radially tiling details. The smallest detail on the outside wall of the cylinder is the stop notch. Which means it's the constraining feature for the segment spacing of the primary form. The stop notches and other details, like the flutes, chambers and ratchet slots, are grouped together and repeat radially at regular intervals. Each detail appears five times. So, the total number of segments in the larger cylinder will need to be divisible by five. That way the larger form can be simplified into a single, tileable section.

    Example_Refs_OrderOfOperations.jpg

    There's a few different ways to come up with ratios that describe radially tiling features. Using an image to measure the features and comparing the size difference is relatively straightforward but doesn't account for the full distance along the curvature of the surfaces. Inserting a cylinder primitive over a background image then adjusting the number of segments until they line up with all of the shapes and are divisible by the total number of unique features is another option. However, this approach can be time consuming if the 3D application doesn't support parametric primitives.

    With radially tiling features, it's also possible to use the total number of unique elements to develop some basic ratios. These basic ratios can then be used to determine the minimum number of segments required to create the repeating patterns. Which makes it possible to quickly calculate a few different options for the total segment count needed to block out the larger forms.

    As shown below, a simple mesh can be helpful for visualizing the relationship between the radial features. The cylinder in the reference image has five flutes and five empty spaces between the flutes. If the width of the flutes and empty space is the same then it's a simple 1:1 ratio and the minimum segment count is 5+5. If the flutes are half the width of the empty spaces then the ratio is 1:2 and the minimum segment count is 5+10. If the flutes are only 25% smaller than the empty spaces then the ratio is 3:4 and the minimum segment count is 15 + 20. Etc.

    Example_SUBD_RevolverCylinder_0A.jpg

    Multiples of this ratio can then be used to adjust the total number of segments in the primary form to support the constraining features. Using the previous example, where the flutes are 25% smaller than the empty spaces, if the shape of each flute requires six radial edge segments then the total number of segments in the larger cylindrical form is 70 or 30+40.

    To produce an evenly distributed segment count, that's divisible by the number of unique radial features, it's sometimes necessary to round the ratio to the nearest whole number. E.g. Multiplying the base ratio of 3:4 by 1.5 is 4.5:6 or 22.5 + 30 which needs to be rounded to 5:6 or 25 + 30 to match the flute geometry and be evenly divisible by 5.

    Math isn't a hard requirement for most modeling tasks. Intuition gained through practice is often good enough. It's just that math makes it easier to evaluate certain technical questions, like "How much geometry is required to accurately represent these shapes?", without having to model the object several times to find an answer.

    Example_SUBD_RevolverCylinder_0B.jpg

    Blocking out the shapes with an arbitrary number of segments then adjusting the mesh to line up the edges is a fairly straightforward approach that doesn't require using a lot of math. The tradeoff is that trying to match the segments using trial and error relies heavily on intuition, iteration and luck. Which often means either reworking large portions of the mesh or compromising on quality around complex shape intersections. Especially when using only basic poly modeling operations.

    This is where the flexibility of an iterative block out process, that uses a parametric primitive and modifier based modeling workflow, has a significant advantage. With this sort of workflow the mesh density can be adjusted non-destructively. Which makes aligning the segments of each shape fairly straightforward. Just change the input numbers on the shape or modifier that controls an individual feature and the updated segment count is pushed through the modifier stack. Without requiring any manual mesh editing operations.

    Whether using destructive or non-destructive modeling, dividing the object into tileable sections can reduce the amount of work required. Which makes quickly testing different segment count and topology strategies a lot easier. Below is an example of what this iterative block out process could look like. Using a non-linear, non-destructive modeling workflow that leverages booleans, modifiers and parametric primitives.

    Example_SUBD_RevolverCylinder_1.jpg

    Deciding how much geometry to use really comes down to how accurate the shapes need to be. For these shapes the minimum viable segment count is pretty close to the original estimate of 35 segments. While the subdivided mesh looks fine from most angles there are some subtle deformations around the stop notch. Likely caused by all of the geometry bunching up in that area and disrupting the segment spacing between the edges that make up the larger shape.

    Some of these issues can be resolved by simplifying the geometry but this also tends to soften some of the sharper corners. While it is possible to compensate for a lot of these artifacts by manually deforming the geometry of the base mesh, this can reduce the overall accuracy and quality of the surface. In some situations it may make sense to use shrink-wrap modifiers to project the mesh onto a clean surface but this approach does come with certain limitations.

    Something with this level of surface quality might be fine for a third person prop or background element but wouldn't be acceptable for most AAA FPS items. This is why it often makes sense to do some quick tests with just the constraining features and decide what level of surface quality is appropriate for a given view distance and time budget.

    Example_SUBD_RevolverCylinder_2.jpg

    Sometimes it makes sense to try and use the existing geometry as support loops and other times it's more effective to generate the support loops on top of the existing geometry.

    In the example above, offsetting the stop notch from the existing edges in the cylinder provides a set of outer support loops but using a bevel / chamfer modifier to automatically generate a set of tighter support loops around the shapes is part of what's causing the geometry to bunch up and deform the curve. Manually placing support loops on the inside of those shapes would solve a few more of the smoothing artifacts but would also reduce the sharpness of the shape transitions. Which could work if softer edge highlights were acceptable.

    However, it's much more time efficient to rely on the support loops being automatically generated via a modifier. In this case it makes more sense to place the shapes and support loops directly on the existing edges of the primary form. Increasing the segment count by a multiple of 1.5 then rounding up to the next whole number that's divisible by 5 produces much cleaner results.

    Example_SUBD_RevolverCylinder_3.jpg

    When it comes to subdivision modeling, there's often a tendency to over complicate the mesh. Mostly due to skipping over parts of the block out process or arbitrarily increasing the mesh density to avoid using booleans and modifiers. Sometimes this sort of decision making is rooted in the limitations of the 3D application's tool set and other times it's based on technical dogma or popular misconceptions.

    It's very easy to get bogged down trying to perfect a lot of the technical elements.

    Mainly because they're easily measurable and aiming for specific numbers or a quad grid mesh can be really satisfying. What's important to remember though is that most players won't ever see the high poly model. Much less care about what the wire-frame looks like. So, it's much more important to focus on the artistic and effort/cost components of the modeling process and less on chasing technical minutia.

    Example_SUBD_RevolverCylinder_4.jpg

    There's also some important tradeoffs that are worth considering. If a surface is going to have a lot of high frequency normal details added later in the workflow, like rust, pitting, dents or other surface defects, then the actual surface quality of the high poly model probably doesn't need to be absolutely perfect.

    Of course that sort of pragmatic outlook isn't an excuse for creating meshes with visible shading artifacts. It's more about having the permission to explore workflow elements that save time and effort while producing usable results.

    There are also easier ways to create some of these patterns. Like modeling the details flat and deforming them into a cylinder but there will be certain situations where that is unworkable or causes other issues. So the overall goal here was to look more at the planning process for complex shapes tiled along curves.

    To recap: the planning process really starts with finding good reference material and building an understanding of the shapes that make up the object. From this shape analysis it's possible to come up with some basic ratios that can be used to derive the minimum amount of geometry required to represent the shapes on a cylinder.

    Working through an iterative block out process makes it a lot easier to resolve major shape and topology issues before investing a lot of time into any specific part of the mesh. Sometimes it's necessary to make compromises on the accuracy of the shapes and the surface quality but it's still possible to generate usable results quickly. Streamlining the modeling process and using parametric primitives or modifiers to control the different shapes will make it a lot easier to experiment with different density and topology strategies.

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: hand grip.

    This is a quick overview of an iterative block out process that uses subdivision to generate soft[er] hard surface shapes.

    An over complicated base mesh, often caused by rushing through the block out process, can make it difficult to generate clean shape transitions and smooth surfaces. Which is why it's generally considered best practice to: Focus on defining the larger forms before adding details. Develop both the shapes and topology flow together. Keep the base mesh relatively simple, until the larger shapes are accurate, then apply subdivision as required. Continue refining the surfaces and adding smaller details in stages.

    Example_SUBD_RevolverGrip_1.jpg

    Adding small surface details too early in the block out can cause extreme changes in mesh density. Which can be difficult to manage when modeling everything as a single mesh. Wait to add these types of details later in the modeling process. To simplify the mesh further, consider using floating geometry or textures to add these types of small surface details. Hide any potential seams around floating geometry by using the natural breaks between individual parts and other decorative surface features.

    Example_SUBD_RevolverGrip_2.jpg

    One major drawback of subdivision modeling is that it's often difficult to manage extreme density shifts across a mesh with a lot of compound curves. This grip is an example of something that's relatively quick and easy to block out but can become an absolute nightmare to edit, if trying to manually add all of the details to a single, watertight mesh.

    Example_SUBD_RevolverGrip_3.jpg

    Which demonstrates is why it's important to develop the larger shapes first then work through adding all of the details in stages. While also using different modeling and texturing techniques to streamline the workflow.

  • sacboi
    Offline / Send Message
    sacboi godlike master sticky

    That hand-guard (foregrip) is nuts, oh well guess alot more practice to get my bool operands to look as good or even behave : /

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    @sacboi It definitely has an interesting combination of linear and curved features that produce some challenging shape intersections.

    Every application is a bit different but a few things that can cause boolean solvers to fail are non-manifold geometry, overlapping co-planar edges or faces and un-welded vertices. Sometimes these types of issues can be resolved by simply changing the order of the boolean operations but persistent issues with the boolean meshes often need to be cleaned up with weld or decimate [by face angle] modifiers.

    There's a lot of different ways to approach developing and combining the shapes. Below is a quick animated breakdown of the process used in the previous example. Most of the external features are generated by modifiers. The internal features could have also been done with booleans and modifiers but the loop cuts and insets were a bit quicker. Individual boolean objects and destructive edits are highlighted in the animation.

    Example_SUBD_AKGuardBool_Animation.gif

    Non-destructive workflow elements like booleans, modifiers and parametric primitives make adjusting the density or shape of key features fairly quick and easy. This type of workflow also helps avoid having to manually re-model large sections of the mesh when creating the in-game low poly and high poly base mesh. Something that's relevant to poly modeling for both traditional subdivision modeling and re-meshing + polishing workflows.

    Example_SUBD_AKGuardDensity_Animation.gif

    Subdivision modeling can also be streamlined quite a bit with a boolean and modifier based workflow. All of the minor support loops in this example are generated by a bevel / chamfer modifier. Which means the edge width or sharpness of the subdivided model can be adjusted at any time by simply changing the values in the modifier's settings panel.

    Example_SUBD_AKGuardLoops_A_Animation.gif

    Recap: Traditional subdivision modeling techniques do have some significant drawbacks, like the steep learning curve and counterintuitive smoothing behavior, but more contemporary workflow elements make results like this a lot more achievable. For those who prefer re-meshing + polishing workflows, the same shape focused approach to block outs and boolean + modifier workflow elements can help streamline a lot of different poly modeling processes.

  • sacboi
    Offline / Send Message
    sacboi godlike master sticky

    Very cool, appreciate the additional info :)

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: manifold block.

    This is another animated overview of a boolean and modifier based subdivision workflow. It covers the modeling process from block out to final high poly.

    Basic forms are generated using primitives and modifiers. Matching the segments around shape intersections reduces the amount of manual cleanup required. Triangles and n-gons are constrained to flat surfaces to prevent visible smoothing artifacts. Additional loop paths are established with basic cut and join through operations. Final support loops are generated with an edge weighted bevel / chamfer modifier. The base mesh can be easily resolved to all quads if required.

    Example_SUBD_Manifold_Animation.gif

    It's a simple part but still demonstrates how a shape first approach reduces unnecessary complexity and makes it easier to create hard surface subdivision models. With modifiers, the shape and density of most features will remain flexible until the loop flow is finalized. The same base mesh can also be used to create low poly models or be pushed through a re-meshing and polishing workflow to avoid traditional subdivision all together.

    Below is a comparison of the subdivision high poly model and a couple of low poly bakes. Both low poly models were generated, from the high poly base mesh, by adjusting the modifiers that control segment density on the indvidual features then unwrapping the UVs by face angle. Any destructive edits were done towards the end of the low poly optimization pass. This streamlined workflow makes it a lot easier to iterate surface features and mesh density, without having to manually re-model large sections of the mesh.

    Example_SUBD_Manifold_Bakes.jpg

    Recap: Avoid wasting time trying to perfect minor technical elements before the fundamentals are fully developed.

    Methodically work through the iterative phases of the modeling process. Focus on creating accurate shapes first then adjust the number of segments in the features and adjust the topology flow. Test variations of the low poly mesh and optimize anything that doesn't contribute to the visual quality of the surface or clarity of the silhouette. Place hard edges and UV seams at the same time. Optimize for consistent shading behavior while using the minimum number of mesh splits. Use UV checkers and test bakes to validate the unwrap and pack before committing to a specific UV layout.

    Be willing to go back and adjust the mesh when issues are identified. It's a lot easier to fix problems with the models before low poly optimization and texturing. Continually evaluate the model from the player's point of view. Use resources efficiently and try to achieve the best possible results with the time available for each stage of the development process.

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Material study: model tank road wheel.

    This is a quick overview of a recent material study for real-time vehicle models. The primary goal was to create a simple PBR texture, using a visual style that blends a few detail cues from reference images with some stylized painting techniques for weathering scale models. An additional technical goal was to use directional tiling overlays with the bakes (ambient occlusion, cavity, curvature, etc.) to reduce the amount of manual painting required.

    Material blockout: Start simple. Establish the base values without damage, wear and weathering effects. Regularly check the materials under different lighting conditions and compare the results to the reference images. Use subtle variations in base color [diffuse] and roughness [gloss] values to help differentiate individual materials.

    Below is what the material block out looked like for this study. Values for raw surfaces like bare metal and rubber were established first. Followed by matte red oxide primer and semi gloss dark yellow. The mask between the two paint layers is just a tiling overlay applied to the model with tri-planar projection.

    This camouflage scheme is a stylized interpretation of an allegedly ahistoric late war factory pattern. Which had patches of red primer left exposed to save paint and speed up production. Evidence for this pattern is mostly anecdotal but the contrast provides some visual interest over the usual solid red or solid yellow that's often depicted in exhibits and on scale models.



    Wear masks: Sometimes basic edge masks are too uniform. Use [tiling] overlays (chipped paint, random scratches, etc.) to add some visual interest and break up the shapes in the masks. Carefully select damage overlays that match the wear patterns in the reference images. Adjust the contrast, intensity, projection, rotation, and scale of the overlays to fit the visual narrative of the components.

    Here's what the combined masks and damage overlays look like for the wear pass. Small circles were manually painted over areas that would be worn down by fastener rotation during field maintenance. An edge mask was used to reveal the base materials in areas that would damaged by regular contact with the environment and tools. E.g. The rim of the steel road wheel would be exposed to abrasive material like dirt, gravel, large rocks, etc. Corners of fasteners and protruding parts of the hub assembly would contact repair equipment.

    These basic wear masks were then refined with texture overlays. Contact damage tends to accumulate along exposed edges and produces wear patterns with sharp borders around large chips in the coating. Recessed surfaces tend to be better protected from impact damage but can trap abrasive material that creates softer and smaller scratches over a wide area.


    Wear pass: Use damage effects like edge wear, surface scratches and paint chips to build a narrative by exposing the underlying material layers. Compliment these damage effects with surface defects like cracks, dents, slashes, etc. Add subtle color variations to indicate fading, oxidation, and staining.

    Here's what the progression looks like for the wear pass. A subtle overlay lightened the color values in areas faded by exposure to the sun. Chipped edges and scratched surfaces were used to create points of visual interest, without overpowering the narrative. Surface cracks and dents were added to the normal channel to provide some contrasting wear patterns.

    The wear pass provides a great opportunity to create interesting details but it's also important to avoid over wearing the surfaces. Since these wheels are supposed to be fairly new, it's unlikely that freshly exposed metal would have heavy rust or that the fresh paint would be flaking off. Surface damage on the rubber material is mostly tears, caused by rocks in the tracks, but there's also some subtle cracking that hints at the substandard quality of late war production.



    Weathering masks: Environmental particulates like dust, dry soil, wet mud, etc. tend to accumulate in different patterns. Select unique texture overlays for each weathering layer. Match these overlays to the patterns in the reference images. Use different masking inputs to control where the overlays appear.

    Here's what a few of the individual weathering masks look like. Inverse AO was used to mask off paint that was faded by the sun. AO and direction were combined with a dust overlay to create a mask for the dry dirt. The same setup was reused with different overlays to create separate masks for each of the mud layers.

    Some of these overlays were a mix of wipe and spatter patterns. Which are visually similar to dry and wet brushing techniques for painting scale models. Keeping the scale and direction of these details in line with what's in the reference images helps blend the more stylized elements with the rest of the overlays.



    Weathering pass: Avoid trying to do too much with too few layers. Build up the weathering effects in stages. Use materials with different color and roughness values to generate some subtle visual contrast. It's often helpful to have separate materials with light, medium and dark earth tones.

    Here's what the basic weathering progression looks like. A light colored dry sand material was added first. Followed by a medium brown mud material. Then a darker oil material was added on top of the previous layers. These weathering details are just a base for additional detailing.

    Since the base weathering textures aren't dynamic, it's important to balance out the placement of larger details in a way that prevents odd patterns from appearing when the wheels rotate in game. The streak of grease leaking from the hub is one exception to this but it's relatively thin and in the same orientation as the stripes on the camouflage pattern. If it becomes an issue then the overlay used to generate it can be toggled off.



    Wash masks: Additional visual contrast can be created by highlighting recessed surface details with darker or lighter weathering materials. Use several complimentary masking inputs to outline the larger shapes and add a couple of overlays to break up the outline.

    Here's what the combined mask and overlay inputs look like for the liquid weathering layer. Surface details were outlined by combining AO and curvature masks. A grunge overlay was used to create some variation in the outline and drip overlays were used to add directional streaks.

    In this material study the dark oily liquid is supposed to represent a combination of spilled engine oil and grease leaking from the cap on the wheel hub. The thin outline on the inside of the rim is where the oil has soaked into the dried mud and the drips are where it's been flung out by the rotation of the road wheel.  Dark washes work well for outlining fine surface details on scale models but it's easy to push it too far when replicating this on game assets. Use this effect sparingly and try to keep the outlines fairly thin or relatively subtle.



    Environment pass: Use additional layers of dry dirt and wet mud to build up different weathering states that match the environment. Combine similar earth materials to create a subtle contrast between light and dark color variations and matte and shiny roughness values. The illusion of depth can be built up between the layers by adjusting the height and normal values of each material.

    Here's what the different environmental states look like. The first layer is just a thicker dry earth. Followed by wet earth and mud. The previous oil layer is on top of the two dirt layers but below the mud layer. Height values between the layers were increased proportionally with the amount of mud.

    Weathering a model so it looks like it fits in the environment is something that takes time and patience. Though there are some exceptions, the earth tones of a specific area tend to be fairly consistent. Use different types of earth materials to create subtle contrast. Adjust the color values of each environmental layer to build a narrative about where the vehicle has been.



    Note: The material study was just a quick test to get a rough feel for what it would take to use this sort of workflow for a complete vehicle. A full production texture set would likely require additional hand painting. This model is also a place holder and some of the smaller details may be a bit anachronistic. The primary goal of this sort of material study is to try new things out and get to a minimum viable product while streamlining the authoring process.



    Recap: Establish the base material values first then build up the wear and weathering layers individually. Check the materials against reference images and under different lighting conditions. Use subtle variations in the base color and roughness values to differentiate each material. Combine different mask inputs and overlays to create unique patterns that fit the style and references.


  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: placing intersecting cylinders on existing edges.

    Sometimes the size of an intersecting cylinder causes its circumference to fall directly on top of an existing edge. One way to resolve this is to adjust the number of segments in the intersecting cylinder until they are aligned with the existing edges of the other shape.

    There generally isn't a hard requirement for the cage mesh of a subdivision cylinder to have a segment count that's evenly divisible by 4. Use whatever segment count provides the best match with the underlying geometry. As long as the spacing is relatively consistent, it's also fine to have cylinders with different rotational orientations or an odd number of segments.

    Avoid deforming the edges or vertices that make up the walls of either cylinder. Use the space between the intersecting shape and the outer support loop around to connect the two shapes without causing unintended surface deformation. Merge or dissolve any stray geometry back into the nearest vertices that are in line with the existing geometry.

    There's a few different ways to structure the order of operations for routing the topology around the shape intersection. Below is just one example of what this process could look like.

    Start by adjusting the number of segments in the intersecting cylinder to align with the edges in the larger cylinder. Join the shapes with a boolean operation then select the edges around the base of the shape intersection and chamfer them. This might look messy but all of the new geometry is coplanar with the existing faces. Clean up any stray geometry with snap vertex merge and edge dissolve operations. Cut in perpendicular edge loops to support the rest of the shape intersection.



    Here's what the final topology routing looks like when subdivided. It's possible to achieve similar results with projection and manual loop cutting but that still requires clean up and increases the possibility of introducing unintended shape deformation.



    The same segment matching and topology routing strategy also works with multiple cylinder intersections, where each circumference lands on or close to an existing edge in the larger cylinder. In the example below the largest intersecting cylinder is that same diameter as the base cylinder so there's no need to adjust the segment counts on that one.




    Recap: Match the segments of intersecting cylinders. Adjust the segment count so the overlapping edges are parallel. Use the space between the base of the intersection and the outer support loop to make up for any difference between the smaller and larger shapes.

    Additional resources on cylinder and cone intersections:
    https://polycount.com/discussion/comment/2772692/#Comment_2772692
  • Frigus
    Offline / Send Message
    Frigus polycounter lvl 8
    Your modelling skills are in top tier. This topic is like mine of information. Thanks for sharing.
  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: cylinder with chamfered slot.

    This is a quick look at using segment matching to create complex cutouts in cylindrical shapes and a comparison of the cleanup required for different modeling operations.

    The basic modeling process, as shown below, is relatively straightforward. Align the segments by adjusting the density of the curved surfaces then run a boolean operation and inset or chamfer the features. Dissolve or snap merge left over geometry into the vertices that define the basic shapes. Cut in additional support loops to resolve the base mesh to all quads.


    Cleaning up the mesh after the boolean operation does simplify the following modeling operations but can also cause accuracy issues or unintended shape deformation. Whether or not this an issue often depends on the shape and the tool. Here the effect is quite subtle because the inset tool generates the smaller inner profile from the larger outer profile. Which effectively constrains the new shape to a smaller area where minor differences are less noticeable.



    Below is what the rest of the modeling process could look like. Create additional features like  end chamfers and a through hole with basic modeling operations. There should be minimal cleanup on the inside of the bore since the segments are already matched on the outside of the shape. Add support loops by running a bevel / chamfer operation on the edges that define the shapes .


    Here's what the final mesh topology and subdivision previews look like.



    There's a lot of different ways to structure the order of operations for adding the chamfer to the slot on the cylinder. The middle column of the following examples shows just how much difference there is between the inside and outside profiles created by each modeling operation.

    Creating the outside profile then insetting to generate the chamfer produces fairly accurate shapes but requires some clean up. Removing geometry left over by the boolean operation then insetting does reduce some of the clean up but can also reduce the accuracy of the interior profile.


    Creating the inner profile then insetting to generate the outer profile creates all of the chamfers at once but requires a lot more clean up and tends to produce some minor variance in the profile of the chamfer. With this particular shape, cleaning up the geometry then running the inset operation will likely cause deformation of the chamfer profile or disrupt the segment spacing of the cylinder.


    Creating the inner profile then beveling / chamfering does generate the desired chamfer profile but also requires some clean up. Removing the left over geometry before running the bevel / chamfer operation does simplify things. Though it also tends to either change the profile of the chamfer or deform the cylinder.



    Recap: When creating polygonal or subdivision models, there are some shapes that just require extra clean up work. The modeling workflow can be streamlined by approximating some of the features but it's also important to balance tradeoffs between accuracy and efficiency. Align the segments of the intersecting shapes then use modeling operations that produce the desired shapes with minimal clean up.
  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: slide release.

    This is another brief look at using an iterative block out process and modifier based subdivision workflow.

    Study the reference images and figure out how the shapes fit together. Establish the rough proportions then come up with an order of operations for developing each important detail. Keep things relatively simple. Focus on accurately representing the shapes and use segment matching to reduce the amount of clean up required. Let the defining edges of the shapes guide the topology flow.




    A lot of hard surface work is just variations of the same basic modeling operations. There's a certain repetition to it. Each individual part is different in it's own way but it's also similar. All the individual parts tend to have a shared uniformity that brings the whole piece together. It all comes down to seeing how the basic shapes interact with each other to form the surface features.
  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    To anyone just starting out in game art.

    Learning a game asset creation pipeline requires commitment and repetition. It can be tempting to rush through projects but it's important to remember that it's often less about how fast the work is done and more about what is learned along the way. Actively participating in the learning process is an essential part of growing as an artist.

    Active learning is a mix of gathering new information, discussing things with other artists, and working through different parts of a process to understand how things are generally done. While gathering new information is an important part of learning, it's the practice, personal reflection, and asking for outside feedback that really helps boost skill growth.

    There's a number of different learning styles and formal education or mentorship can be a great way to learn from other artists but there really isn't a shortcut around putting in the work. Which is why leveling up game art skills really just comes down to lots of mindful practice by working through a series of specific goals. Part of this learning process is evaluating past work and finding areas that need improvement. Which often means being willing to go back and try several different approaches to see which works best in a specific situation.


    Skill development tends to progress in stages. Fundamental knowledge quickly develops into a basic understanding but there are plateaus where experience or knowledge gaps make it difficult to solve unfamiliar challenges.

    Progress can be slow during this period and it's important to keep moving forward. Try different approaches and figure out what moves things closer to the desired outcome. With enough effort, feedback, and practice this will generally result in a breakthrough moment where skills increase rapidly as a path forward is discovered.

    This process of incremental improvement is more or less continuous: styles change, technology changes, workflows change, etc. There's always one more challenge, one more project, one more skill to level up. What's important is to keep learning. To advance along a path and grow as an artist.

    There will also be periods where related skills are at different levels. When the next step in a process relies on one of these under developed skills it will slow progress down. Which can be very frustrating when the source of the skill gap isn't obvious. This is why it's important to regularly think about what elements of the workflow can be improved and whether or not there other skills required to reach the desired goal.

    While it's not strictly necessary, some game artists do find it helpful to learn about or practice related art skills. Such as traditional drawing, painting, photography, etc. All of these require working with color, composition, and proportion in different ways. Which can help bring a fresh approach to understanding forms and solving similar problems in game art.

    As an example: Though 3D modeling is a highly technical process, most art fundamentals (Like analytical observation, pattern recognition, and problem solving.) are shared across most creative disciplines. If identifying shapes in reference images is difficult then it can be helpful to practice analyzing shapes by outlining key surface transitions to gain a better understanding of how everything is connected. So, practicing those other traditional art skills can help level up game art skills indirectly.

    Going through the various stages of the emotional cycle of change is a part of almost every project and learning experience. When progress is slow or things become difficult, it can be helpful to remember this chart and continue moving forward past the low points.

    Managing these feelings is it's own skill set and it's often easier to get through this part of the learning process with the support of a dedicated community or other artists that are moving towards similar goals and sharing similar experiences. Just be careful to guard against letting external emotional trauma or preconceptions dictate a path before things even get started. Continue to show up, sharpen skills and take new opportunities as they come.

    There's a number of dedicated game art discords but that experience isn't for everyone. So, it can be helpful to seek out experienced artists on other platforms. Like the career and education section here on Polycount.

    Recap: When learning the fundamentals of game art, it can be really helpful to pick a series of smaller projects that provide a unique set of challenges but are also easy enough to complete in a couple of days or a couple of weeks. Invest a few of hours per day on these projects, stick with it, find a supportive community of artists, regularly ask for feedback on the various stages of each project, be willing to implement changes based on relevant feedback, consistently finish projects and share the results on a professional platform.

    Keep everything in perspective. Success isn't guaranteed but it's often much closer than it appears.

    Sources: the concepts depicted in these graphs aren't new, they have been presented by others numerous times and similar images make the rounds on different pages. So, it's difficult to pin down exactly who came up with some of the presentation formats. The written component of this post is a revised message, based largely on personal experience, to another artist.

  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: seams on softgoods.

    This is a quick look at blocking out linear details on softgoods, before sculpting the surface details.

    Use basic subdivision modeling strategies to block out the larger shapes then place key edge loops around the seams on the fabric shell. Shrink down the middle support loops to create depth along the seams. Undulations and macro fold details can also be created by generating subtle height differences in the shell geometry.



    Randomly select and move some of the vertices away from the surface of the shell to create a subtle height difference. This can be done either manually with randomized selections and scaling operations or with a displacement modifier. Triangulating the base mesh, before subdividing, creates additional edges that change the localized smoothing behavior and that's what helps generate these larger surface wrinkles.

    All of these operations are done at subdivision level 0 and using modifiers to control the localized displacement of select vertices and the triangulation order makes it really easy to quickly change stuff. It's also not that difficult to set up since most of it is just throwing a modifier into the stack and adjusting the parameters.


    Localized differences in surface height controls where the wrinkles appear but the triangulation method used controls the orientation, scale, and frequency of the wrinkles themselves. The difference can be subtle but there is a difference in the smoothing stress created by each triangulation method.

    This effect can be controlled non-destructively with modifiers. Different triangulation methods produce different stress patterns for the wrinkles. It's a really cheap, quick, and easy way to generate undulations and macro wrinkles on certain types of softgood shapes.



    It's not perfect but it's very fast and completely reversible since the surface displacement and triangulation can be controlled with modifiers. Subdivision resolves the mesh to all quads so it's pretty much ready for sculpting the fine details. The rest of the sculpting work can be done either in zBrush or Blender using the cloth sim brushes that inflate, stretch, and manipulate the folds on the high poly sculpt.

    Alternately, just use Marvelous to model and simulate textile shells. It's a fairly straightforward application with a lot of documentation and learning a little bit about sewing also goes a long way towards figuring out how all the pieces of fabric shells are stitched together on real products.

    Some additional examples of similar soft hard surface shapes:
    https://polycount.com/discussion/comment/2771257/#Comment_2771257
    https://polycount.com/discussion/comment/2774300/#Comment_2774300
  • sacboi
    Offline / Send Message
    sacboi godlike master sticky
    You must also be a mind reader :#
    I've been testing 'simplified' methods to create detailed ammo pouches - load bearing harness - backpacks...etc, without resorting too using dedicated cloth apps like MD, so thanks very much for your insight.
  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: softer, hard softgoods.

    This is an animated overview of a subdivision modeling process for softgoods.

    Complex hard surface modeling projects often have smaller softgood components that are typically made from stiffer sewn textiles or formed technical textiles. While there are specialized applications for simulating sewn textiles, sometimes it's just easier or quicker to model something that's good enough for a visual block out or sculpting base. Especially when the final high poly doesn't need to be all that detailed or when the softgood components are particularly stiff, overstuffed, or molded into a permanent shape.

    In this example the seat cushion goes from overstuffed to compressed to simulate use and wear. The workflow in this example was kept purely subdivision as a demonstration. Most of the time, once the basic forms are more or less complete, it makes more sense to switch over to cloth sim brushes or manually sculpting the folds in the fabric.



    Here's a few more examples of subdivision modeling for softgoods:
    https://polycount.com/discussion/comment/2771257/#Comment_2771257
    https://polycount.com/discussion/comment/2783158/#Comment_2783158
    https://polycount.com/discussion/comment/2800275#Comment_2800275
  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: it's not the topology.

    Disclaimer: the first half of this post is less about topology and modeling, more about learning and a specific way of looking at things.

    If you just want key points or don't like reading, skip to the bolded text when things get boring.

    One question that's asked over and over is: "How can this shape be attached to a curved surface?" At some point, most likely when learning how to model, we all probably end up asking this question in one way or another.

    There's a lot of different answers... And by different, I mean mostly wrong.

    Not wrong in a philosophical or practical sense. All topology is valid: provided it does what it was supposed to do. It's just some topology works better than others but this isn't even about the topology. At least not directly. Because the short answer to most topology questions is usually one or more of the following answers:

    -It depends.
    -It doesn't matter.
    -It shades correctly, so it's fine*.

    *(Outside of very specific technical constraints, especially in terms of most game art, as long as minor smoothing artifacts don't directly affect the visual quality of the normal bake applied to the low poly model then it's often passable. Every discipline, project, studio, etc. has different requirements and if your lead tells you to only use quad geometry with minimal poles then you should probably do that. They can also explain the how and why behind those requirements.)

    But that's too easy and the goal here isn't to answer this question** once and for all. Rather it's to show you how you can find answers for yourself.

    **(The short answer is: just match the segments when possible and offset the intersecting geometry so the existing geometry in the curve(s) forms part of the outer support loop around the shape intersection, while also avoiding disrupting the segment spacing or causing unintentional deformation to the curvature and constraining any potential smoothing artifacts to the transitional area between the inner and outer support loops around the shape intersection.)

    No "rules" about quads, triangles, poles, etc. because all of that is largely contextual. Depending both on the type of modeling and what the model will be used for. One of the problems with trying to formulate a fixed rule set (independent of constraints, experience, and goals) is a lot of the commonly parroted one line tidbits of subdivision modeling advice just end up being absolutist, dogmatic, or reductive. Often in ways that feed into counterproductive habits like analysis paralysis or some form of box ticking perfectionism***.

    ***(Which, if we're really being honest, is often just an advanced form of procrastination through busy work.)

    One of the reasons I think artists can struggle with this is a lot of art stuff tends to be ambiguous or subjective in a way that's challenging to learn or just outright not fun to push through to see results. There's a lot of visual problem solving where things don't look right until they do and progress isn't always linear in that space.

    In contrast to that, chasing technical metrics is a lot easier to gamify and gives a more concrete sense of progress. Even when the art things aren't actually moving forward. Which is why, more often then not, a lot of what goes into learning and streamlining modeling workflows all comes down to prioritizing what matters.

    What's the benefit of having a mesh that's all quads, with visually appealing loop flow, and minimal poles if the model's proportions are off or the shapes are inaccurate or the surfaces are deformed in weird ways? How much is that technical emphasis worth if it took a lot of extra time to get a result that's just average or not so good? Do any of the previously mentioned technical elements actually move the needle when art fundamentals are lacking?

    For most artists, especially beginners, technical things should further art things. Prioritize making art and learning over hitting arbitrary technical metrics that don't directly contribute to the quality and usability of the final assets. That's what matters because that's ends up in front of the audience.

    A lot of the learning required to improve modeling skills comes down to knowledge applied through practice. There's lots of places and ways to get knowledge: reading modeling write-ups, searching for posts in the how do you model this thread, watching other people model, asking questions, getting feedback from other experienced artist, etc.

    Practice is where practical knowledge and observational skills are developed. It's also something that only you can do for yourself. No amount of reading or watching tutorials or talking to other artists will move things along the way working on projects and getting feedback at each stage of the process will.

    When it comes to solving modeling and topology challenges: make sample models, test out different approaches, and compare the results. Sometimes it's easier and more efficient to just start over than to try salvaging part of a mesh that has too many fundamental issues. If one approach isn't working then be willing to set it aside and try a different one on a new sample model. Apply that approach to the working model or merge in the best sample.

    Below are a few visual examples of what a subdivision modeling based exploration of the initial question could look like.

    Example 1: This is where most artists start. Smashing shapes together. Manually cutting in support loops around the shape intersections. Filling in the individual faces and trying to join up all the edges in a way that kinda sorta makes intuitive sense while also following what other models look like.

    It seems to subdivide alright. There's a tiny little dent in the highlight where the triangle bridges to the outer support loop near the base of the shape intersection. At first glance it's passable. 

    Typical one line advice would be to resolve the mesh to all quads or use a different approach to merging the shapes. Bonus points if the advice includes: just use more geometry!



    Example 2: The emphasis here is on more geometry, all quads, and only using tools (like inset and loop to circle) to try and redirect the loop flow without having to manually add, remove, or join mesh components. This approach is easy, quick, and checks off all the technical points previously mentioned.

    The loop around the shape intersection is clean and visually appealing when the mesh is unsubdivided. It's also been automatically resolved to all quads. When subdivided the mesh appears to be fairly clean but there's some very subtle shadows and highlights radiating out from the base of the shape intersection to the area near the five pointed E poles near the corner vertices.

    Typical one line advice for this mesh would be to redo it and match the segments in the two shapes so the poles move closer to the shape intersection.



    Example 3: Here the emphasis is on matching the segments of the two shapes, limiting the number of poles, and using tools to simplify adding support loops. The modeling process is relatively straightforward but there's a choice of whether to join the vertices from the larger shape to the smaller or from the smaller to the larger. Once to two shapes are connected it's easy to select all the edges that define the shapes and add the support loops with a single bevel / chamfer operation.

    Again, the mesh is all quads and seems to subdivide cleanly. The outer support loop at the base of the shape intersection was pushed out along the curve and that appears to have minimized the surface deformation where the vertex from the larger cylinder was merged into the vertex on the smaller cylinder.

    Typical one line advice here would be to increase the width of the outer support loop and move some of the vertices to minimize the deformation on the outside of the larger cylinder. Alternately, try merging the verts from the smaller cylinder to the ones on the larger cylinder. There's also a six sided star pole that some artists might recommend resolving to a quad grid or some other topology layout.



    Comparison of the first three examples: though all of these topology layouts appeared to be passable or at least meet the technical requirements that would typically be offered as one line feedback, it's also important to look at the model from a variety of angles and use a material that highlights any subtle smoothing artifacts or potential surface quality issues that could impact reflections or normal bakes.

    Example 1: seemed to subdivide cleanly except for that small smoothing artifact near the base of the shape intersection. When viewed from other angles this does hold up fairly well but there is some very minor surface deformation caused by pinching near the sides of the shape intersection where the edges run out perpendicular to the axis of the larger cylinder. This result is somewhat passable.

    Example 2: appeared to be a quick fix since it used all quad geometry and was generated by basic modeling operations like inset, loop to circle, and extrude. There were some very subtle stretching artifacts but they appear to be much more severe when viewed from other angles. So this result isn't all that passable.

    Example 3: had some manual cleanup but the modeling workflow could be further streamlined by using a modifier to complete the vertex merge and bevel / chamfer operations. There was some minor surface deformation that was visible with the subdivision wire frame preview enabled and the shading discontinuity from that deformation is still visible but fairly subtle. This result isn't ideal but it's also somewhat passable.



    Example 4: is similar to example 2 but uses segment matching aligned to a quad grid to move the poles closer to the base of the shape intersection. So close that it almost appears as if there might not be any poles but there's poles. They just change direction and the one edge runs up off the grid on the larger cylinder and into the segments of the smaller cylinder.

    There's some very shallow surface distortion near the base of the shape intersection and a couple of hot spots around the vertex at the center of the poles but, other than those relatively minor issues, it appears to subdivide cleanly.

    Typical one line advice for this example would be to add an outer support loop around the base of the shape intersection and move the poles outward to resolve the hot spots in the highlight around the base of the smaller cylinder.



    Example 5: is a simplification of example 4 and uses less geometry while also routing one side of the outer support loop between the existing edge segments on the larger cylinder. Rerouting the topology flow moves the poles up and away from the base of the shape intersection. Which resolves the hot spot from the previous example and creates a new outer support loop path around the base of the smaller cylinder.

    The trade off is adding that support loop between the segments of the larger cylinder introduces some unintended deformation and reduces the width of the highlight at the base of the shape intersection. This appears to be a relatively minor issue and the subdivided mesh seems like it's relatively clean.

    Typical one line advice for this mesh would be to simplify the loop flow and reduce the number of poles.



    Example 6:
    is almost identical to example 3 but the loops around the base of the shape intersection were created manually and there's minimal shape deformation on the surface of both the large and small cylinder.

    Overall this mesh appears to be clean, with no visible smoothing artifacts, and the edge highlights are fairly consistent. Even though the width of the outer support loop varies.



    Comparison of the last three examples: in the end, a lot of the typical one line advice just kind of went in circles. Improving one thing but causing an issue somewhere else. So much so that, in this final comparison, the topology of example 1 and example 3 were more or less correct and the root cause of the issue was unintended surface deformation. Not geometry density, loop flow, triangles, n-gons, or poles.

    Example 4: was a definite improvement on example 2 but still had some smoothing artifacts caused by moving the poles too close to the intersecting cylinder and not having an outer support loop path around the base of the shape intersection. In some situations it might be passable but it still leaves a lot to be desired.

    Example 5: improved over most of the previous examples. Except that extra edge (used to complete the support loop path around the outside of the shape intersection) disrupts the segment spacing on the larger cylinder and causes a pinching artifact. In that respect example 1 and example three were about equally passable or maybe even slightly better than example 5.

    Example 6: is pretty much free of smoothing artifacts and has a relatively consistent surface quality. It's arguably the best but the downsides are the topology routing around the base of the shape intersection has to be created manually and there's a star pole on each side. Neither of which are deal breakers in most scenarios.



    Subdivision modeling tends to be more approximate than accurate because it relies on the smoothing effect of the algorithm used to subdivide the geometry. Which means things aren't always going to be accurate or perfect and that's ok. As long as the results are visually appealing and consistent.

    Sometimes choosing between different topology routing strategies just comes down to making tradeoffs and finding whatever works best with the adjacent constraining features that are already part of the mesh. It's a similar sort of thing with mesh density: the goal is to balance accuracy with editability.

    Why not cover using more geometry? 

    A couple of reasons. Arbitrarily increasing the amount of geometry naturally constrains potential smoothing artifacts to a smaller and smaller space. Essentially just making the problem so small that it's suddenly not a problem anymore.

    That kind of brute force approach to minimizing smoothing artifacts works but often doesn't address the fundamental issue that was causing the problem in the first place. At least not in a way that's applicable to other situations where the geometry density is constrained by other surface features or other parts of the modeling process.

    More importantly, just blindly throwing more geometry at subdivision modeling problems tends to increase the mesh complexity far beyond what's reasonable and efficient. It's that last part that really degrades the viability of subdivision modeling. Especially when it's compared to more contemporary workflows like boolean re-meshing, bevel shaders, and parametric modeling .

    Time is a finite resource and keeping subdivision models relatively simple, while also offloading basic modeling tasks to tools and modifiers, helps streamline the modeling process but sometimes the easiest way to be more efficient is to just avoid doing dumb shit in the first place. Which is a bit ironic or nonsensical considering how steep the perceived learning curve and time investment is on traditional subdivision modeling.

    What's the point of all this?

    To foster critical thinking. That's it. Kinda.

    Think of samples and practice models as a way to test something before investing a bunch of time in that particular approach or workflow. Or even just a way to figure out how things work in general.

    There's so many sources of information, often of varying quality, and rather than take things at face value, especially if it's just generated words or random opinions or anything without an actual practical demonstration of the how and why, it's probably worth doing some small scale tests to see what works and what doesn't.

    Engage critically in the search for knowledge and apply that knowledge through practice with active learning. It probably won't change the world but it will likely help you learn to create stuff you enjoy. Even if that enjoyment just comes from the process of learning and creating things.

    Also, connect with other artists, find a mentor, or work with a team on a project. Whatever suits your learning style. All of those things either provide opertunities to or support practice and skill building.

    The usual recap will be in a follow on post below so it's easier to link to for folks who are more visual and prefer short summaries.
  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: it's simple.

    This is a summary of the previous post that answers the question: How can this shape be attached to a curved surface?

    -Match the segments of the existing and intersecting shapes. Use the existing geometry of the curve as part of the support loop around the shape intersection. This helps avoid unwanted deformation caused by the disruption of the segment spacing on adjacent curved surfaces.

    -Maintain the consistency of the key surfaces (highlighted faces) by constraining any changes in the shapes or potential causes of unwanted deformation to the area between the support loops.


  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: it's all about flow.

    This is a really quick visual primer on curves, loop flow, and basic subdivision modeling concepts.

    Here's what a curved segment looks like. Notice how each of the edges that makes up the curve is evenly spaced around the central axis. That even spacing is why the mesh smooths consistently when subdivision is applied. Break that consistency, without compensating for the change in spacing, and the mesh will deform in a way that likely generates some kind of smoothing artifact.


    Anything that disrupts the consistency of that segment spacing will typically cause some kind of surface deformation or smoothing artifact. Below are a few examples of common root causes of smoothing artifacts on curved surfaces.

    Top to bottom:
    - Adding additional loops along side of or between existing segments on a curved surface will produce a pinching or sharpening effect.

    -Moving geometry components out of plain with the rest of the curve will distort the underlying surface in a way that produces bulges or dents and tends to reduce the overall quality of the surface.

    -Moving loops that define curve segments closer together causes pinching and moving them further away causes stretching.


    There's also some exceptions to this. Edge loops that cross perpendicular to the edges of a curved surface typically don't cause deformation if the vertices that define the crossing loop cuts are in line with and have the same consistent spacing as the edges that define the underlying curve.

    It is worth noting though that these perpendicular crossing loops will still cause potential pinching and stretching artifacts if they are too close or too far away from other edges that are roughly parallel with them and they can also cause surface deformation if they are out of plain with the underlying faces.



    It's often helpful to keep things simple by thinking about the initial topology layout in terms of loop paths defined by the shapes, before worrying about managing the added complexity of the support loops needed to sharpen the edge highlights on every new shape.

    Work through the block out in stages and establish the basic loop paths while resolving potential loop flow problems earlier in the modeling process. This will make it easier to add support loops using simple bevel / chamfer operations. While also avoiding a lot of manual loop routing work that's often required to clean up smoothing artifacts caused by trying to manually merge or manage a lot of disruptive edge sharpening support loops.

    (This approach to subdivision modeling can also be further streamlined by using edge weight or vertex group based bevel / chamfer modifiers to generate edge sharping support loops non-destructively.)



    Alternately: just work off the grid if it's easier.

    Be aware though that this approach typically displaces the existing geometry or otherwise requires placing additional support loops between the existing edge segments in a way that disrupts or deforms the curve. Often resulting in smoothing artifacts that can be challenging to resolve without a lot of manual editing.

    Some artifacts caused by this can be resolved or reduced by manually adjusting the position of nearby verts or the spacing of the loops that run off perpendicular to the segments of the curve but that can also have unintended consequences and tends to be a lot of extra work.

    (This why it's generally considered best practice to place the intersecting geometry between the existing segments of the curve and use the existing edges as part of the outer support  loops.)



    Here's an example of what it looks like when connecting a rectangular shape to a curved surface and using the existing geometry in the curve as part of the outer support loop around the shape intersection.

    Note how the base of the shape intersection is constrained by one of the existing edges of the curve and the support loop that sharpens the edge of the shape runs out into an existing edge on the curve. This combination of segment matching and offset geometry intersection helps minimize potential pinching and stretching artifacts typically caused by disruptions to the segment spacing.



    In contrast to this, working directly off the grid may make basic modeling operations slightly faster but it also tends to produce an additional support loop between the existing shape and intersecting shape. This additional support loop tends to disrupt the segment spacing and requires additional perpendicular loops to carry all the edges off the intersecting shape and across the curve. Which tends to produce visible smoothing artifacts.

    (There's a few different ways to reduce the visibility of these types of smoothing artifacts but this example just shows the straightforward approach of increasing the spacing between the tails of the perpendicular support loops that run across the curve. It's worth noting that manually compensating for one type of smoothing artifact often comes with it's own cost because it tends to move the distortion somewhere else. So it's a balance between resolving the smoothing artifact by spreading it out and causing distortion that lowers the overall surface quality or shape accuracy.)



    The same basic idea applies to curved shapes that run across the sides of curves: think about the shape in terms of loop paths then once that path is resolved it's fairly straightforward to add the support loops along that path. Again, use the existing geometry in the curve to define the shapes and avoid moving the geometry in the larger curve out of plane as this will cause unwanted surface deformation.

    (Transitional edges between the flat and curved portion of the edge profile can be sharpened by including the perpendicular edges on the side of the curve in the bevel / chamfer operation and it will typically resolve the loop flow with a diamond quad.)



    Cutting holes in curved surfaces is also fairly straightforward. Just adjust the number of segments in the intersecting geometry until it's roughly the same as the segments in the underlying curvature but leave some space between the intersecting shapes to act as a support loop path.

    Use that space between the segments of both shapes to take up the difference between them and constrain any potential distortion or smoothing artifacts to that smaller transitional area between the inner and outer support loops where it's less likely to be noticeable.



    Then it's all just the same thing, over and over again. Which isn't bad. It's just variations on a theme.



    Recap:
    Most of the time it just comes down to the basics: block out the shapes using the minimum amount of geometry required to accurately hold the shapes and support the shape intersections. Use the existing geometry in curved surfaces as part of the support loops around shape transitions and shape intersections. Match the segments of intersecting shapes whenever possible. Constrain any deformation to the area between the inner and outer support loops around the base of the shape intersection.
  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: it's all the same.

    This is a slightly less serious continuation of the previous posts about subdivision modeling and attaching shapes to curves. Only with more pictures and less text.

    The same basic approach can be used to connect different shapes to curves:
    -Keep things relatively simple and solve major topology flow issues before adding edge sharpening support loops.
    -Let the shapes define the loop paths. Match the segments of the intersecting shapes and use the existing geometry as support whenever possible.  
    -Avoid unwanted deformation or disruption of the segments that make up curved surfaces.

    Below is an example of what that process could look like using parametric primitive shapes and booleans. Start by lining up the primitive shapes and adjust the segment count in each until the segment spacing is roughly aligned. Run a boolean subtraction operation then bevel the edges around the shape intersection and snap merge the verities to clean up the loop path. Merge down the inner and outer loops to their respective shapes and use the space between the support loops to make up any difference between the existing surfaces.

    (Streamline the modeling process by using modifiers whenever possible: boolean, bevel / chamfer, weld, mirror, etc.)



    Here's what that looks like unsubdivided, subdivision smoothing applied, shading preview.



    But what if has a cylindrical boss? Just flip the hole inside out.



    But what if the hole is on an angle? Just rotate the intersecting cylinder.



    But what if it's a countersunk boss on an angle? Just add a bit of a taper and let the support loops bunch up where the shapes cross over.



    But what if it's a shorter countersunk boss on an angle? Just ignore the non-planar quads, they'll smooth just fine.



    But what if the hole is offset from the center line? Just match the segments.



    But what if it's an offset countersunk boss? Just let support loops bunch up where they ride over the non-planar quads.



    But what if it's an offset hole that's skewed? Just rotate the intersecting shape and make sure the segments match.



    But what if it's a partially recessed offset boss that's skewed? Let the shapes define the flow. It's all the same...


    On a more serious note: there's a lot of prior art out there and one of the best places to look for examples of how other artists have already solved similar modeling and topology problems is to check out the how do you model this thread in the technical talk section.

    It's a really valuable resource where a lot of experienced modelers have shared examples and insights. Definitely worth searching or maybe even skimming through.

    Manually searching it page by page is a bit daunting but polycount does have a search function and it's also possible to limit search engine image results to a specific portion of a site so that can be an easier way to visually search for topology examples of similar shapes.

    (Focus searches with site:polycount.com how do you model this and a description of the shape.)
  • FrankPolygon
    Online / Send Message
    FrankPolygon grand marshal polycounter

    Subdivision sketch: No. Really, it's all the same.

    In some ways angular shape intersections are just curved intersections without curves and curved shape intersections are just angular intersections without corners. 

    Both curved and square shapes can be joined to curved surfaces using the same basic loop routing strategies. Though there's some differences in how the edge loops coming off the corners of angular intersecting shapes need to be routed across the existing geometry of the curved surface or reduced (stopped) between the support loops where the shapes are joined together.

    These are just a few fun examples that use the same segment matching and loop routing strategies from the previous posts but also use diamond or triangular quads to reduce extraneous edge support loops in the space between the inner and outer support loops at the base of the shape intersection.

    Diagonal rectangle to curve: some of the corner support loops can be connected directly to the existing edges of the larger cylinder. If there aren't enough adjacent edges in the curved surface to connect to then use a triangular quad to reduce the loops coming off the corner of the rectangle.



    Diagonal cube to curve: each side is the same length so this cube connects to the cylinder in the same way another cylinder would. Just run the support loops off the vertical corners into the existing edges of the cylinder and redirect the loops coming off the horizontal corners to complete the loop flow path between the existing segments of the curve.


    Pyramid to curve: Line up the vertical point with an existing edge in the curve and leave some space between the other two horizontal points and the existing segments of the cylinder. Redirect the loop flow from those horizontal corners to complete the loop path and reduce the edge loops from the vertical point with a diamond quad.



    Mismatched segment densities on curves: adjust the density of the unconstrained surface so every other segment aligns with the existing (denser) geometry then route the loop path around the shape intersection and use diamond quads to reduce the left over segments. As long as the difference between the two shapes is constrained to area between the inner and outer support loops it should smooth cleanly enough to be passable.

    (This kind of topology problem isn't super common but sometimes the density of one shape is already locked in by the geometry of adjacent surface features and it's not feasible to re-model the entire thing or there's some other constraint that means only one of the shapes can be changed.)



    Interrupted rectangle to curve: The complexity of this shape intersection depends on whether or not the intersecting geometry needs to connect directly to the edges that make up the curve. If the rectangle can be placed between the segments of the curve then it's fairly straightforward. If the rectangle needs to line up with the edges in the curve then routing the support loops into the curve is a bit more challenging.

    In this example one side of the rectangle connects directly to the edges that make up the cylinder walls and the other side of the rectangle lands between the existing segments of the cylinder. The basic loop routing around the shapes is fairly straightforward but the extra loops coming off the rectangle need to be reduced using triangular quads.

    Some additional examples of angular shapes interrupted by curves:


    Cylinder to truncated cone: segment matching is a bit more difficult because the taper of the cone biases the mesh density towards the top of the shape. The key to segment matching here is balancing the density between the top and bottom of the cylinder because resolving the sides just requires adding an extra crossing loop that runs perpendicular to the edges that make up the sides of the truncated cone.

    Some additional examples of merging shapes with truncated cones:

    Something to keep in mind is that most complex models are essentially just a collection of simple forms joined together. So, when searching for solutions to topology problems with complex shape intersections, it's unlikely that there's going to be an exact copy of the same thing, at the same angle, using the same number of segments, having the same basic loop routing strategy, etc.

    Rather than trying to find a single example that covers all of the complex shape intersections at once, break the model down into smaller, simpler parts and look for examples similar to the individual shapes. Work through understanding how to solve each individual issue on it's own then use that knowledge to work through combining all of the shapes and try to resolve most of the major topology flow problems during the block out.

    Using a more iterative and systematic approach to solving topology issues usually makes it easier to manage loop flow paths while merging shapes and add support loops without generating smoothing artifacts.
13
Sign In or Register to comment.