Game characters generated from a text prompt or an image on a laptop, in three art styles — anime, realistic and stylised — by one local pipeline: the solid, modelled hands with finger bones, skinning, a face that blinks and talks (hold T), PBR textures and 18 retargeted clips. Walk, jog, run and sprint blend on one stride clock; strafes, back-pedals, crouch, turns in place, jumps and falls are the controller's own clips, planted so the shoe on the floor slides a few percent of ground speed at most.
Deformation uses dual quaternion skinning: blending rotations as rotations keeps bent joints from hollowing out (jacket faces collapsed below half their area: 8.8% linear, 6.1% dual quaternion, over the walk). Toggle it to see the difference.
How it works, measured: the CharForge paper · lab notebook.
| WASD | move (jog) |
| Shift | sprint |
| X | walk |
| C | crouch |
| Q / right-drag | aim: strafe & backpedal |
| Space | jump |
| E | wave |
| T (hold) | talk |
| drag | orbit camera |
CharForge is a local pipeline, not a hosted service — there is no “generate” button to press here.
Everything that made the characters in this playground runs on one Apple Silicon laptop: generation, segmentation, retopology, rigging, skinning and animation. Nothing is sent anywhere. That is the point of it, and it is also why the generator cannot live on this page — it needs Blender, the TRELLIS.2 weights and about 20 GB on disk.
tools/check_env.py — it reports anything missing across all
three environments before a long run startscharforge.py make a prompt or an image, and a namegit clone https://github.com/majieddd/charforge cd charforge python3 -m venv .venv && .venv/bin/pip install -r requirements.txt .venv/bin/python tools/check_env.py .venv/bin/python charforge.py make --prompt "a knight in weathered plate armour" --name knight .venv/bin/python charforge.py make --prompt "an anime swordswoman" --style anime --name kai .venv/bin/python charforge.py make --image my_concept.png --name hero --height 1.85
About forty minutes later out/<name>/ holds a character that follows
engine convention: real height in metres, origin on the floor under the pelvis, a
Mixamo-named skeleton with fingers and a jaw so any Mixamo animation applies to it, face
morph targets, glTF and an FBX with three LODs, the texture maps each engine reads —
plus a manifest with the collision capsule, clip timing, ground speeds and directions, the
face and the art style a character controller and a renderer need.