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).