
the problem with hughe's hoppe approach is that it takes a _huge_ amount of memory.
i attempted to implement something like it, but for a game engine i wouldn't
recommend it in practice.
so i'm looking for better methods. i would love to hear if anyone has good ideas on this.
just some observations:
so for a mesh with n edges, the number of silouette edges should be propotional to
sqrt(n).
for a convex mesh. the silhouette is always a closed loop, so you need to search
only adjecent edges to grow your silhouette loop.
for general meshes that are smooth enough you have silhouette ridges of several edges.
one could probobly exploit temporal coherence and smooth movement of light and object
with respect to each other.
so my ideas currently are that you could try a probabilitic search. pick edges at random
from a mesh, if you find one that is on a silhouette, search for more edges adjecent to it,
to discover an entire ridge. after trying about sqrt(n) edges it is likely that you found
most of the silhouettes.
or one could try to decompose the mesh into convex submeshes. but that seems very
difficult.
any other ideas?
pagan
