Skip to main content

0.x to 1.0

The design of distributing functions to individual components of VRM-0.x has been changed to consolidating everything into Vrm10Instance.

0.x1.0
VRMBlendShapeProxyVRMInstance.Runtime.Expression
VRMLookAtVRMInstance.Runtime.LookAt
VRMSpringBone(各SpringのRoot)VRMInstance.Runtime.SpringBone
It updates every frame in a fixed order.
  1. Control Rig
  2. Constraints
  3. Gaze control
  4. Expression

Considering posing and pose processing

  • [-2] Pose the ControlRig (using Animator or your own process)
  • [-1] ControlRig fixes. IK etc.
  • [1] Applying ControlRig to transfer motion to the body
  • [2] Constraints Solution
  • [3] Gaze control solution
  • [4] Expression apply
  • [5] SpringBone Update

If you need control over the order, you can update the VRMInstance manually by switching it to update manually.

Expression

VRMBlendShapeProxy is now Vrm10Instance.Runtime.Expression.

ImmediatelySetValue and AccumulateValue have been merged into SetWeight. ImmediatelySetValue is gone.

var proxy = root.GetComponent<VRMBlendShapeProxy>();
proxy.ImmediatelySetValue(BlendShapeKey.CreateFromPreset(BlendShapePreset.A), 0.5f);

👇

var vrm10 = root.GetComponent<Vrm10Instance>();
vrm10.Runtime.Expression.SetWeight(ExpressionKey.CreateFromPreset(ExpressionPreset.aa), 0.5f);

LookAt

VRMLookAt is now Vrm10Instance.Runtime.LookAt.

The values ​​previously updated by vrm10.Gaze.position or vrm10.Runtime.LookAt.SetLookAtYawPitch will be applied later by vrm10.Runtime.

Gaze

var lookAt = root.GetComponent<VRMLookAt>();
lookAt.LookWorldPosition(new Vector3(x, y, z));

👇

var vrm10 = root.GetComponent<Vrm10Instance>();
vrm10.LookAtTargetType = LookAtTargetTypes.CalcYawPitchToGaze;
vrm10.Gaze.position = new Vector3(x, y, z);

SetYawPitch

var lookAt = root.GetComponent<VRMLookAt>();
lookAt.ApplyRotations(yaw, pitch);

👇

var vrm10 = root.GetComponent<Vrm10Instance>();
vrm10.LookAtTargetType = LookAtTargetTypes.SetYawPitch;
vrm10.Runtime.LookAt.SetLookAtYawPitch(yaw, pitch);