logo80lv
Articlesclick_arrow
Research
Talentsclick_arrow
Events
Workshops
Aboutclick_arrow
profile_loginLogIn

KelTec PLR-16: Creating a Matt Rittman-Like Weapon Breakdown Animation in 3D

Hard-Surface Artist Lucas Beissel has joined us to explain how his recent Matt Rittman-inspired PLR-16 project was made, discussing the modeling pipeline and showing how the appealing breakdown, firing, and loading animations were set up.

Intro

Hi! I'm Lucas, I'm a 3D artist in Los Angeles, working in the game and VFX industries. I started using Blender when I was 12 years old, and gained a fiery passion to learn and create. Currently, I work as an intern at Corridor Digital, I make Roblox games, and I'm a college student with a film/philosophy major.

PLR-16 Creation

The PLR-16 project actually sparked out of a little joke: perfecting a stupid-looking gun, and praising it with beautiful rendering, complete internals, and a Matt Rittman-esque mechanical breakdown (as he has done with many of the "cult classic" and praised firearms).

For references, I used World of Guns, which was pretty good but had a few inaccuracies. I couldn't reference it for textures, so I also cross-checked with hundreds of YouTube videos, manuals, and anything I could find on the internet. Here's my ref board:

My modeling workflow was quite standard, so I won't yap about it – it's just a bunch of booleans to achieve the correct forms in a messy non-destructive mid-poly model, both taken to ZBrush for the HP (with some patterns, dents, and damages), and cleaned up to a low-poly. I'm quite proud of my topo and UVs, as the full gun is only around 100k tris with full internals, one bullet, and the mag. It all ended up being 10 different texturesets: 3 4K maps, 6 2K maps, and a 1K map. My free project files on ArtStation have the ZBrush project files and a low-poly model.

For texturing, I worked on spec gloss in the ACES colorspace and studied a lot of Egor Kapashylov's free project files while trying to stay true to my reference images; it's really just about compounding detail, making cool masks, staying true to references, using stencils and custom grunges, and understanding how materials are supposed to read.

I made heavy use of anchor points, especially on the polymer, where there were clear "layers" to the damage that I could reference globally. Finally, doing a lot of the damage in my high-poly made it fun to texture, since it did a lot of the heavy lifting for those small variations that lead to realism. To work on specific parts in isolation, I used the hide/ignore geometry feature, and masked that way too.

If you’re new to texturing, I would highly recommend Duard Mostert's course "AAA Game Assets With Fusion 360," it has a really good texturing section. I would also recommend studying Egor's project files. My project files on ArtStation include the Substance 3D Painter .spp, too.

I also used something called Parallax Occlusion Mapping (POM) in a few places. It creates displacement without requiring geometry. Marmoset has support for POM by default, but in Blender, you need a node setup; I found one online, and it works with Eevee Next. I used it in a bunch of places, not just the big stamps, like on casting seams and ejector pin marks.

I rendered most of my stills in Marmoset Toolbag, nothing really special to say about that – it's all just lighting and camera settings. On some of my renders, I used Dehancer to get halation effects and more interesting grain, emulating a film camera.

The Animation/Rig

I was inspired by Matt Rittman and the way that he uses video to illustrate the mechanical function of various firearms. I thought it would be cool to map this onto my portfolio piece, even though I knew how much effort it was going to take. In this section, I won't dive into everything in super high depth, but I'll go over some of the really big problems I encountered and how I solved them.

I structured the video around Matt Rittman's "How an AR-15 Works" video, but condensed it to around 2 minutes, both because it's a simpler gun and because I excluded some minor details. I also made a disassembly video inspired by the World of Guns disassembly, but it was much smaller in scope (also, I rendered it almost real-time in Eevee). One system I needed to make was object isolation, which I needed to do both on a shader level and a compositor level. Basically, I needed to control the transparency of specific objects and a "highlight" effect (emissive fresnel) on others.

Objects with the highlight effect would also need to be on a different render layer and be composited in respective to the amount of the effect's intensity (for fading in/out). I did this through a ton of drivers and a shader setup. I had a group node that I could copy and connect, and I decided which objects to "select" for these effects through keyframing the Index value: 0 for default shading, 1 and 3 for highlight effect, 2 and 4 for transparency effect.

I also had to make a few spring rigs. The springs that simply compressed and decompressed linearly, I was able to just use a plugin called "Add Spring Rig," but for more complex rigs, like the hammer spring and magazine spring, I needed to make my own (with lots of help!)

As you saw in the bolt rig, I also made some automated rigs, where I could just move one slider and it would go through an entire sequence of several parts interacting. I did this through drivers, and made expressions to control how each part moved in response to the slider's position. They were done via single-line Python expressions, and I used them so much (example for bolt rotation as it disengages with the barrel extension lugs: 0 if var > -0.15 else (0.15) if var < -0.3 else ((var + 0.15) * -1) → where var = y location of slider, which goes from min y=-3.5 to max y=0).

For the bullets, I needed to not only move them through the mag but also allow the bolt to effectively channel them into the barrel, which required two different curves and two different drivers for each side of the magazine, respectively. And yes, it's also controlled by the same slider as the bolt.

This was just a brief overview of the rigging, there were so many more things I had to solve, especially with the sear spring, trigger spring, and hammer spring on a technical level. Everything is in the project files on my ArtStation in case you want to dig deeper.

Leading into the simulation, I also needed an animated asset for the round's "ignition compound," which is basically a bunch of gunpowder in small pellets. I made a few different pellet variants, and then made a geometry node setup to scatter and instance them within the volume of whatever shape I have the geonode applied to (in this case, the shape of the internal volume of the round) I then made a shader that allows me to create a gradient of "ignited" pellets, which I used in conjunction with an EmberGen simulation.

Simulation

For all my simulations, I used EmberGen and then imported it into Blender as a VDB. For the most complicated section, the firing sequence, I chained four different simulations together: the expanding gases in the casing, the expanding gases in the barrel, the muzzle flash, and the gas block -> recoil tube sim. I then exported them as VDBs and configured their materials in Blender.

The other sims in the sequence follow a similar process, so it would be redundant to show them.

Anyway, that's basically it! I hope this provided some insight and was useful to anyone reading. If you're new to weapon art and are flabbergasted by this piece, just remember that what I'm doing is just a lot of small lessons that have compounded over time. The best things that have helped me learn were online communities, YouTube tutorials (but be careful because some of them are misinformed!), and courses (ArtStation has lots of good free ones).

Thanks for giving me your time, and have a great day!

Lucas Beissel, Hard-Surface Artist

Interview conducted by Theodore McKenzie

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more