avataruuki.dev

Voxel、Blender、Unityで作るVRM時短レシピ

  • VRM
  • HowTo
  • 12 min read
⚠️
注意
この記事は最終更新日から5年以上が経過しています。

VirtualCastや、VRChatにオリアバで入ってみたいけどイチから調べると大変そう。 という方向けの記事です。

最近、とりあえず簡単そうな所から…、という事でVoxelでモデル作成をしたのですが、初めはうまく行かず調整した点などが細々あったので、VRM化までの通しの手順を記事にします。これから初められる方のお役に立てば幸いです。

手順はWindows上での説明となりますが、モデル作成まではMacもほぼ同様の手順で可能です。

前提

  • VR(HMD)機器の、キャリブレーション、ルームスケール等、セットアップが一通り完了している事

使用するソフト、プラグインなど

初めに、下記のソフトを全てインストールして下さい。 ※ 「UniVRM」はリンク先READMEの手順に沿って、ダウンロードまで進めてください

Voxelの基本操作

まずは、Voxelを起動するとこのような画面が立ち上がったかと思います。 ここではモデル作成に必要な、一部の機能のみ記載します。

視点移動

右ドラッグ、ホイールドラッグ

ズーム

スクロール

新規プロジェクト

ショートカット:Ctrl + p

プロジェクト名

画面上部、「Model」「Render」とある右の「project」欄に入力

編集

「Brush」パネル内のツールを使います。 機能的にはざっくりと、操作モードブラシタイプオプションの3種類あり、 ここでは操作モードの一部と、 よく使うブラシタイプの「V - Voxel Mode」、「F - Face Mode」に加え、 オプションの「Mirror」を覚えます。 (ほぼ文字通りの機能のため、分かる方は読み飛ばして頂いても問題ありません)

操作モード

  • Attach(追加モード)

ショートカット:t

ブラシを追加モードにします。追加エリアは選択されているブラシによって変わります。

  • Erase(削除モード)

ショートカット:r

ブラシを削除モードにします。削除エリアは選択されているブラシによって変わります。

  • Paint(塗りモード)

ショートカット:g

ブラシを塗りモードにします。色は「Palette」パネルから選択でき、選択箇所のBoxの色を変更します。

Palette内の各色は変更可能ですが、プロジェクトを保存した時に作られる「モデル名.vox」にはパレットのデータは含まれず、次回起動時に初期化されてしまうため、色の調整を加えている場合、終了前に必ず、Pallete下部の「Save」で保存しておきます

ブラシタイプ

  • [ V ] - Voxel Mode

ショートカット:v

指定箇所の1ボクセルを操作します。 この時、Brushのサイズとシェイプなどは添付のエリアで変更可能です。 Unityにインポートした際は、1ボクセル = 1メートルほどの大きさになるようです。 (VR目的の場合は大きめに作成しておき、Unity上でスケールの縮小をかけるとメッシュが綺麗になります)

  • [ F ] - Face Mode

ショートカット:f

面の範囲で、1ボクセルを操作します。

オプション

  • Mirror X Y Z

ショートカット:1、2、3

ボクセル操作を指定した座標軸に対して相対的に反映します。

基本操作については以上になります。

モデル作成

モデルはお好みでイチから作成するか、もしくはサクっと手順だけ覚えてしまいたい場合は、Humanoid作成用の素体をこちらに用意していますので、ダウンロードしてください。

デフォルトで存在してる青いボクセルは画面右の「Edit」パネル内Toolにある、Delで削除できます。

また、VRM用のモデルは「Tポーズ」という形で作る必要がありますので、そこだけご注意ください。

ポーズ参考画像

ダウンロードされた方は、humanoid_base.voxを、今開いているVoxelウィンドウにドロップします。 すると添付のようなTポーズのモデルが現れたかと思います。

これをポーズだけ変えないようにしつつ、お好みで編集して頂き、 最後に、右下の「Export」から「obj」形式を選び、任意のフォルダに書き出してください。

Blenderの基本操作

次にBlender上の編集に移ります。

立ち上げると、添付のような画面になっているかと思います。 デフォルトでは英語の設定ですが、設定から日本語化もできますので、必要に応じて変更します。

日本語化

Ctrl+Alt+U を押し、「User Preferences」を呼び出します。 「System」のタブを選択し、右下のLanguageを日本語にした上で、左下の「Save User Settings」を押し、ユーザー設定画面を閉じます。

Voxelで作成したモデルのインポート

まず、中央のデフォルトで存在するオブジェクトを「x」キーを押して削除します。 続けて、「ファイル」→「インポート」→「Wavefront(.obj)」と進み、先ほど保存したモデル名.objを読み込みます。

すると超巨大な状態で読み込まれるので、ここで一旦カメラ周りの基本操作の説明に移ります。

視点

  • 回転

ホイールドラッグでマウスを上下左右に移動

  • 水平移動

Shiftを押しながら、ホイールドラッグ状態でマウスを上下左右に移動

  • ズーム

スクロール

※ テンキーでの変更は省略します。

保存

カメラ操作に慣れてきたら、視点を正面に合わせます。 正面にしたら、一旦、Ctrl+Sで名前を付けて「モデル名.blender」として任意の場所に保存しておきます。

ボーンの設定

3Dモデルを動かすためには人間の骨にあたるボーンというものの設定が必要で、頭や腕、腰、足の部位を個々に設定していきます。これらのボーンの集まりをアーマチュアと言います。

まずは、モデルの腰の辺りを左クリックして、カーソルを移動します。 このカーソルの事を「ピボットポイント」と言います。

次に、Shift+Aを押してメニューから「アーマチュア」→「単一ボーン」を選択します。

ボーンを追加できたら、画面右のパネルの人型のアイコンを選び、 下の方にあるチェック項目の「名前」「座標軸」「レントゲン」にチェックを入れます。

続けて、右パネルの骨のアイコンを選び、ボーンの名前を設定します。 デフォルトは「Bone」となっているので、これを「Hip」に変更します。

さらに、画面下の方にある「オブジェクトモード」となっている部分をクリックし、 「編集モード」に切り替えます。

この状態で一度、横からの視点に切替ると、Hipボーンが身体からはみ出ているかと思いますので、Boneを選択した状態で、Y軸(緑)を左クリックでドラッグして中に入れてあげます。

ちなみにボーンには各部名称があり、添付のようになっています。 先端(細い方)がTip、根本(太い方)がRootです。

それでは、残りのボーンを追加していきます。

HipのTipを右クリックで選択し、Z軸の矢印(青)を左クリックしながら上に移動すると、Hipボーンのサイズが変わるはずです。(大きくなります)

お腹の辺りまで伸ばしたら、Eキーを押して、更にマウスを上に移動してみてください。

すると、新規ボーンが追加されたかと思います。 この操作を、ボーンを押し出すと言います。

新規ボーンは、Ctrlを押しながら左クリックで確定し、再度Z軸でそのまま胸の下の辺りまで伸ばします。

これをあと3回ほど繰り返し、胸の辺りのボーンと、首、頭のボーンを作ります。 名前は、Hipの子から、Spine1、Spine2、Neck、Headとしています。

Headまで出来たら、次は目ボーンを作っていきます。 HeadのTipを右クリックし、左下か右下どちらか好きな方に押し出してください。

確定したら、画面右下の、「関係」というエリアの中の「接続」に現在チェックが入っていると思いますので、これを解除します。

すると、このように接続が切れますので、少し離して目の位置まで移動した後、Tipを操作してモデルの前面に向けます。添付のような配置です。名前はEyeとしておきます。

サイドビュー

フロントビュー

これで目ボーンが出来ました。 次は足を作っていきます。

足は、Hipから押し出し、接続を切っておきます。 このボーンの名前は、UpperLegとします。

続けてLowerLeg、Foot、Toeと、足ボーンを押し出していきます。 横から見るとズレている事がありますので、メッシュからはみ出ないよう適宜調整します。

ここまで進めると、添付のようになっています。 完成まで後少しです。

最後に、腕~手を入れます。

腕は、Spine2から、Shoulder、UpperArm、LowerArm、Handの順に押し出していきます。

モデルに指を作っている場合は、Handから更に指を押し出していくとコントローラーのトリガーでグーパーのモーションができるようになります。

腕~手を入れ終わるとこのようになります。(今回指先は設定していません)

ここまで終えたら、各片側のボーンを反対にも反映します。 テンキーの「1」でフロントビューにした後、Cキーを押して、範囲選択モードにします。

目、腕、足の全てのボーンを左ドラッグで選択したら、Escでカーソルを戻して、 Shift+Cを押します。

続けて、ピボットポイントのタイプを3Dカーソルに変更した後、Shift+Dを押し、 マウスを動かさずに左クリックで確定します。

さらに、Ctrl+Mを押し、Xキーを押すと、反対側にも反映されます。

複製できたら、Boneの名前を調整します。

再度、Cキーで範囲選択モードにして、左右のボーンを全て選択し、 Wキーで「オートネーム 左/右」を選択します。

すると左右どちらにボーンが存在しているかを判定して、自動でネーミングをしてくれます。

ここまで出来たら、仕上げにウェイトの設定を行います。

現在の「編集モード」から、「オブジェクトモード」に変更して、モデル→ボーンの順に選択した後、Ctrl+Pを押し、「自動ウェイト」を選択します。

関節などを綺麗に動かすにはウェイトの細かい設定が必要となりますが、VR空間内でとりあえず動かす分にはこの設定まででも動作します。

この時、ボーンヒートウェイトというエラーが出た場合は、メッシュの調整が必要です。 手順についてはこちら方のブログ記事で分かりやすく説明されています。

【Blender】ボーンヒートウエイトのエラーが出たときに試す5つの解決策

ウェイトの設定が無事完了したら、Ctrl+Sを押して上書き保存した後、「ファイル」→「エクスポート」と進み、「FBX(.fbx)」形式で書き出します。

これで、Blenderでの編集は完了です。

VRM化

次はいよいよVRM化の作業に移ります。Unityを起動し、新規プロジェクトを作成します。 Templateは3Dで、Ptoject nameやLocationは任意で設定してください。

立ち上がるとこのような画面が表示されます。

この段階で、始めにダウンロードしておいたUniVRM-0.xx.unitypackageをダブルクリックしてインポートします。 すると、Assets配下にVRMディレクトリが作られます。

作成したら、最初の手順でダウンロードしておいたUniVRMをダブルクリックし、プロジェクトへインポートします。

すると、Assets配下にVRMディレクトリが作られますので、続けて、先ほど書き出した.fbxデータを、Assets配下にドロップします。

モデルデータがインポートできたら選択し、「Inspector」ウィンドウの「Animation Type」を見ると、Genericになっているので、Humanoidに変更し、Apllyを押します。

この時、Humanoidとしての必須ボーンが足りてない or 正しく設定出来ていない場合、エラーが発生します。 その場合はBlenderへ戻り、どこかの部位が欠損していないか、確認してみてください。

変更後、少し下にあるConfigureボタンを押し、ボーンが正しく当たっているか確認します。 もし、必須ボーンが足りていない場合、赤く表示されます。

今回の例では、Chestが当たっていないようでしたので、項目右側の丸いアイコンを押して、Spine2を選択し、割り当てました。

ここまで終えたら、下の、Apply、Doneを押し一度適用します。

続けて、シーン上にモデルをドロップすると、Blender同様に巨大なモデルが現れるので、 配置とサイズを調整します。

InspectorからPosition X、Y、Zを0に直し、 Scaleは0.024辺りにしてみます。

Hierarchy上のモデルが選択状態な事を確認したら、Unityのツールバーの「VRM」から「export humanoid」を選択し、「Force T Pose」と「Pose Freeze」の2つにチェックが入っている事を確認した上で、Exportします。この時名前を、「モデル名_normalize」等としておきます。

書き出したら、再度、「モデル名_normalize.vrm」をAssets配下にインポートします。

すると添付のように「モデル名.prefab」が自動生成されるので、先ほどシーン上に配置していたモデルを一度削除して、prefabを再度シーンに配置します。

正規化済みのモデルがシーン上に読み込まれるので、 再度、InspectorからPosition X、Y、Zを0とした上で、下記のプロパティを入力・設定していきます。

各項目については、VRMファイルを作ってみたい - dwango on GitHub に詳しく記載されています。

設定を終えたら、再度、ツールバーの「VRM」から、「export humanoid」を選択し、 今回は、「Force T Pose」と「Pose Freeze」にチェックを入れずに、書き出してください。

ニコニ立体へアップロード

出来上がったVRMを、ニコニ立体にアップロードしてみましょう。

ニコニ立体を開きます。

メニューの「作品投稿」から、「フルスクラッチ作品」を選択し、 先ほど作成したvrmを選択します。

「規約に同意して投稿する」を押すと、ページ編集画面に移ります。

作品名、説明文を入力し、任意でサムネイル等を登録したら、ページ下部の「作品設定」で、外部アプリ許諾のバーチャルキャストにチェックを入れ、「保存して公開する」を押します。

この段階でURLを見ると、/works/td***** のような形になっていると思いますので、*をメモしておきます。

モデルをVirtualCastで読み込む

VirtualCastのインストールフォルダを開き、ディレクトリルートにconfig.jsonというファイルを作成します。

作成後、下記のように記述し、*の部分に先ほどメモした作品Idを記述します。

{
  "niconico": {
    "character_models": [
        *****
    ]
  }
}

この状態で、VirtualCast.exeを立ち上げ、作品を投稿したニコニコアカウントでログインした後、 「自分で配信しない」を選択して「スタジオに入る」を押すと、うまく連携できれいれば初回のみ作品の同意画面が表示され、VirtualCast内でモデルが使用できるようになっているはずです。

無事読み込めた方、おめでとうございます!

個々のソフトに関して理解を深めたい場合は、 参考リンクに詳しく書かれていますので、ぜひご覧ください。

以上で全行程終了です。お疲れ様でした!

参考リンク