1 module ft.data; 2 import gl3n.linalg; 3 4 enum BlendshapeNames : string { 5 eyeBlinkLeft = "eyeBlinkLeft", 6 eyeLookDownLeft = "eyeLookDownLeft", 7 eyeLookInLeft = "eyeLookInLeft", 8 eyeLookOutLeft = "eyeLookOutLeft", 9 eyeLookUpLeft = "eyeLookUpLeft", 10 eyeSquintLeft = "eyeSquintLeft", 11 eyeWideLeft = "eyeWideLeft", 12 13 eyeBlinkRight = "eyeBlinkRight", 14 eyeLookDownRight = "eyeLookDownRight", 15 eyeLookInRight = "eyeLookInRight", 16 eyeLookOutRight = "eyeLookOutRight", 17 eyeLookUpRight = "eyeLookUpRight", 18 eyeSquintRight = "eyeSquintRight", 19 eyeWideRight = "eyeWideRight", 20 21 jawForward = "jawForward", 22 jawLeft = "jawLeft", 23 jawRight = "jawRight", 24 jawOpen = "jawOpen", 25 mouthClose = "mouthClose", 26 mouthFunnel = "mouthFunnel", 27 mouthPucker = "mouthPucker", 28 mouthLeft = "mouthLeft", 29 mouthRight = "mouthRight", 30 mouthSmileLeft = "mouthSmileLeft", 31 mouthSmileRight = "mouthSmileRight", 32 mouthFrownLeft = "mouthFrownLeft", 33 mouthFrownRight = "mouthFrownRight", 34 mouthDimpleLeft = "mouthDimpleLeft", 35 mouthDimpleRight = "mouthDimpleRight", 36 mouthStretchLeft = "mouthStretchLeft", 37 mouthStretchRight = "mouthStretchRight", 38 mouthRollLower = "mouthRollLower", 39 mouthRollUpper = "mouthRollUpper", 40 mouthShrugLower = "mouthShrugLower", 41 mouthShrugUpper = "mouthShrugUpper", 42 mouthPressLeft = "mouthPressLeft", 43 mouthPressRight = "mouthPressRight", 44 mouthLowerDownLeft = "mouthLowerDownLeft", 45 mouthLowerDownRight = "mouthLowerDownRight", 46 mouthUpperUpLeft = "mouthUpperUpLeft", 47 mouthUpperUpRight = "mouthUpperUpRight", 48 49 browDownLeft = "browDownLeft", 50 browDownRight = "browDownRight", 51 browInnerUp = "browInnerUp", 52 browOuterUpLeft = "browOuterUpLeft", 53 browOuterUpRight = "browOuterUpRight", 54 cheekPuff = "cheekPuff", 55 cheekSquintLeft = "cheekSquintLeft", 56 cheekSquintRight = "cheekSquintRight", 57 noseSneerLeft = "noseSneerLeft", 58 noseSneerRight = "noseSneerRight", 59 60 tongueOut = "tongueOut", 61 62 vrmNeutral = "NEUTRAL", 63 vrmA = "A", 64 vrmI = "I", 65 vrmU = "U", 66 vrmE = "E", 67 vrmO = "O", 68 vrmBlink = "BLINK", 69 vrmJoy = "JOY", 70 vrmAngry = "ANGRY", 71 vrmSorrow = "SORROW", 72 vrmFun = "FUN", 73 vrmLookUp = "LOOKUP", 74 vrmLookLeft = "LOOKLEFT", 75 vrmLookRight = "LOOKRIGHT", 76 vrmBlinkLeft = "BLINK_L", 77 vrmBlinkRight = "BLINK_R", 78 } 79 80 /** 81 Names of humanoid bones according to Unity 82 and the VMC protocol 83 */ 84 enum BoneNames { 85 vmcHips = "Hips", 86 vmcLeftUpperLeg = "LeftUpperLeg", 87 vmcRightUpperLeg = "RightUpperLeg", 88 vmcLeftLowerLeg = "LeftLowerLeg", 89 vmcRightLowerLeg = "RightLowerLeg", 90 vmcLeftFoot = "LeftFoot", 91 vmcRightFoot = "RightFoot", 92 vmcSpine = "Spine", 93 vmcChest = "Chest", 94 vmcUpperChest = "UpperChest", 95 vmcNeck = "Neck", 96 vmcHead = "Head", 97 vmcLeftShoulder = "LeftShoulder", 98 vmcRightShoulder = "RightShoulder", 99 vmcLeftUpperArm = "LeftUpperArm", 100 vmcRightUpperArm = "RightUpperArm", 101 vmcLeftLowerArm = "LeftLowerArm", 102 vmcRightLowerArm = "RightLowerArm", 103 vmcLeftHand = "LeftHand", 104 vmcRightHand = "RightHand", 105 vmcLeftToes = "LeftToes", 106 vmcRightToes = "RightToes", 107 vmcLeftEye = "LeftEye", 108 vmcRightEye = "RightEye", 109 vmcJaw = "Jaw", 110 vmcLeftThumbProximal = "LeftThumbProximal", 111 vmcLeftThumbIntermediate = "LeftThumbIntermediate", 112 vmcLeftThumbDistal = "LeftThumbDistal", 113 vmcLeftIndexProximal = "LeftIndexProximal", 114 vmcLeftIndexIntermediate = "LeftIndexIntermediate", 115 vmcLeftIndexDistal = "LeftIndexDistal", 116 vmcLeftMiddleProximal = "LeftMiddleProximal", 117 vmcLeftMiddleIntermediate = "LeftMiddleIntermediate", 118 vmcLeftMiddleDistal = "LeftMiddleDistal", 119 vmcLeftRingProximal = "LeftRingProximal", 120 vmcLeftRingIntermediate = "LeftRingIntermediate", 121 vmcLeftRingDistal = "LeftRingDistal", 122 vmcLeftLittleProximal = "LeftLittleProximal", 123 vmcLeftLittleIntermediate = "LeftLittleIntermediate", 124 vmcLeftLittleDistal = "LeftLittleDistal", 125 vmcRightThumbProximal = "RightThumbProximal", 126 vmcRightThumbIntermediate = "RightThumbIntermediate", 127 vmcRightThumbDistal = "RightThumbDistal", 128 vmcRightIndexProximal = "RightIndexProximal", 129 vmcRightIndexIntermediate = "RightIndexIntermediate", 130 vmcRightIndexDistal = "RightIndexDistal", 131 vmcRightMiddleProximal = "RightMiddleProximal", 132 vmcRightMiddleIntermediate = "RightMiddleIntermediate", 133 vmcRightMiddleDistal = "RightMiddleDistal", 134 vmcRightRingProximal = "RightRingProximal", 135 vmcRightRingIntermediate = "RightRingIntermediate", 136 vmcRightRingDistal = "RightRingDistal", 137 vmcRightLittleProximal = "RightLittleProximal", 138 vmcRightLittleIntermediate = "RightLittleIntermediate", 139 vmcRightLittleDistal = "RightLittleDistal", 140 vmcLastBone = "LastBone" 141 } 142 143 struct Bone { 144 /** 145 Position of the bone 146 */ 147 vec3 position; 148 149 /** 150 Rotation of the bone 151 */ 152 quat rotation; 153 }