Home(en) - PoChang007/UniVRM_1_0 GitHub Wiki

  • Help us find any feature from UniVRM-0.X missed in UniVRM-1.X! Open an issue and state what features are missed in UniVRM-1.X (Example). Thank you!
  • This repository will serve as the core library for VRM1.0's Editor&Runtime. Other utilities such as UniHumanoid and VRMViewer will be managed in UniVRMUtility.

Here are draft notes for UniVRM1.0:

Structure

VrmLib(namespace VrmLib)

VrmLib.Model: An intermediate container generated from the GLTF array buffer to make handling VRM model data easier. It can access the GLTF hierarchy in the VRM model without index referencing.

ProtobufSerializer

VRM-1.0's reading/writing. Defined by ProtocolBuffer and generate a Json serializer.

Google.Protobuf

Google.Protobuf

VrmProtobuf(namespace VrmProtobuf)

C# container and JSON serializer exported from the GLTF's Protobuf definition. Implement JSON(VRM-1.0) => C#(VrmProtobuf) and C#(VrmProtobuf) => JSON(VRM-1.0).

ProtobufSerializer(namespace VrmProtobuf)

Transfer from C# serialized container to the intermediate format VrmLib.Model. Implement VrmProtobuf => VrmLib.Model and VrmLib.Model => VrmProtobuf.

Builder(namespace UniVRM10)

Implement VrmLib.Model => Unity(UnityBuilder) and Unity => VrmLib.Model(VRMBuilder).

  • Transformation between right-handed and left-handed coordinate system
  • Must be run in ScriptThread
  • GLTF-related (Mesh, Texture, Material, GameObject, SkinnedMeshRenderer, etc.)
  • VRM-related (HumanoidAvatar, BlendShapeProxy, LookAt, FirstPerson, etc.)

Current Implementation Status

File IO

  • Runtime&Editor export in vrm-1.0 format
  • Runtime&Editor import in vrm-1.0 format
  • vrm-0.X import
  • Use ScriptedImporter when exporting with Unity Editor
  • Force the model to be normalized at export
  • Be able to check whether the model is in T-Pose

Material

  • MToonMaterial import/export
  • UnlitMaterial import/export
  • PbrMaterial import/export
  • Unify ColorProperty to Linear
  • Modified to handle MapTexture as Linear
  • jpeg texture
  • import/export tests

BlendShape

  • Exclusion options for Blink, LookAt, Mouth
  • LookAt target is set to Head
  • Modify to export LookAt's coordinate system to right-handed system
  • Organize MaterialBind's specifications
  • Change Mesh specification of FirstPerson to NodeIndex
  • Change BlendShapeBind specification to NodeIndex

SpringBone

  • Modify to export as right-handed coordinate system
  • Add the capsule-typed collider to SpringBone
  • Move to an individual extension (VRMC_springBone)

Constraint

  • Add Constraint

Schema

  • Be able to handle content changes in Meta

Gltf Extension

  • KHR_materials_unlit
  • KHR_texture_transform
  • KHR_materials_pbrSpecularGlossiness
  • MSFT_lod
  • KHR_compressed_texture_transmission?

Other

  • IL2CPP support, AOT operation verification