CS148: Introduction to Computer Graphics and Imaging Final Project
I worked on this project during my junior year at Stanford University, in a computer graphics course. My partner Melissa Daniel and I collaborated on this project, For Santa, using Blender Cycles.
Concept
The most wonderful time of the year is now year-round! Although the general consensus is that Mariah Carey’s “All I Want for Christmas Is You” should not be played starting in September, we wanted to emulate the warmth, comfort, and joy of the holiday season and highlight the fact that the holiday season is a state of being, as opposed to a period of time in the year. Specifically, the scene depicts an idyllic suburban home, complete with a fireplace and adorned with our own portraits lining the walls. Despite the depth of field that is used to achieve greater dimensionality, the douglas fir embellished with string lights and ornaments can still be seen towering in the background. The scene is not complete without the decorated gingerbread house set out “for Santa” in the foreground.
The scene is intended to be viewed from the perspective of the fictitious Santa Claus, as he would observe the Gingerbread house which is presumed to be left out by a young child as an offering of appreciation for Santa. Also in the scene is a teddy bear tossed on the floor, which brings in an aspect of mystery on why the teddy bear lies there alone. The entire scene encapsulates the calm living room of the night before Christmas, which beautifully contrasts the emotions of a young child eager to open his/her newly-arrived presents when the sun rises in the morning. Although the gingerbread house is the focal point of the scene, a great deal of detail was nevertheless applied to every object in the scene, from the screen texture of the Gingerbread house to the Voronoi texture applied to each individual ornament on the Christmas tree.
References
A great source of inspiration for this scene are the images shown below. We also drew a lot of inspiration from our own memories of childhood and beyond. We thought back to our own recollections as children – building our own gingerbread houses, basking in the warmth of the fireplace, and hoping that Santa might come to visit.
Work Breakdown
Brenden Gingerbread House Home interior (Walls, Ceiling, Floor, Stage, Couch, Pillows, Rug, Table) Fireplace Garland Fire Presents Scene Composition and Camera settings | Mel Christmas Tree Tray Picture Frames “For Santa” card Lighting Teddy Bear Stockings |
Assets By Ourselves
Gingerbread House
Contributor: Brenden
Reference: https://www.youtube.com/watch?v=bARibayfx60
The geometry of the gingerbread house was achieved by following an online tutorial, using a number of modifiers and techniques including, but not limited to, solidify, bevel, subdivision surface, mirror, array (for the piping on the roof and the repetition of the fence). The piping on the house exterior was modeled using a number of Bezier curves, achieving a homemade, “imperfect” appearance.
The material on the Gingerbread house was applied using procedural texturing, to achieve the effect of the cookie texture, frosting piping, and the appearance of dusted sugar on the roof and base of the house. The striped appearance of the candy canes placed outside of the home was achieved using a wave texture in the shading editor.
Christmas Tree
Contributor: Mel
Model Reference: https://www.youtube.com/playlist?list=PLsGl9GczcgBvYOAEE30pfCwKqzzAcSlu
Texture Reference: https://ambientcg.com/view?id=Bark001
https://ambientcg.com/view?id=Fabric054
https://pixabay.com/illustrations/search/christmas%20wallpaper/?pagi=4
The Christmas Tree was modeled by following a series of Youtube tutorials, with a number of Blender add-ons: Add Sapling Tree Gen to use the preset model for a small pine tree, Add Mesh: Extra Objects to model the star atop the tree, and the Node Wrangler to better manage the texture and shading editor.
The Sapling Tree Generator Add-on is used to model the shape of the pine tree, where the shape, size, and number of the needles is manipulated to give the effect of a naturally occurring pine tree with a believable number of needles and branches. The string lights were applied using a Bezier Curve and a particle effect, using one model of a lightbulb and a random generator to give the effect that the lightbulbs were protruding in random directions. The coloramp node and emission textures were applied to the lightbulbs in order to achieve an alternating, lit-up effect. The ornaments were individually applied to the tree using the coloramp node and the voronoi textures to achieve the look of textured ornaments in alternating colors.
Living Room
Contributor: Brenden
Model Reference: https://www.youtube.com/watch?v=EtsPym1bSdE
Pillow Reference: https://www.youtube.com/watch?v=7O0AFgZtAJs
Texture Reference: asset_base_id:7411c309-1138-41dc-84c9-f6fcafbeb297 asset_type:material (BlenderKit, Pillow)
asset_base_id:5e8f03b5-f931-4810-b95f-89b8237a300c asset_type:material (BlenderKit, couch)
asset_base_id:aa4b4505-d07e-4137-a71f-f011b00b8e1d asset_type:material (BlenderKit, rug)
asset_base_id:ff227f6c-9bbb-4606-83ca-1cb93005b553 asset_type:material (BlenderKit, floor)
asset_base_id:3c68e9ef-cc20-4558-86c3-686d979226a6 asset_type:material (BlenderKit, wooden wall panel)
The living room was modeled by following a Blender tutorial found on Youtube, although the model was altered to better suit the desired effect of a warm and welcoming environment. The current model omits certain features of the tutorial–the television, pillar, and lounge chair, to more closely establish the room as one of comfort over luxury. The living room highlights the Blender features of bevels, extrusions, and texture mapping, as the room can be characterized by the rounded surfaces and intricate patterning on the ceiling. Furthermore, the lighting was manipulated in the room so as to achieve the effect of the environment taking place later in the night, so that the light is primarily produced by the light of the fireplace, christmas tree, and a dim light from the ceiling fixtures.
The pillows on the couch were produced by using a different Tutorial, manipulating the cloth feature of the Physics properties and navigating the keyframes to determine which version of the pillow looked the most realistic and fit the given environment, to be placed on the couch.
Fireplace, Garland, Fire
Contributor: Brenden
Garland Reference: https://www.youtube.com/watch?v=UGkgEFcW8co
Fire Reference: https://www.youtube.com/watch?v=3RBcOM13dkc&t=48s
Firewood Model Source: https://sketchfab.com/3d-models/firewood-b1b610c7c588439d822e4af729c2f5bd
Rubble Model Source: https://sketchfab.com/3d-models/rubble-9a180893d6454f68a764e62be3fc5c92
Fireplace material textures: asset_base_id:0083ee7e-4d80-42d4-9870-330352296619 asset_type:material
Firewood material textures: asset_base_id:e05ec65d-0f83-4ee8-b7ba-95604d749528 asset_type:material
The fireplace was modeled from scratch using numerous extrusions, bevels, and other model manipulations to achieve the desired look. Furthermore, The logs in the fireplace were downloaded as free assets from SketchFab, as listed above. A “burnt wood” texture was applied to the model to achieve the look of the wood being on fire, and a model of “rubble” was also downloaded from SketchFab to give the look that there are broken-off pieces of ash or firewood strewn in the fireplace. Although the firewood and the rubble are downloaded models from the internet, the fireplace and the fire are modeled from scratch.
The fire was modeled by following a Youtube Tutorial, utilizing the Physics tab of the Blender Properties Panel to create a “Fire” flow-type fluid and manipulating the Keyframes to find which version of the flames flowing produced the best look of an authentic flame.
The garland in front of the fireplace was modeled by following a tutorial of a Christmas wreath. Similarly to how the string lights on the Christmas tree were modeled, the needles of the garland were individually modeled and strewn on the general shape of the garland using the particle effect to give the effect of naturally and randomly occurring leaves. Although the tutorial described the process of creating a circular wreath, the same steps were followed to create a long garland that followed a curved shape (since the center of the garland would sink due to gravity).
Tray
Contributor: Mel
Model Reference: https://www.youtube.com/watch?v=4RA3RJjghAE
Gold Leaf Texture Reference: asset_base_id:5eed9954-fe8f-4a1d-a4f1-1270afdcd1d0 asset_type:material
The serving tray was modeled following the tutorial above. The handles utilize a gold leaf texture to achieve an ornate look, and the base of the tray has a glossy black material to achieve the look of a glossy, reflective surface (to enhance the appearance of the Gingerbread House).
Picture Frames
Contributor: Mel
The picture frames were modeled by starting with a cube model and utilizing loop cuts to obtain the general width of the frames, and moving the center panel to achieve the appearance of depth where the photo would be placed. The edges of the “frame” are then beveled to give the appearance of rounded edges and corners, and then these photos below are textured to the center of the frame, as though the photo is placed into a frame. The actual frame is then textured with a metallic gold material.
“For Santa” Card
Contributor: Mel
Atop the table in the center of the living room and adjacent to the gingerbread house is a card bearing the message “For Santa” (with a backwards “S” to give the impression that a child had written the message). The card is modeled from a cube, creating the shape of a triangular prism using the merge edges function. The unnecessary faces are deleted, and the solidify modifier is applied to thicken the model and give the appearance of cardstock. Loop cuts are further applied to “bend” the rear face of the card, so that the card looks more realistic and organic. Finally, the texture is applied to the front face of the card.
Assets Downloaded from the Internet
Stockings
Contributor: Mel
Model Source: https://sketchfab.com/3d-models/christmas-stocking-b42b0ebf61cc436e88f8cfdebc3b463e
Teddy Bear
Contributor: Mel
Model Source: https://sketchfab.com/3d-models/teddy-bear-9e396f7d0dcc4ae38ce052da5b3629a8
Firewood
Contributor: Brenden
Model Source: https://sketchfab.com/3d-models/firewood-b1b610c7c588439d822e4af729c2f5bd
Material Source: asset_base_id:e05ec65d-0f83-4ee8-b7ba-95604d749528 asset_type:material
Rubble
Contributor: Brenden
Model Source: https://sketchfab.com/3d-models/rubble-9a180893d6454f68a764e62be3fc5c92
Material Source: asset_base_id:e05ec65d-0f83-4ee8-b7ba-95604d749528 asset_type:material
Presents
Contributor: Brenden
Model Source: https://sketchfab.com/3d-models/present-v2-1cf0ba39a67441498652123ea1c84239
The models for the presents were downloaded from Sketchfab, but the wrapping paper texture was a bit bland. The wrapping paper used was actually hand-drawn using Procreate on the iPad, and then the textures were further adjusted/manipulated on the model using some extra UV editing to better allow the wrapping paper texture to align with the geometry.
Lighting
To achieve the effect of the scene taking place in the middle of the night, the light was used very sparingly. There is one point light source oriented above the Gingerbread house to allow certain elements in the foreground to be visible, and to also further enhance the effect of depth already achieved by the depth-of-field feature. Furthermore, there are numerous low-intensity area lights that form the perimeter of the ceiling to achieve the look of the inset lights embedded in the ceiling.
The rest of the light produced in the scene is emitted from the garland above the fireplace, the string lights on the christmas tree, and the flames of the fireplace. For the garland and the string lights, the material applied to the models is an emission texture.
Advanced Techniques
- Main Geometry from Scratch
- Most of the geometry in the scene was modeled from scratch, with only five models being downloaded from the internet (stockings, teddy bear, firewood, rubble, and presents)
- The main geometry in the scene are the Gingerbread house, the couch, coffee table, Christmas tree, and the fireplace, all of which are modeled from scratch.
- UV Mapping and Texturing from Scratch
- This requirement was met while texturing the Gingerbread house, as the textures and materials of all parts of the Gingerbread house are composed from scratch using the shading editor tool. The gingerbread house was also modeled from scratch.
- Creating a Custom Procedural Material
- We used a noise texture when texturing the Walls and roof of the Gingerbread house (to achieve the roughness of the walls and the appearance of dusted sugar on the roof/base of the house).
- We used a Voronoi texture when texturing the Christmas ornaments to achieve the look of the speckled texture
- Normal maps and displacement maps were utilized when texturing many of the objects in the scene, such as the rug and the Christmas tree
- Wave texture was used when texturing the candy canes to give the striped effect
- Blender/ Cycles Feature
- The depth-of-field feature was utilized in Camera properties to achieve the effect of depth in the room (so that the Gingerbread house was the focal point and all objects beyond the gingerbread house in the scene were given the effect of being farther away from the viewer).
Notable Technical Contributions
- Cloth Simulation for Pillows
- As mentioned above in the description of the living room modeling process, the pillows were modeled using the cloth simulation function under the physics properties panel. The cloth simulation allowed for a more organic modeling process. The model was first subdivided into many different sections and turned on cloth physics to create a solidified surface. The pressure was then activated, the vertex masses and collision distances were decreased, and the quality of the collisions was adjusted according to the effect of the cloth simulation. The gravity was then turned on to allow the collisions to take effect, and the pillow was formed.
- Depth of Field
- In order to fulfill the requirements of the Blender/Cycles feature, a depth of field was applied to the camera. The focus point of the camera was the gingerbread house, so that objects further away from the camera would be blurred and give the impression of depth. After numerous attempts of experimenting, the best settings were determined to be an F-Stop of 0.35 and 6 blades.
- Node Wranglers
- A node wrangler was utilized when modeling the Christmas tree
- Particle Effect
- A particle effect was used when modeling the string lights on the Christmas tree, as the modeled lightbulb was strewn onto the Bezier curve to create the effect that the lightbulbs are hanging from the cord in somewhat even intervals and in random directions.
- In a similar manner to the string lights on the Christmas tree, a particle effect was used to have the pine needles modeled on the garland. We modeled a single needle and utilized the particle effect to achieve the effect of having a number of needles protruding from the Bezier curve.
- Fire
- In the physics properties panel, the flames of the fire in the fireplace was achieved by creating a fluid simulation with a flow type of fire. A cloud texture was applied to the flames, and the data was baked to produce a moving image of the flames, so that the flames would move more naturally. From there, a specific keyframe was chosen, based on which had the most authentic and organic image of fire.