Making Of 'Say Cheese' by Vaibhav Shah
I was so inspired by water tanks in childhood; whenever I visited aquariums, I always found myself attracted to that one tank that was dirtier than the rest and in which a poor fish was trying to live. I always spent time observing the movement of water and its whirling effects. So I approached this project with the goal of creating a cool, dirty, flooded bathroom, in which a fish is trying to survive, in-between some leaking water pipes. Even leaking pipes blow air into water, which make sweet bubbles! This concept clicked straight away, and I started scribbling down some notes for the process ahead of me.
I decided that I wanted to make the image in the style of a portrait photograph - the kind that you mount on your wall. I was sure from the beginning about the concept and so I was ready to get to work!
Setting The Foundation
Before making any moves, I prefer to always start by making a little production chart for myself with a guideline for the project, which can help me to focus my time between personal and office work deadlines (Fig.01). Usually I spend two or three hours on my personal work each day. This is why I assumed I'd spend almost two weeks on the "Say Cheese!!" piece. I then started to make a rough list of the production stages that I thought would be involved in the creation of the entire scene, estimating the time as perfectly as possible.
After my rough calculations, I started to make concept drawings and considered adding lots of objects to the scene (Fig.02). I was thinking about adding more than two fish at one point, but it made the scene much too complex and unbalanced. I decided to spend more time on the concept design part than originally planned, in order to forge a clean, concise idea. I find that having a good concept gives me a greater understanding of the composition and camera view required in the 3D scene.
Every photographer's challenge is to show the intention behind the content they capture. In this piece, I tried to be precise and aimed for a fine layout setup where I could apply the rules of real photography to my 3D work. After coming up with a rough concept, I started to make an asset list of props, background elements, and rigged characters using my production guideline to help me in this part of the process.
After the concept phase, I really needed real life references to study the water effects, bubbles, gravel, dirty tiles - and more importantly the fish. I gathered all possible references from the Internet and even re-used some from my personal reference library. I found some very good references for the fish's eyes, and these drew me towards experimenting with them. The key to any character art is to understand the entire anatomy of your subject first and foremost. I therefore researched the anatomy of fish in order to better understand them, and thus be able to model and texture my character.
Modelling Incorporated with Dynamics
During the modelling stage, tricks and shortcuts are a major weapon to reach deadlines and keep to your timeline. I really love the modelling phase!
All models were created in Maya, and minor tweaks were done in ZBrush. According to my modelling list, I made the props first, because the background setup needed to be given priority. I made very simple and low poly tiles and the floor in a short period of time. Then, as per my references, I modelled the pipes as accurately as possible, keeping things simple according to logic and the desired composition (Fig.03).
After completing the modelling of the basic scene I then decided to make the gravel, which was tricky! I decided to disperse it through dynamics, and so made a small emitter, "particle setup" which could help me later on. With the collision detection of each object calculated (pipes, floor and tiles), gravel was placed perfectly across the floor and even along the pipe. To produce a natural effect, I used a Random Transformation (rotate, scale) script for the gravel, and had a result in just a few minutes (Fig.04).
The water level needed the right amount of attention to make it look amazing, so I made a pond fluid and a wake emitter for the waves. Once I was satisfied with the volume and level of water I converted the fluid into polygons for the purpose of Mental Ray shading (Fig.05).
Bubbles were made using the same process of dynamics; I simply put the emitter into the leaking pipe connection. I used an instance of particle dynamics to work out instanced geometries. With the help of mathematical calculations in the instance properties, the bubbles were a little skewed, pressed, and then randomly rotated and scaled properly (see Fig.04). Dynamics help greatly in situations such as this. As for droplets on the tiles and bubbles for the water level, I used a paint effect brush with a pre-defined visor brush, called "water droplets" (dynamics bubbles, paint-FX).
It was then time to make the leading star of the scene: a common tropical fish. I used a few references to understand its anatomy and skin structure, as already mentioned. I also loaded a reference image into the front camera for a better guideline of proportions. First of all, I made a very basic block-out stage of the fish model (Fig.06), and then took it into ZBrush for some minor tweaking and proportion checks.
For better results in ZBrush, I paid attention to the topology according to areas where details were needed. Topology and flow really matters when characters are going to be animated, with the support of all types of maps, such as displacement, normal, bump, cavity, etc. Before starting sculpting I took UV's of the exported ZBrush fish object in the standalone UV Layout application (Fig.07).
For the upper, lower and tail fins I used the hair system, with the help of NURBS. The process was very manual, but it gave me the necessary soft rays - or dorsal spines - in the perfect places. I had to hold Shift and make numerous isoparms and then duplicate the curves and convert them into hair and follicles with the "convert curves into hair-system" function (Fig.08). Once again, I converted the hair into polygon geometry for better optimization, and then exported the fish model for more detailed sculpting in ZBrush.
Well, this was the fun packed stage of the project! However we should be aware of some prerequisite steps before we move into ZBrush at this stage, such as having clean topology, clean UV's (if you want to use any maps), equal spacing of quads, least number of tri's, and so on.
I decided to add as much detail as possible to my fish in Maya. I started sculpting with the Standard brush and Inflat brush, to catch up with basic details in the first level of subdivision. I kept adding more detail, particularly on the fins, gill cover, back fin, soft dorsal fin and caudal fin area within the second and third level of subdivision (Fig.09a & Fig.09b).
I usually shuffle from each level alternately. Once I was satisfied with the level of detail, I took the fish into ZBrush to sculpt the final areas such as creases, imperfections and the scaled pattern. I also used the layers option for more detail on the skin pattern, with the help of an alpha brush.
After happily sculpting, I decided to use masking with cavity and enhanced details (Fig.10). Once that was done, it was then time for posing, so I took it to the lowest level and exported it to Maya where I rigged it, and then once again exported it back to ZBrush. I'd already decided on my camera angle, so I didn't need to concentrate on asymmetrical shape.
Texturing & Shading
Texturing and shading is one of the most important stages in the creation of a 3D artwork - the entire look and feel depends on it. I assumed major objects would be shaded with procedural shaders, so I used a very basic single switch node for the gravel, and used three little scripts for randomisation. I assigned a user defined attribute "vcoord" to N selected objects using script. I connected geometries with selected single switch nodes in hypershade using script. I also randomised all selected geometries attributed with "vcoord" using script (Fig.11).
For the pipes, I felt inspired by old copper with that moss-covered effect. I encountered a few difficulties when I was rendering the pipe shader; I found some strange dullness in the overall colour because of the "proxy box" caustics photons. I solved it by tweaking the base colour and transparency in the layered texture nodes.
As far as the bubbles were concerned, I made two different shaders - one for surface bubbles and another for water bubbles. I used different Mental Ray dielectric and DGS materials for the bubbles. I discovered a problem with the water droplets on the tiles: they were given a highly intensive glow because the key photonic light was linked to them. Refraction and reflection was tricky to handle. Basic properties were used for the various water density, bubble and droplet properties (Fig.12a).
I used ZBrush for the fish and tile texturing; in particular I used the ZAppLink plug-in for easy texturing, which can be interlinked with Photoshop and ZBrush (and vice versa) (Fig.12b).
I made specular, reflection, and all three skin layer maps from ZBrush for the MR SSS shader in Maya. I noticed how glossy fish skin is, so I needed to make a glossy map to represent this. The SSS shader's specular attribute had quite detailed options in order to generate the skin as realistically as possible (Fig.13a & Fig.13b).
Lighting & Rendering
I used Mental Ray and Maya procedural shaders for the whole scene, which gave me very nice results. I used a basic three light setup - photonic key, fill and rim light. I used a key photonic light for the whole layout and the other two lights were just linked to the fish because of the back scatter effect.
I used GI photons for better results in the scene. Because of Mental Ray's dielectric shader and DGS refracted and reflection values, I also used the caustics photons. I was excited by the double-bounced shadow layer when light reflected through the main photonic Light - it gave me the real water shadow effect that I had desired (Fig.14).
I made a proxy/dummy box under the water level to the floor with refracted glass and assigned a transparent shader to it. This was just for the refracted effect. Overall, I tried to make the lighting setup formal and simple, but in some areas that was a little tricky.
I faced a challenge when rendering the occlusion pass, especially where refraction appears in the underwater portion. A simple solution was to manually assign overrides in each light property and shader (Fig.15); i.e. in the occlusion pass, I made an AO shader - the proxy box had the same refracted shader, but I assigned an AO shader to all other objects apart from "proxy box".
I always prefer to review my work before I finish it, so when I almost had the final rendered image, I made some self-corrections and reviews of the image (Fig.16). According to my own self analysis, I found some minor creative corrections and changes. To fix them, I decided to go back to the texturing and layout stage, where I rapidly changed the layout according to my reviewed corrections. I then came up with a very appealing composition (Fig.17). Production can suffer if you find some problems, either technical or creative, after rendering passes. This is why I find the self-review and correction stage to be very reliable for any production.
After rendering each pass separately, I took all of them into Photoshop and started to tweak the values according to the subject. I chose to use Photoshop for compositing because I wanted to make the image like a standalone photo - one that you might find in a frame. In the coloured scene, the threshold colour histogram was appropriately curved and balanced, so it was easy to convert it to black and white without losing any minor details. I had always imagined a simple monochromatic mood, but I also had some curiosity about achieving a real fish skin and water effect in colour, as well. Later on, I did some paint-over work to highlight the skin. I also went back and made some other basic render passes for the final picture (Fig.18).
I hope this "Making Of" article has been informative and interesting for you. It was a lot of fun to create! If you have any questions at all, please feel free to contact me. Thanks for reading!