The following tutorial is based on a real project. This unique tutorial will take users through the real process of creating shaders with bespoke physical properties and applying textures based on real photo references. The subsequent stage will introduce users to the fascinating process of creating and matching the overall lighting closely to the original photo reference supplied by the client while using state-of-the- art techniques to achieve fast and convincing results.
The final step will navigate users through the intricacies of using the best post-production approaches to help enhance and finalize the 3d shot at the highest level.
Most post-production effects implemented in this tutorial are kept in layers with their respective masks to achieve the ultimate control over the final results.
Also available in this series:
- Achieving 3D Realism: Reception Area Render With 3D Studio Max & V-Ray, Part 1
- Achieving 3D Realism: Reception Area Render With 3D Studio Max & V-Ray, Part 2
- Achieving 3D Realism: Reception Area Render With 3D Studio Max & V-Ray, Part 3 Lighting And Rendering
- Achieving 3D Realism: Reception Area Render With 3D Studio Max & V-Ray, Part 4 Lighting And Rendering
- Achieving 3D Realism: Reception Area Render With 3D Studio Max & V-Ray: Post Production
- Achieving 3D Realism: Reception Area Render With 3D Studio Max & V-Ray: Final Post Production
This tutorial is part of a project I have finished recently.
While projects often start from the pre-production phase, this specific tutorial will focus mainly on production and post- production process.
The pre-production process is not being covered simply because the client had already supplied me with a photo reference and all the necessary information to achieve acceptable results.
The initial brief was to incorporate the client’s bespoke design and lighting in a completely new office space. For that, at my request (plea), I was provided with a photo reference of one of their existing office design to be used as a reference.
The IES light pattern on the wall may not be coherent with the ceiling light model. However, it was specifically chosen to make the overall image more appealing and “sellable”.
Had I not been given the photo-reference by the client, I would have had to go through the entire process of pre-production, which consists of: sourcing for striking photos (Flikr, books, Google, etc) and help the client choose (i.e. liaise) the best photo/s to be used as reference for lighting, cameras, colors, etc.
This vital pre-production stage often takes from one hour, to few days, depending on the project.
Please check my latest manual book entitled “3d realism practical and easy workflows” to see the entire in-depth process of pre-production, production and post-production.
1. Let’s start by opening the file under the name of “Office close_Start.max”.
It’s worth mentioning that the camera and the render size had been chosen already during the pre-production process. After numerous trial and errors, the camera height was set to about 1.60/1.59 meters, which is about the standard eye level of most cameras. See fig1.0 and fig.1.1
However, some users or clients prefer a slightly lower or higher camera height depending on the effect intended.
2. The first thing to adjust is the “units setup” display function. This will prove crucial when creating real scale objects accurately, when measuring distances in the scene, entering bitmap values, etc.
To do so, simply go to the main toolbar and click on the “customize” tab, followed by choosing the “units setup” function from the dropdown list.
Its dialog box should appear. By default its “display unit scale” is set to “generic units”.
Change it to metric and choose the “meters” unit type. I normally work between meters and millimeters depending on the size of the object I am creating and the numeric length I am entering or measuring. However, you can choose the metric unit you feel more comfortable working with.
It’s worth noting that this action does not affect the scale of the geometry in any way, shape or form. It is only a guideline for metric display purposes.
See fig. 2.0 and fig.2.1
3. To ensure that objects merged/imported into this scene retain their original scale/size, we are going to open the “system unit setup” dialog.
Once opened, ensure that the “respect system units in files” function is enabled.
Please note that, the original “system unit scale” function should never be changed…unless there’s an exceptional reason to do so. See fig. 3.0
4. Prior to begin working on the file, it is common practice to quickly measure objects in the scene, to check if most objects have the correct scale.
To do so, simply create a “tape” helper and begin measuring objects such as chair seats (0.4m), door height (2.2m), floor to ceiling height, etc. If these measurements are far off from the normal scale, then it is worth re-importing/merging or re-modeling certain object/s, or the entire scene.
Our eyes can easily detect scale discrepancies…therefore often perceived unrealistic.
These precautionary measures will prove vital when creating textures, making the scene look believable, etc. See fig. 4.0
5. Next, we are going to load the v-ray rendering engine.
A- Open the “render setup” dialog by pressing “f10” key.
B- In the “common” tab parameters, scroll down to the “assign renderer” rollout and click on its “production” toggle. The “choose renderer” dialog should pop up.
C- Choose the “V-ray Adv 1.50.SP5” from the list and press “ok” to close the dialog. The v-ray renderer should load up. The version of v-ray may differ if working in 3Ds Max 2010.
However, since we are not using any specific v-ray features, the final render results should be similar. See fig.5.0
The next phase is to begin applying the textures.
It’s common practice to apply the basic shaders and textures in a “light free” environment in order to speed up the process towards finalizing the renders.
There are certain texture details such as chamfered edges (i.e. vrayedgestext) that can only be seen at rendering time. This specific phase of the process is to ensure that such effects are dealt with in an efficient and timely manner prior to begin test rendering the lights and GI (Global Illumination).
6. Also, set the “gamma and lut” values to about 2.2. The gamma often helps to balance the scene’s contrast (bright & dark areas). Darker areas of the scene often take longer to render without the gamma enabled.
The value of 2.2 is normally ideal and recommended by most reputable companies.
To enable it, simply click on the “customize” main toolbar and choose the “preferences” option from the list. Its dialog should open.
In the “gamma and lut” parameters, enable it and set the gamma value to 2.2, along with the “input” and “output” values. See fig.6.0 and 6.1
7. The first material to start with is the floor material.
Prior to opening the material editor, I normally choose the “compact material editor” type. To do so, simply go to the main toolbar. Click and hold the material editor icon, and choose the “compact material editor” type.
Open the material editor (m). See fig. 7.0 and 7.1
8. It is common practice to open in 3Ds max the photo reference/s of each material to be worked on. This is to help match the texture and its physical properties more closely.
To do so, simply click on the “rendering” main toolbar and choose the “view image file” option from the dropdown list. Locate and open the file under the name of “photo reference small.jpeg”.
See fig. 8.0 and 8.1
9. In the material editor, select an empty material slot and assign it to the floor object under the name of “Floors ”. See fig.9.0
10. Next, we are going to change the current standard material to a v-ray type.
A- Click on the “standard” toggle to open the “material/map browser” dialog.
B- In the “material/map browser” dialog, open the “v-ray adv…” rollout.
C- Double click on the “vraymtl” shader from the list. The v-ray shader should load up. See fig 10.0 and 10.1
11. Next, we are going to locate and apply a floor texture to the surface. Please note that the floor texture had been supplied by the client.
For hyper-realistic results, reputable companies often take a “flat on” photo of the surface without direct shadows. The photos often encompass large areas of the relevant surface…as opposed to high-resolution photos of small areas. This technique will ensure that less tiling is needed and more realistic details are kept in the original photo (i.e. dust, subtle discrepancies, etc).
Click on the “diffuse” toggle and double click on the “bitmap” material to load the texture under the name of “woodfloorBig yellow.jpeg”. See fig.11.0 and 11.1
12. Once the texture is loaded; in the “map: coordinates” rollout, sharp the texture by reducing its “blur” value to about 0.1. This action may increase the rendering of that texture slightly. However, it will improve the texture quality a notch…especially in areas closer to the camera.
At the moment the texture seems too big in comparison to the photo reference. To match its tiling size closer to the photo reference, we are going to first apply an “uvw map” modifier to the surface. See fig. 12.0
13. Next, set its “mapping” type to “box” and click on the “fit “button. The texture tile is looking much better now.
Finally, tweak with its U and V values in order to closely match it with the photo reference image. The values that worked well were U=8.0; V=3.0; W=1.0. However, you may try different values, if desired.
See fig. 13.0; 13.1 and 13.2
14. While the tiling size looks much closer to the photo reference, there’s a visible texture seam in the foreground. To move it away from the camera, we are going back to the “map: coordinates”, and move the “U offset” value to about 2.39. The seam is no longer visible to the camera now.
You may also want to move the “V offset” value to about 0.37 to match the position of the wooden planks closer to the photo reference. Please note that while these values worked well, you may also try different values to try different results.
Open the “render setup” dialog. In “common” parameters, change the “output size” width to about 500pixels, for quick test render results.
The “height” value should also change automatically. Test render the changes (Shift+Q). See fig.14.0 and 14.1
15. It is common practice to use the “color correction” procedural map on surfaces such as the floor. This is mainly due to the fact that floors often loose they original color when in direct contact with the lights and when reflections are enabled.
To apply the “color correction” procedural map, simply click on the “bitmap” toggle first.
In the “maps” rollout; under “standard”, double click the “color correction” procedural map from the list. See fig.15.0
16. The “replace map” dialog should pop up. Choose to “keep old map a sub-map”, and “ok” to close it. The “color correction” procedural map parameters should load up. See fig.16.0 and 16.1
17. Some of the main characteristics of a wooden floor are its slight reflectiveness and shine. We will be using the photo reference to emulate these physical properties.
A- Click on the “go to parent” button to return to the main v-ray parameters.
B-In the “reflection” group click and hold the “reflect” color swatch to bring up the “color selector” dialog. Black color equals to no reflection, and white equals to full reflection.
To enable a slight reflection on the surface, simply give it a greyish color by moving the arrow down a bit(R=96; G=96; B=96).
C- Looking at the photo reference, the glossy highlight of the wooden floor looks slightly diffused. To emulate that, first click on the “highlight glossiness” toggle to enable its numerical values.
Decrease its current value to about 0.55 to disperse its sharp glossy highlight. It’s common practice to closely see these changes occurring in the material slot thumbnail.
D-To control the blurriness of the reflections first enable the “background” button in the material editor slot. Decrease the “refl. glossiness” value to about 0.75. Note in material editor slot how the “background” thumbnail is gradually becoming blurry. You may try different values, if desired.
E- Finally, increase the “subdivis” value to about 35. This value will increase the rendering time of this material. However, lower values will yield very grainy glossy results.
Test render to see the results (Shift+Q). See fig.17.0; 17.1 and 17.2
18. The floor seems a bit bright now. We will leave it like that for now, and tweak it further once the artificial lights had been added.
A-Next, we are going to add a slight bump to the floor. Go inside the diffuse toggle and copy its diffuse texture by right clicking and choosing “copy” from the pop up list.
B- Go back to the main v-ray parameters. Scroll down and open the “maps” rollout.
C-In the “bump” toggle, right click and “paste (copy)” the texture. See fig.18.0 and 18.1
19. Inside the “bump” toggle, increase the “blur” value to 1.0. This is to prevent the bump from becoming too sharp.
Next, replace the current texture map with a jpeg under the name of “woodfloorBig yellow_Bump”.
Copying and pasting the texture diffuse values onto the bump values enables users to update the texture and the blurriness without having to tweak with the “offset” values. Test render the results. See fig. 19.0
20. The bump value seems too high in the test render. Change to about 3.0, and test render it again.
21. The next material to focus on is the glass table.
A- Select the object under the name of “table “, in the scene.
B- In the material editor, select a new slot and create a v-ray material as previously done.
C- In the “reflection” group increase its reflectivity by clicking on its “reflect” color swatch and changing its current color to light grey (R=96; G=96; B=96). One can later change these values if necessary.
D-To add a bit of shine to the glass decrease the “highlight glossiness” value to about 0.85. You may change this value if required. Note how the material is changing in the material editor slot. See fig. 21.0
22. To add a bit of transparency to the glass, in the “refraction” group, change the “refract” color swatch to white(R=250; B=250; G=250).
Next, change the “IOR” value to about 1.1 and enable the “affect shadows” function. This function allows shadows to be cast through the refraction (opacity). See fig.22.0
23. Assign this new material to the “table” object and enable the “background” button. Also, name this material: “glass table”. It’s good practice to name materials accordingly. See fig. 23.0
24. Test render the changes.
Most objects in the real world have chamfered edges. So it makes sense to also emulate such effects in cg.
A- While the glass material is still selected, scroll down to the “bump” function and click on its toggle to open the “material/map browser” dialog.
B- In the “material/map browser” dialog, under “maps”/”standard”, scroll down and double click on “vrayedgestext” procedural map.
Its parameters should load up. See fig.24.0
25. To see a close up render result of this effect, first isolate (alt+q) the table object and press “z” to zoom extent the selected object.
Next, in the top viewport, rotate the view and zoom further in. Unlock the camera view in the “render setup” dialog, to automatically change the view to “orthographic”.
In the material editor, change the “vrayedgestext params” thickness to world units type, and test render the results. See fig.25.0
26. The table edges are very apparent now. Try the “world unit” value of 0.03 and test render again.
In cases where one needs to use the standard bump material and this procedural map simultaneously, professionals often use the “mix” procedural map to mix both materials.
Finally, change the glass “diffuse” color to a dark green tone similar to the photo reference(R=1.0; G=1.0; B=0.0). See fig.26.0