@jstins nice! I think a lot depends on game's viewpoint, since mine is top-down there is so much you can get away with and a lot that just doesn't matter at all.
For all the hard surface stuff I did the end result is pretty much identical to what I'd achieve with baking, except silhouettes hold up better with all the chamfers and extra details. If it's a first person asset I think a zbrush sculpt (but not quite millions of triangles) pass over them would be cool with dents, welds and others that will hold up better as geo not as texture details
I tried different methods for more organic objects, either zbrush sculpts but decimated so I can unwrap and texture them easily, like the bricks debris and concrete panels here (very fast but messy):
but for others I just did the normal workflow, retopo, and bake, (because baked curvature and AO detail was better). in my case I'm not sure it matters
Update: Calling it done! Just have to adjust a few things with the textures and presentation. Now I just need to rig it for practice, then unreal engine scenes!
my weekly tribute to the 🥵🔥 AI slop machine 🔥🥵 Puttin' in dat elbow grease so that uncle Jensen will be proud of me and DLSS5 wont suck 💪😤✨ I'll protect u from those toxic gaemers Jensen 🫶🌈🦄
Temporarily giving the iron automatons the bronze automaton colour palette in order to distinguish sections of detail and to establish regions for player customizable modular materials. Fused cranial plates.
2300511685 Overall it looks like you're already on the right track. It really just depends on what the model is for.
If it's for games: the brake has a very rough surface finish and it's a very small part that's typically further away from the player's main point of view. So the current high poly is more than passable since it's unlikely that any small smoothing artifacts would be visible on the final in-game model and textures.
It's also worth mentioning that the current support loops look a bit tight and, depending on the textel density, it may be necessary to loosen up those support loops a bit. That way the edge highlight is wide enough to be clearly visible at different view distances and will bake cleanly.
As far as the topology itself is concerned: sometimes less is more. Simplifying the base mesh and reducing or removing a couple of those redundant double loop paths would make the modeling a bit easier and potentially resolve a few of those subtle pinching artifacts where the topology bunches up on the round over at the front of the brake.
For a lot hard surface game art projects, it's generally fine to leave a
few triangles or n-gons in well supported areas, provided the rest of
the base mesh is fairly well organized and the final topology layout
subdivides cleanly. If there's no visible smoothing errors and the
surface quality is acceptable for the intended use case then there
really isn't much of a point to spending a lot of time manually moving stuff
around just for the sake of having an aesthetically pleasing wire frame.
There's a lot of different ways to approach modeling this. So there's no single right way to do it. Though it's probably best to focus on creating accurate shapes first, while also matching the segments in the intersecting cylinders during the initial block out. Once that's done, solve any major topology routing issues before adding the support loops used to sharpen the shapes when subdivision is applied.
Here's an example of what that shape first approach could look like, using a streamlined parametric primitive and modifier based modeling workflow for the block out.
Start by defining the profile of the larger shape using a spin modifier then create the boolean object for the intersecting sloped cut out and generate the rounded fillet using a bevel / chamfer modifier. Adjust the number of segments in both shapes until the edges are roughly aligned then create the inner profile using the same process.
In this example the larger shape has 32 segments and the smaller one has 16. The number of segments will vary depending on the shapes and size of the intersecting rounded corner. Since all of the segments in the curves are generated by modifiers it's easy to adjust the density of each shape and find what ratio provides the best balance between accuracy and editability.
After everything is aligned it's just some basic cleanup operations, like edge dissolve, join through, and snap merge, to simplify the mesh so there's enough room for the support loop paths.
The shape first approach and segment matching during the block out means a lot of the basic loop flow is already defined by the existing geometry in the shapes. So there's minimal cleanup required and the rest of the support loops can be added automatically using a bevel / chamfer modifier controlled by angle or edge and vertex weights. (Shown highlighted.)
Here's what the final base mesh looks like with all the modifiers turned off, wire frame subdivision preview with the modifiers turned on, and the shaded subdivision preview. Note how many of the triangles left in the base mesh resolve to quads once the support loops are added. Most of the triangles and E poles are constrained to the flat areas or between the inner and outer support loops. Which helps prevents unwanted surface deformation.
Efficient subdivision modeling is all about making tradeoffs between accuracy, editability, and surface quality.
Increasing the number of segments in a curved surface can be helpful when joining a series of complex curves and does tend to increase surface quality but it also increases the complexity of the mesh. Which makes it hard to edit.
So for small parts like this, which have complex shape intersections but are further away from the player's camera and have heavy micro texture details in the normal map, it's often a good idea to aim for the minimum amount of geometry required to cleanly hold the shapes.
Anything more tends to quickly hit a point where there's diminishing returns and that soaks up time that could be put to better use elsewhere.
Recap: simplify the base mesh using a shape first approach that focuses
on matching the segments of the intersecting cylinders during the block
out. Keep things relatively simple, let the shapes define the basic loop paths, and automate or streamline the process of adding the final support loops.
Here's some links to additional write-ups that cover segment matching on complex shapes and topology flow on intersecting cylinders:
Just found this forum. Here are a few animations I did inspired by Warhammer 40k. They were inspired by some of the work I saw by another member of the forum.
I had a quick scan of your work and a couple of things popped out to me straight away.
The mesh density on some of these pieces is unbalanced for what you're calling "low poly". You have areas that are sparse and very low poly, and then other areas that are so dense that they're black. Optimisation will be a massive priority in your work when you land a job in games. Part of that is not wasting triangles, and making sure every triangle is appropriate for its intended purpose.
Another part of optimisation is making the most of your UVs. Fill in as much of the dead space as possible and mirror+reuse where you can. Straightening ribbons and islands can help a lot. If every asset in a game has poorly optimised UVs, the project can hit a memory limit, then broad stroke optimisations need to be made like reducing the res of every texture in the game, which is terrible for visual quality.
You need to optimise your meshes and UVs before showing off wireframes and flat textures, otherwise they'll be seen as a red flag to the people doing the hiring. The polycount wiki has a lot of good info on this stuff IIRC
Subdivision sketch: Diagonal corners, diamond quads, and dealing with deformation.
Here's a quick look at a few different topology layouts for sharpening the corners of diagonal edges on curved surfaces and a demonstration of how to manually compensate for unwanted surface deformation that's caused by inserting edges between the existing segments of a curve.
The inverted diamond quad is one of the simplest topology routing solutions for sharpening this kind of corner. This topology is also relatively easy to create, especially when using modifiers to automate support loop placement, since running a single bevel / chamfer operation on the edges that define the cut out produces this layout naturally.
It's not perfect though, there's some subtle pinching deformation at the apex of the corner, but it's quick and easy. Which means it's often good enough for most smaller details that don't take up much of the screen or for things that will only be viewed at medium to long distance.
Resolving this type of subtle pinching artifact is fairly straightforward: just pull down the corner vertex on the outer support loop and push the corner's support loops in slightly.
This compensates for the smoothing stresses causing the unwanted surface deformation where the supporting geometry bunches up between the segments of the underlying curve. Now, rather than fighting the smoothing stress, it's used to pull everything into shape.
Whenever possible: try to preserve the consistency and surface quality of existing curves when making any manual adjustments to compensate for smoothing stress.
E.g. slide the support loops along the existing geometry in the curve, constrain any significant changes in the shapes to the area between the inner and outer support loops, maintain a relatively consistent segment spacing, etc. This helps prevent generating additional surface quality issues related to unwanted deformation.
Here's what the final topology layout and subdivision preview looks like
from a glancing angle. Note how the smoothing stress now pulls the
denser areas into shape and the mesh smooths cleanly without any obvious
artifacts.
Another option is to just extend the corner's support loops out onto the surface of the curve. Leaving the unsupported n-gons behind the outermost support loop where any potential smoothing artifacts are spread out over a wider area.
Here the surface deformation is so subtle that it's almost unnoticeable but this strategy only really works when there's enough area to average it all out along the surface. Again, depending on the density of the curve, it may be necessary to push the corner's support loops inwards a bit to compensate for any unwanted deformation caused by the smoothing stress.
Here's an alternate version of the previous topology layout that uses triangular quads to maintain technical compliance when all quads is required.
A more direct solution would be to just increase the segment count in the curve so there's enough geometry to connect the corner's support loops to the edges of the underlying surface.
In the example below the corner's sharpness is increased by sliding the edge segments above the outer support loop closer to the center of the corner.
Sliding these edges out of line with the segments in the curve does generate some deformation but the smoothing stresses pull everything back into line without causing any major smoothing artifacts.
Practical examples of these topology layouts on other, similar shapes:
Subdivision sketch: On segments or between segments?
This is a quick visual comparison of a few different ways to structure the topology around cut outs on curved surfaces.
Placing a cut out on an existing edge segment and reducing the corner support loops into a triangular quad tends to spread out smoothing distortions along the outer surface of the curve.
Creating this type of topology layout is often quick and easy but there's a tradeoff: the distortion of the curve's segments helps reduce the visibility of some smoothing artifacts but it also reduces the accuracy of the shapes and the overall quality of the curved surface.
This approach is also constrained by both the desired edge width and geometry density of the curve:
If the support loops around the cut out are too narrow then the triangular quad topology tends to pull the corners inwards. Collapsing the shapes and generating severe stretching artifacts.
If the support loops around the cut out are too wide then they tend to disrupt the segment spacing of the curve. Producing unwanted surface deformation and visible pinching artifacts.
Placing a cut out between the existing segments of a curve produces a mitered corner that cleanly redirects the loop flow around the shapes and naturally resolves to all quads while also constraining smoothing distortion inwards along the bottom of the cut out.
Essentially the edges of the curved surface maintain a consistent spacing while also becoming part of the outer support loop around the shape intersection. Which helps prevent smoothing artifacts. This is why it's generally considered best practice to place intersecting shapes between the existing segments of a curve while also matching the segment spacing in both shapes whenever possible.
Creating this topology requires a bit more effort than working off the existing segments in a curve but it avoids disrupting the existing segments, smooths reliably in most situations, and subtle artifacts produced by inward surface deformation are typically more visually appealing or less obtrusive than similar artifacts caused by outward deformation.
Placing a cut out on an existing edge segment and redirecting the loop flow around the outside of the corners using a diamond quad constrains smoothing distortions to the area between the segments in the curve and the support loops that run perpendicular to them.
This layout is something of a compromise between the two previous examples: it provides more support for the corners and is often easier than offsetting the intersecting shapes but is still more effort than just working off the existing segments then reducing the corner support loops with a triangular quad.
One other drawback is the outer support loop on the bottom of the shape intersection is between the existing segments of the curved surface. Which does tend to disrupt the segment spacing in a way that produces noticeable smoothing artifacts if the space between the segments in the curve is too wide or too narrow.
Increasing a curve's segment count does tend to improve the perceived surface quality but there's diminishing returns since it also decreases editability and constrains the smoothing effect that averages out subtle distortion caused by any support loops that interrupt the segment spacing of the curved surface. This means there's a sweet spot for balancing the width of the support loops with the distance between the segments of a curve at a given size.
The simplified triangular quad layout smooths well enough but there's some minor surface quality issues caused by the deformed segments and the uneven segment spacing also means the edge highlight around the bottom appears sharper than it should be. Increasing the curve's segment count will only make these issues worse.
The mitered quad layout is a little bit softer than the others but it subdivides cleanly and is less likely to disrupt the segment spacing as the segment count increases. Adding segments to the curve isn't necessary but it wouldn't really cause this topology layout to generate smoothing artifacts either.
The diamond quad layout is slightly sharper and smooths fairly well but having that additional edge between the existing segments of the curve would likely distort the surface if the curve's segment count increased.
Additional shape intersections increase the complexity of a mesh's topology layout and that often makes it easier to spot common smoothing artifacts like pinching and stretching. Subtle smoothing artifacts don't always show up consistently so it's often helpful to preview a model from a variety of glancing angles or use a flow map material to highlight potential shading issues.
It's fairly subtle in this example but there's a couple of tell tale linear shading disruptions that run parallel to the distorted edges on the curved surface. These smoothing artifacts show up as light or dark streaks on the high poly and will likely cause issues with highly reflective materials and normal bakes.
Again, the mitered corner topology is a good middle ground. It subdivides cleanly and there's no major smoothing artifacts or surface quality issues. It takes a bit more effort to set up and isn't always perfectly sharp but it just consistently works under a wider variety of conditions.
The diamond quad layout redirects the smoothing stress and unlike the triangular quad layout there's no obvious shading tails but as the segment count increases there is a higher likelihood that extra loop between the segments will cause problems. Especially if the width of the support loops is increased.
Typically the topology on flat surfaces doesn't directly affect adjacent curved surfaces but there are some edge cases where the topology on the flat side of a curved surface transition does have some impact on shape accuracy and surface quality.
Here there's some subtle distortion where the triangular quad topology displaces the last edge segment in the curve. However this distortion isn't that significant because there's enough segments in the curve to hold the shape and it's a relatively small change from that second to the last curve segment and the flat surface.
So, in this example and in similar situations, this triangular quad topology layout is a quick, simple, and fairly clean way to rout the support loops around the shapes. There is some visible pinching in the corners but this could be resolved by manually moving the outer support loop's corner vertex further away from the apex of the corners.
Here the edge highlight around the mitered corner topology is much more consistent. With minimal smoothing stress but it does require some additional effort to line everything up and the bottom of the cut out will need to be either above or below the actual center line of the transition between the curved and flat areas.
The diamond quad topology produces sharper corners, with a focused highlight point at the center of each, but there's also some subtle distortion where the edge highlight along the bottom bends in and up as it turns around the corners.
Sectioning a through hole on a stepped form is another situation where it's often easier to line up the edge segments in both the cylinder and flat surfaces. While it is possible to offset the cylinder's segments to create miters on the inside of the cylindrical section, that's a lot of extra work.
It's often much quicker and easier to just line up the edge segments then use a single bevel / chamfer operation that runs around the shapes. Since this naturally produces a diamond quad layout that redirects the support loops around the cylinder with minimal deformation.
The key to avoiding pinching artifacts on the inside corner is to spread out the tails of the support loops that run perpendicular to the axis of the bore.
The same strategy of lining up the edge segments also works well on angled surfaces. It's also possible to manually compensate for smoothing stresses and sharpen the inside corners where outer support loops are reduced with diamond quads. Which restores visual concentricity at the top of the hole.
Here's a more practical example of when it makes sense to use the triangular quad topology. Something like this has a bunch of radial slots and rather than model everything directly, break the complex form down into simpler tileable sections, extrude the shapes, taper the mesh, and add the support loops with a single non-destructive, modifier based bevel / chamfer operation that's controlled by angles or edge weights.
Due to the scale and number of segments there's minimal deformation and everything subdivides cleanly.
Recap: Working directly off the segments of a curved surface is intuitive and a fairly quick way to model things for low poly assets but disrupting the segments of a curve does tend to cause smoothing artifacts when subdivision is applied.
Deciding whether or not it makes sense to place an intersecting shape directly on or between the segments of a curved surface often comes down to deciding if it's worth the effort to adjust the segments and re-route the topology around the shapes or just add another support loop between the existing segments and route the topology in a way that minimizes unwanted surface deformation.
While it's generally considered best practice to match the segments of intersecting shapes and use the existing geometry of curved surfaces as part of the outer support loop path, by offsetting the geometry in the intersecting shapes, sometimes close enough is good enough. In those cases it's easier and quicker to cut into the existing edges in a curve then route the new support loops between the existing segments of the curved surface.
As long as the mesh subdivides cleanly and there's minimal smoothing artifacts, either approach can be used. However, when shape accuracy and surface quality are important then it really just comes down to putting in the extra effort to avoid distorting the mesh and that often means working between segments and not directly on them.