Underwater scenes are one of the most exciting, inspiring, and gorgeous environments in real life and computer graphics world alike. And with this awe-striking appearance comes a very complex array of possibilities. From a photographer’s point of view alone, underwater scenes seem to be one of the most challenging places and situations to be at, let alone the difficulty of acquiring a proper lighting and the satisfactory combination of shutter speeds and apertures. Same thing applies also to recreating such a scene in computer graphics, specifically in 3D.
Throughout my career in 3D design and animation, I have never thought exactly how to approach an underwater scene not until I actually delved, sat down, and started thinking what approach to do. Fortunately, after hours of conceptualizing and imagining, I came with an approach, which might seem odd to others, but it works which. And that has been my primary motivation in writing this article and sharing my discoveries.
Hopefully, this wouldn’t be too software-centric as compared to my previous articles, which I was trying very hard not to do. The concepts I will present throughout this entire writing will be based off from my own experiences and repeated mistakes. Since there are so many possibilities in approaching problems, hopefully you’ll find mine to be one of the simplest one.
Let’s head on.
- Blender 2.49b
- Skill Level: Intermediate to Advanced
Below are some reference images I looked up at Google. These will be our starting point and our scene bases.
You’ll notice from the images above that underwater scenes could greatly vary depending on your location and on how deep you are. The shallower your location is, the darker it might get, and the more life there would be. But for now, we’ll focus on just the ambience of the scene and we’ll try as much as we could to imitate this.
CREATING THE TERRAIN
Now that we’re comfortable with our references and how our scene will faintly look like, let’s go ahead and start the actual creation of our environment. First, we have to create our terrain where our props and other models will be situated on. I had this on the first order so that we can pretty much see where and how our props which we are going to model later will look like or if we ever need them to be in the scene at all. Approaching it this way will give us more leeway on the proceeding steps we’ll do later on.
For this environment, our terrain will simply be a subdivided smooth plane with varying elevations (as would have implied by water movement). To achieve this, first let’s delete whatever default scene elements we have (objects, lamps, etc.) by hovering our mouse pointer over to the 3D Viewport Window, pressing A once or twice (depending whether you have a selected object or not) to select all visible elements in your scene, and press X > Erase selected Object(s) or by pressing the Delete button on your keyboard. After this, we simply add a plane primitive mesh to the scene via spacebar > Add > Mesh > Plane or by clicking on Add > Mesh > Plane on the menu header. It’s a good idea to start adding objects in a hierarchical or orderly manner right from the start so we could easily keep track of our progress and solve problems that may arise later on.
Erasing the Default Scene Objects
Adding a Plane Primitive to the Scene
After adding the plane to our current scene, let’s go ahead and scale it a little bit larger just to give us an initial sense of scale and enough room to add our proceeding objects later. Do this by selecting the Plane Object (if it hasn’t been selected by default), then press S to scale and then type 5 consequently to scale it up by 5 Blender Units (BU) uniformly on the X, Y, and Z axis respectively. Or alternatively, you can use the Transform Toolbox (N) and type in 5 in the Scale X, Scale Y, and Scale Z input fields, better yet, to save time, enable the Link Scale button, and type 5 in either of the scale axes and the others will follow along.
The Default Plane Added to the Scene
Scaling the Plane Object
To review, what we basically did was to add a mesh primitive to our scene, in this case a Plane, then to have enough room to work on, we scaled it five times its original size. Looking at the plane in the 3D space though, you might notice that it lacked thickness which is one of the key roles of the z-axis, so with this in mind, we could just scale it along the x and y axes, disregarding the z axis, which we can do by pressing Shift Z after executing the Scale operation. What this will do is scale it only in the other axes excluding z, which will result in the same appearance as scaling it in all axes. But for future reference and to eliminate ambiguities later on, it’s better to just scale it in all axes which is the default option after doing the scale command.
Continuing from where we left off, we are now going to create more vertices from our existing plane, these vertices will be our manipulation points that will eventually define our object’s shape later on.
We’ll do this by subdividing our plane a couple of times. Select the plane object and proceed to Edit Mode (Tab) then position your mouse cursor on your 3D View and press W to access the Specials Menu, then choose Subdivide Multi and in the pop-up menu that appears, type in 20 to subdivide our mesh plane 20 times.
Now that we have a fair amount of vertices to work on, we can now sculpt out the shape that we want for our terrain, but before that we will first create a camera in our scene and make it our default. We need to do this prior to jumping in and creating our terrain so we don’t waste time by modeling parts of the terrain which are not going to be seen at all. To add our camera, move your mouse cursor over to your 3D Viewport and press spacebar then choose Add > Camera. After this, go to your front view (Numpad 1), switch to Perspective View by pressing Numpad 5 and look through your 3D Viewport as though your were looking via your camera, when all is done and you have your camera as your active selection, press Ctrl Alt Numpad 0. What this does is it changes your camera’s view to what you are seeing in your viewport. If you’re not comfortable with hotkeys, you can alternatively access this function by going to View > Align View > Align Active Camera to View . After having magically transported into the camera’s view, you can further enhance your viewing experience by enabling Passepartout which darkens the view outside of your current field of view. To do this, access it in the Editing Buttons window, and click passepartout and increase the Alpha to a non-zero value, depending on what you’re convenient with.
Most of the time though, you don’t want your passepartout to be totally opaque (Alpha 1), since it will then deprive you of viewing other objects that might be of importance to you that you wish to include later on your shot or view. Another disadvantage of setting it to a high value is you’ll have a hard time selecting the camera’s outline (which then selects the camera itself) because of the blending between your camera’s outline (black) and the dark bg.
Subdivide Multi Tool
Adding a Camera
Camera View and Passepartout
Align Active Camera to View Menu Option
Right now, our camera placement seems a little bit odd due to some empty space showing through on the bottom half of our view, to address this, we’ll simply zoom in our camera while on its own view. We can quickly do this by selecting the camera (through its border/outline), then press G for Grab and follow it up immediately by clicking on your middle mouse button and confirm it by left clicking or pressing the Enter key. What this trick does is it moves the camera along its depth axis or its local z axis, this way we can smoothly adjust the way our camera is placed in an inward and outward fashion.
Moving the Camera Along the Local Z-axis
Now that everything’s set, we’re good to start the actual sculpting of our underwater floor. Select the plane mesh and go to Edit Mode (Tab) then select few vertices from the plane, these points will represent our influence vertices. To get a better view from your selection process, you can exit your camera view by pressing Numpad 0, rotating your view with middle mouse button, or pressing Numpad 5.
Selecting Few Vertices
Now let’s go back to our camera view by pressing Numpad 0 or you could simply split your screen and have the other half always a camera view. With our vertices still selected, press O on your 3D Viewport and grab the vertices along the z-axis by pressing G then Z, then you will notice that neighboring vertices got pulled too, this is because we turned on Proportional Editing which is a very handy tool in manipulating meshes. To control the radius of influence, you simply scroll with your mouse wheel. You can access this menu and further more options on the 3D Viewport menu represented by a circle icon on the far left.
Let’s now go to camera view (Numpad 0) and start altering our mesh plane according to what we see in our view. Move the vertices like how we see in the screenshot below.
Moving the Vertices Proportionally
This would be a good shape for now. But since we wouldn’t want our plane to appear too blocky or edgy, all we have to do is go to Object Mode and click the Set Smooth button in Editing (F9) and under the Links and Materials tab.
Smoothing the Plane Mesh
After we’re done with the initial model of our terrain, let’s go ahead and assign a basic material to it, just a diffusion color for now then we’ll get back to it later and add in more material settings and textures. To do so, let’s head over to the Shading (F5) then to the Material buttons, then under the Links and Pipeline tab, click Add New to add a new material to the datablock. Let’s name it sand and check the screenshot below for more details on the material settings and shaders.
Basic Material Settings for the Terrain