アバターの削除してしまった服や服飾を、もう一度アバターに追加する
概要
ミーシェちゃんの下着をHierarchy消しちゃったけど、やっぱり使いたい!
問題
「元prefabあるんだし、そっちからコピーしてくればいいんじゃ?」 と思い、下記手順を実行しましたが
- ミーシェちゃんのprefabから、HierarchyにMishe (GameObject) を追加
Mishe/Mishe_underwear
をMishenka word-mishenka の配下にコピー
HierarchyからMisheを削除すると、ずれおちちゃいます。
Mishenka/Mishe_underwear
(元Mishe/Mishe_underwear
)に紐づいたボーンが削除されちゃうので、それはそう。
なので「一度削除した服や服飾(ボーンが紐づくGameObject)を復活」させるのは簡単には無理だと思ってましたが…… できました!
解決
ひとつ自明な解決方法として「Mishe
のArmature
をMishenka
に対応付けてコピーするwhat-is-correspond」というのがまず思いつくと思いますが、それだと余分にボーンのGameObjectが増えすぎるので、いやですよね。
今回はMisenka/Mishe_underwear
の参照するボーンを書き換えてあげることで、対応します。
ちゅーこって早速やっちゃいましょっ。
Mishenka/Mishe_underwear
のSkinnedMeshRenderer
が参照するm_Bones
を発見する
まずアバタープロジェクトのシーンファイル、ここでは./Assets/Scenes/SampleScene.unity
をテキストエディタで開きます。
テキストを検索して、Mishenka/Mishe_underwear
のGameObjectを見つけます。
さっきからテキトーに「紐づいたボーン」とか言っていますが、その実際の紐づきはSkinnedMeshRenderer
というコンポーネントに記述されています。
(残念ながら、その「紐づき」がUnity上から操作できないみたいなので、テキストエディタで開く必要があります。えーん。)
見つけたGameObject中のm_Component
のいずれかが、そのSkinnedMeshRenderer
です。
今回はその2つめでした。 (1つめはTransformでした。)
そのfileIDで検索して、SkinnedMeshRenderer
の記述を見つけます。
そこにm_Bones
というのがあるので、場所をマークしておいてください ✨
壊れていそうなのがまるわかりですね!
これを正しく書き換えれば、全てが完了します。
Mishenka/Mishe_wear
のSkinnedMeshRenderer
が参照するm_Bones
をコピーする
「正しく書き換える」って簡単にいいますが、実際にどうすればいいのでしょうか。
実は我々は既に、これが正しかった頃の値をまだ持っています。
Mishenka/Mishe_wear
(underwear
でないGameObject。例えばMishe_shoes
とかでもいけるかも。)のSkinnedMeshRenderer
が持っているm_Bones
を、先ほどMishenka/Mishe_underwear
にしたように見つけます。
めっちゃ正しそう。
これをコピーしちゃいましょう。
直す!!
最後にコピーした内容を、最初にみつけたMishenka/Mishe_underwear
のSkinnedMeshRenderer
にあるm_Bones
に上書きします。
☝ コピーっ!
☝ ペーストしたよっ!
できた!!
できた!!
終わりだよ。