VRM-1.0 Changes¶
Changes from VRM-0.X¶
glTF: z- forward => z+ forward
glTF: shared bufferView => divided bufferView
VRM0: meta =>
VRMC_vrm
metaVRM0: humanoid =>
VRMC_vrm
humanoidVRM0: blendshape =>
VRMC_vrm
expressionVRM0: lookat =>
VRMC_vrm
lookatVRM0: firstperson =>
VRMC_vrm
firstpersonVRM0: springBone =>
VRMC_springBone
new addition
=>VRMC_materials_hdr_emissiveMultiplier
VRM0: mtoon =>
VRMC_materials_mtoon
new addition
=>VRMC_node_constraint
glTF: z+ forward¶
The model stores the Z+ direction forward.
VRM0 |
VRM1 |
|
---|---|---|
forward |
z- |
z+ |
right |
x+ |
x- |
implementation
Y-axis 180-degree rotation.
Vector3 vrm0;
var vrm1 = new Vector3(-vrm0.x, vrm0.y, -vrm0.z);
TODO
glTF: divided vertex buffer¶
Stop sharing bufferView between primitives.
VRM0 |
VRM1 |
|
---|---|---|
bufferView |
shared |
divided |
Pros |
Less conversions due to close to GameEngine memory |
Compatible with generic glTF loaders |
Cons |
Non-UniVRM glTF loaders can cause memory usage to explode (can be loaded but unused space in the vertex buffer) |
There can be an increase in vertices and a change in order at export. Effort to concatenated during import. Clutter handling morphTarget |
implementation
Stop the ‘Vrm’ dedicated shared vertex loader and use the general ‘glTF’ loader.
VRMC_vrm: meta¶
TODO
VRMC_vrm: humanoid¶
Review of required bones.
VRM0 |
VRM1 |
|
---|---|---|
neck |
required |
|
head |
required |
required |
hips |
required |
required |
spine |
required |
required |
chest |
required |
|
left/right UpperArm |
required |
required |
left/right LowerArm |
required |
required |
left/right Hand |
required |
required |
left/right UpperLeg |
required |
required |
left/right LowerLeg |
required |
required |
left/right Foot |
required |
required |
The following items will be removed (recorded in ‘VRMHumanoidDescription’):
armStretch
legStretch
upperArmTwist
lowerArmTwist
upperLegTwist
lowerLegTwist
feetSpacing
hasTranslationDoF
VRMC_vrm: expression¶
Rename BlendShape to Expression.
BlendShape
BlendShape is Unity’s MorphTarget feature, which is confusing.
Review of expression preset.
VRM0 |
VRM1 |
|
---|---|---|
喜 |
joy(joy and fun are ambiguous) |
happy |
怒 |
angry |
angry |
哀 |
sorrow |
sad |
楽 |
fun(joy and fun are ambiguous) |
relaxed |
驚 |
(new addition) |
surprised |
あ |
a(Changed to be natural in non-Japanese) |
aa |
い |
i(Changed to be natural in non-Japanese) |
ih |
う |
u(Changed to be natural in non-Japanese) |
ou |
え |
e(Changed to be natural in non-Japanese) |
ee |
お |
o(Changed to be natural in non-Japanese) |
oh |
Add overrideMouse, overrideLipSync and overrideBlink.
Separate VRM0 materialBind from MaterialColorBind and TextureTransformBind.
VRMC_vrm: lookat¶
Remove
degreemap.curve
.
VRMC_vrm: firstperson¶
Remove
firstPersonBone
and fixed toHead
.firstPersonBoneOffset
is changed tolookAt.offsetFromHeadBone
.
VRMC_springBone¶
VRM0 |
VRM1 |
|
---|---|---|
configuration unit |
Spring |
Joint |
child |
children[0] |
One of children |
leaf |
Automatically add 7cm distance |
Not add |
Separate to independent extension
VRMC_springBone
Add
capsule shape
to collider.Fixed mixing of Unity coordinate systems.
VRMC_materials_hdr_emissiveMultiplier¶
In glTF, the emissiveFactor(float3) value range is [0.0, 1.0].
Add a factor to this so that it can represent values beyond 1.0.
VRM0 |
VRM1 |
|
---|---|---|
mtoon の emissiveFactor |
stored in extension (0, 1 no limit) |
material’s emissiveFactor(The range is limited to 0, 1) |
Available from gltf-2.0 standard materials (PBR), VRMC_materials_mtoon.
VRMC_materials_mtoon¶
Separate to independent extension
VRMC_materials_mtoon
.
TODO
VRMC_node_constraint¶
in development