It's really unreal, man. -Unknown
Nina Amenta, advisor
Danek Duvall, Summer '95 & code shredder/nuker
Tim Rowley, programmer & X zen master
No, I'm not sure exactly why it's called Unreal. We needed a ``snazzy,
two-syllable name'' and this is the best we've come up with so far. Read
more about the project, and mail me
if you have a cool name, or a good phrase whose acronym is Unreal.
The basic idea behind the project is that photorealistically rendered objects,
like what you'd see on a computer screen or in a glossy magazine such as
Scientific American, look really horrible if you print them out or
Much better pictures are usually drawn by hand. But some objects are really
complex, and so it would be nice to have a computer program that would take
an object definition and produce a picture that looks hand drawn.
There are many complex issues involved with this. The two specific things we
have tackled are edge detection and shading. The code for edge detection
works, but is being rebuilt ground-up in such a way that produces more
readable code than before and also that lends itself to better efficiency
improvements. The current code distinguishes between the following edge
If you are at the Geometry Center and you should for some reason want to
try the latest version of the program
for yourself, just run geomview from the directory
/u/dduvall/work/unreal2.0, and run the module Unreal that appears
at the top of the Modules list. The interface
should be fairly intuitive. Please note that ``the latest version'' of the
program won't always work properly, if at all. A properly working, albeit
very old version of the program can be found in
/u/dduvall/work/styline. In either case, be careful on objects that
have a lot of faces, since the program is very slow!
- Boundary Edges
- These edges are ``real edges''; i.e., places where the surface
ends, such as the edges of a square. By default, these edges are drawn
with hollow (or double) lines.
- Horizon Edges (Silhouette Edges)
- These are edges which are created when a surface disappears over the
horizon, such as the circular boundary of a sphere. These edges are
drawn as thick solid lines.
- Interior Edges
- These are all the edges in the picture that don't fit into any other
category. By default, they are drawn as light solid lines, but in most
pictures, they have been removed.
- High Angle Edges
- These are the edges lying between two faces which have a high angle
between them. The angle is adjustable, and the lines are drawn by default
the same as the horizon edges.
- Intersection Edges
- These are the edges which are created by surface intersection. By
default, they are drawn as light dashed lines.
Shading is a much thornier problem, and right now we're mostly
just talking about the different things we could do. We are
looking at engravings of
for ideas about how to go about shading. Our current thought is
to create contours on the objects based upon distance from the
light source. With this information in hand, the cross contours
are filled in based upon the angle and distance from the light.
So far, code has only been written to produce the light contours.
Here is a catenoid. The boundary edges are obvious, and you can see both
high-angle edges and a slight horizon edge where the surface disappears in
Here is a dodecahedron. This is a good example of high-angle edges. In fact,
it was the motivating surface to introduce such an edge.
Here is a good example of intersection edges. It is the dodecahedron
intersecting a sphere.
Here is a seashell. A nice example of boundary, intersection, and horizon
Here is an example of a surface gone wrong. For some reason, our program
picks up spurious boundary edges on the torus. So does geomview, for that
matter. We're not sure where the problem lies.
Here is another surface which we're not getting quite right. Two boundary
edges appear which seemingly shouldn't. But the intersection edges look good.
Below are some images showing the light contours. In the future,
we're planning on drawing the cross-contours instead and varying
their thickness/intensity based upon angle and distance from the light.