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
Texture palette
Original rendering
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.