Wednesday, April 15, 2009

Theory: Tesselation of a Multi-Patch Nurbs Surface...

Recently I was enjoying some of Ken Perlin's java applets, and one of them in particular caught my attention and spawned an idea.

he had a globe on which there were multiple populations of different colored points.

I thought it would be interesting to use this type of flockinig/distribution to shift triangulation points arround an object in order to achieve a nicely tesselated look, with minimal polygons and very high "quality" polygons as well.

Further, I thought it would be interesting to have the points exhibit behaviours. e.g. a point could have a major and minor axis. Using a gaussian curvature it should be possible to orient the point such that one axis flowed with the least curvature, and the other axis flowed with the most curvature.

All of the points on the surface would repel each other, but the points repelling force would be tied to the curvature along each axis. along tighter curvature, there are more points needed to describe the surface accurately, and therefore more points should be closer together. Conversely, less curvature should mean fewer points are needed. Or in other words, the higher the curvature, the lower the repelling force.

in this way the tesselation parameters should remain consistent across multiple surfaces as long as they all share connectivity.

Tuesday, April 14, 2009

Theory: Image Based Height Map for Hole-Filling

Problem:
Filling irregularly shaped holes with appropriately continuous geometry, as in scan data with non-circular holes.

Possible Solution:
create an arbitrary height map for a patch that encompases the hole and then using 2d imaging techniques "build" a new height map for the empty area.

As a manual technique, one could literally blur-paint from the edges, using human feature recognition. but I believe that, using gaussian blurring techniques it should be quite possible to build a relatively pleasing result in an automated way.

Test:
import scan data with big patchy holes into maya.
create a texture map/placement
generate height-map data using the transfer attributes function
open height map data in photoshop, and using various techniques, blend/blur/paint/smear... create a new height map that fills in the gaps
import new map into maya, and using a displacement node, build a new mesh that fills in the gaps.
trim the edges to match scan data, then bridge the gap.

I haven't tried it yet, but still planning to.