Thesis Blog Part. 10 | Final Thesis Submission

Making Of / 10 June 2019

Hey guys, it's been a hectic week for me as I graduated from SCAD last week!

I have actually finished my project and my research paper weeks ago, but graduation and family trip made me missed the final update on this blog. So, to not waste our time I'll show what's the final submission look like!

This project was made as a part of my research on how real world cultures integrates into environment art by adding storytelling elements through out the space. Additionally, I choose to use Balinese culture because I want to go away from using the heavily used ones such as the Japanese, Norse, and Greek mythologies. This way, it helps show the storytelling elements within the environment.

Here's some stills from the real-time environment :

Thesis Blog Part. 9 | Thesis Application Part 2

Making Of / 22 May 2019

Hey guys, welcome back to my thesis blog! 

Following my thesis research from last week, I'll be talking more about how I implemented landmarks and symbolism along with visual language into my project. If you haven't seen the Gnomon talk, be sure to look at it! 

4. Landmarks and Symbolism in Practice

The temple environment is designed to represent a clear destination point which can be seen throughout the different stages of the journey. A hint of the temple area can be seen even during the earlier shots to draw the viewer’s attention, inferring that the cave is just an entrance part of the environment. In general, the environment design resonates with the Balinese architecture philosophy. The environment can be divided into three separate landmarks: an entrance, an outer pavilion and the inner shrine.

Fig. 8. Temple Landmark

In addition, the environment design also symbolizes the sacrality of the space. The idea of sacrality is highlighted with the light coming through the hole with the temple appears high above the ground. In the end, the creation of these landmarks filled with symbolism help inform the narrative theme established earlier in the concept development phase.

Fig. 9. Temple Landmark symbolizing Sacrality

5. Visual Language in Practice

Working in a digital space makes environment artists often forget that they are building a realistic space with different constraints and limitations. By understanding the limits of the space and dealing with those constraints, it will lead to a better environment design. Dan Cox, Senior Artist at Blizzard Entertainment, discussed the parallels between interior design principles and environment art at the GDC '14.

Interior designers also use an interesting rule of 60-30-10 . The rule is about the use of a desaturated color for a 60% amount of the space, with 30% being a more saturated color, and the last remaining 10% often meant for large bold pops of color. It is a useful technique in order to create an effective color scheme for an environment. This approach also allows the viewer to focus on one specific area of the environment, which leads to a better understanding of the space.

Fig. 10. Environment Color Breakdown

The color breakdown shows how the environment looks like in lit and unlit mode. Using the 60-30-10 rule as a guideline, I made sure that green becomes the focal point of the environment color. This approach allows the environment to re-enforce the idea that Balinese art must be infused with life, a common concept within the Balinese community. Ultimately, the small hints of Balinese culture scattered throughout the environment helps the viewer to a better understanding of the space.


In general, history and cultural context has a significant influence in the creation of a fictional world especially in the modern pop culture. As Rogelio Olguin said during the talk, the added layer of history helps turn an environment concept into a believable world for the viewer. The Balinese has a distinctive attitude to art that is comparable to how environment art is developed. In Bali, art is driven by a narrative theme of devotional act towards their beliefs.

Visually, Balinese art is known for their decorative carvings, full of symbolism towards life. In addition, the construction of Balinese architectures is divided into three zone of landmarks, which makes it comparable to a common strategy in creating an environment art. Thus, Balinese culture might be a more suitable reference for environment storytelling.

This is it for this week's update, I'll show the final renders of my cinematic environment next week. 'Till next time!

Thesis Blog Part. 8 | Thesis Application Part 1

Making Of / 18 May 2019

Hey guys, welcome back to my thesis blog!

I've been focusing on my finishing my thesis for the past week, so this week, I'll be talking more about the application of my thesis research on the project. This thesis project emphasizes the idea of telling a story by integrating cultural elements into environment art without the presence of a character. The inspiration comes from a Gnomon workshop that discussed how environment becomes the second most important character next to the protagonist. Following the presentation, I began to explore a way to implement them into my workflow.

1. Narrative Themes in Practice

Narrative themes can be defined as what the work says about the subject. Classical paintings and literature are often the best at capturing these narrative themes as they have a specific context needs to be interpreted. In this case, the narrative theme comes from the fact that the Balinese people are known for their devotional art towards their religious beliefs. Devotion is often portrayed as praying towards God in fine art paintings.

Fig. 1. Disputation of the Holy Sacrament by Raphael (1509-1511)
Fig. 2. The Three Angels Appearing to Abraham by Giovanni Battista Tiepolo (1724-1729)
Fig. 3. The Crucifixion by Fra Angelico (1420-1423)

One common characteristic highlighted in each painting is that there is a figure higher than eye level with a light source coming from above. The environment concept art is developed using this simple rule as a basic guideline.

Fig. 4. Environment Concept Art

2. Psychology of Colors in Practice

Color has a deep psychological effect that can fill a scene with a certain emotion and tension to create a compelling atmosphere. Teal and orange for example, is a commonly used complementary color scheme. Depending on its context, orange can be interpreted as warm or exotic while teal can be interpreted as cold or calming. The Balinese believe that art must be infused with life, which means that every aspect of art, including colors, must be derived from nature. In the color theory, nature is often represented by green. Therefore, I’ve decided to use green as the focal point for the color in the environment. 

Fig. 5. Nature represented with Green

3. Layers of History in Practice

In the talk, Josh Lynch and Brian Recktenwald mentioned about finding storytelling elements through references. History can often be defined as the surface details on the material or the story behind the objects. Details like scratches, scorches, moss, and dust are added to show the authenticity of the asset, demonstrating how the materials age over time. In this case, the environment consists of a natural open space area which means that it is vulnerable to weathering. Therefore, a layer of dust, moss, and overgrown plants should be visible in the scene. The added storytelling elements help implies the feeling of a quiet and abandoned space.

Fig. 6. Surface Details on Statue

Brian Horton who directed Rise of the Tomb Raider (2013) mentioned the use of visual imagery for storytelling within the game environment. This form of history help describe the culture and the people who inhabited the space. Murals are often used to inform a culture since it is nearly impossible to reconstruct history into an environment art. Here is an example showing a classical Balinese rendering of the Sacred Monkey Forest depicted on the cave wall.

Fig. 7. Sacred Monkey Forest Mural

I guess this is it for this week's update, I'll talk more about the rest of my thesis application on the project in the next update. 'Till next time!

Thesis Blog Part. 7 | Another Progress Update

Making Of / 06 May 2019

Hey guys, welcome back to my thesis blog!

This week I'll be showing the another update on the environment that I've been continue refining for the past week. I've been working on adding an entrance scene, additional moss details, color grading using LUT and cinematic cameras into the scene. 

1. Creating the Entrance Scene

The main purpose of landmark is to represent a clear destination point to the viewer. In a game environment, landmarks help guiding players on where to go, while in film landmarks are often used as a part of visual cues showing what is going to happen next. Since this project is focuses more on a cinematic environment storytelling, having a sub-environment like an entrance is much needed.

For this entrance scene, I focused on introducing what's this environment is about. I've added some wooden planks and metallic chain (from the Soul Cave environment pack) along with torch fire to show a possibility of live inhabits the place. In addition, I've also created brighter pathway in the background to show that there's more to the environment than just this entrance.

The scene is intentionally dark, to emphasize the existence of a new environment in the back. I placed a cool fill light to give a sense of an outer world behind the camera. Which if we combine with the torch lights, we can create a nice color dynamic within the scene. Here's a breakdown images of a detailed lighting and scene depth passes for the entrance scene.

2. Adding Moss Detail

The next thing I did was adding moss detail on some foreground assets, mostly the statues. The moss were created from Quixel's moss atlas, imported to Zbrush to create a quick base mesh for each plant cards.

Using the generated atlas geo, I can now assemble it and use Houdini to procedurally create moss clump. Here is how it looks in engine.

3. Color Grading and LUT

Color lookup tables (also known as LUTs, is a file that changes all the colors of your image to different ones, usually to apply some sort of filter effect or stylized look. In Unreal, a LUT can be used to achieve color correction using a Post Process Volume. In this case, a LUT is used to create a more natural look for the environment. Here's a quick look of how a LUT affects an environment.

The main reason to use a LUT is it provides instantaneous results as simple as a click. I'm not going to show how to create a LUT, as it is a fairly common trick to be used in the industry. You can check Epic Games Documentation if you really want to learn how to create one. Here's another closer look on how a LUT affects a scene.

with LUT

without LUT

As you can see, the difference is quite subtle but it changes the narrative of the scene a lot. The one with LUT shows a more calming yet mystic natural space. To be fair, you can create this effect by adjusting each of the post process volume's parameters but it will take a lot longer time to generate a similar result.

4. Cinecam

Last but not least, I've added multiple cinematic cameras to the scene. Each focusing on telling a different story of the environment. Starting with an entrance scene, hinting about the main temple area. Which then continues following the environment by showing each detailed parts of it.

For all the sequence, I've manually key framed the movement through the sequencer. This is how my sequencer looks like.

Here's the how the sequence looks in motion.

 I guess this is it for this week's update, I'll continue polishing the environment for the coming week. 'Till next time!

Thesis Blog Part. 6 | Progress Update

Making Of / 29 April 2019

Hey guys, welcome back to my thesis blog!

This week I'll be showing the updated environment that I've been polishing for the past week. I've been working on a new landscape asset, including a layered material and some background animation.

1. Creating the Cave Landscape

To start the creation process, I've exported a combined landscape mesh that I've created in Unreal using Quixel assets. To simplify the process, I dynameshed the entire cave assets, import the base landscape grid mesh and re-project all the details from the merged geo. This technique allows me to get a nice height information for later use in Unreal. 

Once it's done, I exported the Displacement .exr from Zbrush to Nuke to reformat it into a 16 bit .png data that Unreal Engine can read for their Landscape Height maps. Now that we have the landscape geo imported, it's time to create the materials! To start with, I created a simple ground material function as the base layer.

The material itself isn't hard to create, it's actually quite similar to the previous master material setup I made. The main difference is the additional function inputs instead of parameters. Using the ground material as a base, I then created a procedural puddle material based on the height information on the ground texture.

I recreated the puddle material function based on a tutorial on YouTube. Basically, it's using the previous material layer height information to drive where the puddles shows up by using the if node function. This node essentially works while comparing the 2 nodes connected (A and B). If node A > B, the node will activate the node attached to it, and vice versa.

Here's the final node graph for the landscape material. Using 2 tile-able materials (in this case, ground and scattered leaves) as the main layers, with procedural puddles generated by the combined height information, displaced based on the distance to the camera. This material setup give me a good control over how the landscape looks.

2. Implementing Animation/FX into the Environment

After reading through an article by Sam Gao on the Technical and Art Tips for Environment Artists, I realized how a simple movement (if done right) can affect how we perceive something. One thing that often overlooked by artists when creating an environment art is adding a subtle background animation. Although it doesn't need to be extravagant, a dynamic vibrancy adds a lot to the overall feel of the environment. Using the example project on Particles, I've decided to add some dust, water and fire FX to my thesis project. 

Combined with my previous landscape material setup, I can create a believable puddle scene using the example water particle system provided by Epic Games. This particle emits water splashes and drips within a certain distance. 

The second FX I've added was the torch fire. Using the newly imported fire FX, I can now create secondary light source which help me creates a better contrast value towards the altar scene.

The last FX I used was the haze dust particle. This particular FX works as a controllable and scale-able height fog. It also gave a nice cold haze to the otherwise warm environment. 

3. Rendering and Compositing

With all the required assets created, I can just render the sequence using the sequencer. I exported an .exr image sequence with a linear color space using a render pass format. The passes I use was Final Image (Beauty) and Scene Depth (Z). This allows me to get a more controlled camera lens blur using the Zdefocus node in Nuke. Additionally, I've also imported a lens flare gizmo downloaded from Nukepedia. 

Additionally, I've also added a tiny camera shake into the scene. This camera shake node helps generate the handy cam feel, making it feel more like a natural environment. Last but not least, I've also added a vignette and crop it to 2.35:1 or a cinema scope format.

Here's how it looks like right now:

 I guess this is it for this week's update, I'll continue polishing the environment for the coming week. 'Till next time!

Thesis Blog Part. 5 | Lighting for Photorealistic Real-time Environment

Making Of / 22 April 2019

Hey guys, welcome back to my thesis blog!

As I said last week, I'm going to focus on showing how I lit the environment. At the moment, the environment is way too dark, making it hard to see what's going on. So, the first thing to do is collecting the lighting references.

1. Lighting References and Mood board

Since I know I wanted to have a single light source, I began to look for references that shows how similar light situation works in photography. In general, I always refer back to photography as my go to lighting references. My general rule of lighting is :

"Something that's 100% physically correct doesn't necessarily translate into realistic images,
it is more important to create something that looks real even when it's not physically correct."

I stumble upon this rule when I first started to do lighting a year ago. I found it super easy to just copy or use a preset value for either lighting nor shading, but it never 100% translates into photo-realistic images. Thus, I began to try using my eyes more. Based on the references I gathered, I know that I will need a few controlled-shape god rays, along with high-contrast exposure.

I learned photography back during my undergrad years. Knowing how light works in real world helps tremendously in terms of CG lighting. A good exposure control is needed to make something look photo-real.

2. Adding the God rays

I've tried creating multiple lights that contributes to the volumetric fog, but it never look sharp enough as I wanted. Thus, I searched for tutorials that shows how to create fake god rays in Unreal.

I created a simple cylinder that has the top part scaled smaller in Maya and import it to Unreal.

Next, I just need to create the material that drives the fake rays. The setup itself is pretty simple, a translucent material with emission that's being driven using multiple noise opacity masks.

All that's left now is to import it to the scene!

3. Importing the God Rays into the Environment

For the final scene, I've created 3 different god ray materials, each with different noise value. This allows me to control the shape of the rays while arranging them in the environment. Here's the updated sequence with the new rays added into.

Additionally, I've also created another camera showing another view on the cave environment. I tried to play with high exposure and a little camera abberation from the engine.

 I guess this is it for this week's update, I'll continue polishing the environment for the coming week. 'Till next time!

Thesis Blog Part. 4 | Using Photogrammetry to build Photorealistic Real-time Environment

Making Of / 15 April 2019

Hey guys, welcome back to my thesis blog! 

This week I'll be showing the updated environment that I built with the scanned assets from Quixel and my own. Using the previously decimated cave as the base, I then start rebuilding the environment using scanned assets instead.

1. Creating the Entrance Cave

Quixel Megascans helped me tremendously for the project. I created a basic grey material with 100% roughness value in addition to each of the scanned assets' detailed texture maps. I then imported a look-dev set with a chrome ball, a grey ball, and 2 different macbeth charts. The first Macbeth chart behaves normally to light, while the other one is an Unlit version to show that the color checker texture used is correct.

Here's a quick preview of the initial cave entrance look from Unreal. I added depth of field, vignette and a cinematic color tint in Nuke for a quick compositing pass. Other than that, everything is created in real-time from Unreal Engine 4.

2. Creating the Inner Cave, Main Temple Area

With the entrance part done, I then started to focus on the inner cave area. This environment sub-level focuses on the main Balinese temple which still uses the grey material setup for the most part. Some of the rock textures are introduced as more assets are being textured and shaded.

Same like the entrance area, the sequence was exported to Nuke for a quick compositing. Camera lens blur (depth of field), vignette along with a cinematic color tint were done in Nuke.

3. Material Test

The next step on the project is to apply materials on the environment. Using my previous material setup, I can introduce a new lighting mood, showing a mystic Balinese cave. Focusing on a single light source to showcase detailed bits of the environment helps a lot in creating a mystic feel for the environment.

In addition, I played a lot with custom height fog and volumetric fog that was first introduced in UE 4.16. I'm liking the direction of the project at this point, focusing more on the look and lighting instead of asset creation. Color checker is also being used here to judge my lights value.

4. Introducing Foliage to the Environment

One thing that's clearly missing from the environment is foliage. The environment at the moment feels too bland, especially without any color except the color checker. Thus, I started adding vines using the popular Ivy Foliage Pack. For the project, I pushed the SSS value to 10.0 since I wanted the vines to be backlit, introducing an interesting color to the environment.

Additionally, I've also downloaded a few vine atlas from Quixel, adding different shape to populate the scene. I used the original Quixel foliage master material as a base, giving me enough control to how I want it to look like in the environment.

My original plan with the vines was to use UE4's foliage brush to populate the cave easily. Unfortunately, it doesn't work the way I wanted to. Thus, I had to manually placed all the vines to the cave. However, this actually helps me control the overall look of the scene without being overly reliant to the foliage brush. 

One thing I learned the most from this thesis project is to never be over-reliant on yourself in terms of asset creation. I don't think I'll be able to achieve this level of quality within a few weeks of work if I were to create everything from scratch. Yes, the photogrammetry helps a lot. But using other people's asset (the ivy pack, landscape material, JRO Zbrush tools, etc) also speeds up my work.
I guess, this is it for this week's update. I'll be focusing on lighting for the next week, so 'till next time!

Thesis Blog Part. 3 | Environment Look Development

Making Of / 12 April 2019

Hi guys, welcome back to my thesis blog update! This week, I'll be showing a step-by-step progress of my real-time environment starting from the block out phase to the basic lighting pass. 

To make it easier, I've decided to build the environment based on one of the concept art I made before. This way I can focus on creating a detailed environment especially within the allocated time I have to complete my thesis. The concept art not only helped me in terms of lay-outing the environment, but also create the main lighting setup for the environment.

1. Preparation in Unreal Engine 4

To start it out, I used the common box-modeling method that often uses image planes. Thus, I started with importing the concept art as a texture map and applied it as a UE4 material. This helped me speed up the blocking out phase of the environment.

The material itself isn't complicated, I just created an unlit material with a tiled texture control. This way, I can control the texture size on the fly without the need of going back to Photoshop or other image editing software of your choice.

2. Blocking out the Environment

Now that I have the concept art imported, it's time to start building out the environment based on the view. The basic idea here is to create a modular building piece that I can just substitute with a detailed asset later.

At this point, I was still eager to model every assets that I need to create. Later I realized that it was a bad idea, there is a reason why people started to kitbash assets in production.

3. What went wrong?

One thing I noticed was, the proxy geo I used to build my environment did not completely represent my sculpted assets. This is mostly due to the fact that I was rushing the modeling phase because of the time constrain of my thesis project. Thus, I imported the whole block out cave to Zbrush as as base proxy. 

At that point, I was too tired to try fixing my sculpted assets so I decided to sculpt everything in Zbrush. I created the whole cave in Zbrush with the help of JRO's Rock Brushes and decimated them before importing it to Unreal. My plan was to retopo and break the environment into a few pieces and bake the details unto planes later. 

4. What's the Next Plan?

Now that I have a sculpted cave, I can just import the decimated version to Unreal. Since I used the block out assets as a base mesh, I won't need to adjust the location again later. The problem with this method is I can't bake any lights while using the mesh.

Fortunately it's not much of a problem for Unreal. So I created a few dynamic lights to showcase the environment. At this stage, all assets are sculpted in Zbrush. All the trouble that I have from creating all the assets manually is not worth the time it took the detail them all. Which is why I decided to use photogrammetry and Quixel assets for my final environment.

The new trend in using photogrammetry for film and games comes up at the perfect time for me. It allows me to use highly detailed assets without the need to create them one by one. Thus, helping me to focus on look dev-ing the environment and the lighting.

I guess that's it for this week, I'll be updating the blog with the scanned assets for the environment. 'Till next time!

Thesis Blog Part. 2 | Assets Look Development

Making Of / 04 April 2019

Hi guys, been awhile since I've updated my thesis blog. A lot of things happened and I didn't have enough time to set weekly updates last quarter, but fortunately I'm good to continue my blog updates starting this week! :)

So after figuring out the photogrammetry pipeline, I've continued to build upon my basic material setup in Unreal Engine 4. Started from a basic material setup, I've decided to go to a procedural layered material approach.

1. Material Functions

Based on the previous master material, I've decided to build a layered material system to create additional details like moss and grunges. Coming from a traditional VFX pipeline standpoint, it makes more sense for me to try recreate materials as how I used to work with Maya. Fortunately, UE4 has a similar material approach, which is called Material Function.

The base material function contains a similar setup as my previous master material, which contains the basic structure for the scanned assets.

The second material function works as layered details, for instance a moss layer.

The final blend material is created using a simple normal based alpha masking. This allows the moss to procedurally appear at the top of the mesh, without the need to make custom masks. Additional vertex painted mask option is also added for ease of work. 

With the material setup done, it's time to explore another retopolozing trick that I've learned during my internship with Turn 10.

2. Re-topo Tips and Tricks

A good silhouette is extremely important in real-time, and having multiple highly detailed statues doesn't help either. Thus, I've decided to generate the low poly assets using open sourced software like Instant Meshes

While it doesn't give you a super clean mesh, it does help generating quick lower res meshes without wasting too much time on it. You have options to create retopo guides to help the software in calculating the topology. It is a good alternative to Zbrush if you're not familiar with the later one. 

However, if you are comfortable working in Zbrush, I would still recommend using Zremesher instead. The latest algorithm for Zremesher made it easier to retopo fairly quick. In addition, you can create multiple guides similar to how Instant Meshes work. The main difference, Zbrush is more interactive compared to Instant Meshes. Which might be a suitable option to some artists.

3. Look Development in Unreal

Now that we have established the general pipeline for look development (materials and retopology), it's time to import all the assets into the scene. I used a custom color checker mesh as a main guideline for look dev purposes. Below is a sneak peek of all the photoscanned assets I'll be using for my thesis project, in my look dev scene rig inside UE4.

Note: The photoscanned assets are intentionally made to be higher res. This is again to the limitation of UE4 in terms of raytracing computation at the time. While there's a new release of raytracing supports for 4.22, I have not yet tried importing this project into the latest build.

Well, I guess this is enough update for this week. This time I'll really be updating my blog weekly with the world building comes next. See you next time! :)