Friday 5 December 2008

Calendar Scene 1 - December

Snowy Log Cabin

 

Cabin Construction

Before beginning the modeling process I researched a vast range of reference images to generate initial ideas in addition to gain an understanding of the realistic features and dimensions that a typical log cabin is comprised of.

     

Images from http://www.countrysideinfo.co.uk/cabin/log_cabin1.html

 

I eventually came to a decision that a wood cabin consisting of solid log walls and a corrugated metal roof would be the basis of the final model as well as a mountainous snow terrain to which it will be situated.

To begin with I made a simple rectangle base for the cabin using the box tool under the standard primitives create panel. At a later stage this will be textured with a concrete material to give the impression of a sturdy foundation. After studying a collection of images specifically involving the construction of a real-life log cabin I certified that a solid base is an essential part to make my model realistic.

 

The next stage was to produce the first layer of logs that make up the cabin’s walls, first of all I spent a considerable amount of time debating the best way to actually model each log in order to give an organic appearance. My main issue was trying to recreate the bumpy surface of bark as well as the irregular shape of each log, as trees are naturally varied in width and are not perfectly straight. Consequently using just a basic cylinder would look unnatural, which in turn might impact the overall level of realism within the final scene.

 

The first method I attempted to overcome this problem was to use polygon selection within the sub-object level to move various vertices around, whilst ensuring that soft selection was enabled with a relatively low falloff to give a smooth yet uneven look to the bark.

 

However I soon found that although this method achieved the desired effect, it was exceptionally time consuming, therefore given the fact that I needed to model a large number of logs I came across another approach. Upon producing a basic cylinder and converting it to an editable poly, I applied a noise modifier with varying amounts in the X, Y and Z Strength boxes to distort the entire shape of the log. Prior to doing this I ensured the cylinder had a large amount of sides and height segments so that the modifier had a greater effect. This technique proved to be a lot faster, yet still created the same result if not even more convincing results. As a result I settled on this method for producing the rest of my logs, as differentiating their appearances simply involved cloning the previous log, changing the seed number of the noise modifier and then its Strength values.

              

 

This technique was used repeatedly to produce the remainder of the log walls, however as the cabin is not a complete square the side walls have shorter logs which were changed in length by merely going down through the stack and altering the height of the base cylinder.

 

The logs on the bottom of the walls were split in half length ways in order to lay flush with the flat concrete base, this was achieved by entering sub-object mode and using the slice plane to cut the selected polygons in half. The unwanted poly’s were then deleted, however this caused the half of the log to be hollow, therefore I selected the border where the slice had been applied, then used the cap function to simply fill it in with a new polygon.

   

                         

 

After finishing the walls I referred to my images of cabin construction to establish the configuration of supporting roof/apex logs. I then began to make the apex logs using the same fashion as before however I rotated them using the rotate gizmo. Once I had reached a desired angle I cloned the log using the mirror tool on the x-axis and offset the new copy for the other side of the roof. This process was repeated for the opposite end of the cabin to complete the apexes; the ends of the roofing logs were also leveled off using the slice plane to enhance the appearance of flush joints between them.

                                     

 

Another log was then produced with a slightly wider circumference to be positioned along the entire length of the cabin as the main connecting roof support.

 

I also introduced smaller upright logs to act as supports for the end apex logs, these were cut at an angle either side using the slice plane so that look as if they have been slotted into the top of the wall logs. This was done using the same process that was used to make the half base logs, where the sliced polys were deleted and the holes were then capped.

     

 

Now that the main roof structure was completed I had to fill in the gaps left between the apex logs, after examining various images, I decided that I would use wood chipboard planks rather than more angled logs to merely add diversity to the cabin. These were produced using the box tool and were then converted to editable poly’s, the corners were also angled using the slice tool, which was positioned parallel to the apex logs so that the planks would sit flush up against them. This was done for all the planks until the gaps in the end of the roof had been covered; the planks were then cloned and positioned accordingly at the other end of the roof.

   

 

Due to the irregular shape of the logs, gaps were present between the logs in the walls allowing you to see through the cabin. Consequently I decided to rectify this problem by using planes, which are found under the standard objects create panel. These were then positioned in between the logs of each wall to eradicate the gaps that were visible.

 

 

The next stage was to construct the roof itself; to begin with I used the box tool to create large panels to cover each side of the roof. These were then rotated to the same angle as the roofing logs so that they would sit level rather than intersect.

 

However due to the round shape of the logs they protruded through the roofing panels, therefore to solve this issue I used the slice tool again to cut the polys that were causing the problem then simply deleted them and capped the new flat border.

     

 

Then to finalize the roof I created two large sheets of corrugated metal that sit on top of the wooden panels at the same angle. The corrugated metal was created from a 2D spline using the line tool to basically draw out a wavy line using bezier corner points.

 

I then attempted to convert it to an editable poly however each time I tried this it would disappear from the viewport yet still remain selected. Initially I thought it may have been due to the fact that the spline wasn’t closed or because of overlapping vertices for example. I also attempted the same procedure using an editable mesh; however this had the same problem.

  

 

Therefore to overcome this frustrating issue I applied a "Renderable Spline" modifier to the spline object, although this was perhaps not the most ideal method, it still had the same desired effect as it it were converted to an editable poly. I then continued with it by altering the modifier's parametres seen in the screenshot below, where I basically increased the width to make the sheets longer. I also ensured that it was set to "rectangular" so that the rendered spline would have straight edges; the length of 0.2 adjusted the actual height/depth of spline object.

             

 

I then cloned this object using the mirror to tool to create a copy on the x-axis; the new copy was also offset for the other side of the roof.

 

Having completed the main structure of the cabin I decided to add further detail by incorporating windows filled with glass panes and a door on the front wall. To avoid the issue of intersecting objects I created holes for the windows using the "ProBoolean" tool in conjunction with a standard box primitive. Alternatively if I had just placed a box object inside the wall logs, this may have caused severe issues when rendering and screen draw within the viewports for example.

           

 

Once I had created all four holes for the windows I constructed the window frames using the box tool, the individual boxes where then aligned and rotated at 90 degree angles to form each window frame. I then added the panes of glass in each segment of the window frame using the plane primitive tool to create a thin sheet in each. The windows were then grouped and positioned in the holes created by the previous Booleans.

 

I repeated this entire process to create the door on the front of the cabin, a window hole was also made in the middle of the door in the same fashion as before, where I used a ProBoolean for the main windows in the walls.

 

I then  created a separate handle starting with the line tool. To begin with the actual handle itself I drew a basic oval shaped spline, I then drew a right angled L-shaped line which will act as the path for the loft tool.

     

       Handle Shape Spline                    Handle Path Spline

 

Then with the oval spline selected I applied a loft found under compound objects in the create panel, I used the “Get Path” creation method where I then clicked on the L-shaped line. This resulted in the oval spline being extruded along the selected path to create a right-angled yet curved handle. The end of the handle was also beveled using the bevel tool under the polygon selection method of the sub-object level. This was done to give the handle more of a sleek appearance, rather than just flat at the end which in my opinion may have looked unrealistic. In addition to further enhance its curved shape, I also applied a mesh smooth modifier.

         

Handle - Loft Result

 

I then continued to produce the base of the handle by making a box object with plenty of height, width and length segments. This was done to ensure that the mesh smooth modifier I then applied had a greater affect to the edges of the box creating rounded edges. Whereas if I had not increased the amount of segments the mesh smooth modifier would have been applied to each face, dramatically morphing the shape of the box rather than gently rounding off the edges to create smooth corners. The base was also beveled to give it a stepped appearance as well as a flat surface for the bottom of the handle to sit against.

                        

 

I then attached the handle to the base using the attach button found in sub-object mode, the whole object was than scaled down and positioned accordingly on the door.

 

Terrain Modeling

Now that I had completed the cabin structure itself, I proceeded to create an environment for it to be situated in. Due to the fact that the month I had chosen was December I decided that a snowy mountainous landscape would serve as an ideal setting.

To begin with I created a fairly large plane, this was given a considerably high number of length & width segments due to the modifiers which will be used at a later stage. I also ensured that the plane was a perfect square as I will soon combine it with a circle to ultimately produce a circular plane.

 

Next I enabled the grid snap toggle button which allowed me to draw a cylinder from the middle of the plane in the Top viewport. This was done whilst holding the Ctrl-key to force the cylinder to be drawn from the centre of the cursor position, rather than drawing from the corner of the object when dragging and releasing the mouse button. By by doing this I was able to produce a perfectly sized cylinder inside the pre-drawn plane.

 

After doing this I positioned the cylinder so that it protruded through the plane above and below in the z-axis, then with the cylinder still selected I created a Boolean using the "intersection" operation. This basically takes elements of both shapes to create a new object, based on where the shapes are intersecting. In this case it kept the flat shape of the plane in addition to the circumference of the cylinder, this resulted in a flat circular plane whilst retaining the same amount of width & length segments.

 

This circular plane will then be used to produce a uneven, mountainous terrain; the main purpose that I deliberately used a circle was due to the fact that it provides more of a realistic horizon. For example if I were to use a standard rectangular plane instead, two corners would meet in the distance, this may be seen on the edge of the horizon which would look unnatural. Whereas a circle has no corners, consequently this simulates a real horizon to certain degree as the earth itself if also round.

           

 

The next stage was to transform the newly created circular plane into a bumpy terrain, similar to that found in a typical snowy location such as Alaska for example. To begin with I tried adding a noise modifier to the plane, although this produced a nice bumpy effect, in my opinion it did not appear random enough. Another problem with the noise modifier was the aspect that it applies the effect more or less evenly over the entire selected area. On the hand I desired more control than that, where I could be able to preserve flatter areas whilst still incorporating bumpy terrain surrounding it.

 

Consequently I then pursued an alternative method involving the Displace modifier. The displace modifier basically produces the same effect as used with noise, however it requires a bitmap or material  map to base the effect on. In my scenario, I wanted a reasonably level area of land in the middle of my terrain, which is surrounded by ground of alternating height. This was achieved by the inclusion of a height-map which is basically a monotone (black & white) image signifying which areas should vary in altitude. Therefore in Adobe Photoshop I produced a height map starting with a black background, then using the brush tool with a white fill colour I drew on areas which I wanted to be greater in height. I then applied a gaussian blur to the whole image to smooth out the white brush strokes so that they gradually fade from black to white. Doing this will produce smoother looking terrain, whereas If I had left a hard edge the terrain would be dead flat then suddenly increase in height, producing a cliff-like result. Below is an image of the height map I drew, note that the whiter the area the higher it will be interpreted once imported into 3DS Max using the displace modifier.

 

Having made the height map, I then applied a displace modifier to my circular plane. Within the "Image" section of the displace modifier I clicked on the bitmap button and browsed to my height map to import it into 3DS Max. Once this had been done I needed to specify the amount of strength in the displacement section of the displace modifier's parametres. The strength displacement box basically controls how much the referenced image (in my case the height map) is applied to the object i.e. the greater the strength number the higher affected terrain will be. I chose a relatively high amount of displacement strength to produce obvious hilly/mountainous areas whilst retaining a smooth snow covered surface/appearance. If the strength was turned up too much the terrain would look a lot more jagged, which could in turn portray a rocky mountain range for example. The amount of displacement used depends on the desired end affect in addition to user's opinion and the image that is being used.

             

 

Now that I had produced the rough terrain for my December scene, I continued to perfect the displaced plane by applying a mesh smooth modifier to improve its overall smoothed appearance.

 

However even after doing this it still had several sharp peaks, especially around the edges that required rounding off to convey the soft snowy look that I was aiming for. Due to this fact I converted the whole object into and editable poly and used the Paint Deformation tools found under poly selection mode in the sub-object level. This involved using a combination of the push/pull button to lower and raise the terrain in the required places, in addition to the relax tool which basically smoothes off sharp areas.

 

 

These tools were used until all the pointy ridges and peaks had been rounded over to produce a much more natural looking terrain as if it had been exposed to persistent snow fall over a long period of time. Any other areas that I decided need to be altered in height were adjusted using soft selection with a high amount of falloff, therefore causing the land around the selected area to also be affected by the changes in altitude made.

 

Importing the terrain

 

Due to the shear number of objects within my cabin scene, I decided to export my terrain as a 3D Studio file (.3ds) which saves the selected model as an flattened editable mesh i.e. the stack is collapsed and the object becomes a single mesh. As the cabin is constructed from so many different parts, I could not afford to lose the stacks in case any aspect needed changing once I had imported the terrain. After successfully exporting my completed terrain object I re-opened my cabin file and imported the terrain, merging it with the current scene. Now that both elements were in the same scene all I had to do was rescale and rotate the cabin into a suitable position. Bearing in mind that I specifically left a flat area within the earlier produced height map, I positioned the cabin in the middle of the terrain on the flattest part I could find. As the terrain was not dead flat I had to make a couple of small height adjustments underneath the cabin using the same method as before with the paint-deformation tools. Otherwise the cabin would have appeared to be floating, casting a shadow underneath itself, although this may not have been as noticeable from a high-up view it still looked unrealistic, consequently I proceeded with the minor adjustments.

 

Texturing the Scene

 

Now that the scene had been completed object wise, all that was left to do was to add suitable textures to the models bringing them to life and adding a greater level of realism.

To begin with I started texturing the cabin's base; in real life this would have a solid foundation to support the weight of the building therefore I will apply a concrete material to it.

First I opened the material editor (M on keyboard) and clicked on the diffuse slot of a standard material. I then browsed to my concrete bitmap which I acquired from the internet, this was then opened into the material's diffuse slot.

 

Now that the bitmap had been imported into 3DS Max it needed to be rescaled to suit the dimensions of the cabin's base. To achieve this the material was applied to the selected base by clicking on the "assign material to selection" button or it can be drag and dropped onto the object from the material browser.

 

As each side of the base needs to be treated differently I used a Mesh Select modifier to select the top and bottom sides of the base using the polygon selection method.

                       

 

Now that the required faces had been selected I applied a UVW Map modifier which basically allows the material to be resized and transformed using a variety of parametres. In this case I chose the "Planar" mapping style to indicate that the material is being applied to a flat object, that is identical on both sides. I then ensured that the correct axis was being used to align the material, in this case the z-axis was needed for the top and bottom sides of the concrete base. Having done this I then pressed the "fit" button which scales the UVW plane to fit the longest side of the selected object, however as I want the texture to remain even without stretching I copied this number into the length box, causing the UVW plane to become a perfect square. This will mean that the bitmap will not be distorted to fit a different sized face than the original image.

            

 

Once these aspect proportions were sorted out the texture still required to be scaled down in size as its current size looks some what too large. This could be adjusted by simply changing the amount of tiling, however this has a limited effect as only the same portion of the bitmap will be used each time. Therefore another more effective method was to use an "Unwrap UVW" modifier which basically allows the materials size and position to be edited using a net-like view, similar to that if flattened and infolded and cardboard box for example. All the faces with textures are spread out allowing them to be seen in a 2D fashion. In order to reach this view the " edit" button under the Unwrap UVW's parametres needs to be pressed. Upon doing this I was then able to move, scale and rotate the selected elements much like in the normal viewport, however concerning the texture's placement instead. The drop-down box in the top view of the Edit UVW's window can be used to select the required material so that it is displayed in editor window, therefore making texture placement a lot easier.

          

 

This process was then repeated for the adjacent sides of the base so that the bitmap texture on each face was different in appearance to avoid the issue of repeating. If the same area of a bitmap is tiled over an object it can have a negative impact on the scene's overall level of realism and believability. Subsequently using a Unwrap UVW will prevent this problem from occurring, or in the very least make it less noticeable.

 

Another touch to enrich the amount of realism involved adding a bump map to the concrete material which basically exaggerates the shadows and highlights enhancing the amount of visible relief. A bump map works on the same principles as a height map, where white is interpreted as the higher areas and black the lower. Therefore I simply created a bump map for the concrete texture by converting the original bitmap into a monotone image using the "convert to grayscale" function in Photoshop.

 

I then saved it as a new image and imported it into 3DS Max using the bump map slot of the active concrete material. I also increased the amount of the bump to "100" so that the stones set in the concrete look as if they are actually raised outwards, giving the material a greater range of depth.

         

 

These same techniques were used to texture the entire cabin, with exception on the logs which contain more than one bitmap per object. Consequently I had to use a Multi/Sub-Object material type which allows up to 10 different textures to be used simultaneously via the use of Poly/Material ID's. As the logs consist of the bark texture in addition to the end grain texture, each element that required a different texture had to be set a Material ID within the sub-object level using the Polygon selection method. Therefore on all of the logs I gave all the sides a material ID "1" and all the ends of the logs an ID of "2".

  

 

I then imported the two bitmaps in separate material slots and added their bumps in the same way that I produced the concrete material. Then within the Multi/Sub-Object material I created before hand I added the bark material to slot/ID 1 and the end grain to slot/ID 2. As a result any object that has been given material ID's consisting of 1' and 2's will be assigned two different bitmaps accordingly when the Multi material is applied. However the textures still have to be scaled and rotated on each log using the same techniques as before.

    

 

All the materials used on the cabin were created using bitmaps with the exception of the glass in the window panes, which instead was produced entirely within 3DS Max using a raytrace material type.

In the material editor I selected a new material slot and changed the material type from standard to "raytrace". The diffuse colour was then changed to black and shading mode was switched to Phong. The "2-sided" check box was also enabled as this material will be applied either side of the glass panes which are extremely thin plane objects. Raytrace materials are reflective by default as they take into account the surrounding environment, reflecting nearby objects. Consequently I left the reflection settings on default and changed the transparency colour to an off-white/gray colour to make the material transparent like real glass. The reason for using this colour rather than pure white, is due to the fact that using white as the transparency colour would make the material completely transparent i.e. invisible to the human eye. Unless there was a large of amount of objects to be reflected the material would not be seen. The last stage was to increase the index of refraction using the slider or number box to basically give the glass material a denser appearance in addition to distorting the reflections.

      

 

After texturing the entire cabin I had to add a material to the terrain itself to give it the snow appearance that I intended. However I chose to create the material inside Max, rather than using a bitmapped image which would look exceedingly unrealistic when applied over a large area due to tiling.

To create the snow material I started with a standard material with an off white as its diffuse colour and slightly bluey white as the specular colour. The specular level was dropped to 0 and the glossiness was given a value of "10", as the snow needs a slight sparkle to it, without being shiny/reflected as this would portray more of an icy material. The self-illumination amount was also increased to "50" as snow in real life reflects light, making it appear bright white, consequently adding this amount self-illumination should also achieve a similar look.

    

 

I then added a "smoke" material type to its bump map slot, with a value of 75 in the bump amount box. I changed colour 1# to a light gray colour and left colour 2# as white, this will give the snow the required depth and mottled relief effect similar to that of real snow. Which isn't dead flat and tends to fall in clumps.

    

       

 

I then put a raytrace material type in the parent material's reflection slot with a rather low value of "7". This was done to give the snow a hint of shine/sparkle like real snow which is also wet and reflects a certain degree of light with a diffused/dispersed effect. The environment settings were used on the raytrace reflection parametres on the background so that then snow material will slightly reflect nearby objects in the scene.

      

 

Finishing Touches

Now that I had modeled and textured the entire scene the only things left to do were to add a suitable background in addition to a physical snow particle effect.

First I added a a background to the scene using a gradient ramp material as the environment map. I created a new standard material and gave the diffuse slot a "gradient ramp" material type. The gradient ramp feature is similar to the gradient tool in Photoshop where multiple colours can be chosen and blended together using a gradient colour slider. I used white and a light bluey/gray colour as these are both colours that remind me of a wintry sky. The W angle was then changed to 90 degrees so that the linear gradient would appear vertically when applied to an object or as the scene background.

    

 

Having done this I opened the "Environment and Effects" panel (8 on the keyboard) where I added my gradient ramp material in the background environment map slot. Now whenever the scene is rendered my gradient will appear vertically as the scene background, simulating a cold wintry sky.

      

 

The last thing I did to complete the scene was to add a snow weather effect using a "Blizzard" particle system, found under particle systems in the create panel drop down menu. I began by clicking on the blizzard particle system button and dragged a blizzard system over the top of my scene, this was positioned in the sky facing downwards so that the snow would fall to the ground.

                         

          

I then adjusted the particle timing and gave the "Emit Start" a value of -18 so that the particles were already in a falling position rather than having to move the animation slider to see the snow falling. I then experimented with the particle quantity, speed and size parametres until I was happy with its look.

             

 

After rendering the scene multiple times to determine changes in the falling snow's appearance, I decided that each particle looked to sharp and sphere like. Consequently i added a motion blur to the blizzard particle system by right clicking on it in the viewport and selected "object properties". From there I navigated to the motion blur feature and enabled it by changing the type to "by object". I then tried various different values in the multiplier amount box before I settled on a value of 0.05 which I believe provided an adequate amount of blur, just enough to reduced the sharpness of the particles.

 

Before Motion Blur

 

After Motion Blur

 

Then to produce the final render I created a standard camera and positioned it to my liking, the scene was then rendered using the camera viewport and saved as a Jpeg image file.

 

Final Scene - December

Click this link for full size image


No comments: