private void OnFacesChanged(ARFacesChangedEventArgs obj) { logText.text = "# of faces: " + obj.updated.Count + "\n"; foreach (ARFace face in obj.updated) { mainId = face.trackableId; if (!faceAnimExports.ContainsKey(face.trackableId)) { var newFaceAnimExport = new FaceAnimExportEntity(); newFaceAnimExport.uvs = face.uvs.Select(uv => new MyVec2(uv)).ToList(); newFaceAnimExport.indices = face.indices.ToList(); newFaceAnimExport.keyframes = new List <AnimKeyframe>(); faceAnimExports.Add(face.trackableId, newFaceAnimExport); } var faceAnimExport = faceAnimExports[face.trackableId]; var keyframe = new AnimKeyframe { position = new float[] { face.transform.position.x, face.transform.position.y, face.transform.position.z }, rotation = new float[] { face.transform.rotation.x, face.transform.rotation.y, face.transform.rotation.z, face.transform.rotation.w }, vertices = face.vertices.Select(vert => new MyVec3(vert)).ToList() }; faceAnimExport.keyframes.Add(keyframe); //If recording record voice } }
private void Start() { faceAnim = JsonUtility.FromJson <FaceAnimExportEntity>(faceData.text); mesh = new Mesh(); GetComponent <MeshFilter>().mesh = mesh; Debug.Log("Got " + faceAnim.keyframes.Count + " frames."); Debug.Log("The face has " + faceAnim.keyframes[0].vertices.Count + " vertices"); }