VRM has Unity Humanoid bone mapping data. And TransformNode is mapped to these bones(like LeftUpperLeg, Chest, Neck, …).
So you can animate any VRM model with same code!
// example code
vrmManager.humanoidBone.leftShoulder.rotationQuaternion = Quaternion.FromEulerAngles(
Math.sin(Math.PI / 4 * (elapsedTime / 200)),
0,
Math.PI / 3.5,
);
vrmManager.humanoidBone.rightShoulder.rotationQuaternion = Quaternion.FromEulerAngles(
Math.sin(Math.PI + (Math.PI / 4 * (elapsedTime / 200))),
0,
-Math.PI / 3.5,
);
vrmManager.humanoidBone.leftUpperLeg.rotationQuaternion = Quaternion.FromEulerAngles(
Math.sin(Math.PI / 4 * (elapsedTime / 200)),
0,
0,
);
vrmManager.humanoidBone.rightUpperLeg.rotationQuaternion = Quaternion.FromEulerAngles(
Math.sin(Math.PI + (Math.PI / 4 * (elapsedTime / 200))),
0,
0,
);
vrmManager.humanoidBone.leftLowerLeg.rotationQuaternion = Quaternion.FromEulerAngles(
-Math.PI / 6,
0,
0,
);
vrmManager.humanoidBone.rightLowerLeg.rotationQuaternion = Quaternion.FromEulerAngles(
-Math.PI / 6,
0,
0,
);
Left model is IL-tan which is my company’s image character.