mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-04-24 23:18:04 -05:00
exporter
This commit is contained in:
parent
6c5b02fb15
commit
c14b32645f
|
|
@ -140,6 +140,12 @@ namespace UniVRM10
|
|||
return new float[] { -v.x, v.y, v.z };
|
||||
}
|
||||
|
||||
static float[] ReverseX(Quaternion q)
|
||||
{
|
||||
q = UniGLTF.Axes.X.Create().InvertQuaternion(q);
|
||||
return new float[] { q.x, q.y, q.z, q.w };
|
||||
}
|
||||
|
||||
///
|
||||
/// 必要な容量を計算
|
||||
/// (sparseは考慮してないので大きめ)
|
||||
|
|
@ -444,6 +450,65 @@ namespace UniVRM10
|
|||
GravityDir = ReverseX(y.m_gravityDir),
|
||||
GravityPower = y.m_gravityPower,
|
||||
};
|
||||
|
||||
switch (y.m_anglelimitType)
|
||||
{
|
||||
case UniGLTF.SpringBoneJobs.AnglelimitTypes.Cone:
|
||||
{
|
||||
var limit = new UniGLTF.Extensions.VRMC_springBone_limit.VRMC_springBone_limit
|
||||
{
|
||||
Limit = new UniGLTF.Extensions.VRMC_springBone_limit.Limit
|
||||
{
|
||||
Cone = new UniGLTF.Extensions.VRMC_springBone_limit.ConeLimit
|
||||
{
|
||||
Rotation = ReverseX(y.m_angleLimitRotation),
|
||||
Angle = y.m_angleLimitAngle1,
|
||||
}
|
||||
}
|
||||
};
|
||||
glTFExtension extensions = default;
|
||||
UniGLTF.Extensions.VRMC_springBone_limit.GltfSerializer.SerializeTo(ref extensions, limit);
|
||||
joint.Extensions = extensions;
|
||||
break;
|
||||
}
|
||||
case UniGLTF.SpringBoneJobs.AnglelimitTypes.Hinge:
|
||||
{
|
||||
var limit = new UniGLTF.Extensions.VRMC_springBone_limit.VRMC_springBone_limit
|
||||
{
|
||||
Limit = new UniGLTF.Extensions.VRMC_springBone_limit.Limit
|
||||
{
|
||||
Hinge = new UniGLTF.Extensions.VRMC_springBone_limit.HingeLimit
|
||||
{
|
||||
Rotation = ReverseX(y.m_angleLimitRotation),
|
||||
Angle = y.m_angleLimitAngle1,
|
||||
}
|
||||
}
|
||||
};
|
||||
glTFExtension extensions = default;
|
||||
UniGLTF.Extensions.VRMC_springBone_limit.GltfSerializer.SerializeTo(ref extensions, limit);
|
||||
joint.Extensions = extensions;
|
||||
break;
|
||||
}
|
||||
case UniGLTF.SpringBoneJobs.AnglelimitTypes.Spherical:
|
||||
{
|
||||
var limit = new UniGLTF.Extensions.VRMC_springBone_limit.VRMC_springBone_limit
|
||||
{
|
||||
Limit = new UniGLTF.Extensions.VRMC_springBone_limit.Limit
|
||||
{
|
||||
Spherical = new UniGLTF.Extensions.VRMC_springBone_limit.SphericalLimit
|
||||
{
|
||||
Rotation = ReverseX(y.m_angleLimitRotation),
|
||||
Theta = y.m_angleLimitAngle1,
|
||||
Phi = y.m_angleLimitAngle2,
|
||||
}
|
||||
}
|
||||
};
|
||||
glTFExtension extensions = default;
|
||||
UniGLTF.Extensions.VRMC_springBone_limit.GltfSerializer.SerializeTo(ref extensions, limit);
|
||||
joint.Extensions = extensions;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return joint;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user