Creating and Interacting with Graftals
Bachelor project by Pieter Noordhuis
An artist can easily draw a few strokes on a piece of paper and create an image of a grassy field or a tuft of grass. While such a drawing easily creates a vivid impression, a standard computer rendering of a grassy field would lack this artistic look. This lack of expressive power of standard computer rendering is tried to tackle by using graftals. Graftals are procedural textures that change according several parameters such as camera viewpoint and direction and allow designers to stylize models in a 3D scene.
In related work [Kowalski et al. 1999, Markosian et al. 2000, Kaplan et al. 2000], graftals were specified at compile-time and did not provide the designer with much versatility. Interaction with graftals was possible to a small extent, which in combination with modern graphics hardware was tried to improve in this project.
The main goal was to create an application that demonstrates interaction with graftals, while providing an easy to use interface. Next to supporting the mouse as input device, the application needed to support other devices such as a Wacom tablet as well. To let graftals change according to distance to the camera, a series of textures can be defined per graftal, each of which defines the texture to be used at a certain distance. Using this technique, a tuft of grass can be defined to appear highly detailed close by and less detailed far away. To use the same graftal on multiple objects with a different color, a mask can be defined for each texture. This mask is replaced with the color of the object the graftal is placed on at render time. This is useful to create a single graftal (i.e. a leave), that can be placed on objects with different colors. The final application lets a user define graftals in a simple paint pane. Placement is done in real-time in an OpenGL rendering of the loaded scene. Graftals and their placement can be saved to and loaded from disk. To provide real time rendering of the scene with graftals placed, a combination of modern OpenGL techniques is used such as multitexturing, texture mipmapping, and shader programming.