Program in text version.

// Script to deform face based on imported motion capture data.

global proc movevertex(string $vertexnumber, string $mocapvnumber, float $displacex, float $displacey)
{
   string $cmd;
        float $position[];
   float $faceposition[];

            float $position[] = `pointPosition -w ("Mouthshape.pt[" + $mocapvnumber + "]")`;
            float $faceposition[] = `pointPosition -w ("MotionFace.pt[" + $vertexnumber + "]")`;

  $position[0] = $position[0] + $displacex;
  $position[1] = $position[1] + $displacey;
  
  select -r ("MotionFace.vtx[" + $vertexnumber + "]");
  $cmd = "move -ws " + $position[0] + " " + $position[1] + " " + $faceposition[2];
  eval($cmd);

  setKeyframe ("MotionFaceShape.pt[" + $vertexnumber +"].px");
  setKeyframe ("MotionFaceShape.pt[" + $vertexnumber +"].py");
}

global proc displacevertex(string $vertexnumber, float $displacex, float $displacey)
{
   string $cmd;

  select -r ("MotionFace.vtx[" + $vertexnumber + "]");
  $cmd = "move -r -ws " + $displacex + " " + $displacey + " 0";
  eval($cmd);

  setKeyframe ("MotionFaceShape.pt[" + $vertexnumber +"].px");
  setKeyframe ("MotionFaceShape.pt[" + $vertexnumber +"].py");
}

global proc movechin(int $frame, float $prevchinposx, float $chinposx, float $prevchinposy, float $chinposy)
{

 float $chindisplacex;
 float $chindisplacey;
 
      if ($frame != 1) 
   {
   $chindisplacex = ($chinposx - $prevchinposx);
   $chindisplacey = ($chinposy - $prevchinposy);
   }
      else 
   {
   $chindisplacex = 0;
   $chindisplacey = 0;
   }

print ("Chinpos[0] = " + $chinposx + " PrevChinpos[0] = " + $prevchinposx + "\n");
print ("Chinpos[1] = " + $chinposy + " PrevChinpos[1] = " + $prevchinposy + "\n");
print ("Chindisplacex = " + $chindisplacex + " Chindisplacey = " +$chindisplacey + "\n");
 

      displacevertex(0,$chindisplacex,$chindisplacey);
      displacevertex(1,$chindisplacex,$chindisplacey);
      displacevertex(2,$chindisplacex,$chindisplacey);
      displacevertex(14,$chindisplacex,$chindisplacey);
      displacevertex(30,$chindisplacex,$chindisplacey);
      displacevertex(40,$chindisplacex,$chindisplacey);
      displacevertex(43,$chindisplacex,$chindisplacey);
      displacevertex(68,$chindisplacex,$chindisplacey);
      displacevertex(69,$chindisplacex,$chindisplacey);
      displacevertex(81,$chindisplacex,$chindisplacey);
      displacevertex(97,$chindisplacex,$chindisplacey);
      displacevertex(106,$chindisplacex,$chindisplacey);
      displacevertex(109,$chindisplacex,$chindisplacey);
      displacevertex(110,$chindisplacex,$chindisplacey);
      displacevertex(145,$chindisplacex,$chindisplacey);
      displacevertex(146,$chindisplacex,$chindisplacey);
      displacevertex(147,$chindisplacex,$chindisplacey);
}

global proc applyMocap(int $start, int $end) 

   int $frame;
   float $chinpos[];
   float $prevchinpos[];

for ($frame = $start; $frame <= $end; $frame++) {
      

           float $prevchinpos[] = `pointPosition -w Mouthshape.pt[9]`;

      currentTime $frame;
// Upper Mouth
      movevertex(111,1,0,-0.35);
      movevertex(105,1,0,-0.45);
      movevertex(64,2,0,-0.28);
      movevertex(133,2,0,-0.3);
      movevertex(66,2,0,-0.4);
      movevertex(44,3,0,-0.3);
      movevertex(39,3,0,-0.4);
// Right Side
      movevertex(15,4,0,0);
// Lower Mouth
      movevertex(42,5,0,0.3);
      movevertex(41,5,0,0.4);
      movevertex(135,6,0,0.3);
      movevertex(136,6,0,0.4);
      movevertex(108,7,0,0.25);
      movevertex(107,7,0,0.35);
// Left Side
      movevertex(82,8,0,0);
// Chin
           float $chinpos[] = `pointPosition -w Mouthshape.pt[9]`;
      movechin($frame, $prevchinpos[0], $chinpos[0], $prevchinpos[1], $chinpos[1]);

       }

}

Return to Motion Capture.
Home.