Release v0.1.1 2026-07-10

This commit is contained in:
Warren H
2026-07-10 23:47:37 -04:00
parent 537a311f52
commit 6726c600e4
40 changed files with 2987 additions and 192 deletions
@@ -0,0 +1,47 @@
# Ember Mantis Duelist
Original stylized low-poly 3D interpretation of the IWT2 Ember Mantis Duelist concept.
## Runtime assets
- `ember_mantis_duelist.glb` — skinned render model and animation clips
- `ember_mantis_duelist_collision.glb` — three low-cost collision volumes
- `ember_mantis_duelist.asset.json` — dimensions, materials, clip lengths, and conventions
- `ember_mantis_duelist.blend` — editable Blender source and preview studio
- `previews/` — front, side, three-quarter, and CrossSlash renders
## Animation clips
| Clip | Loop | Intended use |
| --- | --- | --- |
| `Idle` | Yes | Combat-ready idle |
| `Walk` | Yes | Forward locomotion driven by game movement |
| `Sidestep` | No | Fast lateral reposition |
| `Melee` | No | Close-range scythe strike |
| `LineSlash` | No | Single glowing arena cut |
| `CrossSlash` | No | Two-arm crossed arena cut |
| `Recover` | No | Post-attack settle |
| `Stagger` | No | Hit reaction |
| `Death` | No | Final collapse |
## React Three Fiber loading
```tsx
const gltf = useGLTF(EMBER_MANTIS_URL)
const { actions } = useAnimations(gltf.animations, gltf.scene)
actions.Idle?.reset().fadeIn(0.15).play()
```
Model uses meters, Blender `-Y` forward, and glTF `+Y` up. Runtime movement should remain authoritative; locomotion clips contain only small pose offsets and no travel root motion.
## Rebuild
```sh
/Applications/Blender.app/Contents/MacOS/Blender \
--background \
--factory-startup \
--python scripts/blender/build_ember_mantis_duelist.py
```
Build script recreates Blender source, GLBs, metadata, and preview renders deterministically.
@@ -0,0 +1,74 @@
{
"name": "Ember Mantis Duelist",
"assetId": "ember-mantis-duelist",
"license": "Original project asset",
"sourceConcept": "IWT2 Ember Mantis Duelist side-cel concept",
"authoringTool": "5.1.2",
"format": "glTF 2.0 binary (GLB)",
"coordinateConvention": {
"up": "+Y after glTF export",
"blenderForward": "-Y",
"units": "meters"
},
"runtime": {
"renderMesh": "EmberMantis_Body",
"armature": "EmberMantis_Rig",
"collisionAsset": "ember_mantis_duelist_collision.glb",
"materials": [
"M_Chitin",
"M_CrimsonArmor",
"M_DeepRed",
"M_EyeGlow",
"M_BoneBlade",
"M_EmberGlow"
],
"trianglesApprox": 1574
},
"animations": {
"Idle": {
"frames": 60,
"seconds": 2.0,
"loop": true
},
"Walk": {
"frames": 30,
"seconds": 1.0,
"loop": true
},
"Sidestep": {
"frames": 18,
"seconds": 0.6,
"loop": false
},
"Melee": {
"frames": 24,
"seconds": 0.8,
"loop": false
},
"LineSlash": {
"frames": 32,
"seconds": 1.067,
"loop": false
},
"CrossSlash": {
"frames": 38,
"seconds": 1.267,
"loop": false
},
"Recover": {
"frames": 22,
"seconds": 0.733,
"loop": false
},
"Stagger": {
"frames": 28,
"seconds": 0.933,
"loop": false
},
"Death": {
"frames": 72,
"seconds": 2.4,
"loop": false
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 849 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 866 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 869 KiB