Polyhaven has a few similar chairs. They show only the lowpoly versions with baked textures, but examining them might give you some ideas. https://polyhaven.com/a/ArmChair_01
@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