This project combines view dependent geometry and sketch-based modeling. When the user starts the program, a base mesh is loaded, and the user is given control of a pencil.
The user draws strokes on a plane that passes through the mesh and is perpendicular to the viewing direction. A corresponding isocurve is found on the mesh (
example 1,
example 2,
example 3), then vertices of the mesh are translated along a vector determined by the nearest point on the isocurve.
When a user draws another stroke, a view dependent copy of the mesh is created for that orientation of the mesh relative to the camera. The deformation is applied to all other existing view dependent meshes, but with the original stroke for that view preventing large deformations near the area of that stroke on the mesh.
The algorithm for determining the mesh vertex positions given a view allows any number of views with any spacing. Rather than interpolating the three surrounding views, a weighted sum of all views is taken.
The following screenshots show how the program works: