From 40c446e33e344bfe863160cb1cecefb273b8a94f Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 17 Jun 2024 14:46:37 +0900 Subject: [PATCH] =?UTF-8?q?VRMC=5FspringBone=5Fextended=5Fcollider=20expor?= =?UTF-8?q?ter=20=E3=82=92=E4=BF=AE=E6=AD=A3=E3=81=97=E3=81=BE=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/VRM10/Runtime/IO/Vrm10Exporter.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs b/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs index 365baa2e4..5f31d9e0a 100644 --- a/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs +++ b/Assets/VRM10/Runtime/IO/Vrm10Exporter.cs @@ -320,6 +320,18 @@ namespace UniVRM10 }; break; } + + default: + { + // 既存実装で未知の collider が来た時に throw しているので + // 回避するために適当な Shpere を作る。 + shape.Sphere = new UniGLTF.Extensions.VRMC_springBone.ColliderShapeSphere + { + Radius = 0, + Offset = new float[] { 0, 0, 0 }, + }; + break; + } } return shape; } @@ -435,15 +447,19 @@ namespace UniVRM10 Node = getNodeIndexFromTransform(c.transform), Shape = ExportShape(c), }; + if (c.ColliderType == VRM10SpringBoneColliderTypes.SphereInside || c.ColliderType == VRM10SpringBoneColliderTypes.CapsuleInside || c.ColliderType == VRM10SpringBoneColliderTypes.Plane ) { - exportCollider.Extensions = new UniGLTF.Extensions.VRMC_springBone_extended_collider.VRMC_springBone_extended_collider + var extendedCollider = new UniGLTF.Extensions.VRMC_springBone_extended_collider.VRMC_springBone_extended_collider { Shape = ExportShapeExtended(c), }; + glTFExtension extensions = default; + UniGLTF.Extensions.VRMC_springBone_extended_collider.GltfSerializer.SerializeTo(ref extensions, extendedCollider); + exportCollider.Extensions = extensions; } springBone.Colliders.Add(exportCollider); }