README.md

Blender source and export recipes #

The full-detail holiday_ghost_vtuber_rig.blend is included under CC BY 4.0. It is separate from the browser GLB. The public copy retains the ghost rig and removes unrelated room/plant props and private filesystem metadata. The recipes read it and write browser assets; they do not save over the master.

The source was authored/exported with Blender 5.1. Other versions may need API adjustments. These are character-specific recipes using named objects and materials, not automatic rigging tools.

Regenerate assets #

Run from the repository root, with Blender on PATH, in this order:

blender --background --python blender/export_controller_ghost.py
blender --background --python blender/bake_browser_textiles.py
blender --background --python blender/expand_gaze_surface.py
node scripts/test.mjs

On Windows, call the full Blender executable path with PowerShell's & operator if it is not on PATH. Work on a copy or commit before regenerating: the recipes replace dist/ghost.glb, dist/rig.json, and texture maps. Baking can take time and uses Cycles.

  1. Export: add six sheet deformation rings, preserve head/hat/ornament skinning and blink morphs, and sample authored fibers. Write GLB and initial face-depth metadata. The small vtuber-rig-validation.json file supplies the original surface coefficients expected by this recipe; it is seed metadata, not proof of a fresh build.
  2. Bake: turn authored cotton, hat, and lining shaders into 2K color, roughness, and tangent-normal maps. Prefer available OPTIX GPUs, otherwise use CPU.
  3. Expand gaze: replace the initial lookup with 33 × 33 depth samples spanning ±4 gaze units. Run last because export rewrites rig.json.

The runtime performs additional eye/pom rigid-mesh conversion, ornament smoothing, material restoration, and physics setup. Those changes are not saved into the Blender file. See the walkthrough.

For your own character, adapt names, weights, coordinates, materials, and metadata generation. The source retains dense fibers and procedural detail; the browser copy trades some detail for real-time performance. No original unrigged scene, old backups, signed app, or development logs are needed to run this example.