This commit is contained in:
ousttrue 2024-06-05 16:09:43 +09:00
parent a71aa9fd8f
commit a3564ec859
3 changed files with 64 additions and 5 deletions

View File

@ -8,7 +8,7 @@ namespace UniVRM10
Sphere,
Capsule,
Plane,
SphereIside,
SphereInside,
}
[Serializable]
@ -56,7 +56,7 @@ namespace UniVRM10
DrawPlane(transform.localToWorldMatrix, Offset, Normal, Radius);
break;
case VRM10SpringBoneColliderTypes.SphereIside:
case VRM10SpringBoneColliderTypes.SphereInside:
Gizmos.color = Color.cyan;
Gizmos.DrawWireSphere(Offset, Radius);
break;

View File

@ -324,6 +324,57 @@ namespace UniVRM10
return shape;
}
static UniGLTF.Extensions.VRMC_springBone_extended_collider.ExtendedColliderShape ExportShapeExtended(VRM10SpringBoneCollider z)
{
var shape = new UniGLTF.Extensions.VRMC_springBone_extended_collider.ExtendedColliderShape();
switch (z.ColliderType)
{
case VRM10SpringBoneColliderTypes.Sphere:
{
shape.Sphere = new UniGLTF.Extensions.VRMC_springBone_extended_collider.ExtendedColliderShapeSphere
{
Radius = z.Radius,
Offset = ReverseX(z.Offset),
};
break;
}
case VRM10SpringBoneColliderTypes.Capsule:
{
shape.Capsule = new UniGLTF.Extensions.VRMC_springBone_extended_collider.ExtendedColliderShapeCapsule
{
Radius = z.Radius,
Offset = ReverseX(z.Offset),
Tail = ReverseX(z.Tail),
};
break;
}
case VRM10SpringBoneColliderTypes.SphereInside:
{
shape.Sphere = new UniGLTF.Extensions.VRMC_springBone_extended_collider.ExtendedColliderShapeSphere
{
Radius = z.Radius,
Offset = ReverseX(z.Offset),
Inside = true,
};
break;
}
case VRM10SpringBoneColliderTypes.Plane:
{
shape.Plane = new UniGLTF.Extensions.VRMC_springBone_extended_collider.ExtendedColliderShapePlane
{
Offset = ReverseX(z.Offset),
Normal = ReverseX(z.Normal),
};
break;
}
break;
}
return shape;
}
static UniGLTF.Extensions.VRMC_springBone.SpringBoneJoint ExportJoint(VRM10SpringBoneJoint y, Func<Transform, int> getIndexFromTransform)
{
var joint = new UniGLTF.Extensions.VRMC_springBone.SpringBoneJoint
@ -369,11 +420,19 @@ namespace UniVRM10
foreach (var c in colliders)
{
springBone.Colliders.Add(new UniGLTF.Extensions.VRMC_springBone.Collider
var exportCollider = new UniGLTF.Extensions.VRMC_springBone.Collider
{
Node = getNodeIndexFromTransform(c.transform),
Shape = ExportShape(c),
});
};
if (c.ColliderType == VRM10SpringBoneColliderTypes.SphereInside || c.ColliderType == VRM10SpringBoneColliderTypes.Plane)
{
exportCollider.Extensions = new UniGLTF.Extensions.VRMC_springBone_extended_collider.VRMC_springBone_extended_collider
{
Shape = ExportShapeExtended(c),
};
}
springBone.Colliders.Add(exportCollider);
}
// colliderGroups

View File

@ -551,7 +551,7 @@ namespace UniVRM10
collider.Radius = exSphere.Radius.Value;
if (exSphere.Inside.HasValue && exSphere.Inside.Value)
{
collider.ColliderType = VRM10SpringBoneColliderTypes.SphereIside;
collider.ColliderType = VRM10SpringBoneColliderTypes.SphereInside;
}
}
else if (exCollider.Shape.Capsule is UniGLTF.Extensions.VRMC_springBone_extended_collider.ExtendedColliderShapeCapsule exCapsule)