Making Of 'Art Class'
After coming up with the initial idea for a scene, I like to first do some work on developing the overall look and composition of the image in Maya. The aim of this phase is to block out the shapes, camera and lighting early on and get these elements working together nicely.
This part is the equivalent to a 3D sketch for me, and although many of the elements will be replaced later on, I find it valuable to work out the composition and experiment a bit with a simple version of the scene.
Also I find that by working like this, I have a better idea of my scene before getting into final details. That way I can better choose which areas benefit the most from extra attention to detail, and avoid wasting time creating things I later find I don't need.
Part 1: Drafting the Shapes
First off, as I'm making an indoor scene, I block out the walls with a basic elongated cube shape and create a new camera positioned inside it.
Next I create some basic poly shapes as a quick way to visualize the main forms inside the room (Fig.01).
At this stage I already have a few ideas for the objects I'd like to see in there, such as a black board, desks, chairs and toy boxes. I quickly make some basic low poly representations of those objects as a starting point to work out the overall weights and masses of the scene's composition (Fig.02).
Usually I just start with whichever primitive is closest in shape to what I want to make, subdivide it a bit, then move points and extrude faces until I have a reasonable representation of the shape I want.
I like to stay low poly for this stage so that I can play around with scale and form pretty quickly.
Once I feel like I have a decent arrangement, I usually add some lighting to start to get a feel for what part the lighting will play in the composition.
Although a lot of artists I know prefer to leave lighting until the latter stages of a project, I firmly believe in lighting early. The reason for this is that having a decent idea of what the lighting is doing can be a big help when it comes to working on other parts of the scene.
If you were to fully model a scene and be tied to a layout that you don't want to change, it can be harder to find a light angle that gives the perfect shading to the scene and draws attention where you want. It's nice to establish your lighting early and then have the chance to work objects, layout and camera into the lighting, rather than the other way around.
At this stage I'll use a simple lighting setup to allow for quick iteration and fast render times (Fig.03). Later on I'll replace most of this lighting with something a bit more complicated, but at this stage I'm just trying to work out a light angle/color and intensity combination that gives the best shape and shading to my quick geometry pass.
One trick I like to use for the first lighting pass is to plug an ambient occlusion texture node into the ambient color of the default lambert material to get some basic fill lighting in the scene (Fig.04).
For this, I make sure my renderer is set to mental ray and then find the mib_fast_occulsion node in the mental ray > Textures section in the Hypershade. Once I create this node, I drag it into the ambient color section on the default lambert material. I can now make adjustments to the light color by changing the Bright value in the ambient occlusion node.
I next add a standard Maya directional light with Ray-traced Shadows turned on to represent sunlight coming into the room. I'll also cut some windows into the walls of my room shape using the Add Edge Loop tool to subdivide the walls a bit and then delete the faces where I want the windows to be.
The position of the windows and angle of the sunlight light are both important parts of the composition. I like to adjust both to try and find the best results. For example, widening or shortening a window to control the shape of the light hitting inside the room.
It's also worth trying a few different combinations of light angles and window positions/sizes at this stage. Even though I may already have an idea in my mind of how the light will fall on the scene, sometimes you can get some nice results with trial and error. I also experiment with the color of the key and fill lights at this stage to start to set the mood for the scene (Fig.05).
I then add some area lights to simulate light bouncing off surfaces and coming in through the windows. I place these lights near to where the sunlight is landing in the scene as I'd expect to see a lot of light bouncing around there as well as the areas around the windows. When I'm happy that I have the lights in the right positions, I move on to experiment with the color and intensity of all the lights I've added until I feel I have the right mood for the scene (Fig.06).
Finally, I create some geometry to represent blinds over the main window. I felt that it would be helpful to have some break-up of the light coming in through the window. This adds some nice shadows and is a good way to help the light describe the shapes of your geometry (Fig.07).
The main aim for me is to have the lighting and the shapes working together to lead the eye of the viewer into the image. I usually try to lead the eye to a point of interest or key area. In this scene, I've tried to make a center of interest at the bottom left of the blackboard, and used light and the angles in the layout of the shapes to point the eye towards this area.
Part 2: Refining the Models
For this scene I keep the modeling fairly simple and use basic poly modeling and subdivision techniques. I want to be able to quickly add a lot of objects into the room so I try to avoid complex models and sculpts, and instead go for a clean, cartoony look.
Most of the objects in the scene start life as a simple primitive and are extruded/cut into rough shapes, and then smoothed and refined with the Edge Loop tool.
To tell the story of the scene and add some personality, I want to make sure I capture the feel of a lived in, actively used space. A lot of this can be done by adding some clutter to the scene and paying attention to how smaller objects are placed.
I find the trick is to think of little stories or scenarios that might take place in your environment and to imagine how real people would use and place the props that you have in the scene. The aim is to add a bit of natural chaos in the placement of the objects.
One strategy that works well in this situation is to make sets of objects that can be duplicated and reused to quickly build up clutter in the room. For example, the toy bricks I have in my scene are modeled very quickly from a beveled cube and several beveled cylinders. These can be scaled to different sizes, given different colors and then used in groups to add some clutter around the room (Fig.08). I use similar sets for the toys, paints, crayons and other art materials, so that the scene soon becomes much busier and has a bit more character (Fig.09).
While working on the objects and clutter I also usually start some early texturing work by blocking in diffuse colors on some objects, as it makes sense to do this before duplicating and placing these objects. However, I prefer to leave the majority of the texturing and shading work until after I've been able to finalize the lighting setup, so I'll touch more on this part of the project later.
Part 3: Final Lighting
Now the room is modeled and filled with clutter, I want to move on to finalizing the lighting setup that I'll be rendering the scene with.
For my lighting I want to capture the realism that we'd expect from real sunlight, but I don't want to be constrained artistically by simulating real life exactly. This is why I find it useful to do a basic lighting pass first and work out what I want from the lighting in terms of composition and color.
To help with the realism, I want to work in linear space. If you are unfamiliar with Linear Workflow (LWF), the basic idea is to counteract the fact that your monitor has a limited range and doesn't show you the lighting information as the renderer sees it. Lights may appear to fall off too quickly or you may end up increasing intensities of light higher than they should be to get the sort of decay you want, which can lead to unnatural results.
This subject is covered really thoroughly in many great tutorials available online, and I don't want to go too far into technical details here, but I'll explain the steps I like to use to get into linear space as I talk about the lighting setup.
MR Physical Sun and Sky
For this scene, I use MR Physical Sun and Sky, which is designed to simulate realistic outdoor lighting, and is geared towards linear lighting workflows and energy conserving materials. This will form an excellent base, as I'll be using this type of shader later on.
To create the nodes, I open the Render Settings window and under the Indirect Lighting tab, click on the Create button next to Physical Sun and Sky.
A criticism I often hear of MR Physical Sun and Sky is that while it is great for realistic or architectural renders, it is a bit limiting artistically and not as suitable for a cartoony scene such as this one. This is where the lighting work done earlier in the block out stage comes in handy. I have already established a lighting base, so I can use the benefits of the realism that Physical Sun and Sky offers, while making sure to stick to my desired art direction by tweaking certain values and colors.
Once I have created the Physical Sun and Sky, a number of nodes are created in the scene. There's a directional light named sunDirection, which is used to tell mental ray the angle that we want the sun, an mental ray environment to represent the sky, and an exposure node that is automatically connected to all non-orthographic cameras you have in the scene.
The first thing I do is to copy the X,Y and Z rotation values of the Maya directional light used in the lighting block-out onto the new sunDirection created for the mental ray Sun and Sky. Changing the Sun angle will automatically change the Sky Environment in this system to give a realistic sky light for the time of day that corresponds to the sun angle I have set (Fig.10).
This can be really handy if you want this sort of realism, but in a lot of cases it's nice to retain artistic control over these colors and values. It is possible to use a custom mental ray environment instead of Physical Sky to do this, but there are also a lot of other ways to tweak and edit when using Physical Sun and Sky, which was enough for me to get what I wanted in this scene. I'll go into more detail on this later.
Add MR Light Portals to the Windows
Because the Physical Sun and Sky system is designed primarily to deal with lighting outdoor scenes, I have to take a couple of steps to make it work nicely for an indoor scene.
Luckily, mental ray offers a nice solution to deal with this problem, the mia_portal_light. The portal light node basically tells mental ray that I am intending to place a light source to represent a window, and in conjunction with Physical Sun and Sky it helps to simulate the effect of indirect sky lighting. Because I've already added some area lights for the windows during the lighting block out earlier, I can use them as light portals.
To do this, I select an area light and open the Attribute Editor. I then scroll down to the mental ray rollout menu and expand it. The two sections I am interested in are the Area Light and Custom Shaders options.
Firstly, in the Area Light rollout, I check the Use Light Shape option.
Now I switch to the Custom Shaders rollout and plug the mia_portal_light node into the Light Shader of the area light. I click on the checkered box next to the Light Shader section, and in the menu that appears I click on mental ray lights in the left side section to find the mia_portal_light node. Once this is plugged in I am given a set of options for the light portal, but for now I leave these as the default values as I'll deal with them more in the tuning and balancing section.
Now I repeat the process for the other windows in the scene.
Fig.11 shows the effect when I changed the area lights into portal lights. It doesn't look particularly different to the previous render, but it's actually much more balanced and also easier to change the settings.
Back to Linear Workflow
Now I have an indoor scene lit with realistic sun and sky lighting coming in through the windows. The next stage is to finish setting up the linear workflow so that I am then ready to begin some artistic tweaking of the lighting.
Fig.12 shows my image before addressing linear workflow. The light doesn't seem to bounce in a natural way, making the room and astrosphere overly dark. I can address this by conducting the following steps.
There is one node that the Physical Sun and Sky system created that I haven't mentioned yet: the exposure node connected to the camera. I select the camera being used to render the scene and take a look at the Attribute Editor. Here, I can see that there is a node named mia_exposure_simple1. I click on the tab for this node and take a look at the values. The gamma has been automatically set to 2.2, which means that after mental ray finishes a render, the exposure node corrects the gamma value so that my monitor can show me accurate lighting values as the renderer views them.
This would work fine if I was only dealing with raw lighting, but it's not so good when using textures maps prepared in another program, such as Photoshop. If I render the scene now, I can see that all the textures look overly white and washed out (Fig.13). This is because they are receiving a "double" gamma correction.
There are a number of ways to get around this problem, but the one that I am going to use here is to apply an inverse gamma correction to my texture maps, so that they are in the same space as the lighting to start with and when the gamma correction occurs they are put back to their original color value.
The first thing to do is to set the Gamma value in the mia_exposure_simple node back to 1.0.
Now I open up the Render Settings window and click on the Quality tab. I scroll to the bottom and find the Framebuffer rollout. When expanded, there is a Gamma option here too, so I set this value to the inverse of 2.2 (to "anti gamma correct" our color maps). 1 divided by 2.2 equals 0.4545, so I enter 0.455 and type that value in the Gamma option in the Framebuffer.
With that done I now have a linear workflow setup for the scene and will be able to correctly preview the output in the Render Viewer. At this stage, I can make a test render and compare it to the draft lighting from the block-out phase (Fig.14).
Tuning and Balancing the Lighting
There are a few areas in the scene that I can tweak to have a bit more artistic control over the lighting.
Firstly, there are the controls over the Sun and Sky system itself, which can be found in the Indirect Lighting tab in the Render Settings window. As well as increasing or decreasing the overall intensity with the Multiplier value, I can apply some color correction with the Red/Blue Shift and Saturation values. I play with these values to get a stronger sunlight with a bit more warmth.
Now I can take a closer look at the controls for the portal lights. First, I select one of the window area lights and in the Attribute Editor I click on the mia_portal_light tab.
I find portal Lights really useful when working with the Sun and Sky system as I can use the Intensity and Color multipliers to influence the lighting contribution of each individual window light. This allows for a more artistic way of managing the lighting as I use the multipliers to, for example, bias the brightness of the lighting to one side of the room, or to warm or cool certain areas.
For this scene, I make the main window carry a bit of extra brightness and warm up the light portal with an orange tint. I give the secondary window a cooler, light blue tint and change the Intensity multiplier to 1.000.
In terms of mood and color, the lighting now has the same general feel as the block-out did, but has a lot more sophistication and the appearance of realism.
Finishing Touches to the Light Scheme
Before I lock down the lighting and move on to the shaders, there are a few finishing touches that I want to make. Now that I have seen a pretty good preview of the final lighting, I decide I want to have a bit more bounce light in the room and am also a bit concerned that the foreground areas are a bit under-lit and uninteresting (Fig.15).
Normally, I'd deal with these kind of problems by adding a few extra spotlights and isolating them to the objects that need some extra lighting, but in this scene I take a different approach and cut some extra windows off-camera to provide the extra illumination.
For the foreground objects, I'd like to continue the look of using blinds to break up the sunlight that worked well elsewhere in the scene. Because the objects and lighting are already nicely composed, I want to work the lighting around the objects rather than the other way around. So I'll cut out a new window off-camera in just the right place to get some nice lighting on the foreground.
A trick I like to use for this is just to move and scale (not rotate) the directional light so that it is pointing where I'd like the light to fall. Then I look at where it intersects the wall and cut out a window there. I have the luxury of cheating with the size and placement of the window since it's never seen on camera for the render, so I can really use artistic license to get the light on the foreground exactly where I want it.
Once happy with the amount of light on the foreground, I add in some shadow casting geometry to give the appearance of blinds over the window that break up the light a bit.
Similarly, to allow more bounce light into the scene I cut another large window off-camera towards the back of the room, and add another area light and portal light combination. This is to add a little fill lighting to the room in general and also another bright source of reflection, which will be helpful for the shiny plastic and metallic shaders (Fig.16).
Part 4: Textures and Shading
With the models in place, and the lighting setup at an advanced stage, I can move on to finalizing the texturing and shading. As the lighting is already in place, I can now see how the colors I'm choosing for the surfaces will appear in the lit scene.
As shading and lighting are so closely linked, it's easy to get lost in endless tweaking of lighting values or shader parameters. I like to lock down the lighting as much as possible to give me a stable base to work with when editing shader parameters.
Similarly, it can be useful to view the lighting on even grayscale surfaces, so that it's easy to keep track of the coloring coming from the lighting uninfluenced by texture colors. This can be done by creating a new render layer with a material override of a mid-gray material.
My main intention for this scene is to have a vibrant room with a fairly wide color range that suggests a youthful, fun environment. It's important that the colors in the room work together and are not too jarring against one another. I'm going for a warm, inviting look rather than something epic and dramatic, so the color choice should reflect that. I'm aiming to match the color choices to the art direction of the rest of the scene, to get the shapes, lighting and the colors all working together to tell the story of the room.
Something that works well for me is to try not to push the saturation too far on any particular color, so that it allows for some color from the lighting to still come through. I find that this helps to bring some unity to the room.
Similarly, I always avoid making any colors overly bright or dark, keeping generally to the middle ranges. This is to ensure that the lighting has somewhere to go when it comes to shading a surface. If you make a texture too close to white or back, light or shadow coming from your scene lighting can't have much effect on it and that can lead to washed out or overly dark areas.
One trick I use in this project to quickly add color to the room is to make a large texture page of color swatches that could be used for any colored plastics or paper in the scene. This helps me keep to a nice controlled range of colors.
I made two shaders: one for glossy plastic and one for matte plastic, and used the same texture page for both. These materials were then assigned to objects around the scene and by moving the UVs of objects around different swatches I could block in colors and experiment with different combinations really quickly.
For this scene, many of the texture maps are clean and simple colors, but I've tried to offset by giving some of the textures a hand-painted look, like the wood, painted surfaces, labels and drawings. I want to add some character to the scene with the textures, and things like the invented board game boxes and kids' artwork on the walls are a good way of putting in some personality (Fig.17).
Usually I quickly paint a base color pass and then overlay some grain and detail from photographs to bring back a little realism.
For this scene (Fig.18), I use the mia_material_x_passes shader for pretty much every surface. This is a very versatile shader that is good at portraying a number of surfaces, so it's a really good base to work form. I'm using mia_material_x_passes over mia_material_x because I want to render out my final image in separate passes later on.
My approach to shading is to try to use contrast in the way the surfaces shade to catch the eye. For example, a mistake I see in a lot of scenes is that every object is either shaded very shiny and reflective, or very flat/matte, meaning that the eye isn't really drawn to any one particularly nice instance of shading. I find that having noticeably different shading on a few surfaces is far more effective when it comes to creating an interesting environment.
Personally, I like to find one or two areas where the shading can be really eye-catching – such as glass, metals or water – and exaggerate those a bit. I usually try to look at real life examples of how a particular surface responds to light as a starting point, and use a bit of artistic license to exaggerate or downplay certain surfaces until I feel that the overall scene shading looks good.
For example, in my scene, the plastic ball in the foreground is more reflective than any of the other glossy plastics are. I've done this based on its position in the scene and the feeling that some interesting shading was needed in that area.
Also, the wooden floor in the scene was originally far more reflective, based on how that kind of surface would appear in real life, but I decide to really tone down the reflection on the floor, to get more contrast with the ball. Having the floor with an almost mirror-like reflection is a bit too distracting in what is already a busy scene.
It's worth noting that almost all the surfaces in my scene have some reflection present in the shading, though the more matte surfaces have a low value and usually a very diffuse reflection. As I'm using fairly clean color textures for many objects in the scene, I've found that having a little reflection can help to break up the flat colors a bit.
Before rendering the final frame, I decide to add some geometry outside the windows to give a bit of depth to the scene. I also add some planes textured with an out-of-focus photo of a park to create a background image.
I render the image at 4096 x 2214 with a nice high quality Final Gather and Anti-aliasing setting. For Final Gather I use an Accuracy of 1000 and Point Density of 2 with 2 diffuse bounces.
I like to try to and push my Maya render as close to final quality as I can, but it's always useful to have separate render passes for elements such as the direct and indirect light, reflection and refraction as this allows for a certain amount of flexibility in post-production. I always render out my image in 32-bit formats in order to have an image that holds up better to adjustments and color correction in post-processing. For this image I've also rendered out a separate Ambient Occlusion pass to use in my final composition (Fig.19).
For this scene, my post-processing work is pretty minimal, and simply consists of a bit of color correction, multiplying the AO pass at a low opacity, and adding a bit of glow and bloom to the bright areas.