【2021年版】BeatSaber用アバター作成【Unity編】

この記事は約10分で読めます。

準備編・Blender編はこちら

参考サイト

こちらのサイトで詳しく解説されている内容を2021年7月時点の内容で再解釈したものになります。

ビートセイバー アバターの作り方 【初心者向け作成ガイド】
好きな3Dキャラクターモデルをビートセイバー(Beat Saber)のカスタムアバターで使いたい!という人向けに、BlenderやUnityを用いてアバターを作成する方法を紹介します。マテリアルやIKの設定など、初心者が戸惑いやすいポイント...

プロジェクト作成

Unityを起動したら「Open」をクリックして、準備編で用意したカスタムアバター用のUnityプロジェクト「AvatarsUnityProject」フォルダを選択する。

3Dモデルの読み込み

フォルダ作成とファイルコピー

画面下のProjectからAssetsを右クリックして「Create」→「Folder」を選択する。フォルダ名はアバター名など任意の名前を設定する。

次に作成したフォルダ内にTexturesフォルダを作成する。

作成したフォルダ内で右クリックして「Create」→「Folder」を選択する。フォルダ名は「Textures」とする。

作成した「Textures」フォルダに3Dモデルのテクスチャを全て選択し、ドラッグ&ドロップでインポートする。(3DモデルのテクスチャはベースとしたMMDのフォルダ内にあるはず)

Assets」フォルダの直下に作成したフォルダ内にBlender編でエクスポートしたfbxファイルをドラッグ&ドロップでインポートする。(インポート完了までちょっと時間がかかる。)

インポート後、fbxファイルを選択すると簡易プレビューにモデルデータが表示される。

マテリアルの抽出

モデルを読み込んだら、モデルのマテリアルを抽出する。

マテリアルはモデル表面の描画設定などを保持しているデータのこと。

参照するテクスチャ・シェーダーなどの情報が含まれている。

Textures」フォルダと同じ階層に「Materials」フォルダを作成して以下の操作を行う。

  1. fbxファイルを選択する。
  2. 画面右上の「Inspector」から「Materials」タブを選択する。
  3. Extract Materials」をクリックする。
  4. Materials」フォルダを指定して開く。

Materials」フォルダ内にモデルのマテリアルが抽出されていればOK。

アニメーションタイプの設定

モデルデータを人型として認識させるため、アニメーションタイプを「Humanoid」に変更する。

  1. fbxファイルを選択する。
  2. 画面右上の「Inspector」から「Rig」タブを選択する。
  3. AnimationTypeを「Humanoid」に変更する。
  4. 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] に設定する。

身長が170cmであればScaleYの値は1.7となる。

アバターの編集

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軸(青)を顔の正面に移動させる。

Headオブジェクトが3Dモデルに埋まっていると、ゲーム内の一人称視点でアバターを表示した時にモデルの内側が見えてしまうので注意。

LeftHandの位置調整

オブジェクトを握った手の位置に合わせる。

Z軸(青)は手より少し前方に設定すると丁度いいポジションになり、アバターがセイバーの中心を握ってくれる。親指より手前にオブジェクトを設置するのがポイント(参考サイト情報

位置が決まったらRotationを変更する。

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」を追加する。

腰や両足のトラッカーを追加したり「VR IK」を細かく調整したい場合は、「IK Manager」の代わりに「IK Manager Advanced」を追加する。

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ファイルを開いて調整する。

トラブルシューティング

参考サイトにてトラブルシューティングがまとめられているので。問題があった際はこちらを確認してみること。

Beat Saber アバター制作 トラブルシューティング
Beat Saberのカスタムアバター制作におけるトラブルシューティングです。お問い合わせの多い、よくある質問をこちらにまとめています。

コメント

タイトルとURLをコピーしました