Fractal Christmas Tree with Deformations

Chris Vossen and April Grow's CS 160 Final Project Report


Our tree


Description

The Christmas tree is an exact self-Similar fractal using an iterative function system on its trunk to create its branches. The tree's starting branch was created in Blender. The tree has 3 branches on each side and fractals three additional levels.

Global deformations to be used on the tree include bend, twist, clap, and melt effects (see user's guide). These deformations use a mixture of techniques to sometimes act on all of the tree, and other times only its branches.

Ornaments for the tree include a star at its tip, created in blender, and globes that hang off the branches. When global deformations occur, the ornaments fly in outwardly directions from the scene and come back upon reset.

The ground has a grass texture mapped to it for a slightly more realistic scene.

This project is meant to be a complicated Christmas scene for the 2009 holiday season using all of the aspects learned during our quarter in CMPS 160.



User's Guide

The user has control over deformations upon the tree:

Bending: b + Click and Drag, leans the tree side to side, depending on how the mouse is moved. Simulates wind.

Twisting: t + Click and Drag, twists the tree around the world's y axis. Looks like a cartoonish Tasmanian Devil.

Melting: m + Click and Drag, wilts the tree's branches downward. Customized deform to simulate wilting.

Clapping: c + Click and Drag, if dragged left, snaps the tree branches together like a Venus fly trap.

Other controls:

Move In/Out: Shift + m + Middle Click + Up (to move out)/Down (to move in)

Move Horizontally: Shift + h + Right Click + Left (to move camera left, scene goes right)/Right (to move camera right)

Reset: r, restores ornaments and tree back to their original positions for further deformations.


Our tree in action!


Author's Comments

Balancing both deformations and fractles was a difficult task. To get any sort of decent fractal tree, there has to be a respectable depth to the tree. This was not an issue using a simple model, but when we added global deformations, the simplicity of our original fractal branch made the deformations look unrealistic and ugly.
When we added in a more complicated branch, the efficiency of our algorithms were called into question. After much experimentation, we were able to both minimize lag and keep a complicated branch structure, so that neither the fractal nor the global deformation parts of our project were compromised.