feat: Implement draggable torso and head IK targets in the test harness

- Added draggable handles for the torso and head to the test harness.
- Updated `IK_HANDLE_PATHS` to include new entries for "Head" and "Torso".
- Implemented distinct colors for the torso (magenta) and head (yellow) markers.
- Added a visual aid (aim line) to indicate the head's LookAt target direction.
- Ensured that dragging the torso moves only the torso marker, allowing for limb stretching towards stationary targets.
This commit is contained in:
2026-08-21 12:39:31 -04:00
parent 6b273c049c
commit ab5c79ab6a
14 changed files with 1459 additions and 174 deletions
+89 -49
View File
@@ -1,5 +1,5 @@
{
"version": "1.4",
"version": "1.5",
"stickman_name": "",
"part_order": [
"torso",
@@ -59,7 +59,7 @@
"y": 227.806777954102
},
{
"x": 455.448852539062,
"x": 455.448852539063,
"y": 213.165756225586
},
{
@@ -67,7 +67,7 @@
"y": 193.165756225586
},
{
"x": 455.448852539062,
"x": 455.448852539063,
"y": 173.165756225586
},
{
@@ -134,7 +134,7 @@
},
{
"x": 514.874938964844,
"y": 174.483520507812
"y": 174.483520507813
},
{
"x": 497.417388916016,
@@ -246,31 +246,31 @@
"shape_type": "circle",
"points": [
{
"x": 490.218383789062,
"y": 122.896606445312
"x": 490.218383789063,
"y": 122.896606445313
},
{
"x": 510.218383789062,
"x": 510.218383789063,
"y": 128.255599975586
},
{
"x": 524.859375,
"y": 142.896606445312
"y": 142.896606445313
},
{
"x": 530.218383789062,
"y": 162.896606445312
"x": 530.218383789063,
"y": 162.896606445313
},
{
"x": 450.218383789062,
"y": 162.896606445312
"x": 450.218383789063,
"y": 162.896606445313
},
{
"x": 455.577392578125,
"y": 142.896606445312
"y": 142.896606445313
},
{
"x": 470.218383789062,
"x": 470.218383789063,
"y": 128.255599975586
}
],
@@ -288,8 +288,8 @@
}
],
"position": {
"x": 248.278564453125,
"y": 126.460693359375
"x": 408.278564453125,
"y": 381.460693359375
},
"rotation": -360.0,
"scale": {
@@ -300,7 +300,11 @@
"x": 504.221405029297,
"y": 178.031181335449
},
"length": 110.269149780273
"length": 110.269149780273,
"guide_offset": {
"x": 30.5,
"y": -78.7581176757813
}
},
"torso": {
"shapes": [
@@ -335,10 +339,10 @@
}
],
"position": {
"x": 419.5,
"y": 344.0
"x": 579.5,
"y": 569.0
},
"rotation": 0.0,
"rotation": 180.0,
"scale": {
"x": 0.857142865657806,
"y": 3.9898989200592
@@ -347,7 +351,11 @@
"x": 300.5,
"y": 258.5
},
"length": 99.0
"length": 99.0,
"guide_offset": {
"x": -2.0,
"y": -202.25
}
},
"left_upper_arm": {
"shapes": [
@@ -382,8 +390,8 @@
}
],
"position": {
"x": 136.5,
"y": 364.5
"x": 306.5,
"y": 604.5
},
"rotation": 0.0,
"scale": {
@@ -394,7 +402,11 @@
"x": 489.5,
"y": 169.5
},
"length": 107.0
"length": 107.0,
"guide_offset": {
"x": -86.0,
"y": -7.75
}
},
"left_lower_arm": {
"shapes": [
@@ -406,11 +418,11 @@
"y": 127.010650634766
},
{
"x": 533.026489257812,
"x": 533.026489257813,
"y": 127.221878051758
},
{
"x": 532.166625976562,
"x": 532.166625976563,
"y": 142.74137878418
},
{
@@ -429,8 +441,8 @@
}
],
"position": {
"x": 70.0000305175781,
"y": 295.0
"x": 234.999969482422,
"y": 535.000061035156
},
"rotation": 90.0,
"scale": {
@@ -441,7 +453,11 @@
"x": 479.999969482422,
"y": 135.0
},
"length": 106.053039550781
"length": 106.053039550781,
"guide_offset": {
"x": 0.99993896484375,
"y": -103.749938964844
}
},
"right_upper_arm": {
"shapes": [
@@ -476,8 +492,8 @@
}
],
"position": {
"x": 481.0,
"y": 377.0
"x": 641.0,
"y": 617.0
},
"rotation": -180.0,
"scale": {
@@ -488,7 +504,11 @@
"x": 329.0,
"y": 158.0
},
"length": 107.0
"length": 107.0,
"guide_offset": {
"x": 88.0,
"y": -6.75
}
},
"right_lower_arm": {
"shapes": [
@@ -523,8 +543,8 @@
}
],
"position": {
"x": 482.087707519531,
"y": 289.335083007812
"x": 637.087707519531,
"y": 529.335083007813
},
"rotation": 90.0,
"scale": {
@@ -535,7 +555,11 @@
"x": 412.91227722168,
"y": 143.680892944336
},
"length": 106.053070068359
"length": 106.053070068359,
"guide_offset": {
"x": 0.0,
"y": -100.734008789063
}
},
"left_upper_leg": {
"shapes": [
@@ -570,8 +594,8 @@
}
],
"position": {
"x": 141.208190917969,
"y": 714.632446289062
"x": 296.208190917969,
"y": 959.632446289063
},
"rotation": -60.0,
"scale": {
@@ -582,7 +606,11 @@
"x": 536.5,
"y": 154.0
},
"length": 28.0
"length": 28.0,
"guide_offset": {
"x": -49.2918090820313,
"y": 83.8824462890625
}
},
"left_lower_leg": {
"shapes": [
@@ -617,8 +645,8 @@
}
],
"position": {
"x": 115.5,
"y": 879.0
"x": 275.5,
"y": 1129.0
},
"rotation": 90.0,
"scale": {
@@ -629,7 +657,11 @@
"x": 512.0,
"y": 171.0
},
"length": 26.0
"length": 26.0,
"guide_offset": {
"x": 0.5,
"y": 94.25
}
},
"right_upper_leg": {
"shapes": [
@@ -664,8 +696,8 @@
}
],
"position": {
"x": 318.218627929688,
"y": 727.340270996094
"x": 473.218627929688,
"y": 957.340148925781
},
"rotation": 60.0,
"scale": {
@@ -676,7 +708,11 @@
"x": 464.0,
"y": 163.0
},
"length": 28.0
"length": 28.0,
"guide_offset": {
"x": 55.2186279296875,
"y": 90.590087890625
}
},
"right_lower_leg": {
"shapes": [
@@ -711,8 +747,8 @@
}
],
"position": {
"x": 403.5,
"y": 899.5
"x": 558.5,
"y": 1139.5
},
"rotation": 90.0,
"scale": {
@@ -723,11 +759,15 @@
"x": 419.0,
"y": 163.0
},
"length": 26.0
"length": 26.0,
"guide_offset": {
"x": 0.5,
"y": 96.75
}
}
},
"metadata": {
"created_at": "2026-08-18T21:39:41",
"modified_at": "2026-08-18T21:39:41"
"created_at": "2026-08-21T01:09:20",
"modified_at": "2026-08-21T01:09:20"
}
}