準備編・Blender編はこちら
参考サイト
こちらのサイトで詳しく解説されている内容を2021年7月時点の内容で再解釈したものになります。
プロジェクト作成
Unityを起動したら「Open」をクリックして、準備編で用意したカスタムアバター用のUnityプロジェクト「AvatarsUnityProject」フォルダを選択する。
3Dモデルの読み込み
フォルダ作成とファイルコピー
画面下のProjectからAssetsを右クリックして「Create」→「Folder」を選択する。フォルダ名はアバター名など任意の名前を設定する。
次に作成したフォルダ内にTexturesフォルダを作成する。
作成したフォルダ内で右クリックして「Create」→「Folder」を選択する。フォルダ名は「Textures」とする。
作成した「Textures」フォルダに3Dモデルのテクスチャを全て選択し、ドラッグ&ドロップでインポートする。(3DモデルのテクスチャはベースとしたMMDのフォルダ内にあるはず)
「Assets」フォルダの直下に作成したフォルダ内にBlender編でエクスポートしたfbxファイルをドラッグ&ドロップでインポートする。(インポート完了までちょっと時間がかかる。)
インポート後、fbxファイルを選択すると簡易プレビューにモデルデータが表示される。
マテリアルの抽出
モデルを読み込んだら、モデルのマテリアルを抽出する。
「Textures」フォルダと同じ階層に「Materials」フォルダを作成して以下の操作を行う。
- fbxファイルを選択する。
- 画面右上の「Inspector」から「Materials」タブを選択する。
- 「Extract Materials」をクリックする。
- 「Materials」フォルダを指定して開く。
「Materials」フォルダ内にモデルのマテリアルが抽出されていればOK。
アニメーションタイプの設定
モデルデータを人型として認識させるため、アニメーションタイプを「Humanoid」に変更する。
- fbxファイルを選択する。
- 画面右上の「Inspector」から「Rig」タブを選択する。
- AnimationTypeを「Humanoid」に変更する。
- 「Apply」をクリックする。
「Apply」クリック後、Configureの左側にチェックが表示されればOK。
新規オブジェクトの作成
親オブジェクトの作成
「Hierarchy」の空白で右クリックして「Create Empty」を選択する。選択後「GameObject」という名前のオブジェクトが作成されるのでアバター名などに変更する。
作成したプロジェクトを選択後、「Inspector」の「Position」をすべて0にする。(「Rotation」と「Scale」はそのまま)
サイズ調整用オブジェクトの作成
モデルのサイズを調整する時に参照するオブジェクトを作成する。
「Hierarchy」の空白で右クリックして「3D Object」→「Cube」を選択する。
作成したCubeのTransformを変更する。
- 「Inspector」の「Scale」を [X:0.1] [Y:身長] [Z:0.1] に設定する。
- 「Inspector」の「Position」を [X:0] [Y:身長÷2] [Z:0] に設定する。
アバターの編集
fbxファイルを先程作成した「Hierarchy」の親オブジェクトにドラッグ&ドロップする。すると、「Scene」に3Dモデルが表示される。
サイズ調整
ここまで手順通りに出来ていればサイズ調整用オブジェクトと3Dモデルの足元が同じ高さになっているはず。
3Dモデルのサイズを調整する場合、画面左上の「Scale Tool」を選択する。3Dモデルの白キューブをドラッグすることでサイズを調整出来る。(青キューブは横、緑キューブは縦に伸びる)
サイズ調整が終わったら、サイズ調整用オブジェクトを削除する。「Hierarchy」の「Cude」を右クリックしてDeleteを選択する。
シェイプキーの適用
Blenderで作成したシェイプキーをアバターに適用する。
モデルのオブジェクト名の左にある横向きの三角アイコンをクリックしてオブジェクトを展開する。
「Body」オブジェクトを選択後、「Inspector」の「BlendShapes」を展開するとBlenderで作成したシェイプキーがある。
左手・右手のシェイプキーに100と入力すると3Dモデルのポーズが手を握った状態となる。
シェーダーの設定
マテリアルのシェーダーを設定する。
「Materials」フォルダからマテリアルのファイルを選択し、「Inspector」から「Shader」を「BeatSaber/UnlitGlow」などに変更する。
シェーダーの初回変更時、テクスチャが未選択になるので「Inspector」の「Select」をクリックしてテクスチャを選択する。
これらを全てのマテリアルに対して行う。
IK(インバースキネマティクス)の設定
プレイヤーの動きとアバターの動きをリンクさせるためのIK設定を行う。
IK用オブジェクトを作成
3Dモデルの親オブジェクトで右クリックして「Create Empty」を選択し、新規オブジェクトを4つ用意する。用意したオブジェクトはそれぞれ「Head」「Body」「LeftHand」「RightHand」にリネームする。
オブジェクトの座標を設定
「Head」「LeftHand」「RightHand」の座標を設定する。
- Head プレイヤーカメラ(HMD)の位置
- LeftHand 左コントローラの位置
- RightHand 右コントローラの位置
Headの位置調整
画面左上から「Move Tool」を選択する。
「Hierarchy」から「Head」を選択、オブジェクトを3Dモデルの目の位置に合わせる。
最初にY軸(緑)を目の位置に合わせる。
次にZ軸(青)を顔の正面に移動させる。
LeftHandの位置調整
オブジェクトを握った手の位置に合わせる。
Z軸(青)は手より少し前方に設定すると丁度いいポジションになり、アバターがセイバーの中心を握ってくれる。親指より手前にオブジェクトを設置するのがポイント(参考サイト情報)
位置が決まったらRotationを変更する。
画面左上から「Rotate Tool」を選択してZ軸(青)を左方向に回転させる。30~50度ほど傾ける。
RightHandの位置調整
こちらは「LeftHand」の設定をコピペするだけでOK。
「LeftHand」を選択した状態で「Inspector」の「Transform」を右クリックして「Copy Component」で座標をコピーする。
「Righthand」を選択した状態で「Inspector」の「Transform」を右クリックして「Paste Component」で座標をペーストする。
ペースト後、PositionのX座標とRotationのZ座標のマイナスを消して設定完了。
Targetオブジェクトの作成
モデルの頭部や手首の位置を決めるオブジェクトを作成する。
LeftHandTargetの作成
以下の順にオブジェクトを展開する。
親オブジェクト
モデルのオブジェクト
Armature
Hips
Spine
Chest
Left Shoulder
Left arm
Left elbow
「Left wirst」で右クリックして「Create Empty」を選択する。作成したオブジェクトの名前を「LeftHandTarget」に変更する。
「LeftHandTarget」を「LeftHand」にドラッグ&ドロップする。(「LeftHandTarget」が「LeftHand」の子オブジェクトになっていればOK)
同様の手順で「RightHandTarget」と「HeadTarget」も作成する。
RightHandTargetの作成
以下の順にオブジェクトを展開する。
親オブジェクト
モデルのオブジェクト
Armature
Hips
Spine
Chest
Right Shoulder
Right arm
Right elbow
「Right wirst」で右クリックして「Create Empty」を選択する。作成したオブジェクトの名前を「RightHandTarget」に変更する。
「RightHandTarget」を「RightHand」にドラッグ&ドロップする。(「RightHandTarget」が「RightHand」の子オブジェクトになっていればOK)
HeadTargetの作成手順
以下の順にオブジェクトを展開する。
親オブジェクト
モデルのオブジェクト
Armature
Hips
Spine
Chest
Neck
「Head」で右クリックして「Create Empty」を選択する。作成したオブジェクトの名前を「HeadTarget」に変更する。
「HeadTarget」を「Head」にドラッグ&ドロップする。(「HeadTarget」が「Head」の子オブジェクトになっていればOK)
コンポーネントの作成
IKを導入するためのコンポーネントを追加する。
- モデルオブジェクトを選択する。
- 「Inspector」の「Add Component」をクリックする。
- 検索窓に「ik」と入力する。
- 「IK Manager」と「VR IK」を追加する。
IK Managerの設定
作成したTargetオブジェクトを「IK Manager」に設定する。
「Hierarchy」の「HeadTarget」「LefthandTarget」「RighthandTarget」を「IK Manager」の対応する部分にドラッグ&ドロップする。
ファイル名の設定
ファイル名と著者名を設定する。
親オブジェクトを選択して「Add Component」をクリックする。
検索窓に「ava」と入力して「Avatar Descriptor(Script)」を追加する。
「Avatar Descriptor(Script)」が追加されたらアバター名と著者名を入力する。
- Avatar Name アバターの名前
- Author name アバターの著者名
avatarファイルのエクスポート
ツールバーから「Window」→「Avatar Expoter」を選択して.avatarファイルをエクスポートする。
.avatarファイルの保存後、.unityファイルの保存も行う。
動作確認後に修正が必要な場合があるので.unityファイルは必ず保存すること。
ゲームを起動して動作確認
完成した.avatarファイルをBeatSaberの「CustomAvatars」フォルダに入れて動作確認を行う。
アバターの表示や動作に問題がなければ終了。
もし、問題がある場合はエクスポート時に一緒に保存した.unityファイルを開いて調整する。
トラブルシューティング
参考サイトにてトラブルシューティングがまとめられているので。問題があった際はこちらを確認してみること。
コメント