body export

A rigged body out as a GLB, from a panel. The rows the rig tool and the character builder put in their Export section: which joint names, which rest pose, how tall, and a button that writes the body shown with rigged-body-glb (its springs too, from the rig recipe) and downloads it. The file plays UAL's clips by name in three.js, Unity, Godot and Blender; a tail or a strand swings in any VRM loader. With animation set to the clip playing, that clip goes in too, retargeted onto the skeleton as written (from UAL's file, a GLB's animations or a BVH capture: clip on the target says which).

The body on screen was read through Babylon, so its materials are Babylon's. For the file, the model it came from is read again from its bytes (glb-rig), and its materials go out as glTF with their pictures. A model that is not a GLB (an OBJ) goes out in plain grey.

import { exportBodyRows } from 'tosijs-3d/body-export'
panel.push(...exportBodyRows(() => ({ body, recipe, source: { url } }), say))