mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-02-19 20:55:09 +08:00
ボーンが存在しないSkinnedMeshRendererでRootBoneを設定すると描画位置がずれる問題の修正 (#345)
* Fixed a bug when setting RootBone in SkinnedMeshRenderer with 0 bones. Co-authored-by: AoiKamishiro <aoi.kamishiro@kamishiro.online>
This commit is contained in:
parent
483a8abeae
commit
0e2dd7197d
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user