Help us understand the problem. What is going on with this article?

VRMモデル作成についての手順

More than 1 year has passed since last update.

はじめに

この公式ドキュメントを読むことを強く推奨します。
このスライドは、とりあえずVRMモデルをセットアップしたいという人向けに、纏めたものになっています。 MToonの項目は所々省いているので注意。
できるだけUnity初学者にも分かるように、書いているつもりです。
そもそも私が初学者
エグい長いので右のリンクを上手く使ってください。
※昔書いたサークル向けの記事を移植しています。 最新版は時間があるときに更新します。

大まかな手順

1, UniVRMのインポート
2, Shaderの設定
3, モデルデータの正規化
4, ライセンス設定
5, 口パク表情設定
6, 揺れもの設定
7, エクスポートで完成!!

説明で使用する環境

Unity 2017.4.18
UniVRM 0.48
(0.50でも大幅な変更はありませんでしたので、同じ手順で可能です)

使用できるモデル条件

  • Humanoidモデル
  • 各種Shapeキーが設定済みであること(表情・口パクを付ける場合)
  • 揺らしたい物にボーンが入っている(揺れものがある場合)
  • 瞳を動かすボーン、もしくは瞳に上下左右動かすShapeキーがある(視線移動したい場合)

準備

UnityとUniVRMの準備

まずはUnityで空のプロジェクトを作成します。
リリースページからUniVRMをダウンロードしてきます。基本的に最新版で構いません。
一番上のUniVRM-(バージョン).unitypackageをダウンロードしてください。
image.png
Assetウインドウで左クリックし、先程ダウンロードしたUniVRMのUnitypackageをインポートします。image.png
インポートするAssetの選択画面が出てくるのですべてチェックを入れimportを押します。
image.png

モデル配置

FBXモデルをAssetウインドウにD&Dで読み込ませます。今回は量産型マスキャットのモデルを使用します。
モデルを読み込んだらInspectorウインドウでRig設定をHumanoidに切り替えてApplyを押します。
image.png
AssetウインドウからHierarchyウインドウにD&Dでsceneに配置しましょう
image.png

Shaderについて

Shaderの設定をします
オブジェクトを選択し、InspectorウインドウからShaderを変更します
image.png
VRMではShaderを

  • Standard
  • VRM/UnlitTexture
  • VRM/UnlitCutout
  • VRM/UnlitTransparent
  • VRM/UnlitTransparentZWrite
  • VRM/MToon

の中から選ぶことが強く推奨されています。
今回はこの中からMToonとStandardを使用します。
image.png
デフォルトのライトは色がついているので、色を白にしましょう。そのままだと、ライトの色でルックが変わるので変えておきます。
image.png
今回はメカ部分をStandard、それ以外をMToonに設定します。
メカ部分は金属っぽさを出すためにStandardを選択しています。
もし、テクスチャに影が書かれている場合はUnlitTextureでも良いと思います。Unlitですのでライトの影響を受けません。
image.png

MToonの設定

今回はMToonのみ説明します。StandardやUnlit系のShaderはUnity標準と変わらないので。

Rendering

RenderingType

RenderingTypeは基本的にOpaqueでOKです。
テクスチャに透明部分があればCutoutやTransparentを使用しましょう。TransparentWithZWriteは奥行き情報のある半透明のオブジェクトに使用するといいでしょう
image.png

CullMode

CullModeは描画の設定ができます
Off==裏表描画
Front==表を描画しない
Back==裏を描画しない
image.png
左からOff、Front、Back
image.png

color

Lit Color, Alphaはベースカラーになります。
基本的に白でOK
Shade Colorは影の色です。
自分で調整しながら馴染む色に設定しましょう。大体はピンクの入ったグレーで良いと思います。
image.png

Lighting

Shading Shift

Shading Shiftは影をどこから付けるかの調整ができます。
-1は影なし 1はすべて影ありという感じです。
顔等は影が落ちすぎると暗い印象を与えてしまうため少し-値にするのがおすすめ。
左から-1 0 1
分かりやすいように影色を黒にしています。
image.png

ShadingToony

ShadingToonyは影の境界線の設定です。
値を上げればパリッとしたセル画調の影の付き方、下げればぼやけた感じになります。
値0(左)値1(右)
image.png

Shadow Receive Multiplier

セルフシャドウの設定です。顔等の影があまり落ちてほしくない箇所は0それ以外は1でいいと思います。

LightColor Attenuation

LightColor Attenuationはライトの色の影響度を設定できるパラメーターです。
0が影響を受けて1に設定すると影響を全く受けなくなります。基本的に0でOKです。
変に1にすると、場合によっては周りから浮きます。

Emission&Normal Map

Emissionは特に設定しなくて大丈夫です。
簡単に説明すると光源に関係なく一色に塗りつぶす設定です。利用用途はマスクに使うんだと思います。しらんけど。
Normal Mapはその名の通り、あったらここで設定しましょう。

Outline

Outlineは特に設定しなくても大丈夫です。その名の通り輪郭線を描写します。
この機能を使えば髪のテクスチャをベタ塗りでも良いかもしれませんね。

  • None 輪郭線を描画しません(左)
  • WorldCoordinates 世界に対して一定の幅の輪郭線を描画します(真ん中)
  • ScreenCoordinates スクリーンに対して一定の幅の輪郭線を描画します(右) image.png

モデルデータの正規化

Materialの設定が終わったら一旦VRMで書き出します。
Hierarchyでモデルを選択した状態で、ツールバーのUniVRM-(バージョン)からExport humanoidをクリック。
Authorに製作者の名前を入れExportをクリック。export先をAssetのフォルダに指定します。
image.png
exportが終わると自動的にPrefabが生成されるので、元々Hierarchyにあったモデルを排除しPrefabをD&Dで配置します。
image.png

VRM独自の設定を行う

ライセンス周りを設定していきます。VRMの必要性に関わる大事な部分なので、しっかり設定してください。
少なくとも、タイトル・作者・ライセンス情報は埋めましょう。
注意として、A person who can perform with this avatarの項目をOnly Authorにすると、VirtualCastでは配信しない状態で使えなくなります。
項目は読めばわかると思うので、四角く囲っている部分を埋めていきましょう。
Texture2D部分はサムネイルですので自由に決めてください。
image.png

口パク・表情の設定

口パク・表情の設定に入ります。設定しなくても今の段階でVRMファイルとして出力できますが、表情がないです。
設置してあるPrefabを選択し、InspectorのVRM Blend Shape ProxyにあるBlend Shape Avatarをダブルクリックします。
image.png

表情の設定

表情を割り当てます。

項目 表情
NEUTRAL 標準
A
I
U
E
O
BLINK 目をつむる
JOY
ANGRY
SORROW
FUN
BLINK_L 左目を閉じる
BLINK_R 右目を閉じる

~視線制御がShapeキーの場合に設定~

項目 表情
LOOKUP 上を見る
LOOKDOWN 下を見る
LOOKLEFT 左を見る
LOOKRIGHT 右を見る

プルダウンを開くと設定しておいたShapeキーの一覧が表示されます。
それぞれのShapeキーを混ぜて表情を作ることもできます。
Inspectorの下に表情のプレビューがありますので見ながら設定しましょう。
image.png

表情の例

image.png

独自表情の追加

デフォルトの表情以外の表情を追加するにはAdd BlendShapeClipをクリック。
image.png
今回は例でキス顔を追加していきます。
開かれたフォルダ場所で【表情の名前.asset】と名前を編集し保存します。
あとは追加された項目を選択し、表情を作るだけです。簡単。
image.png
めっちゃかわいいすき

瞳の移動制御

VRMには瞳の追従機能が付いています。瞳が動きすぎないように設定しましょう。
瞳の設定を行うために瞳の追従先を生成します。
Hierarchyで3Dモデルを生成。なんでも良いですが今回はcubeにします。
image.png
設置したら手頃な大きさにして顔の前に配置します。
image.png
PrefabのInspectorにあるVRM Look At HeadのTargetに、先のcubeをD&Dします。HeadにHeadのボーンを設定します。
Headの位置は、Prefabのプルダウンを開いて、Armature\Hips\Spine\Chest\Neck\Headに大体あると思います。
ゲームを起動(▶を押す)しGameビューからSceneビューに切り替えします。
image.png

Targetに設定したオブジェクトを上下左右に動かし、瞳が動きすぎないかを確認。動きすぎたり、動きが少ない場合はVRM Look At Bone Applyerにあるスライダーで値を調整しましょう。
簡単にいうとXの値が動き方、Yの値が移動量です。
みゅみゅ教授曰く、Yは15~23ぐらいがいい。「大げさなぐらいが面白い」
※目の動きの制御をブレンドシェイプで行ってる場合は、VRMLookAtBoneApplyerを排除しVRMLookAtBlendShapeApplyerを追加します。
詳しくはこちらを参照。
image.png

揺れもの設定

HierarchyにあるPrefabの最下層にsecondaryがあります。こいつのInspectorにVRM Spring Boneがあります。
一つのVRM Spring Boneに複数のゆれものを設定できますが、重力設定等も共有されます。 同じで構わなければまとめて設定してしまいましょう。
image.png
今回は髪の揺れものを設定します。スカート等も同様の設定でいけます。
RootBonesのSizeに設定したい揺れものの数を入れます。今回は16です。
image.png
Elementに揺らしたいボーンの一番親のボーンをD&Dで入れます。これで一応は揺れます。
今回は16個ありますが、揺れものが多いと重くなり、動作が不安定になる原因ですのでなるべく減らしましょう。
image.png
設定が違う揺れものを追加する場合は、AddComponentからScripts\VRM\VRM Spring Boneをクリックします。
image.png

VRMSpringBoneの設定

image.png

項目 意味
Stiffness Force やわらかさ
GravityPower 重力
GravityDir 重力方向
Drag Force 揺れの減衰

当たり判定

当たり判定を入れたいボーンのInspectorからAdd Componentをクリック。
Scripts\VRM\VRMSpringBoneColliderGroupをクリックして追加します。
image.png
ワイヤーの球体が現れます これが当たり判定です
image.png
sizeは当たり判定の数です。Elementのプルダウンを開くと座標や大きさが変更できるので、当たり判定を入れたい位置に入れていきましょう。
image.png
当たり判定の位置や大きさが決まったら、先程設定したVRM Spring Boneを開きます。
下部にあるCollider Groupsをプルダウンで開き、Elementの横にある⦿をクリック。設定した当たり判定を適用させます。
sizeを増やすことで、当たり判定群を追加していけます。
image.png

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

image.png
VRMファイルをエクスポートします。正規化の時と同じようにPrefabを選択し、ツールバーのUniVRM-(バージョン)からExport humanoidをクリック。
正規化のときにAuthor設定等してあるため、そのままExportをクリック。
今回はUnityProject内にexportする必要はありませんので、任意の場所にexportしましょう。

さいごに

お疲れ様でした。VRM化は終了です。
あとはVirtualCastやバーチャルモーションキャプチャーなどのVRM対応アプリでやりたいことをやりましょう。
ここまでの工程が頭に入っていれば、VRoid等のVRMモデル制作ツールで作ったモデルを、手直しすることも可能です。

追記

ボーンの子にモデルを配置すればこんな事もできる。
image.png
このままVRMで出力できます。

参考

VRM
バーチャルキャストで使えるVRM作成講座!-youtube
VRM 標準シェーダMToonの使い方

MeBu
学生してます
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした