From b0f75f7e26fc2284766b0b61b5b5b64ec66da48e Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 27 Feb 2024 19:19:42 +0900 Subject: [PATCH] =?UTF-8?q?migration=20=E6=99=82=E3=81=AB=20spring=20?= =?UTF-8?q?=E9=96=A2=E9=80=A3=E3=81=AE=E5=90=8D=E5=89=8D=E3=82=92=E4=BB=98?= =?UTF-8?q?=E3=81=91=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Migration/MigrationVrmSpringBone.cs | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Assets/VRM10/Runtime/Migration/MigrationVrmSpringBone.cs b/Assets/VRM10/Runtime/Migration/MigrationVrmSpringBone.cs index ff2f6400f..a298ed352 100644 --- a/Assets/VRM10/Runtime/Migration/MigrationVrmSpringBone.cs +++ b/Assets/VRM10/Runtime/Migration/MigrationVrmSpringBone.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using UniGLTF.Extensions.VRMC_springBone; using UniJSON; @@ -48,6 +49,23 @@ namespace UniVRM10 MigrateRootBone(vrm0Bone.GetInt32()); } } + + // fallback. default spring names + foreach (var spring in _springs) + { + if (string.IsNullOrEmpty(spring.Name) && spring.Joints.Count > 0 && spring.Joints[0].Node.HasValue) + { + var i = spring.Joints[0].Node.Value; + if (i >= 0 && i < _gltf.nodes.Count) + { + spring.Name = _gltf.nodes[i].name; + } + } + } + if (string.IsNullOrEmpty(_comment) && _springs.Count > 0) + { + _comment = _springs[0].Name; + } } Spring CreateSpring() @@ -263,6 +281,15 @@ namespace UniVRM10 { Colliders = colliderIndices.ToArray(), }; + if (colliderGroup.Colliders.Length > 0 && springBone.Colliders[colliderGroup.Colliders[0]].Node.HasValue) + { + var i = springBone.Colliders[colliderGroup.Colliders[0]].Node.Value; + if (i >= 0 && i < gltf.nodes.Count) + { + var node = gltf.nodes[i]; + colliderGroup.Name = node.name; + } + } springBone.ColliderGroups.Add(colliderGroup); }