Wyatt Clark talked to us about the Lightsaber project, discussing modeling the Star Wars-inspired weapon and its details, such as the screws and a crystal, using Maya, Houdini, and Nuke.
Introduction
Howdy! I am Wyatt Clark, a VFX Generalist looking for internships as well as work. You can find me here. I enjoy modeling, texturing, virtual production, and a bit of effects. I use Maya, Houdini, Substance 3D Painter and Designer, and Unreal Engine, and I would love to chat about 3D Gaussian splatting, machine learning, or the workings of the universe.
Growing up, I heard about a friend whose uncle worked on movies, and he got to have his name up on a billboard in a shot. I thought that was the coolest easter egg ever, and I wanted to impress my three younger brothers in the same way. Hence, visual effects! I’ve been working on a handful of student projects and collaborative internships to get to where I am today, partnering with companies like The Mill, Paramount+, and BMW.
Getting Started
This project was my one-weekend ADHD-fueled Star Wars dream. I started it looking for a way to prove to myself that I could use Houdini for a fully procedural prop while matching reference material as closely as possible. I was fully inspired by a concept art by Adam Burn, for Disney’s The Acolyte, and I take no credit for the color, silhouette, or design.
I also gathered material close-ups to show what I thought the textures would look like through a camera. I didn’t do this as intently as you would for a photoreal hero prop because I knew I wanted to retain some of the painting style of the concept art and wouldn’t need the finer detail.
Blockout
Using Maya for the blockout, I modeled the interior handle and grabbing mechanism. Everything after this was done in Houdini so that I could have a non-destructive workflow.
Because I was only giving myself a weekend for the whole project, I wanted to do some quick tricks so that I wouldn’t have to sculpt out worn leather. A leather wrap is a screw pattern, and if we don’t see the back at the same time, then it’s normal if we can’t follow the screw all the way around the handle, especially for a worn prop. This could save me time by just doing a bunch of cylinders around the handle. To make this procedurally, I copied tubes to points on a noisy line and then added noise with a pointVOP to that product. To make the UVs procedural as well, I used autoseam, flatten, and then layout from Houdini’s UV nodes.
The crystal was done relatively the same way, with a base mesh and then lots of noise. This time though, I added in fun booleans to take chunks out of it, and add in cuts. I used a mix of VDB and polygon workflows here, which allowed me to use both volumevops for certain kinds of noise, and polygonal booleans for the more structured crystal noise. I highly recommend Modeling & Rendering a Quartz Crystal in Houdini 16 by Entagma on YouTube for more advice.
The blade was tons of fun and surprisingly easy. The breakdown is the following; tube + animated vertical noise. Animate the length of the tube. Done! This whole piece was a 3D noise within a pointVOP that I scaled a little up on the y-axis, and then animated the offset for.
The rock was the hardest part of the whole process. At the worst, I manipulated almost 20 million vertices on my laptop! The process was simple;
- Define the base mesh.
- Subdivide and add noise with a VDB/pointVOP.
- Turn into a VDB, and delete parts that aren’t part of the largest VDB.
3.1. You can do this with a vdbsegmentbyconnectivity node, which groups each piece by connectivity, then place a blast node, and say “delete non-selected” and select piece 0. - Repeat 2 & 3 until you get the right amount of noise. For each level of noise, go for a specific repeating feature or scale in your reference.
- Convert to polygon!
Now that I had a good-looking rock, I needed the sharp carved part on each side. Boolean to the rescue!
Retopology & Unwrapping
I had two outs from the polygon convert, one for the high poly mesh and one for a low poly mesh. I baked out a Displacement Map with a bake texture in my out context for the low poly mesh and haven’t opened the high-poly since. With the low poly, I was able to get from 11 million vertices to only 300K. I probably could’ve gone lower, but at this point ,I was happy with my render times.
For UVs, I wanted to be sure that this was as procedural as possible and I tried to use Houdini for the majority of it. Because a handful of the pieces were naturally forming, I was able to use the following order of nodes with minimal tweaks: UV autoseam, UV flatten, and UV layout. I haven’t done much UV unwrapping in Houdini, so be sure to double-check other resources.
Texturing
I used Solaris to render the whole project, which meant learning how MaterialX worked in the Karma shader builder instead of Arnold, which I’ve grown to call home.
The rock was, again, the most difficult part here. The shader ended up not being the most complicated thing, but for the one weekend I worked on this project, it definitely lost me some sleep! I originally planned to use Karma for the XPU ability, rendering with both CPU and GPU at the same time. However, I relied on the Curvature node for any sort of procedural rock texture, and this node hasn’t been available on XPU yet. Karma CPU it is, then! The shader has a lot of different curvature settings to apply noise-based roughness and color to the flat parts, the edges, and the inner parts. With more time, I would have liked to add tool marks to the flat sides to show that it was carved away, like what you would see on chiseled marble. Houdini has released a great procedural rock series, and I was able to use a lot of the same techniques shown there, even with the Karma toolset.
The procedural subsurface for the “melting rock” was a good exercise. I used a mtlxposition node and split that into three floats for x and z. Using remaps after this, I ramped out where I wanted the rock to start glowing and animated those values toward where I wanted it to stop glowing. Using ramps here also allowed me to fade the glow naturally rather than a sharp on/off. I multiplied these values by a 3D noise for some variation in the visual density of the rock and called it a day.
The handle wrap was another good reason to use CPU for Karma's Curvature node, as it let me put dirt in all the creases again. I generated a cellular displacement, which fed into the height, a curvature for the dirt, as well as the roughness. This was almost perfect for the style I was going for already, but I also added in stripy noise, giving more color variation.
Lighting & Rendering
I enjoy acrylic painting, and this step in the look development process fills that need for me. I get to go in with my brush and highlight or add color/shadow to whatever areas to match the reference, just like painting.
I used lighting as an exercise to see how well I could match a given style or reference. I utilized a general fill along the top of the prop, fading towards the front, and a bounce light along the bottom with a colder tone to define the shape of the cylinder profile. To get the details in the metal and reflective surfaces, I used an HDRI found on PolyHaven. I utilized a simple parking garage without bright lights – something that would fill in the metal surfaces. I added little highlights in the grabber mechanism, where the crystal protrudes a bit, as this area got too dark. I also wanted to get that nice emitting crystal effect, so in addition to having point lights in the crystal, I added rect lights along the inside walls of the rock, running upwards. The last important light was a little highlight for the D-ring at the end. In Karma, to get the blade to emit, I used a rendergeometrysettings node, and set light to yes for “treat as light source.”
To get the crystal to render fully through, I did have to turn my refraction and reflection limits very high, up to 20 for some frames, but I was able to turn this back to normal for when the blade covered the crystal.
I did some post-processing in Nuke, mainly lens aberration, vignetting, and a bit of a grade and grain.
Conclusion
The main challenge to creating appealing props is doing things people haven’t done before. Finding tutorials online and mixing them together is fine, but when you start to get into unknown territory, you’ll know! This is where I have the most fun, even if it is difficult.
For beginners, the best advice I could give is always to have your reference material pulled up. Print it out and stick it to your monitor! But more importantly, ask questions. Reach out to friends in the industry or professors who can give you a hand to get you out of the mud. Here’s where asking questions got me.