Skip to content

Vhi.HandSkeleton

VHI_godot

Vhi

HandSkeleton Class

The 16-joint hand rig both hands drive, and the pose read-back both publish.

public abstract class HandSkeleton : Godot.Node3D

Inheritance System.Object → Godot.GodotObject → Godot.Node → Godot.Node3D → HandSkeleton

Derived
↳ ControlHandSkeleton
↳ PredictedHandSkeleton

Remarks

Two hands, one FBX, one bone map, one set of rotations. This existed twice, member for member, and the copies were the reason a direction bug could be fixed in one hand and not the other. What differs is only what drives the joints — a movement state machine on one, a set of per-DOF LSL inlets on the other — and which outlet the read-back goes to.

Methods

HandSkeleton.BoneNameForJoint(int) Method

The model's own name for a joint — the rig's identity claim, not a label.

public static string BoneNameForJoint(int jointIndex);

Returns

System.String

HandSkeleton.RestStandardPose() Method

Every channel back to standard rest, snapped to immediately.

public void RestStandardPose();

Remarks

Also the neutraliser: a zero pose renders every animated joint to identity, so this is what a hand released back to its own movements is put through. It has to clear Vhi.HandSkeleton.pose and not just the rig — otherwise the next single DOF to arrive would call Vhi.HandSkeleton.RenderPose and bring a departed producer's other eight values back with it.

HandSkeleton.SetStandardValue(int, float) Method

Command one channel and show it, leaving every other channel where it was.

public void SetStandardValue(int channel, float standard);

Parameters

channel System.Int32

A pose channel, 0-8. Anything else is ignored.

standard System.Single

A standard value; clamped to [-1, 1] before it is stored.

Remarks

The only way a value reaches either hand: one DOF, applied when it arrives. Its callers are the per-DOF LSL inlets and VhiControlService.SetControl, and a client driving both will fight itself over whichever channels they share.