OGLOG

おぐらのぶろぐです。VDRAWのマニュアルを兼ねています。

3Dモデル「リル」説明書

概要

↓こちらで販売されているデータの概要です。

オリジナル3Dモデル「リル」【4992ポリゴン】

内容物

  • VRM出力向け調整済みモデル:Lilou_for_VRM.blend

    • VRMファイルの容量削減のため、頭と身体は別パーツに分かれています。
    • 髪に揺れボーンが入っています。
    • マテリアルやテクスチャは1つです。
    • VRChat向けの裏面ポリゴンはありません。
  • OculusQuest版VRChat向け調整済みモデル:Lilou_for_QuestVRC.blend

    • 1つのオブジェクトのみとなり、一部のポリゴンが削除されています。また、スカートの裏側などに裏面用ポリゴンが追加されています。(Quest版VRCは裏面描画できるシェーダーが使えないため)
    • 揺れボーンは無く、VRChatのアバター要件対応のためUpperChestボーンが削除されています。
    • アイトラッキング対応のため追加のボーンやシェイプキーが存在します。
    • マテリアルやテクスチャは1つです。
  • マスターモデル:Lilou_Master.blend

    • パーツごとにオブジェクトやマテリアル、テクスチャが分かれています。
    • UV情報を2種類持っています(後述)
    • VRChat向けに用意した裏面ポリゴンが一つ一つ別オブジェクトとして存在します。
    • ボーン構造はVRM向けモデル+VRChatのアイトラ用ボーンとなっています。
  • 調整済みVRMモデル:Lilou_VRM.vrm

  • VRM書き出しに使ったunitypackage:Lilou_SetUp_forVRM.unitypackage(UniVRM必須)

  • OculusQuest版VRChat向けunitypackage:Lilou_SetUp_forVRC.unitypackage(VRCSDK必須)

使用するBlenderのバージョンは2.79です。

BlendデータのテクスチャやUVについて

Blenderデータに設定されたテクスチャは相対パスで紐付けられているため、テクスチャやモデルのデータを別のフォルダに移動させると正しくテクスチャが読み込めなくなります。

余談ですが、.blendファイル内には画像データを埋め込むこともできます。 f:id:OGOG_Ogura:20190917154425p:plain
テクスチャの「ソース」の左端にあるボタンを押すと画像をモデルデータに埋め込むことができます。
これはこれで便利だったり不便だったりします。


「マスターモデル」はUV情報を2つ持っています。
これは、パーツごとのテクスチャ編集用UVと、テクスチャを1枚で出力するためのUVです。

f:id:OGOG_Ogura:20190917142501p:plain

テクスチャデータは大まかなパーツごとに用意されていますが、Blender上のベイク機能で1枚のテクスチャに焼き込むことが可能です。こちらについては別記事でその手順を紹介します。

自分ひとりで遊ぶぶんには負荷はあまり考えなくてもいいですが、相手がいる場合は負荷を軽くする努力も怠らないようにしましょう。

FBXをUnityに持っていく際の注意

そのままのボーンマッピングではあごのボーンに揺れものボーンが割り当てられることが多いので必ず確認してください。

Unityプロジェクトに読み込んだFBXファイルを選択し、Animation TypeをHumanoidにしてApply。
その後、InspectorのConfigureからボーンマッピング画面を呼び出します。 f:id:OGOG_Ogura:20190919044102p:plain

「Head」のマッピングを表示し、「Jaw」はカラッポ、つまりNoneにしてください。 f:id:OGOG_Ogura:20190919044304p:plain

ハイポリ化について

マスターデータには、一部のパーツを除いて「Subsurfモディファイア(細分割曲面)」が最初からついています。
が、はじめは非表示になっているのでモデルには適用されていません。
「SubSurf」の目のアイコンをクリックしてモディファイアを表示状態にすると3Dビューのモデルのポリゴンがなめらかに分割されます。
f:id:OGOG_Ogura:20190917154722p:plain

↓こんな感じにポリゴン数が増えてなめらかになります。(わかり易さ重視でワイヤーフレーム表示にしています) f:id:OGOG_Ogura:20190917180629p:plain

モディファイアの設定で「細分化」の「ビュー」の数値を増やすとさらにポリゴンが分割されてなめらかになります。
f:id:OGOG_Ogura:20190917154936p:plain

出力する時に「モディファイアーのレンダー設定を使用」にチェックが入っていると、モディファイアの「ビュー」ではなく「レンダー」の数値でポリゴンが分割されます。注意してください。
3Dビューと同じ見た目を出力したい場合はチェックを外すことをおすすめします。 f:id:OGOG_Ogura:20190917141757p:plain

マスターデータは既に各辺にクリース情報が設定してあり、SubSurfを使用しても見た目に違和感がないように調整してあります。辺のクリースを変更すると見た目が崩れる場合がありますのでご注意ください。

※辺のクリースとは、細分割時になめらかな曲線にするか、尖ったエッジを維持するかの割合のことです。辺のクリースを+1.0にした場合、細分割されてもその辺は丸まらずにシャープな辺となります。


VRMについて

同梱VRMファイルの編集や軽量化についての情報です。

VRMを編集したい

VRMを編集したい場合、モデルのメッシュを直接編集する作業が発生しない改変であれば、UnityEditor上で可能です。

まず、UniVRMのunitypackageを入れたプロジェクトを用意してください。

方法1

Assetsフォルダ以下にVRMファイルをドラッグ&ドロップすると、Prefabが生成されます。
Prefabをシーン上に配置して、インスペクタから設定が行えます。

方法2

VRM/Lilou_SetUp_forVRM.unitypackageをインポートすると、付属VRMモデルを書き出すのに使ったアセットが読み込まれます。
Assets/OguLabo/Lilou/Scene/VRMSetUp.unityのシーンを読み込むと、モデルの情報を編集できるようになります。


Unity上でできるのは

  • テクスチャやマテリアルの差し替え
  • 表情キーに登録するBlendShapeの組み合わせ
  • 目の可動範囲設定
  • 一人称視点・三人称視点でのメッシュの表示設定
  • メタデータの書き換え(規約の範囲内で設定すること)

このあたりです。メッシュ形状の変更などはBlender/Lilou_for_VRM.blendBlenderで編集してください。
VRMで使用できるシェーダーはStandardMToonUnlitなどと限られています。

中でもMToonはアウトライン、リムライト、MatCap、ノーマルマップ、UVスクロールアニメーション、Emissionなど設定が豊富なトゥーンシェーダーです。

VRMモデルの軽量化のコツ

BlendShape(シェイプキー)が含まれるメッシュは、なるべく別オブジェクトとして分離しておき、分割後、BlendShapeで頂点が移動しない方のオブジェクトのシェイプキーは削除しておくとVRMの容量が削減できてロードに時間がかからなくなります。
具体的には、顔(頭)と体のメッシュは別々のオブジェクトに分けておくといい感じです。

Lilou_for_VRM.blendVRM向けの構成になっています。
BlendShape(シェイプキー)が存在するのは「Head」オブジェクトのみなので、Headが独立しています。
f:id:OGOG_Ogura:20190917183712p:plain


VRChat向けデータについて

VRChat向けのデータの改変や出力方法、注意点などの情報です。

OculusQuest版VRChatで使用する

OculusQuest版VRChatでは、アバターの要件に一部制限があり、アバターの仕様によってアバターパフォーマンスランクが決められます。
付属しているUnitypackageのモデルはその中でも最も軽量なランクであるExellent判定となっています。

が、結構ギリギリなラインでの判定ですので、これ以上頂点数を増やしたり、アクセサリを追加するなどするとアバターパフォーマンスランクが下がってしまいます。
一定ラインの重さを超えてしまうと、自分のアバターが相手から見えなくなることもあります。

テクスチャの色変更や頂点数を変えないメッシュ形状の変更であれば大丈夫です。
ボーンや頂点数を追加したり、オブジェクトやマテリアル数が増えるとアバターパフォーマンスランクが下がります。

テクスチャを改変する

本モデルは、マスターデータは複数のパーツ別テクスチャに分かれていますが、Quest版VRChat向けモデルはマテリアルやテクスチャが1つにまとめられています。

テクスチャの改変を行いたい場合

  • A: パーツ別テクスチャを編集し、パーツやマテリアルが分かれたままexportする
    (画像編集難易度:低 Blender操作難易度:低 モデルの負荷:高)
  • B: 1枚にまとまった画像を直接改変する
    (画像編集難易度:高 Blender操作難易度:低 モデルの負荷:低)
  • C: パーツ別テクスチャを1枚の画像にまとめて出力する
    (画像編集難易度:低 Blender操作難易度:高 モデルの負荷:低)

という主に3種類の改変方法があります。
Aの場合はQuest版VRChatを利用する場合はおすすめしません。 Skinned Mesh Renderer の数が7程度に増え、アバターパフォーマンスランクが Very Poor になってしまいアップロード不可になります。(PC版は Medium ランク程度となり、アップロードは可能)

Cの場合は小さい画像を編集する必要がないため、理想的な見た目を作りやすいです。
その分手順が複雑になるため、こちらは別途記事を用意しました。
https://ogog-ogura.hatenablog.jp/entry/2019/09/17/190406

Quest版VRChat向けにモデルを書き出す時の注意

Quest版VRChatはモデルの制限が厳しく、特にオブジェクトやマテリアル数の制限が厳しいです。
モデルを書き出す時は、必ず一つのオブジェクトに統合してFBXを書き出してください。オブジェクトをShiftキーなどで複数選択してからCtrl+Jで統合できます。

ここは VRMの軽量化と相反する概念 になるので覚えておくとちょっと便利です。

  • Quest版VRChat:オブジェクトを一つに統合しないとアバター制限に引っかかる
  • VRM:シェイプキーを持ったオブジェクトとそうでないオブジェクトを分けておくとファイルが軽くなる

Lilou_for_QuestVRC.blendがQuest版VRChat向けの構成になっています。
こちらはVRM向けのデータとは異なり、すべてのメッシュが「Body」に集約されています。 f:id:OGOG_Ogura:20190917183831p:plain

VRChatにアップロードする際は、Quest用ならBuild TargetをAndroidにSwitch platformするのをお忘れなく。


疑問・質問

疑問・質問などはTwitterマシュマロにどうぞ。