チュートリアル / Mayaで始めるゲーム用ローポリキャラモデル シーズン2~最新ゲーム開発環境に即応したモデリング手法を伝授~
第6回:セットアップと最終調整
- Maya
- ゲーム
- コラム
- チュートリアル
- マテリアル・シェーダー・UV
- モデリング
- 学生・初心者
はじめに
こんにちは、高部(たかべ)と申します!
シーズン2の最終回である6回目は、モデルの表情作成・VRChat用のセットアップ・ブラッシュアップを行い、モデル完成となります。
今回は以下のサンプルデータを付属しています。
・モデルデータ(Mayaシーンデータと.fbx)
・モデルのテクスチャ(.psd/.png)
・UnityPackage(Unityでセットアップ済みのモデルが確認できるファイル。使い方は後述の「UnityPackageの使い方」を参照してください)
6回目もくじ
・前提
・UnityPackageの使い方
・Mayaでの残作業概要
-- バッグの作成
-- ブレンドシェイプの作成
-- 表情の作成
・Unityでの作業概要
-- 準備
-- 揺れ物の設定
-- ブレンドシェイプの設定
-- 表情の設定
-- その他の設定
・最終調整
-- デザインとの比較
-- テクスチャ・シェーダー関連
-- ウェイト・PhysBone(揺れ物)関連
-- VRChatセットアップ関連
・完成
・6回目のまとめ
・あとがき
前提
今回は、モデルの表情作成やブラッシュアップを中心に紹介しつつ、VRChat用のセットアップを行います。VRChat用のセットアップについて、すべて紹介するにはボリュームが多く、かつ本コラムはMayaをメインで紹介するコラムであるため、セットアップ詳細の紹介は割愛します。セットアップの詳細については「VRChat/自作アバター/アップロード」などで検索をかけてみてください。有志の方が書かれている記事や、セットアップ用に作られたツール等を見つけることができます。
UnityPackageの使い方
今回のサンプルで配布しているUnityPackage(chairo_ver.1.0.0.unitypackage)は、以下の手順でUnityに読み込みと、Unityでの表示およびVRChatへのアップロードができます。
◆⓪
前提として、VRChatに登録した直後は、VRChatへモデルのアップロードはできません。VRChatには「ユーザーランク」というものがあり、このユーザーランクが「Visitor」から「New User」以上になることで、モデルのアップロードができるようになります。ユーザーランクはVRChatをプレイすることにより上がっていきます。
モデルをVRChatにアップロードせず、Unityで確認するだけであればユーザーランクは問われません。ここでのUnityPackageの使い方は、VRChatのユーザーランクがモデルのアップロード可能な「New User」以上であり、最終的にVRChatにモデルをアップロードすることを前提に記載していきます。
◆①
【リンク先:https://unity.com/ja/releases/editor/archive】
上記からUnity(※バージョン2022.3.6f1推奨)をインストールします(基本は無料)。
※バージョンを上記【2022.3.6f1】に指定している理由
VRChatでモデルを使用するためには、VRChat指定のバージョン(2024年5月現在では2022.3.6f1)でセットアップを行う必要があるためです。また、liltoonシェーダーでも2022.3.6f1がサポートされています(2024年5月現在)。
◆②
【リンク先:https://booth.pm/ja/items/3087170】
上記から、今回のモデルで使用しているliltoonシェーダーをダウンロードします(基本は無料)。手順④にて「lilToon_1.X.X.unitypackage」(Xはバージョンの数字です)をUnityでインポートするため、ダウンロード後はわかりやすいところに置いておいてください。
◆③
【リンク先:https://hello.vrchat.com/】
VRChatを利用するためにはアカウント登録をする必要があります。アカウントを持っていない方は、上記のリンクの右上【Login】から新規アカウントを登録してください。⓪で書いたように、VRChatのユーザーランクが「Visitor」のままではアバターをVRChatにアップロードできませんが、「Visitor」のままでもUnity内でモデルを見ることは可能です。
◆④
【リンク先:https://vrchat.com/home/download】
アカウント登録後、上記のリンクからログインを行います。ログイン後は【Download the Creator Companion】から「Creator Companion」をダウンロードします。【下図↓】
◆⑤
ダウンロードしたCreator Companionを起動します。まず、右上の【Create New Project】をクリックします。【下図↓】
◆⑥
【Unity 2022 Avatar Project】を選択のうえ、【Project Name】(任意)と【Project Location】(任意)を決め【Create Project】をクリックしてください。【下図↓】
◆⑦
この画面になりますので、少し待ちます。【下図↓】
◆⑧
この画面になったら、そのまま右上の【Open Project】をクリックします。【下図↓】
◆⑨
Unityの起動が始まりますので、少し待ちます。【下図↓】
◆⑩
Unityが開いたら、上部の Assets→Import Package→Custom Package… から、②でダウンロードした「lilToon_1.X.X.unitypackage」を選択します。【下図↓】
◆⑪
「lilToon_1.X.X.unitypackage」を選択すると、「Import Unity Package」というウィンドウが出るので、そのまま右下の「Import」をクリックします。【下図↓】
◆⑫
Projectウィンドウに liltoon が追加されればliltoonのインポートが完了です。【下図↓】
◆⑬
⑩にて「lilToon_1.X.X.unitypackage」をインポートした手順で、「chairo_ver.1.0.0.unitypackage」もインポートします。「chairo_ver.1.0.0.unitypackage」も「Import Unity Package」のウィンドウが出るので、そのまま「Import」をクリックします。【下図↓】
◆⑭
Projectウィンドウに shadersample_202405 が追加されればインポート完了です。【下図↓】
◆⑮
shadersample_202405 がProjectに追加されたら、shadersample_202405 をHierarchyにドラッグアンドドロップします。すると、Scenesにモデルが表示されます。【下図↓】
◆⑯
Scenesにモデルが表示されたら、Hierarchyに初めからある「Untitled」を右クリックしてRemove Sceneで消しておきます。これは、SampleSceneのライトとインポートしたシーン(shadersample_202405)のライトが共存することを防ぐためです。【下図↓】
◆⑰
Directional Lightを回転させてモデルを見る方法を記載します。まず以下の画像の部分から、Animation ウィンドウを開いてください。【下図↓】
◆⑱
Hierarchyから shadersample_202405 の Directional Light を選択すると、Animation ウィンドウにキーが打たれた状態が表示されます。この状態でAnimationウィンドウの縦の白いバーを左右に動かすことで、Sceneウィンドウのライトが回転します。ライトを回転させて、影や光の遷移を見てみてください。【下図↓】
◆⑲
VRChatにこのモデルをアップロードする手順を紹介します。VRChat SDK → Show Control Panel をクリックし、VRChat SDK ウィンドウを表示します。【下図↓】
◆⑳
Authentication タブで、Username/Email と Password を入力し、Sign In をクリックしVRChatにサインインします。【下図↓】
◆㉑
サインイン後は Builder タブにて、
・Selected Avatar が「model_chairo(VertexColorBaked)」になっていることを確認
・Name入力(名前は任意)
・Thumbnail(サムネイル)設定:【Capture From Scene】をクリックするとSceneビューに表示されているモデルが表示されるので、好きな角度にして【Capture】をクリックするとサムネイルが設定できます。
・Online Publishing の下の □ にチェックマークを付ける
上記を行うと、【Build & Publishing】がクリックできるようになります。モデルの設定は、unitypackageをインポートした段階で終了しているため、【Build & Publishing】をそのままクリックしてください。セットアップが終わったモデルがVRChatにアップロードされます。【下図↓】
◆㉒
モデルのアップロードが正常に完了すると「Upload Succeeded!」と表示されます。これでアップロードが完了しました。VRChat上でモデルを確認してみましょう。【下図↓】
Mayaでの残作業概要
バッグの作成
デザインで描かれているバッグのモデルを作成し、コラム5回目と同じフローでテクスチャを作成・シェーダーを設定しました。また、バッグのジョイントも追加しました。【下図↓】
ブレンドシェイプの作成
コラム4回目の「前回からの形状調整」で少し触れたように、素体に服を着せているときは「素体をブレンドシェイプで小さく変形させて、素体が服の上に出ないようにする」という設定を行います。それ以外にも、素体と服に以下のブレンドシェイプを作成しました。どのようなブレンドシェイプを作成しているかについては、サンプルのMayaシーンデータ内の該当のブレンドシェイプとターゲットモデルをご覧ください。【下図↓】
ブレンドシェイプ名 | 内容 |
---|---|
BS_cloth_leg_ONcloth | ニーソックスの形状調整を行うブレンドシェイプ |
BS_cloth_base_ONbag | バッグを背負ったときの服の形状調整を行うブレンドシェイプ |
BS_body_ONcloth | 素体が服の上に出ないようにするブレンドシェイプ |
表情の作成
VRChatでは、モデルの表情をプレイヤーが自由に切り替える設定を行うことができます。表情はキャラクターの魅力を引き出してくれるため、VRChatでモデルを使用するにあたり表情の作成と設定はほぼ必須となります。表情はMayaのブレンドシェイプで作成し、Unityで設定を行います。VRChatの表情は基本的に「目」と「口」を別々で持っておくと設定がしやすくなるため、Mayaでも「目」と「口」を別々作成しています。【下図↓】
実際にどのような表情を作成しているかは、サンプルのMayaシーンデータのシェイプエディタをご確認ください。
Unityでの作業概要
Mayaでの作業が終わったら、Unity上でVRChat用のセットアップを行います。そのフローの概要を抜粋して紹介します。セットアップの詳細については「VRChat/自作アバター/アップロード」などで検索をかけてみてください。有志の方が書かれている記事や、セットアップ用に作られたツール等を見つけることができます。
準備
Mayaでバッグを作成、ジョイント調整、ブレンドシェイプ・表情を新規作成したので、fbxを書き出してUnityに反映し、Unityで設定するモデルを最新のものにしておきます。
揺れ物の設定
VRChatでは「PhysBone」「PhysBoneCollider」というものを設定することで、揺れ物の設定ができます。PhysBoneColliderは、PhysBoneの衝突判定に使用するものであり、PhysBoneCollider単独では使用しません。まずPhysBoneのみで揺れ物を設定していき、どうしてもPhysBoneだけでは設定が上手くいかないときにPhysBoneColliderを使うとよいでしょう。PhysBone/PhysBoneColliderの使い方やパラメータの設定については「VRC/PhysBone/設定」などで検索してみてください。
PhysBoneは、UnityのSceneビュー上で直感的に揺れ物の角度制限を設定して確認できるため、とても使いやすくなっています。【下図↓】
※Gravityパラメータについて
PhysBoneのGravityパラメータでは、そのジョイントにかかる重力を設定できます。Gravityの値を大きくしすぎると自重での変形が大きくなってしまい、デザイン画とモデルの雰囲気が大きく乖離してしまいます。長い髪の毛・スカートなどがそれに該当しやすいです。Gravityを設定するときは注意する必要があります。【下図↓】
ブレンドシェイプの設定
Mayaで作成したブレンドシェイプをUnityで確認・設定します。ブレンドシェイプを設定したオブジェクトには、UnityにおいてはInspectorの「BlendShapes」タブが作成されています。【下図↓】
今回のモデルでは
・服を着ているとき→服に隠れた部分の素体のボリュームが0になるように
・ニーソックスを履いているとき→太ももの形状がへこむように
・リュックを背負っているとき→服の肩部分の形状がリュックに合うようにBlendShapesを設定しています。【下図↓】
表情の設定
Mayaでブレンドシェイプを用いて作成した表情を、Unityで設定します。Mayaでは目と口を別々に作成しているため、Unity上では目と口を組み合わせて様々な表情を作ることができます。【下図↓】
その他の設定
・立ちポーズ/座りポーズの設定
・指の形の設定
などを行い、VRChatで見栄えが良くなるようにしてセットアップはいったん完了です。立ちポーズ/座りポーズの設定、指の形の設定については「VRChat/Avatar3.0/使い方」などで検索すると、詳しい設定方法が見つかります。
最終調整
ここまでUnityでモデルのセットアップを行いました。最後に、VRChatにモデルをアップロードして隅々までモデルを確認し、気になる部分をブラッシュアップしていきます。私が最終調整を行う場合は、VRChat内でモデルのチェックを行い、気になった部分を全て書き出したり写真を撮ったりして直す場所のメモを取ります。直したい部分を洗い出せたら、
・最優先で直す(例:一目見てわかる明らかな不具合・VRChatにアップロードできないなどの深刻なエラーなど)
・できたら直す(例:優先して目が行きやすい顔や、手まわりの造形など)
・直すのに時間がかかりすぎるので余裕があれば直す(例:細かいウェイト・作業の巻き戻りが大きく発生してしまう内容など)
・いったん保留とする(例:直さなくてもそれほど気にならない部分・今後検証したい内容など)
・仕様とする(例:特殊なポーズをとったときに発生する服のめり込みなど)
という形で分類を行い、直す項目に優先順位をつけてとりかかります。
Maya(とPhotoshop)とUnityとVRChatを行き来しながら調整と確認を繰り返す関係上、非常に手間と時間がかかる工程となるため、全ての不具合に対応するととても時間がかかってしまいます。そのため、直す不具合の優先度をつけることは非常に大切です。最終調整で洗い出した内容は、直す・直さなかったにかかわらず、次のモデル作成の糧となってくれます。「調整内容」「調整前の状態」「調整後の状態」「調整を行わなかった理由」などをメモしておくとよいでしょう。
以下で、私が洗い出しを行った調整したい項目の一部を紹介します。
デザインとの比較
「デザイン」と「ポーズをとらせたモデル」を比較して調整していきました。最優先するべきは「使用想定(今回はVRChat)での見た目」です。第3回の「実機出しでの調整」で顔の調整を行っているように、今回は実機での見た目と仕様を優先したため、調整後でもデザインとの乖離がいくつか発生していますが仕様としています。以下に「調整した箇所」「デザインとモデルの乖離があるところとその理由」も記載していきます。
※ライティングの関係上、影の形などはどうしてもデザインとモデルで差ができてしまうため仕様としています。
★調整したい箇所【下図↓】
①舌の色がデザインより少し濃い
②服の影色が全体的にデザインより濃い
③髪の末端がデザインより濃い
④靴が少し小さく感じる+靴が全体的に暗いので靴の情報量が足りないように見える
⑤赤色の彩度がデザインと比較して少し低く見える
⑥全体的に見て、ベーステクスチャの色見が異なるところがある
⑦口がデザインと比較して形が違う
★調整後と、デザインとモデルで乖離が大きいが仕様とした状態【下図↓】
①【アウトラインの太さ】:全体的にデザインに比べてモデルのほうがかなり細くなっている
↑(理由)デザインと同じ太さのアウトラインにすると、VRで確認したときにアウトラインが太すぎる印象となったため細目に調整しています。今後はデザイン段階で細目のアウトラインを意識する必要がありそうです。
②【顔のパーツと髪の比率】:デザインとモデルで微妙に異なる
↑(理由)本来、顔と顔周辺の比率は完全にデザインに合わせるべきですが、コラム第3回「実機だしでの調整」を行い、VR上で見た時に見栄えがよい比率としたためです。
③【リュックのベルト】:モデルでは穴やバックルが追加されている
↑(理由)デザイン作成時点でしっかりと構造を意識せずに描いたためです。モデルを作成しながら説得力のある形にしていきました。
④【腕の長さ】:右手がデザインより少し短くなっている
↑(理由)デザインの時点で右手が左手より長く書かれていたためです。次回デザインを作成するときは作成段階で腕の長さが左右で同じになっているか確認・Tポーズのデザインを作成するなどで対応したいです。
⑤【シャツの手首のすそ】:デザインでは書かれていないがモデルでは作成してある
↑(理由)モデルを作成していて、袖の中が少し情報量が不足していると感じシャツの裾を追加したためです。
⑥【スカート上のベルトの構造】
↑(理由)立ち絵のベルトの構造が不明瞭だったためです。モデルを作りながらいい感じになるように調整を行いました。
⑦【シャツの襟の色】:モデルのほうが暗くなっている
↑(理由)デザインの段階で、影色の指定があいまいだったためです。今後はデザイン作成段階で影の色もきちんと指定しておきたいです。
テクスチャ・シェーダー関連
①脚の陰や、首周辺のタッチの線が濃く太い印象がしたので、薄く細く調整
②手の表面と裏面で色味が違いすぎたので、同じくらいに調整
③髪の毛の筋の影が濃く気になったため、薄く調整
④前髪の落ち影が強いため薄く調整
⑤ソックスの陰が強いため、影マスクを調整
⑥服の正面にあるタッチ線が濃く太いので、薄く調整
⑦リュックのベルトにも頭の落ち影を追加する
⑧爪色がアシンメトリなのでテクスチャを見直す
⑨手首に意図しないノイズがあるので取り除く
⑩赤い部分とリュックにもタッチ線を入れて整合性をとる
⑪首下のラインを薄くしたり間引いたりして自然なタッチ感を出す【下図↓】
ウェイト・PhysBone(揺れ物)関連
①リュックのベルトのがゆがんでいるので、ポリゴンの割りを増やしたりウェイトを調整したい
②ネクタイの揺れ方がしなるようにネクタイのウェイトを調整
③アンテナが頭を貫通するため、頭にコライダーを追加する
④太ももにコライダーを追加して、足が服に埋まらないようにする
⑤前かがみになったときに胸の下にめり込みが発生するので、ウェイト確認
⑥走ったときに、帽子とバッグがカクカクするので、physboneの角度制限をAngleからHingeに変更
⑦ジャンプして降りるときに髪の跳ね上がりが大きすぎるので、角度制限を強めにかける
⑧耳が不自然な動きになるので、physboneの角度制限をAngleからHingeに変更
⑨袖のウェイトが少し怪しい
⑩髪の中身が見えているので、角度制限をかけることで見えないようにする
⑪肘のウェイトを滑らかにする
⑫スカートと自分の手が反応しないようにして、スカートがめくれないようにする
⑬角度制限を強めにかけて、スカートの跳ね上がりを抑える
⑭髪の毛を触れるように設定する【下図↓】
VRChatセットアップ関連
①indexコントローラーを使用した場合の指の設定ができていないので行う
②手のidleの形がVRChatの初期アニメーションのままなので設定してあげる
③「表情の口」と「リップシンク」が競合しているので、競合を防止する
④liltoonの機能でアウトライン用モデルを作成し、アウトラインを整える【下図↓】
完成
こうして、様々な視点から何度も確認と調整を行いモデルが完成しました!今回のモデルはVRChat用として作成を行っているため、
・VRChatでの見栄えを最優先に作成と調整を行う
・その上で、自分のデザインをできるだけ再現する
ということを念頭に置いています。モデルを使用想定の環境で何度も確認し、しっかりとクオリティを上げることが何よりも大切です。
最後に、VRChat内で撮影したモデルを使っていろいろな見せ方の例を挙げてみます。今回レイアウトに使用したモデルは加筆修正を行っていません。シェーダーで絵作りをしっかりと行うことができれば加筆修正なしでもいい感じに見えてくれるでしょう(ポートフォリオなどにモデルを掲載する場合は加筆修正をしたほうが見栄えがよくなると思います)。
コラム1回目に掲載したものです。
VRChat内にてフルトラッキング(全身を動かせる状態)で撮影しました。 立ちポーズは足元に落ち影を置いてあげるだけでもお手軽に接地感が出せるためおすすめです。
上半身をメインに集めてみました。表情と手の種類をいろいろ作ったのでせっかくなので見てもらいたく…このようなレイアウトも作ってみました。
ポスター風?にデザインしても面白いと思います。モデルの顔がアップになっても割といいテイストになってくれたので一安心です。シェーダーでの絵作りをしっかりやってよかったと思いました。
6回目のまとめ
・モデルは使用想定において見栄えが最もよくなるように意識して作成する
・モデルは使用想定においての確認と調整を繰り返し行うことで、さらにクオリティの高いモデルとなる
・ブラッシュアップを行う際は、項目に優先度をつけて優先度の高いものから取り掛かる
・モデルを完成まで作りきることこそが、モデリングのスキルアップに直結する
あとがき
これまでコラムを読んでいただきまして本当にありがとうございました!
Autodeskさんで書かせていただくコラムは今回が第2弾です。第1弾は2019年なので5年も前です。今2019年のコラムを見返すと、モデルのクオリティ・コラム内容ともにもう少し詰めたかったな…と感じました。これは逆に、私もこの5年間で成長できたのかなと前向きに捉えています。5年間でいろいろなモデルを仕事と趣味の両方で作ってきましたが、Autodeskさんのコラム執筆を通じて「考えながらモデルを完成まで作りきる」ことが大切だと再認識できたのはとても良い機会でした。
「モデルを完成まで作りきる」ことは、体力的にも・精神的にも思った以上に難しいです。モデルだけではなくイラストでもそうですし、全く別の事柄でも「最後までやりきる」ことの難しさは同じです。ただ、最後までやりきることこそが最大の上達方法だと私は思っています。「モデルを完成まであきらめずに作りきる」ことでの学びが、次のモデル作成、そしてモデリングの上達につながってくれるからです。
ぜひ完成まであきらめずにモデルを作りきることを意識してみてください!とはいえとても難しく、時間もかかるものです。無理せず、焦らず、ほかの方と交流しながら楽しく作っていきましょう!
それでは失礼いたします。(機会があれば)第3弾でお会いしましょう~!感想やご意見がございましたら、高部のX(旧Twitter)やfanboxなどに遠慮なくどうぞ!