June 30, 2021
This is my grandmother's 35mm film camera. I found it in the attic a few years ago and I immediately loved it ... so much story in the textures, materials, and wear. I loved it so much that I decided to translate it to 3D, here is my attempt!
I shot my references using a Sony A7RIII and a Sony 90mm macro lens. At the time when I started the project I was experimenting cross polarization etc, but was not used on that project for texturing. Only the backplate of the camera was captured and converted to a texture, I also extracted a mask for the glue residue on the front top of the camera. Now if I had to shoot some reference I would do it properly using a mcbeth and controlled lighting environment. You should check out Timothee Marron’s blog on his creation of a lookdev set. This is definitely the right way to approach lookdev for existing objects.
Modeling the camera was definitely a challenge. I wanted a model that worked in any conditions, and I love when details like text incrustations are modeled, it’s very satisfying and it makes texturing easier. Modeling the text was a time consuming process as it took approximately 60+ hours. I also spent a lot of time just looking at the camera, counting each spike on the control wheels or just reviewing my work. I think I spent something like 300 hours on that model, scattered over 3 years during my free time. I took some breaks, erased and restarted a lot of times. I was just taking my time to do it well and I think it paid off! And as a passion project, there was no reason to go fast.
I decided to add dust geometry because of a Joke by a friend, Valentin David (he does amazing stuff using houdini, he also helped me with this setup). He told me if you model all of these details, you should also model dust. Ironically it was not a bad Idea! And RenderMan handled the complex geometry very well.
My process for the dust was very straightforward. I took a picture of dust by emptying my vacuum cleaner on a glass plate, then projected it on a subdivided plane, cut the geometry using the dust mask, and optimized/sorted the dust grains. I generated a proxy of the camera with no inside faces or interior geometry, then created a dust mask in substance painter using a very simple generator and some imperfections.
I scattered the dust on the camera in houdini using that Substance mask. The end result was 1.5 millions dust grains on the camera, plus 2 millions dust grains on the wooden block. The total polygon count of the dust is about 29 million polygons.
Only a subset of the dust geometry was included with the available Maya project...but you can generate your own dust with the supplied Houdini project.
I was very pleased that this process added a lot to the final renders. For the example scene, I divided the dust grain polygon count by 6 and reduced the number to 500K. I also removed the dust on the wood block in order to have a lightweight file.
UV’s are always a critical part that I always tend to redo ... in fact, I restarted the textures and UVs many times using different processes and softwares.
The funny part about it is that the final UV layout was made in 30 minutes using unfold3D at a friend’s house (thanks Valentin David again!). I kept it because this layout was fine, definitely not perfect but it does the job.
I used the auto layout tool, a tool that I don't use anymore because the ratio may vary a little between tiles, it may be annoying in some situations. I chose to sort the tiles by materials, my ratio is about 500px/cm in 8K, camera width is about 12cm.
The texturing was super fun. I took a lot of time to think about a good workflow for texturing and shading the camera. I did several tests with Mari and Substance and I decided to go with Substance because the asset had only 10 udims and I wanted to use this project as a learning experience.
The camera is 90% made using procedurals and materials generated from scratch in Substance, at this time I wasn't loving painting at all, everything was just about procedurals, that's a bit ironic but I only painted 3 masks and 1 layer for the whole project. After joining Framestore's texturing department, my perspective has changed as I've learned a lot from the amazing texturing team there. They taught me to love painting textures, I changed my mind about a lot of things related to texturing and that's awesome, there is an amazing team of talented people there!
I have been using exclusively the overlays/imperfections textures from megascans.
By using only tiled maps, I was able to export 8K maps with very crisp details.
The Substance viewport was helpful to set up roughness values.
I intentionally pushed normal/bump details to have some spare range during the shading process, due to resolution limitations in Substance's viewport.
I created two substance scenes, one for the camera and one for dust/rust masks, in order to keep lightweight files. The main scene is about 38GB.
By generating these I was able to only tweak a mask in the layered shader system to add or remove these materials.
I always use layered shaders for surfacing, that’s why I am very excited about RenderMan 24 and the new MaterialX Lama system, the current system can quickly become busy, especially in Maya’s hypershade ... but when you keep it simple without intensive shading it’s very straightforward. I love the fact that RenderMan gives you the choice between artistic and physical for each specular lobe.
Nothing fancy was used for the shaders, texture maps were directly plugged into the layers, I only used PxrRemap for adjusting layer masks. By avoiding intensive shading I managed to get short render times!
Exporting the maps and converting the .tex was seamless and I was able to iterate very quickly between RenderMan and Substance!
I converted the maps in ACES using the amazing and free PYCO tool from MrLixm.
I worked on a setup for lookdev in RenderMan, I was able to reference it in any scene and it worked seamlessly. It consisted of an infinite grey 50% constant world that does not contribute to reflections and a scalable ground area where your asset sits, I am still adding and removing features at this time. The rendertimes improve a lot as you compute only a small part of the ground and your asset, all the pixels in the background are very fast to sample as it is a gray constant material.
I tidied up everything in the “settings” curve attributes available in the camera.
To change the HDRI I was just using the light editor in maya.
I was very pleased to see how the dust was reacting, especially during animations. The dust shader is using a simple color and the double sided transmit gain attribute in the diffuse lobe to add some translucency.
Lighting the scene was very straightforward. My intention was to achieve the same feeling I had when I discovered the camera in my grandmother’s home, where it’s very dusty and woody. I thought it would be nice to translate a sense of warmth to the colors. As the camera’s materials are rough, lighting the asset was not too tricky except for the lens.
I linked it to an HDRI from Jorgen Herland (which I was not able to redistribute with the project files) and disconnected all the other lights, then tweaked the intensity to match the overall lighting. I used 4 diffuse bounces to add warm tones to the wood and 15 specular bounces to get appropriate reflections for the lens. This helped increase realism ... and RenderMan handled it very well!
Compositing was made in Photoshop/Camera Raw. Basically, I used some curves for color correction, plus glow/chromatic aberrations.
I always hand paint the glow for still images, but in this case I used the glow mask to input more chroma smear, this is generally a type of chromatic aberration harder to remove, but It gives a nice realistic feeling to the image.
Now for some beauty renders!