takeda_san’s blog

KotlinとVRを頑張っていく方向。

リアアリスさんをclusterに連れて行こう

きっかけ

リアアリスさんかわいい!8/31までセール中!買おう!今!

booth.pm

とは別に、clusterのカスタムアバター制限をクリアするためにちょっと手を加えた手順をメモ。
毎回この手の変更は手順忘れて、古文書解読みたいになるので忘れないうちに。

f:id:takeda_san:20200826231845p:plain

とりあえずアップロードしてみよう

有難いことにVRM形式のファイルが入っているので、それをそのままアップロードしてみましょう。

f:id:takeda_san:20200826232437p:plain

というわけで、無事制限に引っ掛かりましたので対応していきましょう。
ちなみに制限についてのページはこちら。

カスタムアバターの制限 – ヘルプセンター | cluster(クラスター)

対応しましょう

参考までに今回使ったものの各種バージョンはこちら。 バージョンはメジャー部分が同じなら、それほど気にしなくてもいいかも。
VRMの生成は先達がたくさんいると思うので、今回はBlenderの操作を中心に書きます。

Blender v2.83.4
Unity 2018.4.20f1
UniVRM v0.57.1
リアアリス ver2.0

cluster側の制限はブログ投稿時点でのものを元にしています。

morph Target対応

特に決まりはないのですが、エラーの上から対応していきましょう。
morph TargetとはBlenderで言うところのShape Keyです。

リアアリスのBlenderファイルを開いて、Bodyを選択。
逆三角形のObject Data Propertiesを選択。
Shape Keysの欄にずらりと並ぶモーフ用の設定。
沢山あるのはありがたいのですが、今は制限クリアのために悲しみの涙を流しながらいくつか削除しましょう。

f:id:takeda_san:20200826234011p:plain

先頭にvrcとあるものはその通りVRChat向けのShape Keyなので消しても、それほど影響ありません。
(後々ほかのShape Keyで代用できるので)

現在、83個で64以下にするのが目標なので19個消せばよさそうです。
ちょうど、先頭にVRCないしvrcが付いたShape Keyが19個あるので、削除します。
これでmorph Targetは対応OK。

polygon対応

次にpolygon数の制限対応。
ここが一番大変かつ、苦しい作業です。

現在、ポリゴン数が56162で、制限が32000以下。
かなりのオーバーです。
まずは、ポリゴン数をBlender内で確認してみましょう。
右下のTrisの数値が、clusterでpolygonと書かれている数です。

f:id:takeda_san:20200826235219p:plain

して、どのようにポリゴンを減らすかというと、まずカワイイお洋服や小物をパージしていきます。
それでも足りないので、追加で体部分のポリゴンを全体的に減らして調整します。
こんなカワイイお洋服を削除するなんて…なんて…酷なことを…
ごめんなさい、私の技術が至らないばかりに…
悔しさから、握りしめたこぶしから血が流れますが、それでも制限をクリアするために頑張りましょう。

今回は、以下を号泣しながら削除します。
特に上着のWearはポリゴン数が多いので、ほぼ削除必須のような気がします。

f:id:takeda_san:20200827000312p:plain

ここまででポリゴン数 37180。
もう一息です。

f:id:takeda_san:20200827000600p:plain

あと影響を抑えつつ、大きくポリゴン数を削減できるのは、体(Body2)のメッシュです。
モディファイアで全体的にポリゴン数を調整していきます。

スパナのアイコンからAdd Modifier->Decimateを選択。

f:id:takeda_san:20200827000932p:plain

RatioをTrisの値が32000以下になるまで下げていきます。
今回は0.675にしました。

f:id:takeda_san:20200827001227p:plain

うまいことポリゴン数を削減できたのでDecimateのモディファイアをApplyしたいのですが、メッシュにShape Keyがあるとエラーが発生して適用できません。
よくよく考えればそれはそうなのですが、メッシュを動的に変形させるShape Keyとポリゴン数を減らすDecimateは両立できません。

Modifier cannot be applied to a mesh with shape keys

f:id:takeda_san:20200827001659p:plain

なので、Body2のShape Keyを適用・削除してから、改めてApplyしましょう。

Shape Keyの適用と削除

Body2にはBasisの他に2つのShape Keyが設定されています。

f:id:takeda_san:20200827001917p:plain

それぞれ、服を着たとき、靴を履いた時に中の体部分を縮小して服の外にはみ出さないようにするシェイプキーです。
自作モデルを作ったときに服の外にどうしても体のメッシュがはみ出てしまって、見えない部分をまるごと削除していたのですが、なるほどこんな方法があるんですね…
今回は、このメッシュが縮小されている状態でメッシュを固定します。

TabキーでEdit Modeにして、Shape KeysのBasisをクリックします。

f:id:takeda_san:20200827003406p:plain

この状態で下段のVertex -> Blend From Shapeを選択。

f:id:takeda_san:20200827003600p:plain

右下にスッっとBlend From Shapeというダイアログがでるので、MeshDelete_For_Innerを選んで、Blendを1に指定します。
Tabキーを押して、変更を確定します。

f:id:takeda_san:20200827003808p:plain

これでBasisにMeshDelete_For_Innerの変化が合成されました。
MeshDelete_For_Innerを削除しても、上半身部分のメッシュが縮小されたままになっていることが確認できると思います。
MeshDelete_For_Shoesも同じ手順でBasisに合成します。
最後にBasisを削除します。
これで体部分のメッシュを縮小した状態のままShape Keyをなくすことができました。

f:id:takeda_san:20200827004207p:plain

DecimateのモディファイアのApply

新ためて、DecimateのモディファイアをApplyします。
ここまででpolygonの制限は対応OK。

f:id:takeda_san:20200827004338p:plain

joint対応

jointは、Blenderで言うところのBoneです。
現在83ですが、64以下にする必要があります。

先ほどメッシュを削除した部分のBoneを中心に削除して対応しましょう。

  • Ribbon
  • Hat
  • Skirt
  • usamimi
  • String
  • Bust
  • Hip

などを削除。
(Edit Modeでxキーで削除です)

右下のBonesが128以下になるまで削除していきます。

f:id:takeda_san:20200827005341p:plain

これでjointの制限は対応OK。

Fbx形式でエクスポート

ここまでで、Blenderの作業はおしまいです。
次はUnityでの作業なので、Fbx形式でエクスポートしましょう。
特別なことはなくVRChatとかのエクスポート設定と同じで問題ないです。

f:id:takeda_san:20200827005929p:plain

f:id:takeda_san:20200827010031p:plain

Texture対応

ここからは、Textureの対応です。
clusterのエラーリストのこの辺です。

f:id:takeda_san:20200827005701p:plain

materialのエラーを飛ばしてますが、mesh削減の時に小物が減ってUnityに設定されるマテリアルも減ったので何もしなくても対応OKになります。

これはリアアリスのTexturesディレクトリの中の画像をそのまま、2048*2048pxに縮小します。
ペイントでもいいですし、気になる方はGIMPとかで縮小してください。
形式はPNG指定なので要注意。

f:id:takeda_san:20200827010451p:plain

後ほどUnityでTextureを設定するときに、この縮小した画像を使用します。
ここまでで、下準備は完了です。
VRM形式のファイル作成に移ります。

VRMファイル作成

VRMファイルの作成は、先人たちの素敵な軌跡があるので、そちらを参照していただくとして…

keiki002.com

揺れ物やマテリアルの設定はイチからやり始めると時間がかかるので、付属のVRMファイルを読み込んで参考にしつつ進めましょう。

ツールバーVRMからImportを選んで、VRMを読み込んでシーンに配置して設定を感謝の気持ちとともに拝見しましょう。

f:id:takeda_san:20200827011147p:plain

そんなこんなでアップロード成功。

f:id:takeda_san:20200827011417p:plain

隣の自作モデル(160cm)と比べて身長が低めですね。
かわいい。

参考にさせていただきました

blender 2.8でポーズや表情を付けたモデルをzbrushへ持っていく方法 | 室蘭在住ganminのブログ

【Unity】FBXアバターをVRMへ変換する方法のご紹介! | ケーキのPC情報集会所