Try   HackMD

Investigation: Cage Deformation with Grids

Problem Statement

Samples inside a mesh should follow the deformation of the mesh volume.

Conventional Solution

Mesh Deform Modifier

  • Slow preprocessing required.
  • Performance determined by both cage resolution and sample count.

Proposed Method

Idea: Use a grid to make sample deformation fast!

  1. Rasterize deformation from mesh vertices into a grid.
  2. Compute deformation in each grid cell ("blurring", "extension", see below).
  3. Transfer deformation to samples with a simple lookup.

If the grid relaxation/blurring can be fast enough this would decouple the sample count from performance, allowing higher sample counts than what would be feasible with mesh deform. This is because the transfer (step 3) is very cheap, compared to Mesh Deform where a full set of weights has to be computed for each sample. The grid resolution determines performance but not visual detail.

Field Extension

OpenVDB provides methods for "extending" fields across a fog or SDF volume based on some boundary conditions (API methods). This is probably the best method for generating a deformation vector for interior voxels.

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Math

True deformation is an unknown function

D(x). We compute an approximate
Dp
for sample points described by grid interpolation:

Dp=Gp(x)=ikp,i(x)Gi

where

kp,i(x) are the weighting factors for each sample and grid voxel and
Gi
are the deformation vectors stored in grid voxels.

Grid deformation is defined at voxel centers

ci by projection from the surface:

Gi=Sclosest(ci)

This introduces an error