Blender render pipeline + first real character from asset library

- pipeline/render_moves.py: headless Blender 5.x renderer — imports rigged
  FBX/GLB, remaps Mixamo bone namespaces (mixamorigN:), fixes FBX axis/scale,
  normalises height, centres ground pivot, renders transparent ortho sprites
- engine: sprite_scale in manifest (scales sprite + all boxes), --p1/--p2
  roster picks for testing
- characters/trainer: woman_athleisure_01 (Mixamo, web-ok) rendered through
  the full pipeline as integration proof — idle/jab/hit from NPC clips,
  silhouette auto-hurtboxes, verified in-game vs alpha

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-07-28 19:02:39 +10:00
parent b067bf7f0b
commit 8e58b88262
107 changed files with 2191 additions and 10 deletions

View File

@ -21,5 +21,6 @@
"button": "P",
"move": "rush_palm"
}
]
],
"sprite_scale": 1.5
}

View File

@ -21,5 +21,6 @@
"button": "P",
"move": "rush_palm"
}
]
],
"sprite_scale": 1.5
}

View File

@ -0,0 +1,15 @@
{
"id": "trainer",
"name": "TRAINER",
"health": 1000,
"walk_speed": 3.2,
"back_speed": 2.6,
"jump_velocity": -13.5,
"color": "#b48fd0",
"normals": {
"P": "jab",
"K": "kick"
},
"command_moves": [],
"sprite_scale": 1.25
}

View File

@ -0,0 +1,639 @@
{
"name": "hit",
"total": 36,
"loop": false,
"startup": 10,
"active": [
11,
14
],
"damage": 50,
"hitstun": 16,
"blockstun": 10,
"pushback": 10,
"hurtboxes": {
"default": [
[
-47,
-331,
116,
79
],
[
-58,
-252,
129,
119
],
[
-59,
-133,
142,
133
]
],
"frames": {
"0-0": [
[
-18,
-337,
68,
80
],
[
-31,
-257,
84,
121
],
[
-58,
-136,
149,
136
]
],
"1-1": [
[
-18,
-337,
68,
80
],
[
-31,
-257,
84,
121
],
[
-58,
-136,
149,
136
]
],
"2-2": [
[
-18,
-337,
68,
80
],
[
-31,
-257,
84,
121
],
[
-58,
-136,
149,
136
]
],
"3-3": [
[
-18,
-337,
69,
80
],
[
-31,
-257,
84,
121
],
[
-58,
-136,
149,
136
]
],
"4-4": [
[
-18,
-336,
69,
80
],
[
-31,
-256,
85,
121
],
[
-58,
-135,
149,
135
]
],
"5-5": [
[
-20,
-336,
71,
80
],
[
-33,
-256,
92,
121
],
[
-58,
-135,
147,
135
]
],
"6-6": [
[
-31,
-336,
79,
80
],
[
-44,
-256,
119,
121
],
[
-58,
-135,
145,
135
]
],
"7-7": [
[
-38,
-335,
79,
80
],
[
-49,
-255,
131,
121
],
[
-59,
-134,
145,
134
]
],
"8-8": [
[
-40,
-335,
75,
80
],
[
-50,
-255,
130,
121
],
[
-59,
-134,
144,
134
]
],
"9-9": [
[
-42,
-334,
74,
80
],
[
-51,
-254,
128,
120
],
[
-59,
-134,
144,
134
]
],
"10-10": [
[
-44,
-332,
74,
79
],
[
-53,
-253,
127,
120
],
[
-59,
-133,
143,
133
]
],
"11-11": [
[
-45,
-331,
74,
79
],
[
-55,
-252,
127,
119
],
[
-59,
-133,
142,
133
]
],
"12-12": [
[
-46,
-331,
74,
79
],
[
-56,
-252,
127,
119
],
[
-59,
-133,
142,
133
]
],
"13-13": [
[
-47,
-331,
75,
79
],
[
-57,
-252,
128,
119
],
[
-59,
-133,
142,
133
]
],
"14-14": [
[
-47,
-331,
75,
79
],
[
-57,
-252,
129,
119
],
[
-59,
-133,
142,
133
]
],
"15-15": [
[
-47,
-331,
97,
79
],
[
-58,
-252,
128,
119
],
[
-59,
-133,
142,
133
]
],
"16-16": [
[
-47,
-331,
75,
79
],
[
-58,
-252,
131,
119
],
[
-59,
-133,
142,
133
]
],
"17-17": [
[
-47,
-331,
76,
79
],
[
-58,
-252,
132,
119
],
[
-59,
-133,
142,
133
]
],
"18-18": [
[
-47,
-331,
115,
79
],
[
-57,
-252,
129,
119
],
[
-59,
-133,
142,
133
]
],
"19-19": [
[
-46,
-331,
113,
79
],
[
-57,
-252,
125,
119
],
[
-60,
-133,
143,
133
]
],
"20-20": [
[
-46,
-331,
77,
79
],
[
-56,
-252,
127,
119
],
[
-60,
-133,
143,
133
]
],
"21-21": [
[
-45,
-331,
76,
79
],
[
-56,
-252,
130,
119
],
[
-60,
-133,
142,
133
]
],
"22-22": [
[
-45,
-331,
77,
79
],
[
-56,
-252,
129,
120
],
[
-60,
-132,
142,
132
]
],
"23-23": [
[
-45,
-331,
78,
79
],
[
-55,
-252,
128,
120
],
[
-60,
-132,
142,
132
]
],
"24-24": [
[
-45,
-331,
79,
79
],
[
-55,
-252,
129,
120
],
[
-60,
-132,
141,
132
]
],
"25-25": [
[
-44,
-331,
79,
79
],
[
-54,
-252,
130,
120
],
[
-60,
-132,
141,
132
]
],
"26-26": [
[
-42,
-331,
77,
79
],
[
-53,
-252,
132,
120
],
[
-60,
-132,
142,
132
]
],
"27-27": [
[
-41,
-332,
77,
80
],
[
-51,
-252,
130,
120
],
[
-60,
-132,
142,
132
]
],
"28-28": [
[
-38,
-333,
74,
80
],
[
-49,
-253,
129,
120
],
[
-60,
-133,
142,
133
]
],
"29-29": [
[
-35,
-334,
71,
80
],
[
-47,
-254,
126,
120
],
[
-59,
-134,
142,
134
]
]
}
},
"hitboxes": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

View File

@ -0,0 +1,619 @@
{
"name": "idle",
"total": 192,
"loop": true,
"startup": 10,
"active": [
11,
14
],
"damage": 50,
"hitstun": 16,
"blockstun": 10,
"pushback": 10,
"hurtboxes": {
"default": [
[
-43,
-349,
74,
83
],
[
-51,
-266,
117,
126
],
[
-49,
-140,
184,
140
]
],
"frames": {
"0-0": [
[
-42,
-348,
72,
83
],
[
-49,
-265,
115,
125
],
[
-50,
-140,
186,
140
]
],
"1-1": [
[
-42,
-348,
73,
83
],
[
-48,
-265,
114,
125
],
[
-50,
-140,
186,
140
]
],
"2-2": [
[
-42,
-348,
73,
83
],
[
-48,
-265,
114,
125
],
[
-50,
-140,
186,
140
]
],
"3-3": [
[
-42,
-348,
73,
83
],
[
-49,
-265,
115,
125
],
[
-50,
-140,
186,
140
]
],
"4-4": [
[
-42,
-348,
73,
83
],
[
-49,
-265,
115,
125
],
[
-50,
-140,
186,
140
]
],
"5-5": [
[
-42,
-348,
73,
83
],
[
-50,
-265,
116,
125
],
[
-50,
-140,
185,
140
]
],
"6-6": [
[
-42,
-348,
73,
83
],
[
-50,
-265,
116,
125
],
[
-50,
-140,
185,
140
]
],
"7-7": [
[
-42,
-348,
73,
83
],
[
-50,
-265,
116,
125
],
[
-50,
-140,
185,
140
]
],
"8-8": [
[
-43,
-348,
74,
83
],
[
-50,
-265,
116,
125
],
[
-50,
-140,
185,
140
]
],
"9-9": [
[
-43,
-348,
74,
83
],
[
-50,
-265,
115,
125
],
[
-50,
-140,
185,
140
]
],
"10-10": [
[
-43,
-349,
74,
83
],
[
-50,
-266,
115,
126
],
[
-50,
-140,
185,
140
]
],
"11-11": [
[
-43,
-349,
74,
83
],
[
-51,
-266,
116,
126
],
[
-49,
-140,
184,
140
]
],
"12-12": [
[
-43,
-349,
74,
83
],
[
-51,
-266,
116,
126
],
[
-49,
-140,
184,
140
]
],
"13-13": [
[
-43,
-349,
74,
83
],
[
-51,
-266,
116,
126
],
[
-49,
-140,
183,
140
]
],
"15-15": [
[
-42,
-349,
73,
83
],
[
-50,
-266,
116,
126
],
[
-49,
-140,
184,
140
]
],
"16-16": [
[
-41,
-349,
72,
83
],
[
-50,
-266,
116,
126
],
[
-49,
-140,
184,
140
]
],
"17-17": [
[
-40,
-349,
71,
83
],
[
-50,
-266,
116,
126
],
[
-50,
-140,
185,
140
]
],
"18-18": [
[
-40,
-349,
71,
83
],
[
-49,
-266,
115,
126
],
[
-50,
-140,
185,
140
]
],
"19-19": [
[
-40,
-349,
71,
83
],
[
-49,
-266,
115,
126
],
[
-50,
-140,
185,
140
]
],
"20-20": [
[
-39,
-349,
70,
83
],
[
-49,
-266,
115,
126
],
[
-50,
-140,
185,
140
]
],
"21-21": [
[
-39,
-349,
70,
83
],
[
-48,
-266,
114,
126
],
[
-49,
-140,
185,
140
]
],
"22-22": [
[
-39,
-348,
70,
83
],
[
-48,
-265,
114,
125
],
[
-49,
-140,
185,
140
]
],
"23-23": [
[
-39,
-348,
70,
83
],
[
-48,
-265,
114,
125
],
[
-49,
-140,
185,
140
]
],
"24-24": [
[
-39,
-348,
70,
83
],
[
-48,
-265,
114,
125
],
[
-49,
-140,
185,
140
]
],
"25-25": [
[
-39,
-348,
70,
83
],
[
-48,
-265,
114,
125
],
[
-49,
-140,
185,
140
]
],
"26-26": [
[
-39,
-348,
70,
83
],
[
-48,
-265,
114,
125
],
[
-49,
-140,
185,
140
]
],
"27-27": [
[
-39,
-348,
70,
83
],
[
-48,
-265,
114,
125
],
[
-49,
-140,
185,
140
]
],
"28-28": [
[
-39,
-348,
70,
83
],
[
-48,
-265,
114,
125
],
[
-49,
-140,
185,
140
]
],
"29-29": [
[
-40,
-348,
71,
83
],
[
-48,
-265,
114,
125
],
[
-49,
-140,
185,
140
]
]
}
},
"hitboxes": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

View File

@ -0,0 +1,648 @@
{
"name": "jab",
"total": 64,
"loop": false,
"startup": 18,
"active": [
20,
26
],
"damage": 45,
"hitstun": 16,
"blockstun": 9,
"pushback": 9,
"hurtboxes": {
"default": [
[
-53,
-353,
87,
85
],
[
-49,
-268,
89,
128
],
[
-50,
-140,
127,
140
]
],
"frames": {
"0-0": [
[
-35,
-352,
68,
85
],
[
-40,
-267,
80,
128
],
[
-50,
-139,
128,
139
]
],
"1-1": [
[
-35,
-352,
68,
85
],
[
-40,
-267,
80,
128
],
[
-50,
-139,
128,
139
]
],
"2-2": [
[
-35,
-352,
68,
85
],
[
-40,
-267,
80,
128
],
[
-50,
-139,
128,
139
]
],
"3-3": [
[
-35,
-352,
68,
85
],
[
-40,
-267,
80,
128
],
[
-50,
-139,
128,
139
]
],
"4-4": [
[
-35,
-352,
68,
85
],
[
-40,
-267,
80,
128
],
[
-50,
-139,
128,
139
]
],
"5-5": [
[
-35,
-352,
68,
85
],
[
-40,
-267,
80,
128
],
[
-50,
-139,
128,
139
]
],
"6-6": [
[
-35,
-352,
68,
85
],
[
-40,
-267,
80,
128
],
[
-50,
-139,
128,
139
]
],
"7-7": [
[
-35,
-352,
68,
85
],
[
-40,
-267,
80,
128
],
[
-50,
-139,
128,
139
]
],
"8-8": [
[
-35,
-352,
68,
85
],
[
-40,
-267,
80,
128
],
[
-50,
-139,
128,
139
]
],
"9-9": [
[
-35,
-352,
68,
85
],
[
-39,
-267,
79,
128
],
[
-50,
-139,
128,
139
]
],
"10-10": [
[
-35,
-352,
68,
85
],
[
-39,
-267,
79,
128
],
[
-50,
-139,
128,
139
]
],
"11-11": [
[
-35,
-352,
68,
85
],
[
-43,
-267,
84,
128
],
[
-50,
-139,
128,
139
]
],
"12-12": [
[
-38,
-351,
72,
85
],
[
-50,
-266,
91,
127
],
[
-50,
-139,
128,
139
]
],
"13-13": [
[
-42,
-352,
75,
85
],
[
-53,
-267,
94,
128
],
[
-50,
-139,
127,
139
]
],
"14-14": [
[
-48,
-353,
81,
85
],
[
-53,
-268,
94,
128
],
[
-50,
-140,
127,
140
]
],
"15-15": [
[
-50,
-354,
83,
85
],
[
-30,
-269,
70,
129
],
[
-50,
-140,
127,
140
]
],
"16-16": [
[
-46,
-353,
81,
85
],
[
-30,
-268,
70,
128
],
[
-50,
-140,
127,
140
]
],
"17-17": [
[
-43,
-353,
78,
85
],
[
-30,
-268,
70,
128
],
[
-50,
-140,
128,
140
]
],
"18-18": [
[
-41,
-353,
76,
85
],
[
-30,
-268,
71,
128
],
[
-50,
-140,
127,
140
]
],
"19-19": [
[
-40,
-353,
75,
85
],
[
-30,
-268,
71,
128
],
[
-51,
-140,
128,
140
]
],
"20-20": [
[
-41,
-353,
76,
85
],
[
-30,
-268,
71,
128
],
[
-51,
-140,
128,
140
]
],
"21-21": [
[
-41,
-353,
77,
85
],
[
-30,
-268,
71,
128
],
[
-51,
-140,
128,
140
]
],
"22-22": [
[
-41,
-353,
77,
85
],
[
-29,
-268,
70,
128
],
[
-51,
-140,
128,
140
]
],
"23-23": [
[
-41,
-353,
77,
85
],
[
-29,
-268,
70,
128
],
[
-51,
-140,
128,
140
]
],
"24-24": [
[
-42,
-353,
78,
85
],
[
-29,
-268,
70,
128
],
[
-51,
-140,
128,
140
]
],
"25-25": [
[
-42,
-353,
78,
85
],
[
-29,
-268,
70,
128
],
[
-51,
-140,
127,
140
]
],
"26-26": [
[
-42,
-353,
78,
85
],
[
-29,
-268,
70,
128
],
[
-51,
-140,
127,
140
]
],
"27-27": [
[
-43,
-353,
79,
85
],
[
-29,
-268,
70,
128
],
[
-51,
-140,
127,
140
]
],
"28-28": [
[
-44,
-353,
80,
85
],
[
-29,
-268,
70,
128
],
[
-51,
-140,
127,
140
]
],
"29-29": [
[
-44,
-353,
80,
85
],
[
-29,
-268,
70,
128
],
[
-51,
-140,
127,
140
]
]
}
},
"hitboxes": {
"20-26": [
[
30,
-290,
80,
40
]
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

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