Hi there, my name is John Novak, I’m a 41-year-old Hungarian guy living in Brisbane, Australia. I have a degree in Electrical Engineering and I’ve been working as a software engineer for the past 20 years. My first contact with 3D was on my beloved Commodore Amiga 500, where I messed around with an early ray tracer called Imagine. The possibilities of a 7 MHz machine with 1 MB of RAM (extended from the 512 KB factory default!) and just two floppy drives was quite limited, so the enthusiasm died off quickly. (Fun fact, the first version of Blender, called Traces, was born on the Amiga 500 too.)
It wasn’t until just recently that my interest in 3D has been renewed. A few years ago I decided to write my own rendering engine from scratch as a hobby project. At some point, I realised that I would need an editor as well, but I didn’t want to write one, so I started learning Blender. And that was when I fell into the rabbit hole... I found modelling heaps of fun and realised that I actually prefer the artistic, creative side of 3D over developing my own engine. I’m a long time photography enthusiast, so when I discovered that I can create my own little photo studio in Blender, or even have complete control over the “sun” and the “weather”, I was completely hooked!
I have no interest in working in the 3D “industry”, I’m perfectly content with keeping 3D an enjoyable hobby. I’m still very much a beginner, but I would like to get good at sculpting so I can create illustrations for my favourite sci-fi and fantasy novels one day (I just love sci-fi book covers!).
You can check out my photography, music and other projects at my website if you’re interested.
Learn more on qarnot.com.
After having learned the fundamentals of Blender, I decided to embark on a big project to improve and solidify my general 3D skills. I thought it would be best to build a well-defined, existing object, so I could focus on developing my techniques without getting bogged down on the creative aspects too much. I’ve been playing guitar for decades now, so looking around in my room it was pretty easy to find my subject matter.
This being my second big 3D project, I got a bit scared at the beginning that I might not be able to pull it off. What helped was to realise that any big project can be broken down into smaller subprojects, and I’ve been successful at smaller projects already. So, ultimately, I will only need perseverance and time!
First I started collecting reference images of cool-looking guitars to gather some inspiration. I didn’t want to simply model one that I own, I wanted to build something special, something that I actually cannot afford. Special mention goes to one master luthier, Simon Padalka, whose beautiful (and expensive!) handcrafted instruments served as my main source of inspiration.
Getting hold of accurate measurements and schematics of virtually any manufactured parts is a piece of cake nowadays thanks to Google, so that’s what I continued with next. I cannot stress enough the importance of accurate modelling—it’s extremely hard to produce realistic results without it.
Once I had a good idea about what I was going to build, I decided to follow a staged approach: model everything first, then move on to shading, and finally to lighting and composition. This helped me focus on specific areas of the workflow, and made the whole process less overwhelming. However, for a more open-ended project, I would definitely try a more iterative approach next time.
Overall, the project took about 6 months to complete in my spare time. I have learned tons of interesting new techniques, especially how to do things better next time! I started and completed the project in Blender 2.79, I used 2.9 for the screenshots only because the viewport renders look nicer.
My intention was to create a high-poly model for rendering still images, many of them close-ups, so I used the subdivision modelling with edge support loops workflow (my favourite so far).
In a complex model like this it’s crucial to organise everything methodically right from the start. I learned this the hard way: I did not use parenting and proper grouping from the start, so whenever I wanted to move my finished guitar around a bit, I had to select all the 50+ parts first... Retrofitting proper hierarchical groupings was hard because of all the instancing and relative scaling and rotation going on, so I will definitely pay special attention to this going forward. My conclusion is that while creating a fully rigged mechanical model for only still images would be overkill, making the model easily riggable is definitely a good idea, as it forces you to keep things clean.
I have to stress yet again the importance of modelling everything to scale as accurately as possible, preferably from blueprints. Checking your model from different angles and using multiple reference images is also crucial; I had to rework some of the parts for which I only used a single reference image from a single perspective.
Creating the strings was an interesting challenge. After exploring a few different options I ended up with using paths to define the strings and the Array modifier combined with the Curve modifier to give them a “body”. Sadly, I largely forgot about the details of this technique, so here’s another piece of advice: unless you have exceptionally good memory, take notes of all the interesting little techniques you come across, so you won’t need to research them again 6 months later....
So, after about three months of modelling, this is what I ended up with:
One last comment about topology. As I’m only interested in creating high-poly models (and eventually sculpts) for rendering still images, I thought I didn’t need to pay much attention to topology. In retrospect, this was a mistake, as the point of this exercise was to learn good modelling practices. Although the final model renders just fine, some of my early wireframes turned out pretty horrible:
My advice: learn the correct technique first, even if it takes more time. You can always be sloppy later. You can see some improvements on the models I did last, though, so there is hope!
I closed off the modelling phase with some quick test renders, just some base materials and quick and dirty HDRi lighting (and as you can see, I broke my own rules slightly and went ahead and did all the decals, too…).
Shading and texturing
In general, I used a hybrid approach of image-based surface imperfections combined with multiple differently scaled procedural noise patterns. I used the Principled Shader for pretty much everything, there’s basically no shading trickery going on at all.
For the embossed text in the metal parts, I used true displacement with adaptive subdivision. I only used bump maps for adding very small scale textures and imperfections to certain objects.
For photorealistic results, it is absolutely essential to use a view transform that simulates the highlight compression of film while tweaking shaders, especially when dealing with highly reflective surfaces like metal. In my case, I always just use the excellent Filmic view transform included with Blender. The trick is to use a look in the shader development stage that more or less resembles that of your final render. I found “Medium High Contrast” the best for this.
I must confess that UV unwrapping is definitely my least favourite activity of the whole 3D process, so ideally I prefer to avoid it completely. Luckily, I was able to mostly do that; I only needed to unwrap a few flat surfaces to position the decals and the inlays, and the veneer and edging on top of the body (more on that later). For everything else, I used box mapping.
There was a catch though: there are quite a few instanced objects in the model and many of them are close to each other, so you need to vary the textures per instance, otherwise, things start looking fake quickly. For example, this is how adding some noise texture to the pickup pole pieces looks when using only object coordinates:
Each looks exactly the same, that’s not what we want! One very cool technique for adding variation to procedural textures is displacing the mapping by the Random parameter of the Object Info node, which is different for each object instance. The variation will be random, of course, but with grunge textures, that’s just what the doctor ordered. I used this technique extensively to add per-instance variation to most of my shaders.
Speaking of grunge textures, I quickly realised how important they are for achieving photorealism. This is how some of the metal tremolo parts look like without any surface imperfections:
Slapping some surface imperfection textures with box mapping sounds like a 1-minute job, but it turns out there’s a fine line between too little and too much grunge when it comes to photorealism. Getting the right scale and amount of dirt, scratches, procedural noise and subtle procedural bumps took a surprisingly long time and many iterations. The below images show the early stages of this progressive refinement process; you can see how I applied the textures quite heavy-handedly initially, then toned them down a fair bit later. Another important (and obvious, in retrospect) learning was to tweak the shaders really zoomed-in, ideally at the highest close-up level you’re going to use because this ensures they will also look fine zoomed-out.
To my surprise, it turned out that for metal it’s essential to use accurately measured RGB values from albedo charts. You really can’t eyeball that stuff! Note how the metal parts on the first two renders are just too bright and more like silver (that was my attempt to set the colour by eye), while on the last two they finally start to resemble an actual polished chrome surface.
Texturing the body
I decided to model the body of the guitar as a single object and then use masks to give the top veneer and edging different textures. Because the body is relatively large, and I was planning to render some close-up renders, I needed to bump the resolution up to 16k to keep the mask edges sharp. But a single 16k RGB texture weights a whopping 768 MB, so you really want to keep the number of these guys to a minimum!
I found a quite cool technique to pack multiple non-overlapping masks into a single image by assigning different colours to the individual masks. All I needed to do then was to “decode” the masks in my shader by “splitting” them out by the different colours.
As for the wood textures, I really did my best to find high-resolution images of tonewoods used by luthiers for creating instruments, but they simply don’t seem to exist… So, in the end, I resorted to some archviz wood texture packs instead. Oh well, there you go, a guitar made out of furniture wood! I think the end results look quite good, though, and probably only a luthier or some kind of wood expert would spot the difference. I also wasted a lot of time experimenting with procedural wood textures, but in the end, it wasn’t worth it. They just didn’t look realistic enough, especially not on close-ups.
Wound string shader
Creating a procedural shader for the low wound strings was quite fun. I used a tilted wave texture with some colour remapping to define the curvature of the “threads” and true displacement to give them actual geometry (this really makes a big difference on close-ups). Again, no UV unwrapping was necessary since the auto-generated UVs just worked fine.
Lighting and composition
My favourite part of the whole 3D creation process is lighting, without a shadow of a doubt (pun intended!). I absolutely love lighting! As a photographer, I consider lighting and composition inseparable from each other. As a case in point, here’s an old photo of mine where lighting plays a vital compositional role:
My general philosophy was to get the lighting perfect out of the straight renders, so ideally zero post-processing is required. While doing certain things in post can be a pragmatic choice or a huge time saver in some situations, I’ve learned from photography and music production that having a “we’ll just fix it in post” mentality as a default is a very wrong one. You really need to learn proper technique before taking shortcuts, and that’s exactly what my goal was in this project.
HDRi lighting seems to be very much in vogue nowadays; it can be the perfect choice for natural-looking results, especially for outdoor scenes. Nevertheless, I view it pretty much as a fixed “preset” solution with very little customisability. Studio photography, on the other hand, is all about artifice and precise control. My initial experiments with HDRi environment maps have been quite off-putting and frustrating. Compare the two images below: the first is my HDRi based attempt, and the second is the final image that uses a procedural lighting setup. While the first one doesn’t look too horrible, the random stray reflections and hard shadows from the many small hard lights were impossible to control. Sure, you can try different HDRis and you can rotate them, but for me, this quickly devolved into a frustrating game of whack-a-mole. It didn’t feel like I was doing proper lighting, I was just browsing presets!
The thing is, objects containing a mix of diffuse, reflective and transmissive surfaces are notoriously hard to light properly, especially if you throw metals into the mix as well. This calls for precise control over the positions and properties of the lights, and often also involves the use of reflector panels and gobos (pieces of non-transmissive materials placed in front of lights to control their shape). This is what I love about physically-based renderers like Cycles: pretty much all real-world lighting tips and techniques are directly transferable into your virtual studio! I’ve been reading a wonderful book titled “Light Science & Magic: An Introduction to Photographic Lighting” that contains practice exercises that I could try in Blender instead of buying expensive lighting equipment and converting my garage into a studio. I love its “teach a man how to fish” approach instead of just giving you various recipes for some specific scenarios. I strongly think that all 3D artists would benefit greatly from reading it (hey, and I get no percentages from the book sales, trust me!).
I created different lighting setups from scratch for all my 12 renders. In the next sections I’m going to present two of them in detail.
The general lighting setup was pretty simple: a room with black walls, a dark grey “infinite curve” background, and a large soft-box (the key light). In fact, this particular setup only has this single light, which shows you don’t need to complicate things to get good results. Some other setups feature more light sources, but never more than three.
Although I did not use global HDRi lighting as I mentioned before, I used real-world measured HDRi emission maps for all my light sources instead of the stock procedural area lights. I just ripped the lamp images from an earlier version of HDR Light Studio (they are stored as mip-mapped TX files), but you can find plenty of studio lamp emission maps on the internet for free. This made quite a big difference in the metal reflections.
The grey background under the guitar acts as a subtle diffuser. I was able to control the lighting ratio between the guitar and the background, the slope of the background gradient, and the shape and size of the bright reflection on the top of the body by playing with the angle and position of the key light. The brightness of the background gradient could be adjusted further by moving the background back and forth a bit.
This is how the render looks with just this single light:
This looks quite good already and is pretty much the final result, but I wanted to make the metal reflections a bit more interesting. Metal basically acts like a mirror, so I added the reflector cards A, B, C and D and carefully positioned and sized them so they are partially visible in the metal parts on the body and the headstock (switch back and forth between the two images to spot the differences). This was not absolutely necessary, but it added some interest, variety and definition to the metal parts.
This setup is my favourite. I did it around the end when I was getting a bit tired from using only soft lights, so I wanted to come up with a more creative and bolder lighting setup.
- A is a large area light positioned behind the guitar. It serves a dual purpose: it provides a rim light around the left edge of the body, and it creates interesting gradients on the neck and the sides of the body. Note that with the room switched off on the first image, the darkest parts of the guitar completely blend into the black background. On the second image the room is switched on, which casts a faint indirect ambient light on the body, so you can differentiate it from the background. This is a subtle but important difference.
- B is a reflector card between the guitar and the camera, approximately facing light A at the opposite side of the guitar. Its only function is to illuminate the back of the guitar facing the camera by bouncing some of the light coming from light A. The exact placement of the card was crucial: note how you can see the reflection of the card only in the upper right quadrant of the back. I quite like the gradient it created at the bottom of the image and the nice rim light on the right.
- C is the result of some experimentation. It’s a small hard light that has a surprisingly large number of functions:
- it creates an interesting shadow pattern on the neck,
- provides some really nice highlights on the curved edges,
- brightens the back of the body a bit,
- and casts shadows on the protruding parts of the back to give them more dimensionality.
Hard lights are often more interesting than the somewhat generic soft lights (for a start, they cast more interesting shadows), so try to use them whenever you can.
- Finally, D is just a black card (gobo) to introduce a falloff to the contribution of light C at the bottom of the image.
When it comes to rendering, my go-to settings are quite unremarkable. I’m a fan of the simplicity and realism of brute-force path tracing, and as I’m neither interested in rendering animations, nor have paying clients or deadlines, there wasn’t much point in optimising the renders (which can also take considerable time). Anything that takes more than about an hour to render I would just render overnight anyway, so as long as it gets finished within 8-10 hours, I don’t care.
I used render-time depth of field, which I prefer for photorealistic results (again, this is a luxury that you can probably only afford with still images). I did not use render layers at all because, as I mentioned, my aim was to get the final look from the straight-up renders. I just exported the “beauty passes” as 16-bit TIFF images with the Filmic view transform baked in at the appropriate exposure and contrast settings. I used the “High Contrast” look in all my final renders, except for two where I chose “Medium High Contrast” instead.
I found the Branched Path Tracing integrator better at getting an even distribution of samples across the different surface types, so after some test renders and inspecting individual render passes, I ended up with these settings.
I’m quite averse to the current Blender denoiser algorithm (as of version 2.79b). To my eyes, it removes too much fine detail and tends to make everything look like plastic. So I didn’t use it. In fact, I even added a scanned film grain overlay to my renders to get a more film-like look (I do the same with pretty much all my photos, I just love the film look). This also has the side-effect of acting as a form of dither, which smoothed out the banding on the background gradients nicely. As for the fireflies, I just spent 10-20 minutes per image to remove them manually in Photoshop with a 1px brush. It’s a bit tedious but it yields superior results, in my opinion.
Apart from adding film grain, my post processing has been fairly minimal. I’ve only added a subtle glare to some of the shiniest metal surfaces, a little bit of sharpen edges here and there, and a very subtle (1px wide) chromatic aberration to the edges of the shiniest reflections where the contrast was the greatest. On two images that were difficult to light evenly, I also did some selective darkening on a few areas. All these changes were very subtle; 95% of the final results are coming from the raw renders.
You can check out all the finished renders on my ArtStation page.
On chromatic aberration
I must take the opportunity to say a few educational words about one of my pet peeves from a photographer’s perspective, namely adding chromatic aberration to renders. Drenching your whole image in fake CA does not make it more realistic, period. It looks bad, and at best it just makes it look like a video game screenshot. No photographer likes chromatic aberration; they spend lots of money on expensive lenses to minimise CA and/or they completely remove it with a few clicks in post. With my better lenses, I only get CA in some very specific circumstances (e.g., very strong backlighting, and even then only around a few high-contrast edges).
So, unless you’re adding it as a special effect on purpose (e.g., to simulate a Polaroid camera, or a really cheap zoom lens), please just don’t do it. It will scream “fake” to all photographers. But if you want to do it anyway, do it in a subtle way and please research it a bit first.
I hope you found this article interesting and inspirational. This was a very educational project for me, and if you have learned something useful from this article too, that’s even better! Keep blending!
About the Author