Debug

Model debug

Scrub held-item transforms and attack contact. Prefer /studio to save into the local database. Copy still pastes HELD_ITEM_* and ATTACK_TIMING lines — keep |X| away from ±90° on orients. Attack contact leads the combat clip so the marked frame lands on the damage tick; ranged units also get a homing projectile until float arrival.

Presets
brim · R:brim-sword · L:brim-shield
Main rot (brim-sword)

Parent-axis scrub (sliders). YXZ for copy: -10°, -100°, 90°.

x-10°
y-100°
z90°
Main pos (brim-sword)
x0.08
y0.12
z-0.34
Off rot (brim-shield)

Parent-axis scrub (sliders). YXZ for copy: 5°, 90°, -90°.

x5°
y90°
z-90°
Off pos (brim-shield)
x0.07
y-0.03
z0.05
Copy result
// brim — Brim
// character=brim main=brim-sword off=brim-shield
// pose=idle (bow walk/run/draw/attack/cast use HELD_ITEM_ORIENTATION_BY_ACTION; idle uses the default)

// HELD_ITEM_ORIENTATION (YXZ — keep |X| away from ±90° when shipping)
  brim-sword: [-0.175, -1.745, Math.PI / 2],
  brim-shield: [0.087, Math.PI / 2, -Math.PI / 2],

// HELD_ITEM_POSITION
  brim-sword: [0.08, 0.12, -0.34],
  brim-shield: [0.07, -0.03, 0.05],

// degrees / local meters (YXZ):
// brim-sword: rot=-10,-100,90 pos=0.08,0.12,-0.34
// brim-shield: rot=5,90,-90 pos=0.07,-0.03,0.05

// ATTACK_TIMING — brim
// contact=0–1 of attack pose (after draw for bows); projectileSpeed = world units/sec
  brim: { contact: 0.35 },