From 0e2dd7197d06293e9b67f169dff29b98433f5305 Mon Sep 17 00:00:00 2001 From: AoiKamishiro <40717483+AoiKamishiro@users.noreply.github.com> Date: Fri, 23 Jun 2023 19:57:20 +0900 Subject: [PATCH] =?UTF-8?q?=20=E3=83=9C=E3=83=BC=E3=83=B3=E3=81=8C?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E3=81=97=E3=81=AA=E3=81=84SkinnedMeshRendere?= =?UTF-8?q?r=E3=81=A7RootBone=E3=82=92=E8=A8=AD=E5=AE=9A=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=81=A8=E6=8F=8F=E7=94=BB=E4=BD=8D=E7=BD=AE=E3=81=8C=E3=81=9A?= =?UTF-8?q?=E3=82=8C=E3=82=8B=E5=95=8F=E9=A1=8C=E3=81=AE=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=20(#345)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fixed a bug when setting RootBone in SkinnedMeshRenderer with 0 bones. Co-authored-by: AoiKamishiro --- .../Editor/MeshSettingsPass.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Packages/nadena.dev.modular-avatar/Editor/MeshSettingsPass.cs b/Packages/nadena.dev.modular-avatar/Editor/MeshSettingsPass.cs index 53dbaab6..c46e5c7a 100644 --- a/Packages/nadena.dev.modular-avatar/Editor/MeshSettingsPass.cs +++ b/Packages/nadena.dev.modular-avatar/Editor/MeshSettingsPass.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using System.Linq; +using UnityEngine; namespace nadena.dev.modular_avatar.core.editor { @@ -102,6 +103,17 @@ namespace nadena.dev.modular_avatar.core.editor if (settings.SetBounds && mesh is SkinnedMeshRenderer smr) { + if (smr.bones.Length == 0 && smr.sharedMesh) + { + Mesh newMesh = Object.Instantiate(smr.sharedMesh); + smr.sharedMesh = newMesh; + smr.bones = new Transform[] { smr.transform }; + smr.rootBone = smr.transform; + smr.sharedMesh.boneWeights = Enumerable.Repeat(new BoneWeight() { boneIndex0 = 0, weight0 = 1 }, newMesh.vertexCount).ToArray(); + smr.sharedMesh.bindposes = new Matrix4x4[] { smr.transform.worldToLocalMatrix * smr.transform.localToWorldMatrix }; + + if (newMesh) context.SaveAsset(newMesh); + } smr.rootBone = settings.RootBone; smr.localBounds = settings.Bounds; }