Closed-loop camera calibration: pixel servo handles arbitrary rig conventions

MeshGod/TRELLIS Mixamo re-rigs pose half a metre underground and compressed
(bone-space origin at hips, 0.01/100 scale sandwich). Instead of fighting
transform conventions, the renderer probes the first posed frame, measures
the actual sprite in pixels, and servo-corrects ortho scale + camera z:
unclip -> converge height -> pin feet to the ground row. Also: normalize
scales all root objects, deformed-height helper.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-07-29 13:37:58 +10:00
parent 87f9b421bb
commit 1005422053
6428 changed files with 49060 additions and 15 deletions

View File

@ -0,0 +1,42 @@
{
"id": "birdie",
"name": "BIRDIE",
"health": 900,
"walk_speed": 3.8,
"back_speed": 3.0,
"jump_velocity": -14.0,
"color": "#e878b0",
"sprite_scale": 1.25,
"wardrobe": {
"states": [
"base",
"torn"
],
"tear_below_hp": 0.35
},
"normals": {
"P": "jab",
"6P": "straight",
"K": "kick"
},
"command_moves": [
{
"motion": [
2,
3,
6
],
"button": "P",
"move": "special"
}
],
"finisher": {
"motion": [
2,
3,
6
],
"button": "K",
"move": "finisher"
}
}

View File

@ -0,0 +1,440 @@
{
"name": "block",
"total": 24,
"loop": false,
"startup": 10,
"active": [
11,
14
],
"damage": 50,
"hitstun": 16,
"blockstun": 10,
"pushback": 10,
"hurtboxes": {
"default": [
[
-16,
-128,
47,
34
],
[
-29,
-94,
99,
52
],
[
-31,
-42,
91,
42
]
],
"frames": {
"0-0": [
[
-15,
-138,
46,
37
],
[
-85,
-101,
144,
56
],
[
-119,
-45,
230,
45
]
],
"1-1": [
[
-13,
-135,
46,
36
],
[
-88,
-99,
150,
55
],
[
-115,
-44,
234,
44
]
],
"2-3": [
[
-16,
-123,
45,
33
],
[
-70,
-90,
135,
50
],
[
-69,
-40,
191,
40
]
],
"4-4": [
[
-25,
-124,
44,
33
],
[
-34,
-91,
134,
51
],
[
-26,
-40,
124,
40
]
],
"5-6": [
[
-46,
-128,
44,
34
],
[
-46,
-94,
127,
52
],
[
-38,
-42,
65,
42
]
],
"7-7": [
[
-53,
-119,
43,
32
],
[
-53,
-87,
99,
49
],
[
-48,
-38,
86,
38
]
],
"8-9": [
[
-44,
-120,
43,
32
],
[
-47,
-88,
99,
49
],
[
-43,
-39,
88,
39
]
],
"10-10": [
[
-28,
-125,
45,
34
],
[
-37,
-91,
98,
51
],
[
-28,
-40,
81,
40
]
],
"11-11": [
[
-17,
-128,
46,
34
],
[
-30,
-94,
98,
52
],
[
-31,
-42,
90,
42
]
],
"12-13": [
[
-14,
-127,
47,
34
],
[
-28,
-93,
99,
52
],
[
-31,
-41,
92,
41
]
],
"15-16": [
[
-19,
-130,
46,
35
],
[
-34,
-95,
98,
53
],
[
-31,
-42,
91,
42
]
],
"17-17": [
[
-20,
-131,
45,
35
],
[
-46,
-96,
118,
53
],
[
-32,
-43,
102,
43
]
],
"18-19": [
[
-20,
-132,
45,
35
],
[
-60,
-97,
146,
54
],
[
-54,
-43,
134,
43
]
],
"20-20": [
[
-20,
-134,
46,
36
],
[
-73,
-98,
127,
54
],
[
-72,
-44,
169,
44
]
],
"21-21": [
[
-18,
-136,
45,
36
],
[
-82,
-100,
138,
55
],
[
-90,
-45,
195,
45
]
],
"22-23": [
[
-17,
-136,
46,
36
],
[
-87,
-100,
145,
55
],
[
-117,
-45,
228,
45
]
],
"24-24": [
[
-15,
-136,
46,
36
],
[
-84,
-100,
142,
55
],
[
-122,
-45,
236,
45
]
],
"25-26": [
[
-15,
-137,
47,
37
],
[
-83,
-100,
142,
55
],
[
-119,
-45,
226,
45
]
],
"27-27": [
[
-15,
-138,
46,
37
],
[
-84,
-101,
143,
56
],
[
-119,
-45,
227,
45
]
],
"28-29": [
[
-15,
-138,
46,
37
],
[
-85,
-101,
144,
56
],
[
-119,
-45,
229,
45
]
]
}
},
"hitboxes": {},
"root_motion_frames": []
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@ -0,0 +1,180 @@
{
"name": "crouch",
"total": 20,
"loop": false,
"startup": 10,
"active": [
11,
14
],
"damage": 50,
"hitstun": 16,
"blockstun": 10,
"pushback": 10,
"hurtboxes": {
"default": [
[
-3,
-86,
42,
24
],
[
-40,
-62,
82,
36
],
[
-69,
-26,
133,
26
]
],
"frames": {
"0-2": [
[
-15,
-138,
46,
37
],
[
-85,
-101,
144,
56
],
[
-119,
-45,
229,
45
]
],
"3-6": [
[
-18,
-146,
48,
39
],
[
-80,
-107,
143,
59
],
[
-118,
-48,
237,
48
]
],
"7-10": [
[
-16,
-140,
47,
37
],
[
-74,
-103,
135,
57
],
[
-115,
-46,
235,
46
]
],
"11-14": [
[
-9,
-118,
44,
32
],
[
-62,
-86,
115,
48
],
[
-87,
-38,
181,
38
]
],
"18-21": [
[
4,
-51,
37,
15
],
[
-13,
-36,
54,
23
],
[
-34,
-13,
72,
13
]
],
"22-25": [
[
10,
-19,
29,
7
],
[
1,
-12,
41,
11
],
[
0,
-1,
42,
1
]
],
"26-29": [
[
18,
2,
11,
2
],
[
14,
4,
24,
3
],
[
13,
7,
26,
-7
]
]
}
},
"hitboxes": {},
"root_motion_frames": []
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

View File

@ -0,0 +1,280 @@
{
"name": "death",
"total": 150,
"loop": false,
"startup": 10,
"active": [
11,
14
],
"damage": 50,
"hitstun": 16,
"blockstun": 10,
"pushback": 10,
"hurtboxes": {
"default": [
[
-93,
-167,
117,
44
],
[
-100,
-123,
185,
67
],
[
-30,
-56,
149,
56
]
],
"frames": {
"0-1": [
[
-15,
-138,
46,
37
],
[
-85,
-101,
144,
56
],
[
-119,
-45,
229,
45
]
],
"2-3": [
[
-42,
-140,
50,
37
],
[
-75,
-103,
125,
57
],
[
-94,
-46,
195,
46
]
],
"4-5": [
[
-42,
-158,
47,
42
],
[
-71,
-116,
127,
63
],
[
-36,
-53,
128,
53
]
],
"6-8": [
[
-38,
-167,
69,
44
],
[
-42,
-123,
91,
67
],
[
-36,
-56,
67,
56
]
],
"9-10": [
[
-55,
-170,
63,
45
],
[
-41,
-125,
152,
68
],
[
-34,
-57,
62,
57
]
],
"11-12": [
[
-83,
-168,
100,
44
],
[
-63,
-124,
169,
67
],
[
-31,
-57,
163,
57
]
],
"16-17": [
[
-33,
-165,
61,
44
],
[
-108,
-121,
184,
66
],
[
-29,
-55,
125,
55
]
],
"18-19": [
[
-32,
-161,
59,
43
],
[
-74,
-118,
144,
64
],
[
-105,
-54,
190,
54
]
],
"20-22": [
[
-31,
-146,
52,
39
],
[
-42,
-107,
107,
59
],
[
-79,
-48,
160,
48
]
],
"23-24": [
[
-30,
-112,
44,
30
],
[
-30,
-82,
78,
46
],
[
-39,
-36,
123,
36
]
],
"25-26": [
[
-30,
-59,
37,
17
],
[
-31,
-42,
46,
26
],
[
-28,
-16,
49,
16
]
],
"27-29": [
[
-25,
4,
1,
1
],
[
-37,
5,
22,
3
],
[
-38,
8,
24,
-8
]
]
}
},
"hitboxes": {},
"root_motion_frames": []
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Some files were not shown because too many files have changed in this diff Show More