In case you missed it
Check other projects by CGMA students
Introduction and Career
Hello! My name is Justin Akiyama and I graduated from The Art Institute of California- San Francisco in 2018. I would like to thank CGMA and 80 Level for their interest in my work and providing me an opportunity to share part of my story. I grew up in Indonesia, but currently, live in the USA. I have grown up playing video games, but it took me a while to translate that into a potential career. I’ve tried a lot of other things, but nothing really stuck. What really attracts me in 3D modeling is that you get to take a 2D sketch or piece of concept art and turn it into an interactive 3D object. I think this process of creation is both challenging and exciting. Call me a kid, but there’s still a little magic in the process, for me. Visual storytelling is another aspect of modeling that I’m really impressed by and is something I am actively working on. With enough effort, I hope that one day I’ll be as expressive in this as some of the other artists I’ve seen can be. But tempering all of this, the process itself is very formulaic and structured. I think this becomes increasingly more important as your model gets more complex, which I appreciate because it means that any complex project can be broken down into simpler, more manageable components. In short, 3D modeling helps engage the side of me that likes being creative, but with a process that requires planning and intentionality. It’s sooooo much fun being a left-oriented right-brainer.
While at school, and the months following my graduation, I have had the opportunity to provide some contract work for a handful of indies and start-ups. Most recently, I completed some work for a UK-based studio, where I textured/modeled several assets for an unreleased mobile title, but have yet to attract any long-term offers. The silver lining to this is that I have the time to continue my self-education and keep improving the quality of my produced works.
About CGMA’s Weapons and Props for Games course
I enrolled in CGMA’s “Weapons and Props for Games” with Dylan Mellott on the recommendation of a friend and mentor, who had taken a different CGMA course and absolutely loved his experience there. I signed up for the aforementioned class, alongside another course: “Vegetation and Plants for Games” with Jeremy Huxley (both of which I highly recommend taking if you have any interest in their respective subject matter). Not only were Dylan and Jeremy highly knowledgeable, but they were both also very friendly and personable! Keeping up with the workload for both classes simultaneously was definitely a challenge, but I learned so much and feel much stronger (as a modeler) because of them. I thought I had a pretty decent handle on hard-surface modeling prior to the class, but Dylan corrected that delusion almost immediately. A lot of this had to do with him correcting errors in my process, introducing me to new techniques/updated workflows and holding me to higher standards than I was used to.
If you are interested to learn more about CGMA and available courses, check out the official website.
Gathering the Reference
Both, the Chiappa Rhino 60DS as well as the EOTech XPS2, are real-life products, so finding the reference for them both was fairly easy. Learning proper component names and checking out weapon auction sites are some great ways to gather reference once you’ve exhausted general searches. I use PureRef to assemble my reference boards because the program is lightweight and fast (also free!). I chose the Rhino because I hadn’t made a handgun in a while and loved how interesting the weapon’s silhouette was. Between the inverted barrel and the Picatinny rails, the revolver was quite different from anything I had modeled previously. I decided to swap out the stock handle of the Rhino with an ergonomic version for even more visual interest (I verified on the manufacturer’s website that the one I chose was compatible with the Rhino).
Most Important Steps of the Gun Production
I think the block-out stage really shouldn’t be overlooked. Getting your component proportions working together (or accurately, in the case of referenced models) is really important to the overall success of your model; all the tertiary details in the world won’t save a bad silhouette, right? To this end, recognizing the shape primitives you’re working with really helps me ‘understand’ what I need to do. I tend to keep a sketchbook closeby early on because sometimes sketching the object helps me figure out what primitives it’s made of quicker than doing so in 3D software. Stylized or not, I start projects in a similar fashion. And while I think you can influence the success of the project at any stage of its development, due to the nature of my workflow, earlier stages tend to have more overall effect than later ones. I liken the process of launching a rocket, where you can use your thrusters to ‘course correct’ while in flight, but it’s a lot easier to just get the trajectory right from launch.
My preferred workflow is Boolean-Hi-Low. We focused on it during the course and it has been my go-to since. I learned how to model in Autodesk Maya and definitely feel most comfortable in it, so I’ve used it since. I’m a big believer in using the layers system to stay organized and use it pretty much every time I open Maya. Using it lets me quickly toggle my image planes on/off and reference meshes I made in earlier stages of production if I need to. For example, when I make my boolean meshes, I try to make sure I leave vertices that will be useful when making my low-poly (like the midpoints of circles or median lines). I also bevel the meshes, so when I import them into ZBrush, I can just hit ‘divide’ a couple of times with smoothing on to get my hi-poly ready. If you’re in Maya, turning Chamfer to ‘Off’ (when using the Bevel Tool) keeps the original edges if you want to reuse the mesh for your low-poly. But for the most part, I just try and keep my boolean meshes simple, and use ‘smooth preview’ to make sure that edges round out properly and that they are stable for subdivision in ZBrush.
Boolean Meshes (Red colors are subtractive meshes)
In ZBrush, because of all the setup in Maya, I pretty much just divide the meshes, run boolean operations, do some universal decimations (like polish) and export out my hi-polys. I also use Decimation Master to create some ‘medium-poly’ meshes. This saves my poor computer from having to put up with the real hi-polys, but I have enough definition in the mesh to reference the hi-poly in Maya (Like using the decimated mesh for the handle as a magnetic surface). The vertex count of these meshes really just depends on how much of the definition you need.
At this point, all I have left is getting the low-poly modeled and unwrapped. Thanks to the reuse of the boolean meshes, I had a large chunk of the low-poly meshes that only needed minimal effort to be ready for unwrapping. When making optimized meshes, I pretty much ask two questions. If I remove this edge, does the silhouette change? Do I need this edge for UV unwrapping? Other than that, as long as the resulting polygons don’t look too stretched out, I try and collapse as many edges as I can. Things like screws or pins get turned into projected details. The whole project ended up being a little over 7k tri’s (4.5k for the Rhino and 2.8k for the Sight). Looking back at this part of the project, I definitely could have optimized the mesh more but was unsure how far I could push my normal maps, so the resulting low-poly was at a higher density than it needed to be.
When laying out my UV shells, I like to stack/mirror shells whenever I can. The Rhino’s subtle asymmetry meant I couldn’t do this as much as I would normally do, but I tried to make up for this by resizing less important shells. Keeping in mind that we were designing a weapon for a first-person camera, shells easily seen from a back-facing camera as well as shells on the left side of the weapon (right-handed setups being more common) were given higher priority in my layout. We planned on a 2k texture for the main weapon, 1k for the accessory, and a glass shader (I also baked a 512x512 normal map for the glass meshes).
Textured meshes with wireframe
I really like Marmoset Toolbag’s baking system, so prior to Substance Painter, I generate all the maps I need in MTB3 so that I can fully utilize smart masks in SP. This means Normals, Curvature, Thickness, Position, and Ambient Occlusion maps needed to be baked (I didn’t have any material ID information, otherwise that would have been generated too). MTB’s baking groups make it really easy to get clean normals (since I was heading into SP, I also configured the normal baking to ‘flip Y’) and painting skew maps help the projected details to bake correctly. Generally, I set my Ambient Occlusion baking to ‘Ignore Groups’, so the generated AO map interacts with all geometry. The exception here being the AO maps for the cylinder and cylinder arm, which I baked independently so that when I posed it open, I wouldn’t have strange shadows baked into the texture. I also posed an exploded mesh (purely for texturing) that I imported into SP to use for my texturing. I also made a decal sheet in Photoshop for the labels and manufacturer marks on both the gun and sight (and the laser sticker!).
Exploded painting mesh and decal sheets
Within Substance Painter, I try to use flood layers and really only paint in multi-layered masks. This lets me adjust all my materials at any point in texturing (something that came in handy because I ended up redoing my texturing several times). I start with a base layer, that covers all my base material channels, then adds additional layers to slowly build up interesting materials. The additional layers typically only affect two or three material channels at a time, and I label and use subgroups to keep myself organized. I try and stay away from the premade smart materials because I feel like I learn more doing the work myself. I also know it’s really easy for the use of procedurals to result in generic-looking work, so this is also my workaround for that problem. That said, I do use smart masks very frequently but always try and adjust all the base settings away from their defaults. Dylan’s philosophy on procedurals was that they can get you some of the ways there, but never 100% and I agree wholeheartedly. They can save you a lot of time, but I think it still needs a ‘human touch’. Overall, there were over 70 layers involved in texturing the Rhino, divided into six distinct materials (plus the decals).
Stylistically, I know I wanted believable, realistic wear on the weapon, but I tend to default towards more saturated textures. I wouldn’t call it stylized, but it’s definitely not scientifically accurate! Games like Uncharted or Titanfall as better examples of this, where they make ‘reality adjacent’ textures that really pop. One of the big draws of video games for me is the escapism inherent to them and their ability to be an exaggerated form of reality. This mindset affects my texturing process and tends to skew me away from true photorealism. This said, I also like to think that even extremely stylized artwork has at least one foot (or just a toe) grounding it to the sensible. So for me, the categories aren’t mutually exclusive, and it’s more about ‘shades of gray’ than ‘black or white’.
Working on the Wear and Tear Look
I will admit that I am still not satisfied with my wear and tear. Dylan imparted a lot of wisdom on the subject matter to me, but I feel like it is a skill that will continue to mature as I keep practicing subtlety. I mentioned visual storytelling earlier and I feel that wear and tear is a great ‘actor’ in this regard. On top of being believable (which I feel that all wear should be), I wanted to show that the owner cared for the weapon. This meant aging the weapon (to show how long it had been in his/her possession) without going too crazy with hard scuffs/ scratches. I tried to achieve this by adding soft, subtle roughness to the edges, and the occasional hard scuff along the outer edges. There are some light sun bleaching and some buildup of ‘gunk’ in the cavities of the model. I also tried to pay attention to the mechanics of a revolver, and add wear to the areas that would see constant use/ movement. I knew how to go into the texturing that I didn’t want any overly hard damage, so the hi-poly was damage-free (I did add some deep scratches later, but these were just for visual interest on parts of the model that I thought needed it). I figured that if the owner cared for the weapon, dirt buildup would be to a minimum, but I did add some fingerprint smudges and smears to show recent use. The EoTech, being a less-cherished item, saw a little more scuffing to add a point of comparison.
EOTech XPS2-2 Accessory
For rendering, I take my model back into Marmoset and set up some relatively basic lighting. Another great tip I picked up from Dylan is to pose several iterations of your mesh in your modeling software (Eg: Leaving the cylinder opened for reloading, cocked hammers, etc.), then import all your instanced meshes as a consolidated FBX, so you can toggle visibility for easier posing. I like to keep skybox intensity low (turning it into more of a mull than a light source) and then use child lights for 3-point lighting. I took a photography course during my schooling and it definitely helps out with setting up my lighting for renders, but I am by no means an expert on the matter! What I can suggest is looking at advertisements for commercial products (they are professionals at making things look good). Lighting has so much influence on the ‘mood’ of your render, so intentional lighting choices can really help you tell your story. Contrasting cool/warm tones in your lights makes for more interesting renders, but I recommend keeping the saturation fairly low (anything out of the ‘pastel’ range of colors looks really artificial, so unless you are doing this intentionally, I’d suggest not oversaturating your light sources). I constantly do ‘squint tests’ on my setups to get better reads on the overall composition (specifically, I look at the range of contrast overall, and what hotspots/deep shadows are my eyes drawn towards), and will adjust both direction and intensity of my lights till I get some good contrast. I don’t do too much work with post-processing (in MTB), but I do use vignettes to draw the viewer’s eye towards the model and occasionally also use depth-of-field if I want the viewer to look at a specific part of the model (or occlude weaker portions of the render). I’m not the biggest fan of chromatic aberration, so my use of it is typically non-existent.
The course was definitely challenging (made even more so by my other concurrent class), but 100% worthwhile. Even within programs I was comfortable in, I learned new ways of modeling and feel much stronger of a modeler because of them. But more importantly, Dylan helped me shift my focus when I model; stressing the importance of aspects in modeling and texturing that I had previously neglected. I think the best example of my “before/after” are two personal fan art projects I did for a popular stylized video game. The two stylized projects ‘bookend’ my experiences in both CGMA courses, so despite tackling the near-identical subject matter, my approach to them differed greatly (If you’d like, both projects are available for viewing on my ArtStation profile). I think that the second model is much stronger, both in terms of presentation, as well as in modeling technique.
Throughout the course, Dylan provided invaluable feedback during production, as well as many personal insights and advice to help all of his students. I always compare what I am capable of creating to the amazing works created by my betters and these courses make me feel like I’m (slowly) closing that gap. It was humbling (and exciting) to learn how high the mountain can be, but encouraging to know that others were facing the challenge alongside me.
Since taking these classes, I have been applying the new lessons I’ve learned to all of my work (casual and professionally), and kept myself focused on improving. I’m going to keep demonstrating what I am capable of, and hopefully one day one of my pieces will land me a job! I know the road is long, but I’ll keep taking it one step at a time. Thank you again to CGMA and 80 Level for this interview.