Introduction
This page is for collecting information about characters on the web, and for trying to line up the concepts with USD.
Well established technologies are linked here for reference, and the concepts used by characters on the web are listed.
Concepts
- Linear Blend Skinning
- Blend Targets
- Animated Texture Maps
- Proceduralism
- Look At
- SpringBones
- Cloth
- Hair
- Collision
- Spheres
- Cylinders
- Planes
- Animation Clips
- Weighted and Blended Animation Clips
- Accessories
- Skins
- Clothing
Concepts, In Detail
Blend Targets
In Unity it's an import choice to either import or calculate blend shape normals. Calculation is then "auto-smooth" per-blendshape and the calculated normals are used at runtime for interpolation.
Video of a box/sphere blend shape interpolation:
Which means that sharp cube to smooth sphere is representable in Unity and also in FBX and glTF. Hree's a glb file that illustrates the concept:
Blending normals is as a general problem not solvable because normals in different shapes easily become self contradictory, especially in crease areas. The general technique used in engines and renderers is to figure out where creased edges are and compute normals of the final blended mesh. In a subdivision surface, that's indicated with crease attributes; when importing from FBX, you can infer crease edges from the boundaries of smoothing groups. For smoothing groups and polygon meshes in general, Newell's method is commonly used (cf. https://www.khronos.org/opengl/wiki/Calculating_a_Surface_Normal) For subdivision surfaces, the preferred thing is to compute the normal for each vertex at the limit surface. This can be done through various analytic methods without performing the subdivision.
In the case of the cube to sphere example, the morph is possible without artifacts, because the convexity of the shapes does not change throughout the morph. Interpolation is more problematic in areas where a mesh surface stretches and folds, such as occurs at the corners of a character's mouth.
Mapping the Concepts to USD
Anyone available to have a go?
VRM
Next Gen Idol Master Graphics and Animation Programming Preview; https://cedil.cesa.or.jp/cedil_sessions/view/416
- From CEDEC 2010, the basics of what's in VRM are laid out
Kawaii Physics; https://github.com/pafuhana1213/KawaiiPhysics/blob/master/README_en.md
- Widely used in Japanese AAA games plugin for UE that implements secondary character animation
vrm-samples, https://github.com/madjin/vrm-samples
- VRoid sample models in VRM format
VRMToybox, https://github.com/Keshigom/VRMToybox
- browser based VRM viewer
VRM4U, https://github.com/ruyo/VRM4U
- VRM importer for UE4
VrmEditor, https://github.com/ousttrue/VrmEditor
three-vrm, https://github.com/pixiv/three-vrm/tree/dev
- reference implementation
VRM specification, https://github.com/vrm-c/vrm-specification
- specification
VRM consortium, https://github.com/orgs/vrm-c
- hosting for their various projects, including the specification
VRM documentation, https://vrm.dev/en/
- documentation published by the consortium