mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-06-20 06:53:30 -05:00
avatar 代入の workaround
This commit is contained in:
parent
e3d4ea53e8
commit
30f893fa1b
|
|
@ -199,12 +199,10 @@ namespace VRM
|
|||
}
|
||||
}
|
||||
|
||||
// 正規化
|
||||
if (settings.PoseFreeze)
|
||||
{
|
||||
// BoneNormalizer.Execute は Copy を作って正規化する。UNDO無用
|
||||
target = VRMBoneNormalizer.Execute(target, settings.ForceTPose);
|
||||
destroy.Add(target);
|
||||
// 正規化
|
||||
VRMBoneNormalizer.Execute(target, settings.ForceTPose);
|
||||
}
|
||||
|
||||
var fp = target.GetComponent<VRMFirstPerson>();
|
||||
|
|
|
|||
|
|
@ -46,8 +46,7 @@ namespace VRM
|
|||
{
|
||||
var go = Selection.activeObject as GameObject;
|
||||
|
||||
// BoneNormalizer.Execute はコピーを正規化する。UNDO無用
|
||||
Selection.activeGameObject = VRMBoneNormalizer.Execute(go, true);
|
||||
VRMBoneNormalizer.Execute(go, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ namespace VRM
|
|||
/// <param name="go">対象モデルのルート</param>
|
||||
/// <param name="forceTPose">強制的にT-Pose化するか</param>
|
||||
/// <returns>正規化済みのモデル</returns>
|
||||
public static GameObject Execute(GameObject go, bool forceTPose)
|
||||
public static void Execute(GameObject go, bool forceTPose)
|
||||
{
|
||||
//
|
||||
// T-Poseにする
|
||||
|
|
@ -67,18 +67,26 @@ namespace VRM
|
|||
}
|
||||
|
||||
// Meshの焼きこみ
|
||||
var newMesh = BoneNormalizer.NormalizeHierarchyFreezeMesh(go, true);
|
||||
var newMeshMap = BoneNormalizer.NormalizeHierarchyFreezeMesh(go, true);
|
||||
// 焼いたMeshで置き換える
|
||||
BoneNormalizer.Replace(go, newMesh, true, true);
|
||||
BoneNormalizer.Replace(go, newMeshMap, true, true);
|
||||
|
||||
// 新しいヒエラルキーからAvatarを作る
|
||||
var newAnimator = go.GetComponent<Animator>();
|
||||
var newAvatar = UniHumanoid.AvatarDescription.RecreateAvatar(newAnimator);
|
||||
newAnimator.avatar = newAvatar;
|
||||
var animator = go.GetComponent<Animator>();
|
||||
var newAvatar = UniHumanoid.AvatarDescription.RecreateAvatar(animator);
|
||||
|
||||
// CopyVRMComponents(go, normalized, bMap);
|
||||
// workaround: animator を作り直す
|
||||
if (Application.isPlaying)
|
||||
{
|
||||
GameObject.Destroy(animator);
|
||||
}
|
||||
else
|
||||
{
|
||||
GameObject.DestroyImmediate(animator);
|
||||
}
|
||||
animator = go.AddComponent<Animator>();
|
||||
|
||||
return go;
|
||||
animator.avatar = newAvatar;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -141,17 +141,9 @@ namespace VRM.RuntimeExporterSample
|
|||
static byte[] ExportCustom(GameObject exportRoot, bool forceTPose = false)
|
||||
{
|
||||
// normalize
|
||||
var target = VRMBoneNormalizer.Execute(exportRoot, forceTPose);
|
||||
VRMBoneNormalizer.Execute(exportRoot, forceTPose);
|
||||
|
||||
try
|
||||
{
|
||||
return ExportSimple(target);
|
||||
}
|
||||
finally
|
||||
{
|
||||
// cleanup
|
||||
GameObject.Destroy(target);
|
||||
}
|
||||
return ExportSimple(exportRoot);
|
||||
}
|
||||
|
||||
void OnExported(UniGLTF.glTF vrm)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user