Category Archives: 4D Foundation II – G8

walking home

20150923_231607 20150924_095540 20150924_095631 20151224_004307 20151224_004446 20160122_183645 20160124_164349 20150917_053629These are the images for the first project. The intent here was to contrast the night and day images, with the haze as the constant feature. Some of the images were taken long before, while the rest was taken during a freak haze event that had occurred around the time of this project. I also went to the Skyville at Dawson to take a picture of the cityscape so as to create a line of action. The composition is dark on the bottom to bright on the top. Viewers can view the images in any order that they like.

ADM Library final

20160402_195849 20160402_202139 20160402_202153 20160410_190829 20160410_190834 20160410_190846 Image (2) 20160402_195827 20160402_195831 20160402_195841 20160402_195845So it’s time to talk about the final assignment. It was a long struggle to get to the end but I firmly believe that i’ve done the best.

For the final assignment. I did a mold out of aluminum foil and placed it on top of a book. Afterwards, I added some additional details like the grooves and the edges of the book. The detail of the book pages are easy to make for the horizontal version. However, the vertical version proved harder as the weight of the plaster cast was too heavy that the sides of the mold started warping . To mitigate that, i attempted to add some cardboard to strengthen the sides. The end result was a cast that was still a little warped at the sides, but not heavy and bloated at the bottom.

I had initially experimented on using A and B mixture of resin, but faced the same issue. The mold was not only prone to flexing and warping, but was also prone to breaking apart should the mixture be uneven.

After casting both molds, i initially intended on breaking the book with a hammer to show how the antiquated (in my opinion) medium was falling apart, but settled with creating a melting effect as the dust particles from the plaster broken book would pose as a health hazard, especially when inhaled by accident. So i mixed more plaster with enough consistency so that it’s neither too diluted nor too stiff. I placed the book cast on the foil and poured the additional plaster. The opened book began fracturing in certain places, which was part of the intention. In the future, i may consider breaking it apart, or place it outside of the library and tempt users into breaking it with a blunt instrument.

ADM library

20160321_122828 20160321_122903 20160321_122856 20160321_12301620160321_123354 20160321_1226210286 RGB Books-Tauba-Auerbach-large6658704829_4480f31394_b


The first idea would be to create a miniature of the library with certain pieces of information either written around it or concealed. I might use a library book sleeve , and audiences are able to pull pieces of note off it . The miniature itself could be an abstract representation of the library itself.

The second idea would be to create a book of colors. I would take a video while walking around the library, then i would compress the footage to a reasonable length before blurring the footage to their core colors before exporting the shot into an image sequence. I would then print out the pages and bind them together. I might consider printing several volumes so as to

The third idea would be more towards installation art. I would play music in the background and encourage the viewers to put pieces of lego together and piece what the structure looks like in their head. The main theme here is participation and interpretation.

Finally, the last idea involves creating a plaster cast of a book, showing it melting and breaking at the edges.

For that setup, I seek to explore the cold, dead tactile feel of plaster to parallel the ever decreasing relevance of physical books. Though we may have a sense of romanticism towards the humble paper book, we find ourselves looking for things through the internet and downloading everything wherever convenient. The rise of blogs, online news, podcasts and audio books have further thrown this medium into darkness.

Project 2 by Win Zaw

The final product in all it’s glory. For this project, there were a couple of hurdles that i’ve had to overcome. Firstly, i’ve had to create the 3d assets using a 3d software (maya). After I was done creating the 3d models and textures, i’ve had to create a terrain.

Firstly, i created a terrain model in unity and sculpted the terrain. I made sure that the edges of the terrain remained untouched as i wanted to create an infinite terrain script. If the terrain was even a little elevated, the end result would be an obvious seam.  I’ve also made an attempt to sculpt the terrain manually in Mudbox using a displacement mapping. This worked to a certain limit. However, as the process of converting object to terrain is time consuming, i’ve decided against it.


Once i was done with sculpting the terrain, i created a base texture, which would be the grass. I would then add another layer, which would be the soil. I would vary the texture to create a sense of erosion. Afterwards, i would create a grass texture and add in the trees using a paint function. The idea would be to create a dense forest in one area.

Afterwards, i created a couple of pillars and added an audio source to each of them. I initially had trouble adjusting the spread and minimum distance, but after much troubleshooting, i found out that the problem was from multiple audio listeners. I kept it to one and found that the audio now softened with distance.

I added a few ambient tracks from my recordings in Labrador Park. One was of the forests, one was at the docks, one was the sound of winds blowing and another one was a track from Radiohead callled “Bloom”. I chose that song as it inspired me to design the look of the project. In order to have the audio elements loop, i went to Premiere pro, cut off the front end of the audio and stuck it at the back, then i softened the front half and add the cut off section to blend in.

In creating this environment, i hope to make people immersed in the spaces of Labrador park. In future, i might also consider adding even more audio sources to more correctly. However, as a lot of the time had been spent on research and development, I’ve had little time to collect more audio samples and blend them in.

I added the infinite terrain script in C# (see below)


using UnityEngine;
using System.Collections;

public class InfiniteTerrain : MonoBehaviour
public GameObject PlayerObject;

private Terrain[,] _terrainGrid = new Terrain[3,3];

void Start ()
Terrain linkedTerrain = gameObject.GetComponent<Terrain>();

_terrainGrid[0,0] = Terrain.CreateTerrainGameObject(linkedTerrain.terrainData).GetComponent<Terrain>();
_terrainGrid[0,1] = Terrain.CreateTerrainGameObject(linkedTerrain.terrainData).GetComponent<Terrain>();
_terrainGrid[0,2] = Terrain.CreateTerrainGameObject(linkedTerrain.terrainData).GetComponent<Terrain>();
_terrainGrid[1,0] = Terrain.CreateTerrainGameObject(linkedTerrain.terrainData).GetComponent<Terrain>();
_terrainGrid[1,1] = linkedTerrain;
_terrainGrid[1,2] = Terrain.CreateTerrainGameObject(linkedTerrain.terrainData).GetComponent<Terrain>();
_terrainGrid[2,0] = Terrain.CreateTerrainGameObject(linkedTerrain.terrainData).GetComponent<Terrain>();
_terrainGrid[2,1] = Terrain.CreateTerrainGameObject(linkedTerrain.terrainData).GetComponent<Terrain>();
_terrainGrid[2,2] = Terrain.CreateTerrainGameObject(linkedTerrain.terrainData).GetComponent<Terrain>();


private void UpdateTerrainPositionsAndNeighbors()
_terrainGrid[0,0].transform.position = new Vector3(
_terrainGrid[1,1].transform.position.x – _terrainGrid[1,1].terrainData.size.x,
_terrainGrid[1,1].transform.position.z + _terrainGrid[1,1].terrainData.size.z);
_terrainGrid[0,1].transform.position = new Vector3(
_terrainGrid[1,1].transform.position.x – _terrainGrid[1,1].terrainData.size.x,
_terrainGrid[0,2].transform.position = new Vector3(
_terrainGrid[1,1].transform.position.x – _terrainGrid[1,1].terrainData.size.x,
_terrainGrid[1,1].transform.position.z – _terrainGrid[1,1].terrainData.size.z);

_terrainGrid[1,0].transform.position = new Vector3(
_terrainGrid[1,1].transform.position.z + _terrainGrid[1,1].terrainData.size.z);
_terrainGrid[1,2].transform.position = new Vector3(
_terrainGrid[1,1].transform.position.z – _terrainGrid[1,1].terrainData.size.z);

_terrainGrid[2,0].transform.position = new Vector3(
_terrainGrid[1,1].transform.position.x + _terrainGrid[1,1].terrainData.size.x,
_terrainGrid[1,1].transform.position.z + _terrainGrid[1,1].terrainData.size.z);
_terrainGrid[2,1].transform.position = new Vector3(
_terrainGrid[1,1].transform.position.x + _terrainGrid[1,1].terrainData.size.x,
_terrainGrid[2,2].transform.position = new Vector3(
_terrainGrid[1,1].transform.position.x + _terrainGrid[1,1].terrainData.size.x,
_terrainGrid[1,1].transform.position.z – _terrainGrid[1,1].terrainData.size.z);

_terrainGrid[0,0].SetNeighbors( null, null, _terrainGrid[1,0], _terrainGrid[0,1]);
_terrainGrid[0,1].SetNeighbors( null, _terrainGrid[0,0], _terrainGrid[1,1], _terrainGrid[0,2]);
_terrainGrid[0,2].SetNeighbors( null, _terrainGrid[0,1], _terrainGrid[1,2], null);
_terrainGrid[1,0].SetNeighbors(_terrainGrid[0,0], null, _terrainGrid[2,0], _terrainGrid[1,1]);
_terrainGrid[1,1].SetNeighbors(_terrainGrid[0,1], _terrainGrid[1,0], _terrainGrid[2,1], _terrainGrid[1,2]);
_terrainGrid[1,2].SetNeighbors(_terrainGrid[0,2], _terrainGrid[1,1], _terrainGrid[2,2], null);
_terrainGrid[2,0].SetNeighbors(_terrainGrid[1,0], null, null, _terrainGrid[2,1]);
_terrainGrid[2,1].SetNeighbors(_terrainGrid[1,1], _terrainGrid[2,0], null, _terrainGrid[2,2]);
_terrainGrid[2,2].SetNeighbors(_terrainGrid[1,2], _terrainGrid[2,1], null, null);

void Update ()
Vector3 playerPosition = new Vector3(PlayerObject.transform.position.x, PlayerObject.transform.position.y, PlayerObject.transform.position.z);
Terrain playerTerrain = null;
int xOffset = 0;
int yOffset = 0;
for (int x = 0; x < 3; x++)
for (int y = 0; y < 3; y++)
if ((playerPosition.x >= _terrainGrid[x,y].transform.position.x) &&
(playerPosition.x <= (_terrainGrid[x,y].transform.position.x + _terrainGrid[x,y].terrainData.size.x)) &&
(playerPosition.z >= _terrainGrid[x,y].transform.position.z) &&
(playerPosition.z <= (_terrainGrid[x,y].transform.position.z + _terrainGrid[x,y].terrainData.size.z)))
playerTerrain = _terrainGrid[x,y];
xOffset = 1 – x;
yOffset = 1 – y;
if (playerTerrain != null)

if (playerTerrain != _terrainGrid[1,1])
Terrain[,] newTerrainGrid = new Terrain[3,3];
for (int x = 0; x < 3; x++)
for (int y = 0; y < 3; y++)
int newX = x + xOffset;
if (newX < 0)
newX = 2;
else if (newX > 2)
newX = 0;
int newY = y + yOffset;
if (newY < 0)
newY = 2;
else if (newY > 2)
newY = 0;
newTerrainGrid[newX, newY] = _terrainGrid[x,y];
_terrainGrid = newTerrainGrid;


I also added an FPS camera and adjusted the movement parameters. (eg. Jump, mouse sensitivity, running speed and walking speed.)


  1. public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
  2. public RotationAxes axes = RotationAxes.MouseXAndY;
  3. public float sensitivityX = 15F;
  4. public float sensitivityY = 15F;
  5. public float minimumX = -360F;
  6. public float maximumX = 360F;
  7. public float minimumY = -60F;
  8. public float maximumY = 60F;
  9. float rotationY = 0F;
  10. void Update ()
  11. {
  12. if (axes == RotationAxes.MouseXAndY)
  13. {
  14. float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
  15. rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
  16. rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
  17. transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
  18. }
  19. else if (axes == RotationAxes.MouseX)
  20. {
  21. transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
  22. }
  23. else
  24. {
  25. rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
  26. rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
  27. transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
  28. }
  29. }
  30. void Start ()
  31. {
  32. // Make the rigid body not change rotation
  33. if (rigidbody)
  34. rigidbody.freezeRotation = true;
  35. }


I also added in a global fog to create a fading effect, so objects in the distance would blend in with the skies. As for the skies itself, i added a default unity skybox.


Trip to Labrador Park

Labrador Park, located at the southern part of Singapore, was once used as a defensive position by the British to fend off against the Japanese. Among the many war relics are the bunkers, pill boxes and six inch 37-ton guns. When the Japanese arrived in Singapore, they came from the northern coast instead of the southern coast which the British expected. No Japanese ships passed through and as a result, much of the defensive positions at the fort were put to waste. The battle of Bukit Chandu, now known as Bukit Panjang also took place near the vicinity of Labrador Park.

In November 2001, it was announced that the place was to be turned into a nature reserve. I’ve had some luck finding some of the listed species of animals my trip there; I’ve seen several species of birds and even a Komodo dragon!

Since I’ve been to the place before, I’ve decided to revisit the place on my bicycle. I’ve also made an extra effort into exploring the place by visiting the open area near Port road. It was drizzling at the time, but usually there would be Indian foreign construction workers playing cricket as the place is immensely huge. On top of that, I’ve visited the bunkers deep into the reserve and although the six inch cannons were replicas, I’ve gotten a sense of what it was like to defend the place. According to some websites, there are tunnels that lead from Labrador park to sentosa.

After I was done with the natural reserve, I cycled to the edge of the park and enjoyed the view of Harborfront. I watched as the locals fished out their catch. Some even waded to the shores to catch the crabs.

Labrador_Park_Old_Fort show_resize_image labrador-park-six-inch-gun

For my research, I have also traveled to the newly opened kranji marsh. I was told that there were crocodiles there, but they weren’t there at the time of my visit.

SAM trip by win zaw

buddha_realm (1) realm-of-reverberations-1 1402871445710 20140814210057M60KyMemga

Saw “realm of reverberations” by Chen Chieh jen. The short film chronicles the lives of those who were once part of the Losheng Sanatorium.

I don’t know if i can ever categorize this as a documentary or a film. What you see is what you get, and what i got was a general sense of melancholy. It’s untainted with the cliche of other contemporary documentaries. No sad music, no media-led narrative, and fortunately no vomit inducing statement of hope towards the end (as i’m sure you’re well aware after watching countless documentaries on climate change). This is their reality. Will it get any better? Will it get any worse? This film doesn’t make it a focus. Instead, we’re thrown into a world and immersed in it’s general ambiance.

A bit of backstory: The Losheng Sanatorium was built to quarantine those who were diagnosed with leprosy. At around 1954, patients were allowed to leave the sanatorium after new discoveries to leprosy treatment had been made. However, those that had been infected faced discrimination and were forced to live in isolation. Things only got worse when the government declared in 1994 that a mass rapid transit line be built over the sanatorium.

Though there is a lot to be said about the sordid state of affairs, i feel that it is not the focus of the documentary. It’s almost as if the director expected us to already know about it, or to be driven into doing some research after immersing us in it’s world. I can’t be too sure, but if i were him, I would have considered the latter. After all, I would be more inclined to watch and experience something than to read about it and fill the missing pieces in my mind.

Aesthetics wise, still shots are used often and in long takes. The subjects are in focus for most of the shots and seem to move slower than usual. Everything is in black and white and the editing is flat throughout. I liked how Chen chieh jen did not utilize the final edit to manipulate the audience into feeling anything. This lack of a “narrative” forces the audience to participate in the viewing of the artwork. “Is what we’re being presented here good or bad?” It’s really up to us to decide.


Shitamichi_Motoyuki_-_from_the_series_toril_-_2006_-_2012_-_NMAO_Collection_-_2 torii2t5 torii-cover.jpg

“torii” photo series by Shitamichi Motoyuki, 2006-1012, 5 photographs, C-type print, 100 x 150cm

During my trip to the exhibition, I made the error of thinking that one of the photos were taken at Saigon. Thankfully, one of the exhibition staff came up to me and clarified that the photo was taken at Saipan, and not Saigon, which makes sense, as the location of the photo was listed as USA and had a Torii gateway. My assumption was that after the US army landed on the island during the second world war, it established a base there as part of it’s island hopping campaign. After the war had ended, the base still remained active.

I was able to tell that the Torii gateway was the focus of the photo series, and after reading the title of the artwork, my suspicions were confirmed. on top of that, it was my belief that the photographer wanted us to feel that the structures were at risk of being devoured by it’s surroundings.

I’ve had the same feeling when photographing the magnificent wooden sculptures at Shwedagon pagoda in Myanmar. Some of them stretched as far as the Bayeux tapestry in Dublin, but unlike it’s European counterpart, some of the sculptures are maintained poorly and face the risk of defacement or rotting.


Win Zaw 4d project 2

the final video. I’ve decided to use the film “Eternal sunshine of the spotless mind” as the inspiration for the lift sequence to show the fleeting nature of life, and the process of movement and ascension. On top of that, i’ve tried to overlay the lift sequences with another sequence of my bedroom. The second lift sequence was looped to give it the illusion of movement.