Here the project: Assemble.
I've use PRman for my own hobbyist work nearly one years already. I've used several engines before, but PRman gives me the best image quality and features, so I stay here!
I set several goal for this project, mainly around my Renderman (RIS) skill.
- Basic color scheme and composition
- Bring the idea to live, use PRman tools properly and effectively.
- Understanding of optimization on heavy scene with limited resource (with my 12gb ram computer)
- Update my knowledge on PxrSurface (i use PxrDisney all the time before, but I see some limitation)
I want to bring the idea of model kit and real racing car together to make something interesting.
Lets go deep into it...
Part I-a Staging composition
Rule of third is always a good starting point to look at when I'm doing a new piece of work. The race car is the main subject of my scene, putting the car under the second vertical line can make audience concentrated on the car itself without being disturbed by the environment.
Staging of the scene was followed by the Rule Of Third.
Part I-b Color composition
Besides of stage composition, color was also used to emphasize the main object to make sure audience's eyes stay on the car. Since the livery design was blue, i use it's complementary color Yellow to make the car more outstanding.
Simplified color design of the scene.
Part II Pre-lighting
I love experimenting with different styles of light. Each lighting gives me a completely different story of the scene. To think about the lighting, we always start with a traditional three-point light which gives the depth of the object. Scene render would be a little bit different from normal studio three point lighting. To make a reasonable light set, scene settings should be the first priority of consideration. In the scene, there is a window in the right-hand side, so there should be a strong light comes from the windows as the key light source, hence the bounced light became the key environment light or called fill light.
I've try different light condition such as sunset and midnight. I love the atmosphere created by the flashlight (which is the new key light source), but it is not quite suitable for my story so i decide to save it as a copy (may be use the idea next time) and keep using sunset version.
In this situation, PRman gives me a great tools called Renderman Light Lister, which helps me to bookmark different version's of light sets and switch with them in real time. To use the light lister
- Add your lights whatever to your scene
- Set your light parameters like intensity or exposure.
- Goes to Renderman shelf tool, click the light bulb icon to open Renderman Light Lister
- Select the lights, click + buttons to bookmark your favour.
- Switch between bookmarks to preview your versions
- Repeat the above steps until you get the best/approval result.
Part III Building assets
1. Modeling with PRman Subdiv scheme
This project can be quite challenging because you need lots of assets to support your scene, not just the car. I want my assets can be re-use in my future project (Asset library) so I set my asset quality to be medium-high quality. Because of that, my scene would be very heavy due to the quantity of assets. To model those assets, I use a minimum of polygons to build accurate geometry. Then I can able to use PRman's adaptive subdivision feature to adjust the quality by the importance of active pixels. To get the best quality of Sub-D mesh is to avoid N-gons, poles and triangles.
2. Shading with PxrDisney
Assets shading would be quite different from main object. For main object, i would like to use PxrSurface for maximum features. For assets, I want my assets can be easily switch to different PRman supported 3d packages such as Blender and Houdini thus I use PxrDisney. PxrDisney would be the simplest way to used in modern PBR workflows. I keep all my assets within Metallic/Roughness styles. I connect my Albedo, MetRoug*, Normal and displacement map into baseColor, Metallic, Roughness, Normal, Displacement scalar socket respectively inside PxrDisney.
*Note: MetRoug map refer to Metallic and Roughness map. Red channel presenting Metallic and Green channel presenting Roughness. This will be discuss later on optimization section.
The example of using assets in this project.
Why I don't have PxrDisney?
PxrDisney was switched to Renderman lagacy since the release of Version 21 with replacement of PxrSurface. To use PxrDisney, Go to Hypershade > Renderman > Lagacy material > PxrDisney.
Part IV Shading/Baking with RIS
Since the big update of Version 21. A brand new shader was ship within it. The PxrSurface. There are few challenging to shade with this scene.
Iridescence glass and metals
There are mainly two types of object needs to be add iridescence property, glass and metals. It was due to a physics phenomena called Thin-film interference to leads a rainbow like reflection. There are many living example with this phenomena such as bubble soap etc.
Thin-film interference is a natural phenomenon in which light waves reflected by the upper and lower boundaries of a thin film interfere with one another, either enhancing or reducing the reflected light. When the thickness of the film is an odd multiple of one-quarter wavelength of the light on it, the reflected waves from both surfaces interfere to cancel each other. Since the wave cannot be reflected, it is completely transmitted instead. When the thickness is a multiple of a half-wavelength of the light, the two reflected waves reinforce each other, increasing the reflection and reducing the transmission. Thus when white light, which consists of a range of wavelengths, is incident on the film, certain wavelengths (colors) are intensified while others are attenuated.
Thin-film interference effect was basically formed when applying an anti-reflection/frosting coating to a glass surface such as ITO defrosting coating used in the plane or race car. For metals, heat-oxidized metal forms different kinds of colors due to the differences of temperature.
To achieve the look of thin-film, there are two ways
- Use iridescence parameter inside PxrSurface
Use artistic mode and experimenting the parameter of Primary color and Secondary color.
- Use PxrThinfilm node as reflection edge color.
Use PxrFractal noise (or any procedual noise) to drive the thin film thickness.
If you want to get even better result :
- Add a PxrBakeTexture node to your between Pxrthinfilm and PxrSurface
- Use Bake render in renderman tab to bake textures
- Open the baked texture with your favourite texture paint tools
- By adding or subtracting thin film effect refer to your art direction or favour.
Translucent masking tape
Duct tape or masking tape is a universal rule for fixing anything in anywhere. So let's do a duct/masking tape effect.
I've try both translucent method and refraction method on tape shading.
- PxrSurface - Refraction version
In glass parameter,
Thin option enable
- PxrSurface - Translucent version
In Diffuse Parameters, use Transmit Gain to get a translucent appearance.
I like to use PxrFracal noise with Remap to drive the Transmit Gain to get a variation of translucent intensity.
Part V final Lighting with RIS
Now I have to bring all my resource back to my final image. But there is a huge problem. Slow IPR
My Computer Spec:
- 4 Core 4 Treads CPU
- 12GB DDR3 Ram
- 7200 HDD Hard Drive
- 14 million polygons with subdivision surface (without displacement)
- 140 million polygons with Displacement object
- 200+ 2k-4k textures (5GB+ texture caches)
To solve the problem, I build a proxy model for my scene (10k polys) to get a very quick respond IPR. After my lighting is done, I can switch back to my High poly model to fire the scene.
Since shaders and textures got excellent consistency after lots of tests, I only have to focus on final lighting quality, so proxy model will be enough.
Part VI Render optimization
After several render test and diagnostic, can be summarize as follow:
A.Ignition of render was really slow (with very low CPU utilization) .
Potential reason : Too little cache was allowed to use.
- Increase texture/tessellation/opacity cache.
- Un-check Lazy Rib. Sometime re-generate rib can make the ignition of render faster, especially heavy geometry scene.
B.Ignition render was really slow (General situation) .
Potential reason : Renderman need to generated .RIB and .tex file in system backend.
- Use Lazy Rib option to cache Ribs
- Use Renderman TXmake to pre-generate .tex files (very useful in my case because i got 200+ textures)
C. Image was too noisy after render 45 mins.
Potential reason: I've use textured light source
- Disable Localized light samples. Use custom settings for Multi-Importance sampling. (if you not familiar with this, don't use this method)
D. Render was too slow due to high GI bounced
Potential reason: Lots of bounces are inefficient / wasted.
- Use 2 specular, 1 diffuse bounces for general, 10 maximum light paths
- Add Renderman attribute to Glass/Transmission object to use 10 specular, 10 diffuse bounces.
Part VII Compositing
After the render is done, time to composite it. Traditionally I love using LPE pass to separate objects and light path. I've set 60+ LPE pass before render. The pass was completely eaten all my Rams(12GB) after 15mins of render. So I can only use basic AOVs for compositing.
I've to render twice for this scene, one for background, another foreground. I want my foreground to get more bokeh so 2 render settings in total.
So that's it. So i hope these can help you.