ビートセイバー アバターの作り方 【初心者向け作成ガイド】

スポンサーリンク
スポンサーリンク

ビートセイバー アバターの作り方

好きな3Dキャラクターモデルを、Beat Saberのカスタムアバターで使いたい!

という人向けに、アバターの作成方法を紹介します。

 

編集にはBlenderやUnityを使用します。

マテリアルやIKの設定など、初心者が戸惑いやすいポイントもなるべく細かく解説していきます。

 

※カスタムアバタープラグインの導入については、こちらの記事をご覧ください。

Beat Saber カスタムアバターの導入方法と使い方
ビートセイバー(Beat Saber)にCustom Avatarを導入して、アバターを使えるようにする方法を紹介します。カスタムアバターとは?三人称カメラにキャラクターを映したり、HMD上の一人称視点にもプレイヤーの腕などを表示させたりすることができます。
スポンサーリンク
スポンサーリンク

各種ダウンロード

Blender(3Dモデリングソフト)

Blenderダウンロード

公式サイトからダウンロードしてください。

記事執筆時の最新バージョンは2.79bです。

 

ダウンロード後はインストーラーの指示に従ってインストールします。

 

Blenderのプラグイン

・Cats Blender Plugin(MMDtools同梱)

Cats Blender Pluginダウンロード

3Dモデルを最適化するためのプラグインです。(機能の詳細はこちら

加工時にも色々と使用します。

 

プラグインはGitHubで公開されています。

こちらの配布ページからダウンロードしてください。Installation項目にダウンロードリンクがあります。

 

・MMDtools

MMDtoolsダウンロード

※Cats Blender Pluginを導入する場合はダウンロード不要

BlenderでMMDモデルデータをインポート/エクスポートするためのプラグインです。

 

配布ページはこちら

リンク先のUsage項目、Downloadの下にURLリンクがあります

 

Unity(ゲームエンジン)

Unityダウンロード

Unityのバージョンは「2018.1.6f1」を使います。

公式サイトのアーカイブからUnity 2018.1.6(21 Jun, 2018)のインストーラーをダウンロードしてください。

 

※Unityは各バージョンで互換性のない部分があるので、必ず指定のバージョンをインストールしてください。

異なるバージョンを使うと、アバターを読み込めない、一人称視点でアバターが表示されない等のトラブルが発生する場合があります。

 

Unityアカウント登録

Unity IDも必要になるので、上記リンクの画面右上にある人型のアイコンをクリックしてアカウント登録を済ませておきましょう。

登録後はインストーラーの指示に従ってインストールしてください。

 

カスタムアバター用のUnityプロジェクト

下記のリンクから、“TemplateUnityProject”フォルダを含む「CustomAvatar.zip」「UnityProject.zip」(AvatarsUnityProject)をダウンロード&解凍しておいてください。

UnityProject.zip(AvatarsUnityProject)

 

スポンサーリンク

Blender編

BlenderではMMD用の3DモデルをUnityで使えるようにファイル形式を変換したり、ビートセイバー用に最適化を行ったりします。

プラグイン導入

Install Add-on from File...

以下の手順でCATSアドオンをインストールしてください。

  1. Blenderを起動
  2. 「File」→「User Preferences…」を選ぶ
  3. 「Add-ons」タブの「Install Add-on from File…」をクリック
  4. 「cats-blender-plugin-master.zip」を選んでダブルクリック
  5. アドオン一覧から「3D View: Cats Blender Plugin」にチェックを入れる
  6. 「Save User Settings」を押す

わかりにくい場合はこちらの記事をご覧ください。内容は同じですが、もう少し細かく説明しています。

モデルのインポート

FBXインポート

fbxファイルは以下の手順でインポートします。

左上の「File」→「Import」→「FBX (.fbx)」を選択

(またはCATSタブの「Import Model」の右側にある「≡」を押してから「FBX」をクリック)

PMD,PMXインポート

pmdファイルやpmxファイルは以下の手順でインポートします。

左上の「File」→「Import」→「MikuMikuDance Model (.pmd, .pmx)

(またはCATSタブの「≡」→「MMD」をクリック)

 

pmxインポート設定

左下のインポート設定が画像のようになっていることを確認してから、ファイルを開いてください。

 

pmx, pmdファイルをfbxに変換する(MMD用モデルのみ)

モデルデータがMMD用の場合、ファイル形式はpmxやpmdになっています。

このままではUnityで編集できないので、Blenderで「pmx, pmd → fbx」に変換してやる必要があります。

MMDモデルのpmxファイルをfbxに変換する方法【Blender】
MMD(MikuMikuDance)モデルを使用してBeat SaberやVRChat用のアバターを作成する場合、Unityを起動する前にBlenderで最適化とファイル形式の変換(pmd, pmx→fbx)を行う必要があります。

3Dモデルの加工

一部のパーツを消したい場合など、加工の際はCATSプラグイン機能を使ってメッシュを分解してから作業すると効率的です。

アバターのパーツを部分的に削除する方法【Blender】
アバター作成時に3Dモデルのパーツを一部だけ削除する方法の解説です。Blenderでキャラクターの帽子や鞄などを取り除きたいときは、CATSプラグインの機能を使ってメッシュをマテリアルごとに分割すると効率的です。基本的にはポリゴン数を減らす時と似たような手順になります。

モデルの最適化

アバターとして使えるように、ボーン構造などを最適化します。(既に最適化済みの場合は省略)

Fix Model

CATSタブの「Fix Model」を押してください。

 

シェイプキーを作成する

ビートセイバープレイ中は、常に武器やポインターを握っています。

これをアバターにも反映させるために、手を握るポーズのシェイプキーを作成します。

Start Pose Mode

Fix Modelの下にある「Start Pose Mode」を押してから、ボーンを動かしてポーズを変えていきます。

左右どちらからでも構いませんが、まず左手を作成してみましょう。

作業中はプロパティウィンドウのヘッダーからボーン(骨アイコン)を選択しておくとわかりやすいです。Transform「Rotation」の値を確認しながら、ポーズを調整します。

左手のポージング

指の関節をそれぞれ回転させて握りポーズを作ります。

人差し指~小指のポーズを設定して、最後に親指を調節するのがオススメです。

「人差し指・中指・薬指・小指」のポージング

人差し指~小指のポージング

  1. 第三関節のボーンを選択(右クリック)
  2. Y軸(緑)を調整する(左ドラッグ操作)
  3. 第二関節と第一関節も同様の手順でY軸を調整する
[Shift + 右クリック]で関節を複数選択して同時に動かすと、RotationだけでなくLocationも変動するため形状が破綻します。必ず1か所ずつボーンを調整していきましょう。
「親指」のポージング
  1. 第一中手骨のボーン(一番根本の部分)を選択
  2. Y軸(緑)とX軸(赤)を調整する
  3. 第二関節のボーンを選択
  4. Y軸(緑)とX軸(赤)を調整する
  5. 第一関節のボーンを選択
  6. X軸(赤)を調整する(必要なければ省略)

 

ポーズをシェイプキーに登録

ポーズが完成したら、左手のポーズをシェイプキーに登録します。

「Pose to Shape Key」を押して、ヘッダーに「Pose Successfully saved as shape key」と表示されたら登録完了です。

 

右手のポージング

反対の手のポージングは簡単です。

左手のボーンを選択して、トランスフォームをコピペするだけで左右対称のポーズを作成できます。

左右対称のポーズを作成

左右対称のポーズを作成

  1. コピーしたいボーンを[Shift + 右クリック]でまとめて選択する
  2. [Ctrl + C]でコピーする
  3. [Shift + Ctrl + V]でペーストする(反対側のボーンを選択する必要は無し)

左右対称になったら、左手のトランスフォームをリセットします。

Clear Transform All

ポーズを設定した左手のボーンをすべて選択した状態で、画面左下の「Pose」→「Clear Transform」→「All」を押してください。

ショートカットから削除してもOKです。

  • [Alt + G]・・・Locationの値をリセット
  • [Alt + R]・・・Rotationの値をリセット
  • [Alt + S]・・・Scaleの値をリセット

 

Pose to Shape Key

右手だけ握る状態にできたら、「Pose to Shape Key」を押して右手のポーズをシェイプキーに登録します。

 

ポーズモード終了

Stop Pose Mode

シェイプキーの登録が終わったら、「Stop Pose Mode」を押してポーズモードを終了します。

 

シェイプキーの名前変更

ここは省略しても構いませんが、作成したシェイプキーの名前を変更しておくとわかりやすいです。

シェイプキー名変更

アウトライナーからBodyを選択して、プロパティウィンドウの逆三角形アイコンをクリックしてください。

Shape Keys項目のリスト一番下に「Pose」「Pose.001」という名前のシェイプキーが作成されていると思います。

「左手握り」と「右手握り」に変更

それぞれ「左手握り」「右手握り」等に変更しておきましょう。ダブルクリックでリネームできます。

ちなみに、下にあるValue:に1.000までの値を入力 or ドラッグするとシェイプキーの動作を確認できます。

 

fbx形式でファイルを保存

編集したモデルをfbxでエクスポートすればBlenderの作業は完了です。

ArmatureとBodyを選択

[Shif]キーを押しながら左クリックで

  • Armature(オレンジ色の人型アイコン)
  • Armature(白黒の人型アイコン)
  • Body(逆三角形アイコン)

を選択状態にしてください。

 

Export Model

「CATS」タブの「Export Model」を押して、fbxでファイルを保存します。

(「File」→「Export」→「FBX (.fbx)」でもOK)

Export設定

※エクスポート設定が画像のようになっていることを確認してから保存してください。

 

スポンサーリンク

Unity編

プロジェクト作成

Unityの新規プロジェクト作成

この画像のフォルダ名は気にしないでください。

Unityを起動したら、上でダウンロード&解凍しておいたカスタムアバター用のUnityプロジェクトを用いて、プロジェクトを作成します。

右上の「Open」をクリックして、CostomAvatarに同梱されている「TemplateUnityProject」フォルダを選択してください。

「UnityProject」>「AvatarsUnityProject」フォルダを選択してください。

 

※必ずカスタムアバター用のテンプレートからプロジェクトを作成してください。

3Dモデルを読み込む

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

はじめにアセットフォルダに新規フォルダを作成します。

Create Folder

Projectウィンドウの「Assets」を右クリックして、「Create」→「Folder 」を選択します。

フォルダ名はアバター名などの適当な名前をつけてください。

 

Texturesフォルダ作成

次に、作成したフォルダ内にテクスチャーフォルダを作りましょう。

(作成したフォルダ内で右クリック>Create>Folder>フォルダ名に「Textures」と入力)

 

ここに3Dモデルのテクスチャーを入れてください。

Textureコピー

作成した「Textures」フォルダをダブルクリックで開き、テクスチャーファイルをドラッグアンドドロップでインポートします。

 

モデルをUnityへインポート

Blenderで編集したモデルをインポートします。

アバター名のフォルダに.fbxをドラッグアンドドロップで入れてください。

 

fbxファイルのところは簡易のプレビューでモデルデータが表示されます。

このモデルは頭部パーツ差分の影響でモデルが見えなくなっています。通常は普通に表示されるので気にしないでください。

 

マテリアルの抽出

モデルの読み込みが完了したら、マテリアルを抽出します。

マテリアルは、モデル表面の描画設定などを保持しているデータです。参照するテクスチャ、シェーダー(質感)などの情報が含まれています。

マテルアルの抽出

「Textures」フォルダと同じ階層に「Materials」フォルダを作成してから、以下の操作を行います。

  1. fbxファイルをクリック
  2. インスペクター(Inspector)ウィンドウの「Materials」タブを選択
  3. 「Extract Materials…」をクリック
  4. 「Matelials」フォルダを指定して開く

これで「Matelials」フォルダ内にモデルのマテリアルが抽出されます。

 

「Extract Materials…」が押せない場合は、次の手順で操作します。

  1. Locationを「Use External Materials (Legacy)」に変更する
  2. 「Apply」をクリック

マテルアルの設定

マテリアルのシェーダーを設定します。

見た目を確認しながらシェーダーを弄りたい場合は、後述のアバター配置後にマテリアルを設定してください。ここの手順は前後しても問題ありません。

「Matelials」フォルダを開いて、マテリアルのファイルを選択してください。

マテルアルの設定

Inspectorウィンドウから、Shaderを「BeatSaber/Unlit Glow」などに変更します。

 

以下のBeatSaber用シェーダーから最適なものを選択してください。

<旧TemplateUnityProjectの場合>

BeatSaber/CellShadingBeatSaber/Standard
BeatSaber/Lit GlowBeatSaber/Unit Glow Cutout Dithered
BeatSaber/MetallicBeatSaber/Unlit Wave

<現AvatarsUnityProjectの場合>

_Shaders/RainbowBeatSaber/Standard
BeatSaber/CellShadingBeatSaber/StandardAlpha(cookie)
BeatSaber/CellShading_WnormalsBeatSaber/Tex Lit-Unlit Glow
BeatSaber/DSCellShadingBeatSaber/Transparent
BeatSaber/Lit GlowBeatSaber/Unlit Animated Gradient
BeatSaber/Lit Glow Cutout DitheredBeatSaber/Unlit Glow
BeatSaber/MetallicBeatSaber/Unlit Glow Cutout Dithered
BeatSaber/Particle Alpha BlendedBeatSaber/Unlit Wave

 

マテルアルのテクスチャー設定

Textureの右側に何も表示されないときは、テクスチャーを選択する必要があります。

Beat Saber専用のシェーダーに変更する際は、初回のみ再設定必須です。

 

マテルアルにテクスチャーを登録

「Select」を押してテクスチャーを登録してください。

これをすべてのマテリアルに対して行います。

対応するテクスチャーがわからないときは、一度Shaderを「Unlit/Texture」などに変更し、(その状態でSelectを押して)登録されているテクスチャーのファイル名を確認してから作業すると良いです。

 

頬染めなどがうまく表示されないときは、Shaderを「Particles/Alpha Blended」や「BeatSaber/Particle Alpha Blended」に変更してみてください。

透過(透明/半透明)させたいときは、Shaderを「Standard」にしてからRendering Modeを「Fade」または「Transparent」に変更します。あとはAlbedoのalpha(透明度)値を調整すればOKです。

 

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

このままだとモデルデータが人型として認識されないので、アニメーションタイプをヒューマノイドに変更します。

Animation TypeをHumanoidに変更

  1. Projectウィンドウのfbxファイルをクリック
  2. Inspectorウィンドウの「Rig」タブを開く
  3. Animation Typeを「Humanoid」に変更
  4. 「Apply」をクリック

「Configure」の左側にチェックが表示されたらOKです。

 

新規オブジェクトの作成

親オブジェクトを作成

アバターの親オブジェクトを作成します。

親オブジェクト作成

Hierarchyウィンドウの空白で右クリックして、Creat Emptyを選択します。

オブジェクトが作成されたら、選択中の「GameObject」をもう一度クリックして名前を変更してください。アバター名などにします。

Positionを全部0にする

インスペクターウィンドウのTransform「Position」X,Y,Z座標をすべて0にします。

 

サイズ調整用のオブジェクトを作成

モデルのサイズ調整時に参照するオブジェクトを作成します。

これは身長計として使います。

Cube作成

Hierarchyウィンドウの空白で右クリック→「3D Object」→「Cube」で立方体のオブジェクトが作成されたら、

Transform「Scale」を「X:0.1, Y:身長, Z:0.1」に設定します。

例えば身長が170cmならスケールYの値は1.7にしてください。

 

キューブの座標

Transform「Position」は「X:0, Y:身長÷2, Z:0」に設定します。

Position:Yの値を0にするとキューブが地面に埋まってしまうので、Scale:Yの1/2に設定する必要があります。

 

アバターの編集

ようやくモデルの配置です。

アバターオブジェクトの配置

3Dモデル(fbxファイル)を、ヒエラルキーウィンドウ(オブジェクトリスト)のアバター名の真上にドラッグしてください。

 

サイズ調整

モデルのサイズをプレイヤーにあわせて調整します。

ここまで手順通りに行っていれば、身長計代わりのオブジェクトと3Dモデルの足元が同じ高さになっているはずです。

 

モデルのサイズを調整

左上のツールメニューからScale Toolを選択して、モデルのサイズを調整しましょう。

中心の白いキューブを左クリックでドラッグすれば、サイズを拡大/縮小できます。

拡大時に足元の座標がズレてしまう場合は、画面左上にあるツールバー右側の「Pivot」(ピボット)が「Center」になっていないか確認してください。

 

オブジェクトの表示/非表示切り替え

インスペクターウィンドウの左上にあるチェックボックスをクリックすると、オブジェクトの表示/非表示を切り替えられます。これで確認しながら調整するとやり易いです。

 

サンプルオブジェクト削除

サイズ調整が終わったら、サンプルのオブジェクトは削除します。

Hierarchyウィンドウのオブジェクト名を右クリックしてDeleteを選択するか、[Delete]キーで削除してください。

 

シェイプキーの適用

Blenderで作成したシェイプキーをアバターに適用します。

モデルのオブジェクト名の左にある横向きの三角アイコンをクリックして、オブジェクトを展開してください。

Tips: オブジェクトを選択した状態で[Alt + Shift + 右方向キー]を押すと、全ての子オブジェクトを展開できます。[Alt + Shift + 左方向キー]を押せば全て畳めます。

 

Bodyオブジェクト選択

Bodyオブジェクトを選択します。

 

VlendShapes

Inspectorウィンドウの「VlendShapes」を展開すると、下の方にBlenderで作成したシェイプキーがあります。

「左手握り」と「右手握り」に100と入力しましょう。

これでアバターのポーズが手を握った状態になります。

 

IK(インバースキネマティクス)の設定

プレイヤーの動きとアバターの動きをリンクさせるために、IKの設定を行います。

IKとは

「そもそもIKってなんやねん」という方のために軽く説明しておきます。

インバースキネマティクスは、そのまま翻訳すると「逆運動学を用いた動作付け」という意味になります。

 

簡単にいうと、複数の関節の動きを自動で計算してくれるアニメーション手法のことです。

 

キャラクターを動かすときは、ひとつひとつのボーンを曲げたり回転させたりして関節を動かしますが、インバースキネマティクスでは1か所のボーンを動かしただけで他も連動して動きます。

例えばビートセイバーのゲーム内でアバターの手の位置が変わったときに、肘や肩などの関節も連動して動いてくれるのはこの機能のおかげです。

 

似たような機能で、FK(フォワードキネマティクス)を利用することもあります。

IKとFKでは、それぞれ関節の動き方に違いがあります。

  • IK・・・手 → 肘 →肩 という具合に、身体の末端から体幹に向かって連動して動く
  • FK・・・肩 → 肘 →手 という具合に、身体の体幹から末端に向かって連動して動く

どちらも長所と短所があり、IKは直線的な動きを表現するのに最適で、FKは回転系の動きを表現するのに適しています。

 

IK用のオブジェクトを作成

プレイヤーのカメラ位置やコントローラーの位置を決めるオブジェクトを作成します。

IK用オブジェクトの作成

モデルの親オブジェクトを右クリックしてから「Create Empty」を選択し、新規オブジェクトを合計4つ用意してください。

複製は[Ctrl + D]キーのショートカットを使うと便利です。

 

IK用オブジェクトの名前変更

作成したオブジェクトの名前を変更します。

オブジェクト名は、「Head」「Body」「LeftHand」「RightHand」に設定してください。

 

オブジェクトの座標を設定する

Head、LeftHand、RightHandの座標を設定します。

  • Head=プレイヤーカメラ(HMD)の位置
  • LeftHand=左コントローラーの位置
  • RightHand=右コントローラーの位置

それぞれモデルにあわせて調整していきましょう。

Headの位置調整

Headの位置調整

HierarchyウィンドウのHeadを選択して、「Move Tool」でオブジェクトの座標を調整します。(Move Toolは画面左上のツールボックスにあります)

例:Y軸(緑色)を目の位置にあわせてから、Z軸(青色)を顔の手前に移動

オブジェクトが顔に埋まっていると、ゲーム内の一人称視点でアバターを表示したときにモデルの内側がみえてしまうので注意。
LeftHandの位置調整

LeftHandの位置調整

同様の手順でLeftHandも調整します。

握った手の位置までオブジェクトをもっていきましょう。

 

PositionのZ座標は拳より少し前方に設定すると丁度良いポジションになり、アバターがセイバーの中心を握ってくれます。親指より更に手前に設置するのがポイントです。

カスタムセイバー利用時は、拳の位置にあわせたほうが見栄えがよくなる場合もあります。また、モデルによっても最適な位置は変わるので参考程度にしてください。

 

LeftHandの角度調整

位置が調整できたら、Rotationも変更します。

Rotationを変更するのは、アバターの直立ポーズに対応するコントローラーの最適な角度を設定する必要があるためです。

ここの設定がおかしいと、アバターの手首が常時あらぬ方向へ曲がってしまいます。

ツールボックスから「Rotate Tool」を選択してください。

Z軸を左方向に回転させます。

最適な角度はモデルによって多少変わりますが、30~50度傾けるといいでしょう。

特殊なコントローラーの持ち方(X-Grip、B-Grip、S-Gripなど)に対応したい場合は、130度前後傾けます。

 

アバター完成後にゲーム内で確認して、手首の角度がおかしければ再調整してください。

RightHandの位置調整

こちらはコピペ後に反転させるだけで簡単に設定できます。

LeftHandの座標をコピー

LeftHandを選択した状態で、インスペクターウィンドウのTransformを右クリック→「Copy Component」で座標をコピーします。

RightHandの位置調整

あとはRightHandのTransformを右クリック→「Paste Component Values」で座標を貼り付けて、PositionのX座標とRotationのZ座標のマイナスを消してやれば設定完了です。

 

Targetオブジェクトの作成

モデルの頭部や手首の位置を決めるオブジェクトを作成します。

LeftHandTargetの作成手順

以下の順でオブジェクトを展開してください。

アバターの親オブジェクト > モデルのオブジェクト > Armature > Hips > Spine > Chest > Left Shoulder > Left arm > Left elbow

LeftHandTarget作成

Left armを展開して表示されたLeft wirstを右クリックして、Create Emptyを押します。

作成されたオブジェクトの名前を「LeftHandTarget」に変更します。

LeftHandTarget作成2

「LeftHandTarget」をドラッグアンドドロップで「LeftHand」に移動します。

(「LeftHandTarget」が「LeftHand」の子オブジェクトになっていればOKです。)

 

同様の手順でRightHandTargetとHeadTargetも作成しましょう。

RightHandTargetの作成手順

RightHandTarget作成

  1. _Right shoulder > Right arm > Right elbow を展開
  2. Right wristを右クリックして、Create Emptyを押す
  3. 作成されたオブジェクト名を「RightHandTarget」に変更
  4. 「RightHandTarget」を「RightHand」にドラッグアンドドロップ

 

HeadTargetの作成手順

HeadTarget作成

  1. _Neck を展開
  2. Headを右クリックして、Create Emptyを押す
  3. 作成されたオブジェクト名を「HeadTarget」に変更
  4. 「HeadTarget」を「Head」にドラッグアンドドロップ

 

コンポーネントの作成

IKを導入するためのコンポーネントを追加します。

コンポーネント作成

以下の操作で「IK Manager (Script)」と「VRIK (Script)」をキャラクターのゲームオブジェクトにアタッチしてください。

  1. モデルのオブジェクトを選択
  2. Inspectorウィンドウの「Add Component」を押す
  3. 検索窓に「ik」と入力
  4. 「IK Manager」と「VR IK」をクリック
※腰や両足のトラッカーを追加する場合や、VRIKの設定を細かく調整したいときは、IK Managerの代わりにIK Manager Advancedをアタッチします。

IK Managerの設定

作成したターゲットオブジェクトを、IK Managerに設定します。

IK Managerの設定

Hierarchyウィンドウのオブジェクト

  • HeadTarget
  • LeftHandTarget
  • RightHandTarget

を、それぞれ「IK Manager」の対応する部分にドラッグアンドドロップします。

例えば「HeadTarget」は、IK Manager (Script) のHead Target「None (Transform)」と書かれているところにドラッグアンドドロップすればOKです。

ファイル名の設定

ファイル名と著者名の設定を行います。

Avatar Descriptor

アバターの親オブジェクトを選択して「Add Component」をクリックしてください。

検索窓にava等と入力してAvatar Descriptorを選択します。

 

コンポーネント「Avatar Descriptor (Script)」が追加されたら、以下の情報を入力しましょう。

  • Avatar Name:アバターの名前
  • Author Name:アバターの著者名

 

avatarファイルのエクスポート

Avatar Exporter

「Window」→「Avatar Exporter」から.avatarファイルをエクスポートします。

アバターファイルの保存を押すと、続けてシーンファイル(*.unity)の保存も促されます。

動作確認後に修正したり、揺れ物やアニメーションの設定を追加したりすると思うので、両方保存しておきましょう。

 

キャンセルした場合はアバターファイルのみエクスポートされます。

 

ゲームを起動して動作確認

完成した.avatarファイルを「CustomAvatars」フォルダに入れて、動作確認します。

アバターの表示や動作に問題がなければ、これで終了です。

 

おつかれさまでした!

FAQ

よくある質問とトラブルシューティングは、以下の記事にまとめました。

Beat Saber アバター制作 トラブルシューティング
Beat Saberのカスタムアバター制作におけるトラブルシューティングです。 お問い合わせの多い、よくある質問をこちらにまとめています。 gameObject is missingと表示されてエクスポートできない オブジ...

解決しない問題がありましたら、こちらのフォームからお問い合わせください。

※文章だけでは原因の特定に苦労することがあります。ご質問の際は、Unityの編集画面のスクリーンショットを添付してもらえると助かります。

まとめ

BlenderやUnityを使ってビートセイバー用のアバターを作成する方法を解説しました。

最後に、作業全体の流れをまとめておきます。

 

準備

  1. ソフトウェアやプラグインをダウンロード
  2. BlenderとUnityをインストール

Blender編

  1. Blenderでアドオンインストール
  2. モデルデータをインポート
  3. pmx, pmdをfbxに変換(MMDモデルのみ)
  4. 3Dモデルの最適化と加工
  5. 握りこぶしのシェイプキーを作成
  6. fbxでエクスポート

Unity編

  1. Unityでプロジェクト作成、フォルダ作成
  2. モデルデータのインポートとマテリアル抽出を行う
  3. アニメーションタイプの変更とマテリアル設定を行う
  4. アバターオブジェクトの配置、サイズ調整
  5. シェイプキーの適用
  6. Targetオブジェクトなどの作成
  7. IKの設定を行う
  8. ファイル情報を設定してエクスポート

 

アバターが作れるようになったら、今度は髪や服を揺らしたくなると思いますが……とりあえず今回はここまで。

近いうちに揺れものや表情アニメーションの導入方法も解説します。

 

揺れもの(DynamicBone)の記事できました。

アバターの髪や服を揺らす方法 DynamicBoneとSpringBoneの違い
DynamicBoneとSpringBoneはそれぞれ特性が異なり、揺れ方に違いがあります。Beat SaberやVRChatで使用するアバターの髪や胸、スカートなどを揺らす方法と、スクリプトの設定を解説します。
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
Beat Saber MOD
のしろぐ

コメント

  1. 匿名 より:

    マテリアルの設定を行う際にシェーダーを開いてもBeatSaberが表示されません。
    dynamicbone等設定済みの有料モデルを使用しているのですがそれと関係あるのでしょうか?

  2. 匿名 より:

    大変参考なる記事をありがとうございます!
    お陰様でアバターの作成まで漕ぎけることがでいました。

    追加で6点トラックに対応したアバターを作る際のTipsもあれば見たいのですが、そのような記事を書くご予定はありませんでしょうか。
    どうしてもつまさき立ちになってしまい、調整がうまくできません…。

    • 管理人 より:

      カスタムアバターのフルトラは調整がちょっと大変ですからねぇ。

      つま先立ちは、腰の位置が原因ならPelvisTargetの高さを下げれば直ります。Pelvisの位置を上げても構いませんが、Targetを動かす方が楽ですね。
      やりすぎると今度は膝が伸びなくなってしまうので、複数のサンプルを用意してからゲーム内で最適な値を確認するのがオススメです。

      そもそも足の角度がおかしいという場合は、Left/RightLegの角度がVIVEトラッカーと一致していない可能性があります。
      固定方法にもよりますが、トラッカーが斜めになっているのであればRotation.Xをこんな感じで傾けると改善します。

      記事は……考えておきます!

  3. Unity初心者 より:

    「Window」→「Avatar Exporter」から.avatarファイルをエクスポートします。

    この時点でWindowタブ内にAvatar Exporterが存在しないのですがどうしたらいいでしょうか?使用Versionは能代様が説明画像で使っている2018.1.6f1を使用しています

  4. 匿名 より:

    blenderの配布サイトダウンしてませんか?

  5. より:

    まだ作成途中ですが大変お世話になっております。

    マテリアルの設定でシェーダーをBeatSaber/Unit Glow等に変更した際にテクスチャーが剥がれてしまい白塗りになってしまう現象が起こりました。
    なのでシェーダーを変更する前にMainMapのAlbedoをクリックし、設定してるテクスチャを確認→シェーダー変更→テクスチャが抜け落ちた場合Selectをクリックし、設定してあったテクスチャを再度選択という手順が必要になりました。

    また、シェーダーを設定する際にアバターがあったほうがわかりやすいため、手順を入れ替えた方がいいと思いました。

    初心者からの意見で恐縮ですがご参考程度にしていただければ幸いです。

    • 管理人 より:

      ご意見ありがとうございます。

      Beat Saber専用のシェーダーに変更する際は、初回のみテクスチャの再設定が必要になります。これは本文にも既に記載している通りです。

      手順については、マテリアルとオブジェクトの設定を行ったり来たりすると戸惑ってしまう方もいるため、このようにしてあります。

      両方とも補足を追加しておきます。

  6. nns より:

    お世話になっております。
    記事を読みながら最後の工程(〇〇〇(キャラ名).avaterのエクスポートが完了)まで漕ぎつけたのですが、ゲーム内でアバターを選択できません。
    ゲーム内での表示が「〇〇〇(キャラ名).avater failed to lood」と「make sure it’s not a duplicate avatar」となっています。
    念のため保存していたunityファイルから再度エクスポートを試みましたが結果は変わりませんでした。
    このような状態の解決策はありますか?

    • 管理人 より:

      CustomAvatarsフォルダから、読み込みたいアバター以外の.avatarファイルを全て削除してみてください。

  7. nns より:

    ご返信ありがとうございます。
    自作アバター以外をCustomAvatersフォルダから削除してゲームを起動してみましたが
    改善しませんでした(表示も同じ文章です)
    もう一度最初から作り直してみようと思います。

  8. nns より:

    お騒がせしました!!
    Unityのバージョンが2018.1.6f1ではなく2019版を使っていたという見落としでした!
    無事にアバターを作れました、ありがとうございます!

    • 管理人 より:

      なるほど、Unityのバージョン違いが原因でしたか。解決して何よりです!

  9. ふふふふ より:

    IKでTargetオブジェクトを設置し、beat saberでの取り込みまで
    できましたが…

    しゃがむことができません。
    頭を傾げる程度で足が曲がらないのですが、どのように設定すればいいでしょうか?

    • 管理人 より:

      Unityの編集画面やゲーム内SSを見てみないとはっきりしたことは言えませんが、おそらくアバターのサイズが小さすぎるか、Headオブジェクトの位置が低すぎることが原因でしょう。

      HeadTargetの位置が高すぎる可能性もあります。HeadTarget作成後にHeadを動かした場合は、それが原因かもしれません。HeadのTransformを変更する際は、オブジェクトの親子関係に注意してください。

  10. pt より:

    いつも参考にさせてもらってます
    配布されているアバターファイルを自分用に調節することはできますか?
    あれば教えてもらえないでしょうか

  11. らんじゅ より:

    お世話になります

    最終工程の「avatarファイルのエクスポート」まで出来たのですが
    保存の仕方がイマイチ分かりません…

    どうすればよろしいですか?

  12. らんじゅ より:

    立て続けのコメントすいません…
    よくよく確認すると
    「LeftHand gameobject Missing」
    「RightHand gameobject Missing」
    と表示されています

    なにが原因なのでしょうか…

  13. pooh より:

    このページを参考にさせていただき一通り動くアバターが作れたのですが

    手のひらを上をむける感じで手首をひねった時に
    手首部分のポリゴンに雑巾を絞ったようにねじれが生じます。

    オリジナルのモデルはTポーズで手のひらを下にむけた状態なのですが
    そこから手のひらが上を向くところまでまわすとねじれてしまうようです。

    どうもひじのねじれがまったく起こらず手首だけでねじろうとしているのが原因のように見えますが
    これを自然に動かす方法はないでしょうか?

    UnityProject.zipにTwistRelaxerコンポーネントがあったので
    それをひじに設定してみたのですがやはりひじが回らず同じ状態です

    • 管理人 より:

      Twist RelaxerのIK設定を忘れている可能性はありませんか?

      Left elbow / Right elbowにTwist Relaxerをセットし、IKのところに「VRIKが取り付けられているオブジェクト」をアタッチしてください。これで手首のねじれは改善されるはずです。

      • pooh より:

        ありがとうございます!こんなに速くお返事いただけるとは
        仰る通りパラメーターの設定間違いでうまく動いていなかったようです
        TwistRelaxerも動いているようです…お騒がせいたしました

        余談ですがTポーズの状態で手のひらが下を向いている場合、
        180度手首を回転させて真上を超えるあたりで回転状態の補完のせいか
        TwistRelaxerで連動させているひじがグルンと360度回ってしまいますね…
        ボーンの初期ポーズをある程度まわしておくことで起こりにくくなった?ようですが
        もっとスマートな解決法ってあるんでしょうか…

        • 管理人 より:

          いえいえ、解決してよかったです!

          ねじれの細かい調整は私もよくわかりません!

  14. BS より:

    お世話になっております。
    こちらの記事を参考にさせていただきながら.avaterの作成をさせていただいております。

    上記にもありますが、私の作成するアバターにも“gameObject is missing”のエクスポートエラーが出てしまい、トラブルシューティングを拝見させていただいた上での質問です。

    Unityのバージョンは2018.1.6f1
    記述通りの作成を行い、誤字もありませんでした。
    オブジェクトも存在しており、子オブジェクトにもなっています。

    海外の記事や、断片的なtwitterの情報も試しましたが解決に至らず・・・
    もし、解決できる可能性のある方法や、あり得そうなミスがありましたら教えていただきたいと思い質問させていただきました。

    • 管理人 より:

      誤字脱字や階層のミス以外で、gameObject is missingが発生するケースは見たことがありません。

      「Avatar Descriptorが取り付けられているオブジェクト」の子になっているかどうか、今一度ご確認ください。

      記事通りの階層に各オブジェクトが作成されている状況でエラーが発生する場合、Avatar DescriptorやIK Managerが想定外のオブジェクトにアタッチされている可能性も考えられます。

      • BS より:

        お答えいただきありがとうございます!

        ご指摘いただいた点に注意しながら、答え合わせを行い無事解決しました。

        問題となっていた箇所は【IK用のオブジェクトを作成】する際に、親オブジェクト左クリックでオブジェクト作成できておらず、オブジェクトが浮いていた認識されていないことがエラーに繋がっていました。

  15. Mk より:

    お世話になっております
    こちらの記事を参考にし.avaterを作成しているのですが
    .avaterへの変換までは完了しゲームに実装しエラーは出なかったのですが
    対象のアバターを選ぶと一瞬だけ表示され何処かへ飛んでいくといった感じの
    状態になっております
    1.3になったばかりだからかな?と思ったのですがテスト用のアバター等
    他のものは問題なく動いているので設定か何かだとは思うのですが
    ここをチェックした方が良い等ありましたら教えていただけませんか?

    • 管理人 より:

      腰のトラッキングが飛んだときのような感じですかね……?

      記事の手順通りに作成できていない可能性が高いです。Targetオブジェクトの作成やIK関連の設定にミスがないかご確認ください。

  16. Nitori より:

    このページを参考にさせていただき一通り動くアバターを作成したのですが手首より先が伸びてしまうという症状になったのですが原因はわかりますでしょうか…?

    もしよろしければ原因を教えていただけないでしょうか?

    • 管理人 より:

      Blenderでボーンの最適化を行ってください。

      • Nitori より:

        返信ありがとうございます
        Blenderで最適化を行いエクスポートしようとしたところ下記の例文が出てしまうのですがこのまま出力しても良いのでしょうか?

        model not optimized
        this model has 18 materials!
        You should try to have maximum of 4 materials on your model.
        creating a texture atlas in CATS is very easy, so please make use of it.

        • 管理人 より:

          VRChatユーザー向けのメッセージなので、そのまま出力して問題ありません。

          マテリアル数が多いと処理が重くなりますが、ビートセイバー用のアバターであれば基本的には気にしなくて大丈夫です。

  17. Nitori より:

    Blenderで最適化後そのまま実行したら無事不具合が直りました!
    ありがとうございます!!!

  18. FKJL より:

    何度調節してもアバターの足が地面よりも下になってしまいます…
    解決法ありましたら教えてください

  19. FKJL より:

    一通り終わってビートセイバー内で足が地面より下に埋まってしまいます

  20. harasyo より:

    こちらのページを参考にして、MMDから.avatorファイルを作成しプレイしたところ、アバターを切り替えた時点で一人称視点から三人称視点に変わってしまいます。
    何かミスにお心あたりありますでしょうか?

  21. 悪魔ミカエラ より:

    .avatorが出力できません。
    ボタンを押しても何も反応がないのですが…これで正解なんでしょうか?

  22. kouta より:

    すみません、このサイトを参考にしてアバターを作って1体目は成功したのですがほかのMMDモデルをもとに2体目を作ったら表示はされるんですけど棒立ちの状態で動かないのですが原因は何か考えられるでしょうか?コンポーネントなどの入れる順番とか重要だったりしますか?

    • 管理人 より:

      コンポーネントを取り付ける順番は前後しても問題ありません。

      棒立ちはオブジェクトやコンポーネントの設定ミス、ボーンが最適化されていない…などのケースが多いかと思います。

  23. より:

    こちらの記事を参考に無事avatarファイルを作ることができました。
    色々トラブルがありましたが、コメント欄と合わせて問題解決でき感謝します。

    ただ一つ気になるところがありまして、自分もgameobject Missingが4種類でてしまい、エクスポートできなくて悩みました。

    結果的には Avatar Descriptorを設定する親が記事の画像の階層だとダメで、
    一つ下のモデル名の方に設定したら上手くいきました。

    自分の環境だけかもしれませんが一応報告しておきます。

    • 管理人 より:

      お役に立てたようで嬉しいです!
      トラブルの詳細までコメントしていただき、ありがとうございます。

      おそらく、Target用の各オブジェクトが記事と異なる階層に作成されており、それが原因でコンポーネントの対象も変更する必要が生じたのだと思われます。

      例えば、Head・Body・LeftHand・RightHandが Armatureと同じ階層に配置されている状況で、記事画像通りの親オブジェクトにAvatar Descriptorをアタッチすると、gameObject is missingが4つ表示されるはずです。
      この場合は、コンポーネントのアタッチ先を一つ下のオブジェクトに変更すると解決します。

      もしかすると別の原因かもしれませんが、階層ミスによるエラーはよく見かけるので、要注意ポイントですね。
      今後作成される方の参考になれば幸いです。

  24. Rei より:

    こちらの記事を参考にVRC用アバターをビートセイバー用に出力できないかやっていたのですがツールバーから「Window」→「Avater Exporte」と開いても、専用タブは増えるのですが、中身が空で困っています。
    他のサイトで調べてみたところ、このタブでアバター名とか決めて、Exportできるみたいなのですが、なんで殻で表示されるのかわからなくてどこを直せばいいのかわからなくなっています。

    一応バージョンは2018.1.6fでやっています。

    よろしければご助力お願いいたします。

    • 管理人 より:

      ゲームオブジェクトにAvatar Descriptorが取り付けられていない場合、Avatar Exporteタブは空欄で表示されます。(正確には「Avatars」という文字のみ表示されます)

      上記コンポーネントのアタッチ忘れか、あるいは何らかの原因で正常に機能していないと思われます。

  25. リンネ より:

    お世話になっております。
    今まではmodel saberよりアバターをダウンロードしてましたが、しゃがむとガニ股になったりdynamic bornが無く不自然なモデルが多いため、こちらの記事とdynamic bornを追加する記事を参照しアバターを製作し、無事動作する事も確認できました。

    mmdは少々かじる程度、blender、unityはともに初めての使用でしたが丁寧な解説により問題なく使用する事ができました。
    ありがとうございます。

    ただ、作成時にちょっとしたトラブルがございましたのでご質問させて頂きます。
    ある1つのmmdモデル(.pmx)にて発生したのですが、blenderにて.fbxにてエクスポートし、unityのprojectウインドウ下部の「Assets」内へ「Textures」、「Materials」フォルダー及び.fbxのモデルを設定後、モデルを表示させるために「ヒエラルキーウィンドウ」内へモデルをドラッグした所、テクスチャーが反映されていないのかモデルの一部が真っ白になっておりました。

    私はIKやdynamic born等の設定が完了後、.avater形式でエクスポートする前に「Materials」のシェーダーを設定するのですが、すべてのシェーダーを設定してもその一部だけは真っ白の状態でした。
    (blenderでは全く問題なく全身表示されております。)

    幸いそのmmdモデルはバージョン違いがあり、そのモデルはうまく設定出来ましたので結果問題はないのですが・・・同じような現象はございましたか?
    また、何か考えられる原因等があればご回答いただけますと幸いです。

    よろしくお願いいたします。

    • 管理人 より:

      はじめまして、管理人の能代です。
      コメントありがとうございます。記事がお役に立ったようで何よりです!

      ご質問の件ですが、モデルが真っ白になるのはテクスチャやシェーダーが適切でないケースが多いと思います。
      ただ、MMDモデルでアバターを作成されたとのことなので、別の原因かもしれません。

      MMDモデルは本来ゲーム用途は想定されていないため、そのままUnityに持っていっても上手く表示されない……というのはよくあることです。(差分パーツの影響等)
      今回の場合は、真っ白になってしまった部分のメッシュに元々テクスチャが貼られていなかった可能性も考えられます。

      Unity側の設定だけで解決すれば良いのですが、どうにもならない場合は問題となる部分を先にBlenderで編集しておく必要がありますね。
      曖昧な回答で申し訳ありませんが、少しでも参考になりましたら幸いです。

  26. xio より:

    質問です。

    BOOTHで購入したアバターをBeatSaber用に編集して使用しようと思ったのですが、Avatar Exportをしてもデータがエクスポートされません。どうしてでしょうか・・・

    ちなみに使用としているアバターは「ミーシェvre1.03」です。

    Unityは2018.4.22f1を使いました。(2018.1.6f1だと読み込めなかったため)

    何分初めてのため色々わからないことだらけなので教えていただけたら嬉しいです。

  27. フルトラなんかに負けない! より:

    3点トラッキングで試しています
    記事通りに進めて一応アバター導入出来てはいるんですが腰がぐるんぐるんしてしまいちょっと人には見せられない感じになってしまいます
    腰が動いてしまうのを抑制する方法は無いでしょうか?

  28. みや より:

    記事参考にさせていただいております。

    Avatarファイルの出力まで出来たのですが、0バイトの空のAvatarファイルが出力され、使えませんでした。
    再度同じプロジェクトでAvatarの出力を試みたのですが、
    今度はAvatarexportの欄が消えてしまい出力出来なくなりました。

    お心当たりのある範囲で構いませんので、
    原因や解決法をご教示いただけると幸いです。

  29. iq1 より:

    このページを参考に、アバター作成&導入できました!(異常な内股だとかでまだまだ調整中ですが)
    いいですね、素人でもvroidとかでオリジナルキャラクター作って、blenderやunityで気軽に着替えを楽しめるなんて。
    自分好みのベリショ少女になれる現代の光ですよこれは

    ところで、1点確認したいことがあります。
    本記事の、
    >作成したオブジェクトの名前を変更します。
    の直前の画像では、以下の階層構造となっております。(そのあと追加するTargetモジュールは省略)
    (略)
    └ Huchakiti
    ├ Huchakiti
    │ ├ Armature
    │ └ Body
    ├ Head
    ├ Body
    ├ LeftHand
    └ RightHand
    この階層ですと、いざExportしようとしたときに、「〇〇〇〇 gameObject is missing」が発生するようです。
    画像を睨みつけながら考え込んだり検索したりした結果、以下の階層とするとエラーが発生しなくなりました。
    (二つ目のbodyは削除しました。)
    (略)
    └ Huchakiti
    └ Huchakiti
    ├ Armature
    ├ Body
    ├ Head
    ├ LeftHand
    └ RightHand
    この階層で合っているのでしょうか。
    今のところ、内股なことと身長がおかしいことくらいしか問題が発生していないので、☝で合っているんだという風に考えていますが…。
    でもいつか問題が発生するのかな…。

    • iq1 より:

      修正後の階層崩れてる…こんな感じです
      (略)
      └ Huchakiti
      ___└ Huchakiti
      ______├ Armature
      ______├ Body
      ______├ Head
      ______├ LeftHand
      ______└ RightHand

      • 管理人 より:

        コメントありがとうございます。
        アバター導入のお役に立てたようで幸いです。

        階層の件ですが、IK関連のコンポーネントを取り付けるオブジェクトの階層が記事と異なる場合、gameObject is missingが発生する可能性があります。
        (別の原因かもしれませんが、よくあるのは上記のケースです)

        とりあえずHead等のオブジェクト階層変更でエラーが改善したのであれば、そのままの設定でも大丈夫だと思います!

  30. a-key より:

    最近、Beast Saberを始め、アバターの導入、作成と サイトをご参考にさせて頂いております。

    MMDモデルでの作成に挑戦しているのですが、UnityでのIKの設定で躓いています。

    Targetオブジェクトの設定を終え、「コンポーネントの作成」
    「IKを導入するためのコンポーネントの追加」作業で、
    [Add Component]で「IK Manager (Script)」と「VRIK (Script)」を選択しても、
    「Scripy IK Manager doesn`t exist」「Scripy VR IK doesn`t exist」と表示され、
    先に進めなくなってしまいました。

    Unityも2018.1.6f1 を使用し AvatarsUnityProject も使用しています。
    Blenderは、Ver2.29.0 を使用しています。

    何がおかしいのか、解りますでしょうか?
    もし、原因が解りましたら、御教授お願いできませんでしょうか
    よろしくお願い致します。

    • 管理人 より:

      他のコンポーネントは問題ない感じでしょうか。
      CustomAvatar.dllの再インポートで改善するかもしれませんが、原因がわからないのでなんとも……。

      新規プロジェクトで確認するのが無難かと思います。

      • a-key より:

        早速のご返答ありがとうございます。

        Targetオブジェクトの設定 までは、問題なくサイトの記述通りに出来ました。

        「IK Manager (Script)」「VRIK (Script)」は、Unity自体に入っているのではなく、
         CustomAvatar(AvatarsUnityProject) の方ですね。

        AvatarsUnityProject を再インストールして、新規プロジェクトで試してみます。

        ありがとうございました。

        • 管理人 より:

          なるほど……うーん、謎ですね。
          全くお力になれず申し訳ないです。

          うまくいくことを願ってます!

      • a-key より:

        ありがとうございます。

        AvatarsUnityProject を再インストールして、新規プロジェクトで作り直したら、完成しました。

        Beat Saber での作動テストも問題なく成功致しました。
         Saberの握り位置など、若干の微修正は必要かもしれませんが、動作は問題なく作動致しました。

        ちなみに、モデルは、~白~さん 作 の神楽(ハイポリ通常Ver1.02)です。

        修正をしながら、ポニーテールタイプのアバターも作ろうかと思っています。

        この度は、ご指導頂きありがとうございました。
         

        • 管理人 より:

          ご報告ありがとうございます。
          うまくいったようで良かったです!

          ポニテバージョンも頑張ってください!!

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