midiviz

04 · The violinist’s left hand: what a correct posture is, and what the rig got wrong

Brief for #037 / #038 (violinist/rig.js). The fingers looked wrong: in the user’s screenshots (20 Oct 2026) they stand up from the neck in a V, straight, with the pinky side of the hand high and the thumb hanging below the neck. This note sets out the target posture from teaching sources and hand anatomy, measures the rig against it, and gives the recipe the rig now follows. violinist/test/posture.mjs checks the numbers.

Frame: the violin’s (strings/violin3d.js). x runs along the strings from the nut toward the bridge, y is the normal of the top (up from the fingerboard), and z runs across with the G string at +z and the E at −z. Sizes are for a full-size violin (k = 1). s is the player’s hand size relative to #033’s hand (the middle finger is 9.7 cm in #033; the VRoid men measure about 0.9 of that).

1. The posture (sources)

Contact. The hand touches the neck in two places only: the side of the thumb pad, just above its top joint, and the crease at the base of the index finger against the E-string side of the fingerboard. The thumb is opposite the base of the index finger, or between fingers 1 and 2 (Ros Stephen, The Strad 2022; Rapoport, Violin for Dummies). The palm does not touch: there is room for “a little mouse” in the U between the thumb and the base of the index (Rapoport).

Thumb. Fairly straight and relaxed, its tip “just peeking over the top of the fingerboard”, its base forming the U under the neck (Rapoport). In high positions it moves to the neck heel and then under it (#033).

Knuckles. The base joints of fingers 2–4 stay close beside the fingerboard without touching the wood (Rapoport). The knuckle line is roughly parallel to the neck but not forced to be: “don’t force your knuckles to be completely parallel to the violin neck” (Rapoport). In first position the hand slants back, the index knuckle at the neck’s edge and the little finger’s knuckle a little higher toward the fingerboard and further along it. Teachers correct a hand whose pinky side drops away from the neck, because the 4th finger then cannot reach (Stephen).

Wrist. Straight: the forearm, wrist and hand form one line “when viewed from the scroll and from the side” (Stephen), turned in slightly toward the neck (Ridge, The Strad 2024). Measured on violinists and violists with a WristSystem goniometer, the wrist moved through under 15° in all four directions while playing (Shih & Shih 1999).

Elbow. Under the instrument. It swings toward the player’s right, under the strings, for the G string, so the fingers keep their shape across the strings (Ridge). It comes further in for high positions.

Fingers. Rounded, landing on the tip (the pad just short of the nail), and as close to vertical over the string as the hand allows. The 4th finger stays curved, never locked straight (Stephen; Kalinovsky, The Strad 2022). Each finger bends in its own plane at right angles to the knuckle line. A finger can splay sideways at its base joint by about 15–20°, but it cannot bend sideways at the middle and end joints.

Joint coupling and ranges (anatomy). The end joint follows the middle joint: DIP ≈ 0.75 × PIP when the finger curls freely (index, Hahn et al. 1995; ≈ 0.75 slope in Van Zwieten et al. 2015, table 1 of Roda-Sales et al. 2022). Pressing a string can flatten it a little. Active ranges are MCP 0–90° (the base joint can extend back by 20° or more), PIP 0–100°, DIP 0–80°. A curved violin finger sits well inside them: MCP 20–70°, PIP 45–100°, DIP 20–70°.

2. What the rig did (Bach BWV 1006 Preludio, t = 6 s, first position)

Before the fix, measured in the violin frame (cm and degrees):

  #033’s model VRoid hand (before) target
index knuckle (1.2, 2.5, −3.4) (2.6, 0.2, −4.0) at the E edge of the neck: y ≈ fbY − 1 = 3.2
little knuckle (6.2, 2.5, −3.4) (4.8, 4.9, −2.8) beside the board, about level with it
elbow (21.9, −21.6, −11.5) (32.4, −11.1, −6.7) under the violin, ~20 cm below it
base joints, fingers 3 / 4 — 103° / 110° 20–80°
middle joints, fingers 3 / 4 — 25° / 31° (nearly straight) 45–100°
finger bending plane vs knuckle line — 87–112° (bending sideways) the hinge along the knuckle line
thumb tip target (2.9, 2.8, 1.4) (3.6, 0.7, −0.1) on the G side of the neck

There were three faults, and each caused the next:

  1. The elbow came from the arm IK’s pole, given in world axes. It landed 10 cm too far toward the bridge and 10 cm too high, so the forearm ran almost along the neck.
  2. The hand’s orientation came from the forearm direction, kept exactly for a straight wrist, with #033’s knuckle line only as the roll reference. With the forearm nearly parallel to the knuckle line, that roll was close to degenerate. The hand rolled about 60°: the index knuckle went low and the little knuckle sat above the fingerboard.
  3. Each finger was solved in the vertical plane through its knuckle and its stop, which is #033’s piano-style solver. That plane contained the knuckle line, so fingers 3 and 4 bent sideways and reached almost straight.

Two facts about the model shape the fix. The VRoid arms are short for a full-size violin: upper arm 22 cm and forearm 25 cm, so with the shoulder in place the elbow could only open to about 137°. The fingers are about 0.8 of a man’s (index to little 7.8, 8.7, 7.8 and 7.1 cm), so the little finger cannot reach its first-position stop from a knuckle at the nut.

3. The recipe (rig.js leftHandPose, handFinger)

Cost: about 1.4 ms per frame on top of the rest of the rig (Chromium, software rendering).

4. Checks (violinist/test/posture.mjs)

Every 0.25 s over the first 120 s of each piece, for each finger pressing a string:

For the hand:

Over 20 s at 60 frames a second, the hand may turn faster than 150°/s on at most 1% of the frames inside a position. A check fails if more than 2% of samples are out of range, or more than 0.5% are far out. For the fingertip the limits are 3% and 1.5%, because the fingerings ask for the odd chord, crossed double stop or shift that no hand makes cleanly. Stops that #033’s own hand cannot reach are counted apart as stretches.

Results after the fix (median / 95th percentile):

piece base joint middle joint lean wrist bend stretches
Bach Preludio BWV 1006 50° / 80° 94° / 112° 7° / 18° 3° / 11° 0.8 %
Bach Ciaccona BWV 1004 51° / 81° 94° / 112° 8° / 19° 7° / 12° 9.7 %
Paganini Caprice 24 50° / 84° 93° / 108° 7° / 19° 6° / 12° 7.7 %
Beethoven Kreutzer iii (light-brown model) 53° / 80° 93° / 112° 7° / 18° 2° / 11° 1.9 %

Fingertips are on their stops in the median and at the 95th percentile everywhere. The elbow sits 17–20 cm below the violin. The collision sweep (collisions.mjs) passes on its four runs.