Skip to main content

Phace: Physics-based Face Modeling and Animation

Reading NotesResearchFace ModelPhysicsAbout 5 minAbout 1526 words

1. Introduction

Contributions

  • a novel muscle activation model that offers more flexibility than standard fiber-based models
  • a physics-based simulation method that retains realism even with significant external forces or substantial modifications of the face geometry and tissue material properties
  • an inverse modeling optimization to adapt the simulation template to a series of expression scans of a specific person.

Overview

Schematic workflow of our method.
Schematic workflow of our method.
Our template model consists of a volumetric representation of the tissue and bones (a), and a surface blendshape basis to represent the expression space (d). Muscles are embedded into a non-conforming tetrahedral mesh discretization (b). We explicitly model jaw kinematics with a 5 DoF joint (c) and utilize low-resolution geometry proxies for faster collision detection for the teeth region (e). Dynamic skin sliding is supported by introducing both sliding (green) and fixed (red) constraints for bone-tissue connections (f).
Our template model consists of a volumetric representation of the tissue and bones (a), and a surface blendshape basis to represent the expression space (d). Muscles are embedded into a non-conforming tetrahedral mesh discretization (b). We explicitly model jaw kinematics with a 5 DoF joint © and utilize low-resolution geometry proxies for faster collision detection for the teeth region (e). Dynamic skin sliding is supported by introducing both sliding (green) and fixed (red) constraints for bone-tissue connections (f).

3. Template Face Model

  • generic face model — an anatomical face template corresponding to an average human subject ( see Figure above )
    • polygonal representations of the bones, skin, and 33 facial muscles
    • generate a tetrahedral mesh discretizing the soft tissue ( two types ) of the face
      • active — muscles
      • passive — subcutaneous fat, connective tissue and the skin

Jaw kinematics

  • see Figure © above
  • DoF ( degree of freedom ) = 5
  • \vbbR5\vb{b} \in \mathbb{R}^5 — kinematic parameters of the jaw bone

Template blendshapes

  • defined on the skin as a basis for parametrizing the space of facial expressions
  • provide no information about the internal deformations

4. Forward Physics

Passive tissue

\labeleq:1Epass(\vbx)=imin\vbRiSO(3)Wipassμ\norm\vbFi(\vbx)\vbRiF2+Wipassλ(det(\vbFi(x))1)2 \begin{equation} \label{eq:1} E_{\text{pass}}(\vb{x}) = \sum_i \min_{\vb{R}_i \in SO(3)} W_i^{\text{pass}} \mu \norm{\vb{F}_i(\vb{x}) - \vb{R}_i}_F^2 + W_i^{\text{pass}} \lambda (\det(\vb{F}_i(x)) - 1)^2 \end{equation}

  • Epass(\vbx)E_{\text{pass}}(\vb{x}) — deformation energy
  • ( params ) \vbx\vb{x} — a vector stacking all degrees of freedom of the soft tissue
  • ( input ) ii — index goes over all tets
  • ( input ) Wipass0W_i^{\text{pass}} \geqslant 0 — volume of the ii-th tetrahedron that is occupied by passive tissue, pre-computed during template construction with Monte-Carlo sampling
  • first term — commonly used co-rotated elasticity ( measure of deviation from rigid motion )
  • second term — resistance to changes of volume
  • \vbFi(\vbx)\vb{F}_i(\vb{x}) — deformation gradient
  • ( params ) \vbRi\vb{R}_i — auxiliary rotation matrix used in co-rotated model
  • μ,λ\mu, \lambda — material parameters

Active tissue

Muscles can generate only internal forces. In other words, an isolated muscle is not capable of translating or rotating by itself (even though the muscle can of course be translated or rotated due to contact with the surrounding tissues).

  • no translation — translation invariance of the deformation gradient operator \vbFi(\vbx)\vb{F}_i(\vb{x})
  • no rotation — activation to be a symmetric 3×33 \times 3 matrix
    • \vbQ\vbΛ\vbQT\vb{Q} \vb{\Lambda} \vb{Q}^T — eigendecomposition
      • \vbQSO(3)\vb{Q} \in SO(3) — orthonormal coordinate system
      • \vbΛR3\vb{\Lambda} \in \mathbb{R}^3 — diagonal, non-uniform scaling
    • \vbaiR6\vb{a}_i \in \mathbb{R}^6 — activation vector
    • S:R6R3×3\mathcal{S}: \mathbb{R}^6 \to \mathbb{R}^{3 \times 3} — linear operator to generate the corresponding symmetric matrix S(\vbai)R3×3\mathcal{S}(\vb{a}_i) \in \mathbb{R}^{3 \times 3}

Muscles are approximately incompressible, which means det(S(\vbai))=det(\vbQ\vbΛ\vbQT)=det(\vbΛ)\det(\mathcal{S}(\vb{a}_i)) = \det(\vb{Q} \vb{\Lambda} \vb{Q}^T) = \det(\vb{\Lambda}) should be close to 1. However, to compensate for discretization errors, we do not enforce det(S(\vbai))=1\det(\mathcal{S}(\vb{a}_i)) = 1 strictly, but only as a soft constraint, as discussed in Section 5.

\labeleq:2Eact(\vbx,\vba)=imin\vbRiSO(3)Wiactμ\norm\vbFi(\vbx)\vbRiS(\vbai)2+Wiactλ(det(\vbFi(\vbx)det(S(\vbai))))2 \begin{equation} \label{eq:2} E_{\text{act}}(\vb{x}, \vb{a}) = \sum_i \min_{\vb{R}_i \in SO(3)} W_i^{\text{act}} \mu \norm{\vb{F}_i(\vb{x}) - \vb{R}_i \mathcal{S}(\vb{a}_i)}^2 + W_i^{\text{act}} \lambda (\det(\vb{F}_i(\vb{x}) - \det(\mathcal{S}(\vb{a}_i))))^2 \end{equation}

  • Eact(\vbx,\vba)E_{\text{act}}(\vb{x}, \vb{a}) — deformation energy
  • ( params ) \vba\vb{a} — a vector stacking the 6-dimensional activation parameters for all active tets
  • ii — index goes over all tets
  • ( input ) Wiact0W_i^{\text{act}} \geqslant 0 — volume of the ii-th tet that corresponds to active tissue
  • co-rotated term — find the rotation \vbRi\vb{R}_i that best aligns the deformation gradient \vbFi(\vbx)\vb{F}_i(\vb{x}) with S(\vbai)\mathcal{S}(\vb{a}_i)
  • second term — encourage the volume ratio of the deformed tet ( i.e. det(\vbFi(\vbx))\det(\vb{F}_i(\vb{x})) ) to align with the volume ratio of the activation matrix det(S(\vbai))\det(\mathcal{S}(\vb{a}_i)), which should be close to 1, i.e., volume conserving.

Bone attachments

To distinguish areas where soft tissue is directly attached to the bones from areas where soft tissue slides over the bones, we create two types of constraints:

  • pin constraints — Dirichlet boundary conditions
  • sliding constrains — point-on-plane constraints

c(\vbx,\vbb)=0 c(\vb{x}, \vb{b}) = 0

  • \vbbR5\vb{b} \in \mathbb{R}^5 — kinematic parameters of the jaw bone

Quasi-static solution

\labeleq:3minimizexEpass(\vbx)+Eact(\vbx,\vba)+Egrav(\vbx)subject toc(\vbx,\vbb)=0,\vbp(\vbx)0, \begin{equation} \label{eq:3} \begin{aligned} & \mathop{\text{minimize}}_x & & E_{\text{pass}}(\vb{x}) + E_{\text{act}}(\vb{x}, \vb{a}) + E_{\text{grav}}(\vb{x}) \\ & \text{subject to} & & c(\vb{x}, \vb{b}) = 0 \qc \vb{p}(\vb{x}) \geqslant 0, \end{aligned} \end{equation}

  • Egrav(\vbx)E_{\text{grav}}(\vb{x}) — gravitational potential ( mghm g h )
  • inequality constraints \vbp(\vbx)\vb{p}(\vb{x}) — resolve penetrations ( collision response )

When collision detection finds a surface vertex penetrating the volumetric face model ( see below for more details ), an inequality constraint is appended to \vbp\vb{p}. For each offending vertex we find its projection onto the surface and create a tangent plane at this point. The inequality constraint requires the vertex to be at the half-space opposite the volume.

Collisions - implementation details

Because the geometry of the teeth is quite detailed ( and we are not aspiring to simulate e.g. flossing where the detail would be necessary ), we start by creating proxy collision shapes for the upper and lower teeth ( see Figure 3-e ).

detect collisions using AABB hierarchies

5. Inverse Physics

Optimization formulation

\labeleq:4min\vbx,\vba,\vbb\norm\vbS\vbx\vbT\vbt2+Ract(\vba)+Rsparse(\vba)subj. toc(\vbx,\vbb)=0,\vbp(\vbx)0\grad\vbxEpass(\vbx)+\grad\vbxEact(\vbx,\vba)+\grad\vbxEgrav(\vbx)=0 \begin{equation} \label{eq:4} \begin{aligned} & \min_{\vb{x}, \vb{a}, \vb{b}} & & \norm{\vb{S} \vb{x} - \vb{T} \vb{t}}^2 + R_{\text{act}}(\vb{a}) + R_{\text{sparse}}(\vb{a}) \\ & \text{subj. to} & & c(\vb{x}, \vb{b}) = 0 \qc \vb{p}(\vb{x}) \geqslant 0 \\ & & & \grad_{\vb{x}}{E_{\text{pass}}(\vb{x})} + \grad_{\vb{x}}{E_{\text{act}}(\vb{x}, \vb{a})} + \grad_{\vb{x}}{E_{\text{grav}}(\vb{x})} = 0 \end{aligned} \end{equation}

  • \vbb\vb{b} — bone parameters
  • \vba\vb{a} — muscle activations
  • \vbt\vb{t} — target vertex positions of the skin
  • \norm\vbS\vbx\vbT\vbt2\norm{\vb{S} \vb{x} - \vb{T} \vb{t}}^2 — how close state \vbx\vb{x} is to the target \vbt\vb{t}
  • matrix \vbS\vb{S} — selects the simulation nodes corresponding to the skin surface
  • \vbS,\vbT\vb{S}, \vb{T} — encode both position ( point-to-point ) and point-to-plane distance terms
  • last vector equality — sum of all forces ( gradient with respect to \vbx\vb{x} ) is zero

Regularization

Ract(\vba)=i,mfi,m\normQiT[γm(i)1000γm(i)000γm(i)]QiS(\vbai)2 R_{\text{act}}(\vb{a}) = \sum_{i, m} f_{i, m} \norm{Q_i^T \begin{bmatrix} \gamma_{m(i)}^{-1} & 0 & 0 \\ 0 & \sqrt{\gamma_{m(i)}} & 0 \\ 0 & 0 & \sqrt{\gamma_{m(i)}} \end{bmatrix} Q_i - \mathcal{S}(\vb{a}_i) }^2

Rsparse(\vba)=mifi,m\norm\vbai2 R_{\text{sparse}}(\vb{a}) = \sum_m \sqrt{\sum_i f_{i, m} \norm{\vb{a}_i}^2}

Numerical solution

6. Phace Modeling and Animation

Model Building

  • input — 3D scan of subject in neutral expression and about 5-10 additional premeditated facial expressions
  • Each of the scans is approximately aligned with the skin of our template model (Section 3) using rigid registration (plus uniform scale).
  • Then we apply non-rigid ICP to find dense correspondences between the template skin and the target scan, guided with a few manually chosen markers as shown in the inset.
    • \vbsneut\vb{s}_{\text{neut}} — registered neutral skin surface
    • \vbsk\vb{s}_k — registered kk-th expression skin surface
  • deform volumetric template model such that its boundary ( skin ) aligns with \vbsneut\vb{s}_{\text{neut}} ( with Anatomy Transfer )
  • solve for activations \vbaj\vb{a}_j and jaw bone parameters \vbbj\vb{b}_j that correspond to each of the blendshapes \vbcj\vb{c}_j using the Inverse Physics optimization of Section 5

Animation

  • input — per-frame blendshape weights \vbw=\Bqtyw1,,w48\vb{w} = \Bqty{w_1, \dots, w_{48}}
  • compute muscle activations as \vba=\vbaneut+j\vbwj(\vbaj\vbaneut)\vb{a} = \vb{a}_{\text{neut}} + \sum_j \vb{w}_j (\vb{a}_j - \vb{a}_{\text{neut}})
  • compute the blended jaw kinematics parameters \vbb=jwj\vbbj\vb{b} = \sum_j w_j \vb{b}_j

Dynamics

augmenting the objective of Eq. \eqrefeq:3\eqref{eq:3} with the term:

12\norm\vbx(\vbxn+h\vbvn)\vbM2 \frac{1}{2} \norm{\vb{x} - (\vb{x}_n + h \vb{v}_n)}_{\vb{M}}^2

  • \vbxn,\vbvn\vb{x}_n, \vb{v}_n — positions and velocities in the previous frame
  • h>0h > 0 — time step
  • \vbM\vb{M} — mass matrix

Plasticity

\vbFtotal(\vbx)=\vbFelast(\vbx)\vbFplast \vb{F}_{\text{total}}(\vb{x}) = \vb{F}_{\text{elast}}(\vb{x}) \vb{F}_{\text{plast}}

  • \vbFtotal(\vbx)\vb{F}_{\text{total}}(\vb{x}) — total deformation gradient