Cameron Eddie talked to us about the MTech USA Xtreme Karambit project, discussing the creation of a realistic game-ready karambit and sheath model and focusing on the high-to-low poly workflow and texturing using ZBrush and Substance 3D Painter.
Introduction
Hello, my name is Cameron and I am a 3D Artist from the UK. I have always been interested in playing games, so pursuing a career in games development felt like a natural step. Prior to this, I worked as a CAD/Visualisation Technician in the Construction Industry, where I gained foundational knowledge of Autodesk Maya and working in 3D. I then went on to study Visual Effects at Norwich University of the Arts, choosing to specialise in 3D modelling and texturing.
In this interview, I am going to explain my approach to creating my Karambit project. I wanted to create this project in order to learn more about the high-to-low poly workflow – with a particular focus on ZBrush and retopology techniques.
Reference & Inspiration
The main objective of this project was to build upon the momentum I had gained while working on my ‘Samsara’ weapon assets. I wanted to push every aspect of what I learnt on those projects further, resulting in a photorealistic, optimised, game-ready asset.
I started by collecting extensive reference images that could be used in both the modelling and texturing stages, ensuring that there were orthographic shots that captured the silhouette of the knife.
Modeling & Sculpting
I don’t think much needs to be said about creating the blade as it is fairly simple in its design. In Maya, I used an image plane to model one side of the knife. I then mirrored it over, ensuring the cutting-edge of the blade had a small amount of thickness as to avoid baking issues later on. I used ZBrush to create and refine a high-poly model accordingly.
To create the grip, I used a reference image to trace the silhouette. I then used the knife tool to create the topology required for each individual undulating segment. Selecting the vertices that would be in the troughs of this effect, I pushed them back to create a very crude low-poly version. I then exported this to ZBrush.
Inside ZBrush, I creased the edges that formed the peaks of the effect – this gave me more control and helped prevent unwanted distortion. Using a combination of ZRemesher and Dynamic Subdivision, I created a high-poly version. I further refined the silhouette before accepting the higher subdivision mesh. I used extrusion to create thickness and then used DynaMesh to make a version that I could sculpt upon. Using DynaMesh allowed me to go in and smooth the peaks of the effect to produce a more organic surface. I then used Booleans to create the bolt holes.
The bolts were created by using one of the standard IMM brushes and then moving them into position. The completed high-poly was then exported back to Maya for retopology and UV mapping.
I modelled, textured and rendered the knife before deciding to create an accompanying sheath. That said, I used the exact same method as outlined above; I created a mid-poly in Maya, that I then refined to a high-poly inside ZBrush. Careful attention was paid to smoothing the edges to create a realistic, smooth profile for the sheath.
Retopology & Unwrapping
Inside Maya, I used the mid-poly I had already created in combination with QuadDraw – using the high-poly as a live-surface – to retopologise the asset. Admittedly, after receiving constructive feedback, the retopology of this asset is something I have revisited several times. Coming from a VFX background, I was accustomed to clean, well-distributed edge-loops running throughout the model, therefore, trying to produce a highly-optimised version proved to be quite challenging. The main challenge being the notion that “if it doesn’t effect the silhouette, it is not needed”. What I initially thought was well optimised could actually be optimised much further. Unfortunately, I do not have the original wireframe images to compare, however, the knife was reduced from 7k triangles to 3k, and the sheath was reduced from 8k to 5k triangles.
In terms of UV mapping, this asset was rather easy to unwrap. I cut UV seams along hard-edges (anything with a sharp change in direction). Any long strips were unitised and straightened into ribbons and all islands were oriented and aligned correctly, ensuring a consistent texel density across all islands. While there is certainly more I could have done to optimise the UVs further – e.g. stacking shells – I believe I had the space to work with to ensure everything had a unique UV island.
Texturing
Substance 3D Painter was used for both baking and texturing. I think the most important element I talk about is how I created the texture for the body of the knife – it features quite a complex surface wear that I was keen to recreate by layering different elements. I will not claim to be an expert, and this workflow was the result of many hours of trial-and-error, but it produced a result I was happy with, and therefore decided to run with it.
I wasn’t happy with the level of control I was getting trying to create the surface wear within the main material layer stack, not to mention how cluttered and unorganised things were getting. As a result, I created a series of five blank fill layers (no channels selected) at the bottom of the layer stack with their own respective layer mask. I started calling these the “Edge-Wear Mask-Builders”. The purpose of the mask-builders was, as the name suggests, to build the relevant masks for the effect. I found that pre-emptively creating the masks for the various wear effects and then referencing them with anchor points gave me far more control, resulting in a much tidier and concise layer stack.
The following effects have been produced to replicate key elements that I identified in the reference images. You will notice that the masks produced are very uniform and feature very little breakup in this stage – this is by design. I use a combination of techniques to break up the effects later when they are being referenced in the base material mask. I will now breakdown each of the five mask-builders in more detail:
1. Edge-Wear
Using a metal-edge wear generator, I created an overall edge-wear effect on the knife. Then using a paint layer, I painted in areas where I wanted to see more edge-wear (the transition between the cutting surface and the body of the knife), as well as painting out areas where I deemed it too strong. A levels node is used to boost the intensity and a blur filter softens the edges of the effect. Finally, an anchor point is placed at the top of the stack for reference later.
2. Cutting Edge
Using a paint layer, I selected the faces that make up the cutting edge – it was a deliberate decision to give them topology in order to make this step easier. A blur filter is used again to feather the edges. An anchor point is then added.
3. Stripes
I don’t know what part of the manufacturing process causes the stripes, but I do know that they were an essential element that I needed to recreate. Using a paint layer in combination with a bevel filter, I created a preliminary mask of where I wanted the effect to occur. I then placed an anchor point (Blade Flat Side AP) which will be used again at the end of the stack.
Using a linear gradient, I created parallel stripes. I deliberately made the gradient stronger on one side and fade out on the other – this effect is repeated on each stripe. I then used a combination of Warp, Blur Slop and Blur filters to provide more organic breakup to a very uniform effect. A levels node is then used to control the intensity and an anisotropic noise map is used to create machine lines within the stripes.
The previously created anchor point is now referenced to ensure the stripes do not exceed the boundary I initially created. Finally, an anchor point for the entire effect is created.
4. Surface-Wear
To create the general noisy surface wear on the knife, I started by referencing the previously created “Blade Flat Side AP” anchor point. A clouds map is used to create areas of high and low intensity. A scratches grunge map is then applied and a levels node is used to control the intensity. An anchor point is then created.
5. Blade-Wear
This effect is very similar to the Surface-Wear effect mentioned above. I start by creating a stripes map, scaling it until I am happy with the distance between each stripe. A clouds map is then used to create areas of high and low intensity. A scratches grunge map is then applied and a levels node is used to control the intensity. A paint layer is used to restrict the effect to just the cutting surface of the knife. Finally, an anchor point is created.
Base Material
I start by creating a base shiny metal at the bottom of the layer stack – this will be our exposed metal. I then begin working on creating the surface wear effect in the Base Metal layer mask.
First, I reference the Cutting Edge-Wear and General Edge-Wear masks I created in the mask-builder section. Blur slope is used to provide some distortion and a blur filter is used to create quite an intense fading effect. I then re-reference the General Edge-Wear to sit on top of the faded effect. Using a paint layer, I manually paint in and out areas where I do and do not want to see the effect – typically I use a dirt brush set with random variations to create organic breakup.
Looking at the reference images, the general edge-wear appears quite grainy – I can replicate this using a White Noise map. I then re-referenced the Cutting Edge-Wear as I didn’t want the cutting edge to appear grainy. A levels node was then used to boost the intensity. At this point, I consider the general edge-wear finished and begin working on the surface-wear.
I reference the Stripes, Surface-Wear and Blade-Wear masks from the mask-builder section. I then layer three different scratch grunge maps to create micro-scratches on the surface. A clouds node is then used to create areas of high and low intensity. I then reference “Blade Stripes” – this is referring to the machined stripes on the cutting surface of the blade. Finally, an anchor point is created for the entire mask – which is later used to control roughness and normal details within the effect.
I appreciate that I have only explained how I created the surface-wear effect, however, this is indicative of how I approach every aspect of texturing. I rely heavily on masks and anchor points to introduce subtle variation across channels. I believe the subtle details are what help the believability of a piece. I use a combination of procedural and hand-painted techniques to achieve this.
Rendering
I chose Marmoset to render this project as I am becoming increasingly familiar with it, and I am starting to enjoy the quality renders it produces. I knew that I wanted the asset to be realised in a scene, so browsed Quixel for some appropriate assets that I could use to stage the scene. Inevitably, I opted for a wooden table and cardboard box – the latter of which, I did edit slightly in Substance Painter to add a logo decal.
I used a simple 3-point lighting setup in combination with an HDRI for this scene. There was no real narrative of this piece, other than “I have made a cool prop, please look at it”. That said, there were no specific areas I wanted to emphasise through the use of lighting, instead opting for an overall, well-lit scene. I wanted the viewer to take their time looking at the piece, and choose which elements they wanted to focus on.
For the carboard box renders, I used an 85mm camera (using ACES Tone Mapping), manually setting the focus distance to create a subtle depth-of-field effect. I tweaked the clarity slider to bring out slightly more texture detail, and also introduced a very small amount of chromatic aberration and digital film grain. In Photoshop, I used the Camera Raw Filter to further increase the clarity, as well as creating a very subtle vignette.
For the square thumbnail render, I used the same camera settings, except I increased the strength of the depth-of-field effect, as well as increasing the amount of chromatic aberration and digital film grain.
Conclusion
For me, appealing props are ones that pursue photorealism. The subject doesn’t have to be particularly exciting; they just have to be realised well. I find props that are hard to differentiate if they are real or not to be the most appealing. That said, I believe the key to creating appealing props is faithfully recreating what you can see in your reference images (highlighting their necessity). You need to spend time analysing the reference images and identifying the elements that are essential to recreating the piece.
This can also be a challenge as when do you draw the line? How do you determine what is essential and what is not? This is very much project dependent – portfolio pieces allow you a certain luxury to be able to spend more time and add more detail than you typically would on a production piece.
My advice to beginners is reference is key! Collect as much reference as you can for every step of the process. I collected reference photos that helped me model and texture this asset, but I also collected other people’s artwork to use as render reference – pieces where I liked the presentation, or they highlighted something in a certain way. Even things that you don’t think are quite applicable – I can guarantee that you find a use for them eventually.
It's also okay to fail. Try new things, and if they don’t work, go back to where you were and try something else. As I’ve mentioned in this interview, through trial-and-error, I was able try new things and learn new techniques that resulted in a final piece that I can be proud of.
In closing, I want to thank 80lv for conducting this interview and allowing me to discuss my Karambit project, and thank you to everyone that reads it! More of my work can be found on ArtStation, and if you have any questions feel free to message me on ArtStation or LinkedIn.