Stylistic Rendering Using an Arbitrary Texture Set


First Project Update

Goals

The main goal for this milestone was to construct the framework within which the ideas which I want to explore in the remained of the project are to be implemented and tested.

Implementation

The system I implemented is a general non-photorealistic rendering engine for OpenGL. It has the following capabilities:
    Reading in a list of textures from a file and loading these textures for use.When triangles are sent to be rendered (similar to immediate mode in OpenGL) these are sorted and bucketed by which texture they will be rendered with.After all triangles have been collected, they are sent to OpenGL in order of their render state, to minimize state changes.
source code: main.cpp Renderer.hppRenderer.cpp

Screen Shots

Greyscale textures          Texture palette

regular tie fighter        Original rendering

textured tie fighter         Textured rendering

Next Step

Design a decision function which uses information extracted from the texture pallet, and the scene properties of a triangle (like its normal vector, the vector from the triangle to the light source, and the vector from the triangle to the  camera) to decide which texture the triangle should be rendered with to best reproduce the effect of lighting the triangle. This can first be done on a per-triangle basis, although I would like to extend that to per-vertex computations, with some triangle splitting or texture blending to resolve triangles with multimple recomended textures.