Home | CV | Research | Other Projects | Hot List

Vector Field Design on Surfaces

Eugene Zhang, Konstantin Mischaikow, and Greg Turk
ACM Transactions on Graphics, Vol 25(4), 2006, pp 1294-1326.

Paper (PDF, 1.06 Mb).

Video (MPG, 221Mb)


Vector field design on surfaces is necessary for many graphics applications: example-based texture synthesis, non-photorealistic rendering, and fluid simulation. A vector field design system should allow a user to create a large variety of complex vector fields with relatively little effort. In this paper, we present a vector field design system for surfaces that allows the user to control the number of singularities in the vector field and their placement. Our system combines basis vector fields to make an initial vector field that meets the user's specifications.

The initial vector field often contains unwanted singularities. Such singularities cannot always be eliminated, due to the Poincare-Hopf index theorem. To reduce the effect caused by these singularities, our system allows a user to move a singularity to a more favorable location or to cancel a pair of singularities. These operations provide topological guarantees for the vector field in that they only affect the user-specified singularities. Other editing operations are also provided so that the user may change the topological and geometric characteristics of the vector field.

We demonstrate our vector field design system for several applications: example-based texture synthesis, painterly rendering of images, and pencil sketch illustrations of smooth surfaces.


1. Flow rotations and reflections are applied to a vector field (upper-left). The number and locations of the singularities remain the same. Flow rotations (top row) maintain the Poincare indices, while flow reflections (bottom row) negate them.


2. Topological editions opeartions. In the top row, a pair of center and saddle are cancelled (left to right). In the bottom row, a saddle is moved to a new location.


3. Pencil sketches of various 3D models in which the hatch fields are based user-defined vector fields.