Project 1: Final Iteration

The inspiration of this study is phototropism, which is the way trees grow towards the light source.

Here, I’ve created an algorithm that generates a probability tree. The probability of where the next branch will grow depends if the light source is on the right or left.

Below, the number of iterations, i, is set to 100. Meaning there are 100 branches. The general direction of growth is towards the sun. However, as the direction of the next branch is entirely probabilistic at each junction, the position of every branch is random.

Sun positioned to the right of the tree:

Sun positioned at the left of the tree:


I’ve added an element of interactivity. After i iterations, we call noLoop(). When the mouse is clicked in the window, loop() is called and a new tree at position mouseX will be generated.

For this, i set i = 30 so it won’t be too cluttered

What could’ve been done better?

Currently, the whether the tree grows to the right of left only depends on the x coordinate of the light source. i.e., sun on the right, tree grows to the left.

Imagine a line drawn from the sun to the base of the tree. Let’s call this the source line. I’d like for the branches to converge towards the source line so it looks like it’s growing towards the sun, and eliminate the branches that grow towards the ground.

Also, I would have liked to make the animations smoother. Currently in each frame, 1 branch will be drawn. I’d like for each frame to be a part of a branch, so the process of the branch growing can be seen.


Reading 2: Amplying the Uncanny

Pursuit of Realism

Uncanny valley is the obstacle that CGI artists have to break through. Mashiro Mori introduced that as a humanoid robot’s representation approaches a great closeness to human form, it induces negative responses. Only past a certain degree of human likeness and familiarity, then a robotic form will induce positive responses. It means that on this scale of human likeness, there is a section before peak familiarity, that human CGI will look creepy and unfamiliar.

In the pursuit to make CGI or graphics in movies realistic, there will come a point where it reaches the uncanny valley. It sort of becomes an obstacle as they near the start of the uncanny valley, the graphics are well received by the viewers. However, in the uncanny valley, the more the artist improves on the realism of the graphics, the more audiences will feel unfamiliarity and not respond well to it. One of the most prominent examples is the film Final Fantasy: The Spirits within. The film featured more CGI animation than had ever been attempted in 2013. The main character was composed of over 400,000 rendered polygons and 60,000 fully rendered and animated hairs. Despite this meticulous attention to detail, the film failed. It’s failure is mainly attributed to the uncanny valley which was a major source of criticism from film goers.

Film/game makers strive to create something visually appealing, which following the uncanny valley graph, they strive for it to be at the peaks before or after. Designing such characters require a lot of details. Take a FIFA game for example. When a player scores a goal, the emotions it needs to portray needs to be shown in the facial expressions, the winning pose, angle of how the body bends, even the voice tone of the in-game commentators. It takes a lot of resources, money and advanced technology to get out of the uncanny valley. Each of it must be spot on to make it seamlessly human-like. If just a few of those details are missing or off, a viewer straight away sees the unhuman-like it is, and it just tumbles back down into the valley.

This brought me to think, is it actually worth it trying to reach the peak after the uncanny valley? Human-like visuals may seem familiar and allow for more realistic looking games/films that may not have a realistic story. However, it also limits aesthetic variety. Human-like characters will have to have human-like actions and expressions. Pre-uncanny valley peak visuals however, are more cartoonish and are able to act unrealistically and have exaggerated reactions. It allows creators to go for any kind style. Retro, illustrations, painterly style etc.

Phototropism: First iteration

Done using processing.

In this example, the light source is coming from the right. Hence the tree branches out towards the right. They are created from adding branches from previous branches, with the trunk being the first “branch”.

At the end of each branch, there is a 60% chance for the next branch to grow to the right, and 20% to the left and another 20% to the middle. This is done by generating a random number between 0 – 1 and if statements.

A route (from the trunk to the first branch, to the second… to the last) is completed first before the next route starts. Each route is entirely probabilistic.

For future exploration:

Currently, the implementation of a “light source” is only through defining the probabilities of growing right, left and center. I would like to be able to define a light source. The probability of growing towards the light source will depend on the distance the previous branch is from the light source. Closer = greater probability of growing towards it.

Also, currently, I am using a predefined angle of 30 deg when it branches out. I’d like to use the position of the light source as reference for the direction the branch should grow towards

Reflection Essay – Closed systems: Generative art and Software Abstraction

Watz states “Inspiration taken from processes found in nature is common, with the tension between organic and mechanical forms every present.” I personally find this statement about generative art interesting. The way nature acts is dependent on many different factors of varying level of influence, with each factor holding a certain probability.

For example, in a controlled environment of a fish tank, the amount of ammonia, which is harmful to fish, in the water at a given time is largely dependent on waste produced by fish (more fish = more ammonia), and the ammonia to nitrate conversion (harmful ammonia becomes harmless nitrate) by bacteria. Bacteria growth depends on oxygen levels, which depend on respiration rate of water plants, which depends on light intensity. Even in a controlled environment, there are already so many factors, which will take a lot of time to calculate by hand.

Thus, an algorithm can be used to consider all these factors, and simulate the ammonia levels in the fish tank. Since there is a probability attached to each factor, the end result becomes unpredictable to an extent.

Watz also states that “Programming errors can lead to serendipitous discoveries, and one does well to embrace one’s mistakes.” I agree with this statement. When reverse engineering to produce a desired result (e.g., to create a computer simulation of something in nature), there are many trial and errors one will face. As one tries to head towards their goal, the errors are unpredictable and to goal-oriented individuals, they are seem as a step backwards and unwanted. However, it’s only through such processes where one can stumble on a discovery.

In conclusion, GA is largely inspired by the unpredictability of nature and to appreciate GA, one must be able to embrace instability and errors.

Exploratory Study: Phototropism

Phototropism is essentially how a plant grows in responds to light, either positive phototropism (towards the light) or negative phototropism (away from the light). I’d like to explore on the factors that contributes to the extent a plant grows towards (or away) a light source.

At each junction, a plant can decide to grow a leaf towards the right or left. With even exposure to light, the probability is 0.5 for each direction. With exposure to light biased to the right for example, the there’s a higher probability for a leaf to grow there. We can experiment different light sources by defining the intensity and shape. E.g., an outdoor plant will receive direct sunlight which is round and have high intensity while an indoor plant will receive sunlight from a rectangle window which may have day curtains, having low intensity.


Assuming even light exposure, we generate a probability tree using an algorithm. Each route starts from the same position, and based on a probability to turn left or right at multiple junctions, a route will be formed with a limit of n junctions. Since each decision at each junction is a probability, each route created will take different paths.

After, we try to add on the effect of light. We can input a single light source as a point or an area. Since intensity = 1/d^2, the further a plant is from a source, the less intense the light.

Generative Art: Generative Design

Part of being an engineering student is thinking of new technologies to make systems/products more efficient/less costly. Generative Design uses an algorithm and constraints (such as cost, weight and material) set by a user. The computer then processes the algorithm and produces many different designs that fit the constraints. The results are often unpredictable.

It is interesting to me as it shows how algorithm-based art can be applied in the real world to solve issues. This process massively cuts down time for analysis which is traditionally done by people. It also results in new, innovative ideas.

One such example highlighted in the video is the design a part of an Airbus plane. The new design was half as heavy but as strong as the previous design. This helped reduce the overall weight of the plane, fuel usage and cost for the operating airline.

This semester, I’m taking a module on product development and design. Products are designed with a set of rules in mind. However, as humans, we usually think and act base on our past experience. Thus limiting our ideas. This will be useful in designing a unique products.