Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »


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:

https://academysoftwarefdn.slack.com/archives/C013Z5AMT7T/p1699372600728409?thread_ts=1699305453.565659&cid=C013Z5AMT7T

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:

cubeToSphere.glb

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

  • 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



  • No labels