(THIS IS A REAL PICTURE)
PLEASE READ THE
Let's make an interior together!
Most requests for me to make tutorials are related to interior design and visualization, or "ArchViz" for short. This is one of my favorite categories of 3D and is actually what got me into 3D, so we'll start with a simple interior replication :)
But, before we begin, we need to be on the same page about what you should and should not expect from most of my tutorials.
What you should expect:
A generic (yet comprehensive) description of what I do and why I do it;
An overview of the creation process, settings and scene setup;
Tips on lighting, materials and some other good practices.
What you should not expect:
A modeling/texturing tutorial;
Hand-holding through every step;
A 100% accurate scene replication with every detail recreated.
My intention is not to guide you through every single vertex creation. I won't be saying "press A to select everything, then Shift+D to duplicate the object, R to rotate" and so on. My tutorials are aimed at artists that already have a basic knowledge in Blender. This tutorial, in particular, will be a basic overview of how I would replicate this interior - it will not, however, be a 100% accurate replication as that can take several days to complete (as you'll see later in this tutorial with my kitchen and office replications), it's mostly an overall guide to my process of replicating a scene, with the most important tips thrown in.
So, without further ado, let's get our hands sweaty.
NOTE: you'll be able to vote for the next tutorial at the end of the page!
NOTE II: All Patreons (regardless of tier) will have access to this tutorial files!
Step 1 - Get your Blender ready
We're going to use Cycles for this scene. It's the most realistic render engine Blender has to offer by default and is super easy to setup. Eevee is pretty amazing too as you can see in this comparison, but we'll use it for other tutorials.
Almost all the Cycles' settings I use are default. I trust the mathematicians, physics and developers in their judgement of what is realistic. You can, however, decide to speedup your renders by (for example) reducing the number of light bounces in the scene - but note that it lowers the overall realism and quality of your renders (as shown by BlenderGuru here).
Long gone are the days where we needed to use 5000, 10000 samples in a scene in order to remove the noise from the renders. Nowadays, denoising is super easy (and the result is awesome!) and only takes a few steps.
First, if you use the compositor denoiser like on the image on the right, you're good to go. You should be already using 32 to 128 samples on most of your scenes.
But if you don't like using the compositor (like me) and just want a quick way of achieving the same result without connecting nodes, just enable the OpenImageDenoiser from the Cycles tab.
One big advantage of using it from the Cycles tab is that it'll take less RAM to render. If you denoise from the compositor, Blender will first render your image and then denoise it. This denoising process will happen all at once and will usually double the RAM amount you used to render. So if you're already running short on RAM during the render, stop it or your computer may freeze/crash when Blender tries to denoise via the Compositor.
This doesn't happen if you enable the denoiser from the Cycles tab, because every tile rendered gets denoised. To do this, disable the "Use Nodes" option in the Compositor, disable "Denoising Data" from the View Layer Properties, and enable the OpenImageDenoiser from the Cycles tab.
Another great thing about using it from the Cycles tab is that you can quickly denoise your viewport. With only a handful of samples in the viewport, you can get great results if you denoise it. Just keep the "Start Sample" as high as you can, otherwise every sample will be denoised and your viewport performance will suffer (I set my viewport to 12 samples and my Start Sample to 12).
Step 2 - Camera Calibration
In order to make the best recreation as possible, we need to position our virtual camera in the exact same position as the real camera that took our reference photo (or as close to it as we can) and we also need the same focal length. That is possible via fSpy, a great calibration program that's been around for years, is open-source, and will enable us to calibrate our virtual camera.
We need two downloads: one for our OS, and another for Blender.
To see how good the calibration can get, see the two images bellow. I recreated both scenes in the past, using fSpy.
Personally, I don't see a better way of calibrating virtual cameras.
I made this small home office comparison in 2017 when I wasn't yet taking 3D too seriously.
I made this kitchen in late 2019, right after I started taking 3D seriously.
I only had a crappy laptop with 2 GB of RAM available, so some details weren't finished due to hardware limitations.
Download the OS version here:
Download the Blender addon here: https://github.com/stuffmatic/fSpy-Blender
In order to calibrate our virtual camera, we need to download the reference image.
Download the image here: https://pixabay.com/photos/bedroom-interior-design-house-room-5772286/
Once you downloaded everything, run fSpy.
If you've never used fSpy, please refer to this tutorial on how to use it. It's really simple, though, adjust two axis and you're calibrated.
I do, however, have one very special tip to get the best result possible: always add a 3D Guide (a box usually works well) and move it around the scene. This will allow you to check if all the angles match throughout the scene.
Watch the video bellow to see how I do it:
Once you calibrated your virtual camera, save the file to your disk. Usually I already have a folder in my Documents/Blender/Projects/BlaBla/BlaBla ready, so I save it there.
If you haven't done it already, install the fSpy addon in Blender. You can now import .fspy files, which will import the virtual camera and will set our reference image as background. Import the .fspy file and let's finally get to work in Blender :)
Step 3 - Measurements
If there's one thought I'd like to put in your head, dear reader, is that of measurement. No matter what you're doing, proper accurate measurements is extremely important to realism and consistency, and will make your life much easier along the way. One example is if you're working with a team: let's imagine you're doing an interior scene and you need to export some of your meshes. However, you're not working with real-life measurements, so when your colleagues import your files they'll be shocked to see a 15 meter long bed and a 10 meter high room (oh, did I forget to mention I'll be using Metric?). Either they'll be shocked with your files, or you'll be shocked with theirs.
Always start your projects in the correct scale and unit measurement.
But we don't need to worry about that just yet. We first need to model our room so it's accurate to the reference.
Check the video bellow to see how I did it.
Now here's where we need to start thinking of measurements. Even though our walls closely match the reference photo, the scale is completely wrong. Interior walls are not usually 5 m tall and mine are almost 6.
So how to properly fix it? Simple.
Set the 3D cursor to the center of the scene. This is just in case you clicked/positioned it out of there;
Set the Pivot Point to the 3D cursor;
Select everything and make the N panel visible;
Scale everything until the Z size of our active object (the walls) is around 2.4 m tall.
Video bellow to see it in action.
I just ran into a problem (which is more common than you think in "Calibration Land"). While most of my lines are correctly aligned, there's one that hasn't aligned well.
Since this project is for demonstration purposes only, I'll do some basic editing to my fSpy project and re-import the camera. This time, most lines will be just a little bit off, but the overall calibration will be better. Get used to the idea of making concessions when doing virtual camera calibrations.
You can see in the video bellow where I stand at the moment. Most lines are really well calibrated, but there's one that isn't. I'm not sure why this happens, but I assumed that if most were 100% then all would be 100%. Clearly I was wrong. One possible explanation is that the room isn't squared perfectly, but I'm not going to lean on that as a sole explanation as to why calibration fails sometimes.
Alright. New calibration done. Here is where my modeling is at.
It's important to add Light Portals to every opening. The way I understand it, it will make Cycles focus most of the light photons through the portals so that they're not all wasted outside our room. So:
Select the edge loop on the outside of the window;
Move the 3D cursor there;
Add a Light Portal pointing inwards;
Video bellow for quick reference.
After adding the Portal and doing some minor tweaking to the exposure, here's my result
"But what about replicating the "lighting?", I hear you say? The answer is: we can't, at least not 100%. Every natural environment is unique. Outside of this room are multiple specific types of tree3, a certain amount of trees, specific houses in specific positions far away from the camera. We can't replicate that. Every single leaf on the trees will make the lighting behave a little bit differently. Every little detail outside will have an affect. The clouds that were there in that day were specific and will have an effect. The time of day and sky color.
For this reason, it's important to engrave in your head that it's impossible to replicate a photo's lighting completely. Even if you were to take a photo on the same room again, the sky color and brightness wouldn't be the same, the cars on the street would be different, the trees' leaves are different (some new grow, some old die, their color change throughout the tree's life). Because of this, focus on getting a "good enough" lighting and don't worry about replicating it down to every photon. In fact, the simple environment color we have now could be enough for a good lighting setup, but we'll see. I might decide to use an HDRi or SkyTexture. The beauty of CGI is that it gives you freedom to re-imagine art, and there's no shame in changing the scene to your taste, be in lighting or anything else.
Step 4 - Adding stuff
If you're doing an interior ArchViz scene, there's usually two scenarios you'll face: you're either replicating a very clean-looking room (like the one we're making), or it's a super old, moldy, rusty room that will be used in a horror game or movie. Sadly, it's hard for most people to do a proper old/rusty scene like my "Sad Clock" scene, and so the vast majority of ArchViz renders are of super clean rooms/houses/kitchens. It's not that artists don't want to dip their toes into aging their scenes - on the contraire, I'm one of those artists who badly wanted to do worn-out stuff, but in order to do that I needed programs like Substance Designer and Substance Painter, not to mention a better computer. Since I come from a poor background, it wasn't easy to buy a better computer (still not stellar though) and the programs. Now imagine having only your mother laptop as a starting point (an i3 with 2 GB of RAM available), which is what I had. It's a tough ladder to climb for most people, we need to prove our dedication in a very slow and tedious manner, so we start with clean rooms, do some jobs here and there, and slowly walk towards other types of renders.
With this in mind, most of my tutorials won't touch on Substance Designer or Painter for the time being. I want people to be able to understand my workflow, and 99% of what I learned with 3D was while using free textures/materials, so that's what I'll aim for now.
Since the room shape is mostly done, we go through the majority of the creation process: adding stuff. Now, most props are easy to model, but don't feel ashamed if you don't want to model something (specially a bed). Unless you have a program like Marvelous Designer, it's extremely hard to make good beds or clothes. So, for the bed. I'll use one that I have from a library.
But for our case in particular, I used this tutorial to create the curtains.
Most of the rest of the interior seems really easy: two lamps, two outlets, some picture frames, a nightstand and.... a weave basket ._. Huh, that's weird. Where's the other nightstand? Oh well, I'm also going to use a basket from a download. Or just no basket at all, that's gotta be so weird having a basket there. Either the person who lives there is single and sleeps on the other side of the bed, or he/she wants to torture their significant other with the smell of dirt socks in the night.
I'll try both ways.
After adding a bed this is my result:
Notice how one single item brings the room to life?
It's a bit different from the reference, but I like it! The real bed is quite tall. I don't have such a tall bed, so I'm sticking with this one. All I have to do is to remove the seat from the front, make the bed taller, and the bed part is done.
Alright! We're slowly but surely getting there. Only the bed has a material, so if things look a bit grey, don't worry.
Trust me, most of the objects that will make a visual appeal to the scene are already there. After all, each room has only a few objects that people associate with them. For example, the main purpose of the bedroom is to sleep on the bed, the bathroom's main purpose is to use the toilet and to shower, so on and so forth. If you nail these main objects, the rest of the room will naturally follow the path for realism.
Since the scene's most important asset is done, I only have a few things to add (and this will take most of the modeling/texturing part):
Some plants outside
For the rail window, Blender has two good addons for that: ArchiMesh and ArchiPack.
For the plants, you can try using the SaplingTreeGen addon;
For the outlets, I'll do some basic ones using the reference photo;
For the picture frames, I'll insert different designs in them ;)
For the balcony, it'll be super simple since it's mostly basic shapes.
Don't worry, I'll post screenshots of my progress, just as I've been doing so far.
Let's get to work!
A mysterious source of light?
As you can see from my render above, I'm still building the scene and testing the lighting. I've hit a problem: there's something in the lighting which we cannot see, there's something outside of the scope of the camera and we need to figure out.
As you can see in the real picture (1), the lighting is coming very uniformly from the window and the shadows can be very long for big objects (2). However, while the shadow being cast from my bed is correct to how my scene is built (just a wall behind the camera), the real picture suggest there's something else behind the camera that is casting light on the floor (3). My guess is that there's either a small window there (a common configuration in master bedrooms), there's either a corridor there where light is coming from (seen on this real-life example), or there's a lamp nearby somewhere.
It is true that there is something there causing this light behavior, but it's also true that we don't know what it is. Because of this, we must give ourselves the freedom to experiment with different possibilities, which is what I'll do for my next render. I'll try a small opening behind the camera - if it replicates the floor lighting behavior without disrupting the rest of the lighting, I'll allow it to exist. But before I do that, I need to nail down the lighting coming from the main window.
Remember how I said it's impossible to replicate a real photo's lighting 100%?
While I was able to get a good lighting coming from the front/main window, I'm still not able to nail down that lighting coming from the back. I was able to get close with a window on the back, but the orientation of the light coming from said window doesn't match the reference. I could rotate the HDRi so the light comes more at an angle (from right to left), but that would mostly likely ruin the light coming from the front.
Sometimes you'll hit a wall. I've hit mine: I can't reproduce the lighting on this scene, not with the HDRi collection I have (and in a short-enough time span).
The window I positioned is close the right wall, so that could be what's causing the light to seem as if it's coming from the wrong angle. I'll reposition the window and re-render. For now, here's where I stand:
A light at the end of the tunnel
It seems I've achieved what I wanted. Besides the window, one of the solutions I had in mind was to place a corridor behind the camera (where light would come from) or a door (with something lit behind).
My idea was to mimic a bathroom, and it seems to have worked "OK".
However, the light was too sharp and didn't look too natural, so I decided to try a small sliver on the wall. These are found next to some doors as you can see here. Since I don't know how it looks and what's behind the (possible) door, I had to do some trial-and-error. A short sliver worked fine.
Bellow is how it's setup.
And bellow is a render with it.
Only thing left now is to configure the lamps, after which I think we're all done with the lighting!
Step 5 - Exposure, not intensity
This is perhaps the most valuable lesson on this tutorial.
If you got this far, you'll notice I didn't mention the HDRi intensity. There's a reason for that.
HDRi's are by far the most realistic form of CG lighting there is. Nothing will ever beat capturing real light coming from real places and then casting them on your scene. Sure, they're not as flexible as e.g. the new Sky Texture, but the result is immensely more realistic (because you have real trees, real clouds, real plants, real sky, real sun, all captured by the photographer).
Considering the photographer knew what he/she was doing (gladly I've never seen a bad HDRi), you'll have a realistic lighting already setup for you.
"Well, it works outside, but when I go inside it's too dark!!!". Yes. Now let me ask you this: when you go inside, does the world intensity change? Of course not, it's you that change! :)
Your eyes change, not the environment. When you go inside, your iris expands, which allows more light to come inside the eye, which is why you see well when you're inside. That's what we have to capture in our 3D world.
That's why you'll never see me recommending people to change the intensity of the HDRi, but always recommending to change the exposure of their camera according to where the camera is located.
With that in mind, we're going to calibrate the interior artificial lighting now. We already have the realistic HDRi's light coming in, so how do we calibrate the lighting on the inside? The method may shock you.
Disable the HDRi
Yes, go ahead..... I'm not joking!
In order to properly calibrate the interior lighting, we need to disable the exterior lighting. We need to imagine ourselves in that interior, at night.
Once you have the HDRi (and whatever lighting is coming from the outside) disabled you can start turning your inside lamps on.
Start with low values. Remember, the world/exterior lighting is the majority of the lighting in the real and virtual worlds (around 80%?), that's why there's not much difference when you turn any light in daylight, because artificial lighting is overwhelmed by natural light.
So if we disable the HDRi, what do we need to do? If 80% of the lighting is removed, it's just like in the real world: if you go outside into a dark room, your iris needs to open to allow more light to enter your eye, and that's what we need to do, up our camera exposure. The exposure I'm using during the day renders is 4 (with a HighContrast setup). Here's what it looks like if I just disable the HDRi and render the scene.
Looks dull and dark, but that's because we lost the majority of our lighting. So to compensate, we bring the exposure up.
The lamp looks fine. Moving to the main light inside the room.
Personally, it looks OK. Not great, but OK for the high contrast scene we have.
So let's try it with the HDRi back on.
Oops! Exposure back down, now!
We're going in the right direction but I feel like it looks a bit dull. Personally, I would leave the interior lighting "as is", but, since this is a replication, I'm aiming to replicate the reference lighting, so I'll up the values a bit until they look similar.
I also feel like the real light color is a bit "warmer" (it's reversed, I know), so I'll change my values. Right now, my lights have a 3.700K temperature.
After a bit of tweaking, I feel like the lighting is getting close to the final version.
From here on it's only a case of minor material/lighting tweaks and modeling a few props.
I decided to try using a SkyTexture again, and this time I'm sticking with it. Since the main light changed, I need to bring my exposure way down (from 4 to 0.9) and re-calibrate my interior lights. This is how it looks now, with a few additional props added:
However, since I'm using a SkyTexture, the outside world has literally nothing in it. "One way to fix that would be to just place a JPG plane outside" <- is what NOT to do!
Did you know you can use two HDRi's in your scene? One doing the lighting (but invisible) and the other just for looks but doesn't contribute to the lighting at all?
Here's how to do it:
Purple is what will actually light the scene. It'll be invisible.
Red is what the background will look like. This does not influence the lighting.
UPDATE: Some users questioned what the nodes above do. Essentially, if I mix them in the traditional way (see the answer to this topic for reference), the main HDRi used for lighting will pass through the glass just fine, but the background HDRi won't. See:
In order to fix this, I need to mix the backgrounds again, but making sure the "Transmission" LightPath output is connected. "Transmission" refers to glass in Blender. This way, the background will pass through the glass - but if you don't insert the background again in the mix shader, it'll mix with a black color, that's why I added the background again in the mix shader.
After this, we're done with the world lighting and background setup.
PS: Keep in mind that this isn't needed if you decide to use a single HDRi for both lighting and background. It's only if you want to use two HDRi's that this trick is needed.
Step 6 - Final render and Final Thoughts
What you see above is the final raw render. There's no composition, no after effects. And while it can be improved to look more like the reference (specially in the background), the purpose of this tutorial is fulfilled: the are no major tricks to have good-looking interior renders. There are only simple concepts:
Calibrate your camera;
Use real-world measurements;
Use an HDRi or SkyTexture for main lighting;
Use PBR materials;
Understand the limitations of replications (lack of time, materials, textures, props);
Exposure comes first, not intensity;
If you have to insert artificial lighting (light-bulbs, for example), only insert them where you'd find them in real life;
Never use fake/invisible/fill lights;
Keep it simple.
Depending on the community response on this tutorial, I'm willing to make more. This was a very basic tutorial, but I have big plans for the coffee scene, the Forky scene, and the Lego scene.
Chose our next adventure! (Click on the images to see their respective ArtStation project)