A standalone Tauri 2 + wgpu 29 example for loading, animating, inspecting, and manually posing skinned glTF/GLB characters on a native GPU surface.
npm install
npm run dev:metal
Other backend wrappers are included:
npm run dev:vulkan
npm run dev:dx12
npm run dev
JOINTS_0 and WEIGHTS_0 vertex attributessrc-tauri/assets/sample-skinned.glb is a generated four-joint weighted tube with a looping wave animation. It is intentionally small and inspectable. It proves the entire skinning path without requiring an external asset.
Use Open glTF / GLB to select a character. For .gltf files, keep referenced .bin and image files beside the JSON document.
The example currently focuses on one standard skinning layer:
JOINTS_0 and WEIGHTS_0Morph targets are reserved for example 23.
glTF / GLB
↓
Rust scene graph + skins + animation channels
↓
node local pose → node world matrices
↓
inverse(mesh world) × joint world × inverse bind
↓
per-primitive joint storage buffer
↓
WGSL linear-blend skinning
↓
material shading + skeleton diagnostic overlay
See SKELETAL-POSE-GUIDE.md for the data flow and extension points.
The skeleton overlay uses PrimitiveTopology::LineList. Its depth state now uses DepthBiasState::default() because nonzero depth bias is valid only for triangle primitives in wgpu 29. The mesh pipeline remains unchanged.