Rayan Zomorodi showed us the workflow behind the Windowsill project, explaining how he made the surface imperfections and tweaked rendering settings to make it so photorealistic that it was removed from the Blender subreddit.
In case you missed it
More from the artist
Introduction
I'm a Norwegian cinematographer who's been interested in 3D for quite some time, I've especially been curious about experimenting with lower-budget VFX in fashion projects and music videos. But I've kind of struggled to find like-minded 3D artists who are skilled enough to make impressive works but who are also not financially unattainable (I may not have been searching well enough. though.)
So about 6-7 months ago I decided to pick up Blender and give it a try for fun. I'm fond of learning new things in general and I do enjoy the process. But 3D work has always seemed intimidating to me.
Anyway, I started with the donut and then a few other beginner tutorials before I ended up getting hooked. I've had lots of film/photography aspirations and ideas throughout my career, but they've mostly been difficult to do because of financial restrictions, gathering the right group of people, etc. So the feeling of just being able to sit by myself and create whatever I can think of has truly been amazing and enchanting.
In the beginning, I was afraid of getting too stuck in only following tutorials, but after a while, I kind of naturally stopped doing them and started working on my own stuff. I decided to tackle it the same way I've learned any other software – by just learning as I go and pursuing learning material whenever I get stuck on a problem, instead of following full step-by-step tutorials.
I've only really worked on one other public project in addition to the Windowsill project, which was a low poly PS1-inspired video for a good friend of mine who is an artist by the name of Darkowa. In addition to those two projects, I've probably done about 15-20 smaller personal projects that I haven't shared.
I truly don't feel like I'm even close to mastering Blender at all, as I mentioned earlier I truly do enjoy the process of learning and I'm honestly learning something new super basic thing I didn't know about every day I work with Blender. The beginner tutorials I followed when I started out were Blender Guru's "Donut" and "Chair" tutorials in addition to Grant Abbit's "The Old Man" beginner tutorial.
In addition to those two, I've watched heaps of videos that explain certain things about 3D/Blender, I strongly recommend Blender Guru's almost one-hour-long "Photorealism Explained" video for example.
When I was getting the hang of the most basic aspects of working with Blender, I started working on my own projects. I thought about how an artist usually begins their journey when they pick up a new art form, like someone beginning with oil painting. I figure that most usually start by trying to recreate real life. To understand how the real world works and looks and try to translate that into a 2D canvas for example. So I basically decided that I was going to start the same way, that's how the Windowsill project began, by me just starting to recreate something I had access to every day and something that wasn't totally unachievable. Choosing something that I had continuous access to allowed me to reference it mostly by eye.
As I was working on each object I continuously hit new obstacles that I had to figure out, like how to model the HomePod Mesh or how to sculpt a candle.
The Windowsill Project
I approached the project by making a note where I listed every single object that I wanted to include in the scene, and I just went through and modeled every single one.
Almost every single object is modeled with the Subdivision Surface modifier in Blender, except for the candle, which is sculpted. One of the challenges that I can remember while modeling was how I would get the pencils to fall naturally into the cylinder. I tried to do a rigid body simulation but I struggled a bit with getting it to work properly with the thinness of the pencils so I ended up using an addon called "Physics Dropper", which worked perfectly.
Whenever I couldn't find the solution to the obstacle that I met, I tried my luck in the r/BlenderHelp subreddit and I always got lots of support there. The Blender community on Reddit is awesome.
After finishing all the objects, I modeled the windows, windowsill, and a basic version of the whole room. I even 3D-scanned every other large object in the room as well, like the sofa, desk, kitchen, etc. Because I had a plan that those items could be out-of-focus elements in the background of the macro shots if I wanted to shoot an angle toward the room instead of toward the window. I actually tested that a bit and it looked surprisingly realistic even with the terrible low poly, glitchy scans covered by bokeh in the background.
After modeling everything, I started working on their materials and textures. At this point, I had the most experience with modeling, so I almost started from scratch experience-wise with the materials and textures. I mostly used high-res PBR maps except for the lighter and the Muji pens where I had to make a sticker design in Photoshop.
When I was happy with the materials and textures, I started adding tons of surface imperfections. I masked fingerprints, dust, dirt, spillage, etc. I tried to mask the imperfections where it made sense, like putting the fingerprints on the glass where someone would actually hold the glass in addition to masking everything on the object materials themselves. I used the Particle function in Blender to make lots of tiny dust and hair particles and made them stick to some of the objects. I used weight painting to stick them to wherever made sense.
Rendering
As for the rendering pipeline, I knew that I wanted to have a realistic camera movement to even further sell the illusion of reality. But I didn't want to add lots of chromatic aberration, to lower the dynamic range or to shift the exposure like it's shot with automatic exposure. I wanted it to look like it was shot on a mirrorless camera or a cinema camera with a super wide-angle lens.
It was super easy to connect the VirtuCamera iPhone app to the plugin in Blender and record the camera movements. I added motion blur and I keyframed the focus distance where I saw fit and that was it.
I took an image of my girlfriend, which I cut out as a transparent PNG, and I simply parented that to the camera's movements to get realistic reflections and shadows of a person holding the camera. Asbjørn Lote had a great talk at the Blender conference where he discussed this topic called "The Photorealism Mindset: What About The Physical Camera?"
I found this free rainy window shader earlier and I wanted to test it out, I put it on the windows and it kind of worked okay so I just let it be. I think it looks alright, but it's static so it doesn't really look that realistic in a video. I mixed the window shader with a Transparent BSDF and I used the Light Path node set to "Is Shadow Ray" as the Factor on the mix shader. This made sure that the camera sees the window shader on the windows, but when light passes through them from the outside, it passes freely through the Transparent BSDF.
For the denoising, I experimented a bit with denoising the objects in the scene at varying degrees by using the compositor. Like for example denoising the walls more than the lighter, since the lighter has a lot more detail than the walls. But I ended up dropping that since I felt like I noticed it too much, the walls looked kind of gooey while the objects looked noisy. But it's an interesting method that I may try again on another project.
I spent quite a while tuning the sample rates and the light bounces. There are lots of great videos on YouTube that explain these in detail. But I ended up going with a noise threshold of 0.0360 and a max sample rate of 2600 and I set all the light bounces except for volume which was at zero to ten. I experimented with going even lower on the bounces but some of the objects ended up getting too dark, I think that's because the glass materials require enough bounces to be lit up.
I used an HDRI for the main exterior lighting in the scene in addition to the light bulb inside the lamp shade, which has an emitting material connected to a Blackbody node so that I can control the color temperature. I struggled a bit with getting enough light in the room, setting the window shader correctly as I mentioned earlier helped with that, but I also set a light portal next to the windows. If I understand it correctly, the portal tells Blender that it only needs to calculate and focus the light rays coming in through that portal (and not all the other ones bouncing around outside the room).
After that, I just had to tweak the sampling rates and the light bounces to get it right.
Conclusion
I spent about two months on the project. It took this long because it was a learning project for me, as well as having a full-time job and working on it a bit on and off.
My advice to others would be to utilize the amazing access we have to information – both in the way of learning material on the web as in videos or articles but also by connecting with others and learning from them.
I've learned a lot from Reddit both by asking questions and by reading through others' questions being answered. It's been a humbling experience to get so much support and feedback from a huge group of people I've never met.