Skip to content

Commit

Permalink
appu
Browse files Browse the repository at this point in the history
  • Loading branch information
huideyeren committed Dec 29, 2023
1 parent 81f0f3e commit 6e835e6
Show file tree
Hide file tree
Showing 18 changed files with 325 additions and 48 deletions.
1 change: 0 additions & 1 deletion catalog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ CHAPS:
- 6_vcc.re
- 7_vrc_essential.re
- 8_modern_plugin.re
- 9_gimmick.re
- 10_kisekae.re

APPENDIX:
Expand Down
54 changes: 47 additions & 7 deletions chapter/10_kisekae.re
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
= VRoidアバターで着せかえをする方法
= VRoidアバターで着せ替えをする方法

VRoidは基本的に服を着替えされられない前提で組まれているので、着せかえを実装することは容易ではありません
VRoidは基本的に服を着替えされられない前提で組まれているので、着せ替えを実装することは容易ではありません
しかし、着せ替えもできなくはないのです。
また、他のアバターの衣装をVRoidアバターに着せたり、VRoid衣装を他のアバターに着せたりすることもできます。

Expand Down Expand Up @@ -35,7 +35,7 @@ VRoidアバターは重くなるの承知でメッシュを分けると服を脱
//}

なお下着や水着の上半身はただ全体を縮めるだけだと鎖骨周りが不自然な場合があるので、その場合は適時パラメーターを調節することが必要になります。
ただし、この対策をしてしまうと服からはみ出るリスクもあるので、着せかえとはトレードオフになるリスクもありますので、どう着せるかの戦略をしっかり練っておく必要があるでしょう。
ただし、この対策をしてしまうと服からはみ出るリスクもあるので、着せ替えとはトレードオフになるリスクもありますので、どう着せるかの戦略をしっかり練っておく必要があるでしょう。

=== Blenderですること

Expand All @@ -59,12 +59,12 @@ VRMをVRChat形式にコンバートする際、何も設定しない場合に

その次に、そのメッシュをON/OFFできるように設定をする必要があります。
ギミックの設定のところで紹介したAvatarMenuCreater for Modular Avatarを使って、服のメッシュをオンオフできるように設定します。
これで動作を確認すると、VRoidアバターで服の着せかえができるようになります
これで動作を確認すると、VRoidアバターで服の着せ替えができるようになります

== Modular Avatarを使って複数のアバターを着せ替える

で、これまでは1種類の服を着せ替えることしかできませんでした。
しかし、Modular Avatarの力を借りれば、衣装さえ用意できれば着せかえができるということになります
しかし、Modular Avatarの力を借りれば、衣装さえ用意できれば着せ替えができるということになります
これに関しては@<bib>{no-rashomon}で紹介されている方法を持ちいるとうまくいくでしょう。
そのためには、同じ素体の衣装出力用VRMをもう一個作ってしまえばよいのです。
どうせ他のメッシュは消すので、ボーンを節約するために髪の毛はない方がよいでしょう。
Expand All @@ -78,18 +78,58 @@ VRMをVRChat形式にコンバートする際、何も設定しない場合に

で、UnityでこのVRMを取り込んだら、まずすべきは衣装以外のメッシュを消します。
その時活躍するのがMeshDeleterWithTexture@<fn>{mesh-deleter}です。

//image[mesh-deleter][ボディスーツの全体を縮める][scale=0.4]{
//}

まず、①で消したいメッシュを指定し、後は②でメッシュを上塗りして③で描き込むのを繰り返すだけです。
これが全て終わったら空っぽになったメッシュは削除します。
これで、服以外のメッシュをすべて消すと、服だけのPrefabが出来上がります。
なお、ボーンは現時点では敢えて消していません。
この際に、間違えてウェイトの乗っているボーンを消すと愉快なことになるのでご注意ください。

//footnote[mesh-deleter][https://booth.pm/ja/items/1501527]

//image[hashira][ウェイトの乗っているボーンを消してしまって愉快なことになった例][scale=0.6]{
//image[hashira][ウェイトの乗っているボーンを消してしまって愉快なことになった例][scale=0.3]{
//}

ただ、ボーンが多ければアバターに統合するのも難しくなってしまいます。
なにせ、Modular Avatarのオブジェクト数の上限は255個なので、それ以上オブジェクトが多くなるとこれ以上合成できなくなってしまうのです。
なので、いろいろと衣装を着せる際にはボーンを削る必要がありそうです。
そこで、AvatarOptimizerのUnusedBonesByReferencesToolを活用するなり、EditorOnlyのボーンを活用するなりする必要がありそうです。@<bib>{unused-bone}

で、服のメッシュだけのデータが出来上がったら、あとはModular Avatarで着せた上で、服のメッシュをON/OFFできるようにしてあげれば着せかえができるようになります。
で、服のメッシュだけのデータが出来上がったら、あとはModular Avatarで着せた上で、服のメッシュをON/OFFできるようにしてあげれば着せ替えができるようになります。

実際にModular Avatarを使って着せてみたのが次の写真になります。

//image[sailor-and-cheer][VRoidでのModular Avatar着せ替えの実例][scale=0.3]{
//}

上半身はセーラー服ですが、下半身はチアリーダーのユニフォームのスカートを着ています。
これはセーラー服のデータとチアリーダーのユニフォームを上下別々に切り替えられるように設定しているため、このようなことができます。

ということで、Modular Avatarを使えばVRoidアバターでも着せ替えができるのです。

== 【上級編】非対応衣装の着せ方

Modular Avatarの力を借りれば、非対応衣装を着せることも可能です。

//image[louisa-kikyo-china][桔梗ちゃん用衣装をVRoidアバターに着せた例][scale=0.3]{
//}

これは桔梗ちゃん用のチャイナ服をVRoidアバターに着せた例です。
この場合はボーン構造を桔梗ちゃんのものに合わせた上でキセテネ@<fn>{kisetene}を使ってサイズなどを大まかに調整し、Unityで微調整して着せています。
私が使ったキセテネはModular Avatar対応前のものでしたが、今はModular Avatar対応版@<fn>{kisetene-ma}が登場し、Modular Avatarで使えるようにPrefab状態の衣装をサイズ調整できるようになっています。
そして、これもチャイナ服の表示・非表示を切り替えるメニューを付けています。

//image[rusk-vroid][VRoid衣装をラスクちゃんに着せた例][scale=0.6]{
//}

同様に、ラスクちゃんにVRoid衣装を着せることも可能です。
これもボーン構造を合わせた後、位置やサイズなどを調整してというやり方は変わりません。
なお、こまどアバター@<fn>{komado-avatar}は素体が共通なので一度調整したPrefabを作ってしまえば、後はサイズに定数をかけることによって簡単に着せることができます。
そのため、VRoid衣装をこまどアバターに着せることができれば、あなたのぶいちゃライフは大きく広がるでしょう。

//footnote[kisetene][https://booth.pm/ja/items/2332420]
//footnote[kisetene-ma][https://booth.pm/ja/items/5057270]
//footnote[komado-avatar][こまどさんのアバター。ラスクちゃんやカリンちゃんなど人気の高いアバターが多い。]
21 changes: 20 additions & 1 deletion chapter/11_unity2022.re
Original file line number Diff line number Diff line change
@@ -1,3 +1,22 @@
= Unity 2022ヘ移行すると変わること

(書く)
つい先日、VRChatのSDKがUnity 2022に対応しました。
実際に環境自体はUnity 2022で動くようになっていたようですが、SDKの対応はまだまだという状態が進んでいました。
公式は早めの移行をお願いしていますが、まだまだUnity2022に対する対応は進んでいないのが現状です。

実際に多くの変更点があります@<bib>{takana}が、うれしいのはScaleの比率を固定することができるようになったことです。
特に、こまどアバターは多くの素体が共通で、スケールを変えるだけで他のこまどアバターに衣装を着せることができます。
その際に、XYZを個別に設定しなくてよくなったのです。
また、Androidで必須となる、テクスチャをASTC形式に圧縮するスピードが上がりました。
さらには、Asset Import Overridesの設定によってはインポート速度をさらにあげることができるようになりました。

しかし、Asset Import Overridesの設定で速度重視にしていると、Android向け環境で重要とされる画像の最適化が行われなくなってしまいます。
そのため、VRAM消費量は4倍になってしまうようです。

そして、一番大きな問題はmacのUnity 2022のApple Silicon版ではグラフィックエンジンがMetalに限られるようになったということです。
このため、私のmacBook Proではうまくアバターの制作ができなくなってしまいました。
これまでUnity 2019だったときは何とか作成できていたのですが、Unity上でのテストがうまく動かないなどの不都合が生じています。
長い通勤時間を利用して通勤電車の中でアバター改変を行う私にはかなり致命的でした。

しかし、全体的に動作は軽くなったように思います。
なので、うまく時間を確保しつつこれからの発展を注視していければと思います。
33 changes: 32 additions & 1 deletion chapter/12_vroid_beta.re
Original file line number Diff line number Diff line change
@@ -1,3 +1,34 @@
= 新しいVRoidの未来をベータ版で覗いてみる

(書く)
〆切も差し迫ったある日、VRoid Studioにアバターの着せ替え機能を実装するという発表@<bib>{vroid-beta}がなされました。
これは既にある3Dキャラクターのモデルをxavater形式と呼ばれる独自形式にしてVRoid上でxwear形式に変換した衣装データを着せられるようにする機能です。
実際にベータに応募してみたのですが、使ってみると現時点ではこれからであると言わざるを得ません。

まず、VRoid衣装は既存の衣装には一切着せることができません。
着せられるのはxwear形式に変換した衣装データのみです。
で、各ボーンを移動・回転・拡大・縮小させて着せていくことになります。正直、できることは現状キセテネとあまり変わらないのです。
なお、自動フィット機能である程度までは着せることができますが、そこから先は手動で行った方が確実です。
なお、VRoidアバターの着せ替えのために作ったVRoid衣装をxwear形式に変換したのですが、ラスクちゃんではうまく読み込めませんでした。
さらに、靴を読み込むことはできましたが、衣装内のアーマチュアにHipsのボーンがないと履かせられないのです。
しかし、UltimateKissmaちゃんの服をラスクちゃんに着せる@<fn>{rusk}ところはなんとかうまくいきました。

//image[rusk-kissma-vysyvanka][UltimateKissmaちゃんの服をラスクちゃんに着せる][scale=0.6]{
//}

//footnote[rusk][しかし、こまどアバターの胸に合わせることまではできませんでした……]

これが、VRoid衣装に対応してくれたらと思うのですが、VRoid衣装が通常の衣装より安い以上、クリエイターの制作意欲を奪わないようにという配慮がされているのだと思います。

また、Android対応のような軽量化は考慮されていません。
なので、出力されたアバターは実質PC専用と考えた方がよいでしょう。
さらに、ギミックなどに関しては別途仕込む必要があります。
なので、Blenderを使わなくてもUnityで何とかしなければいけないという現状は何ら変わってはいません。
VRM形式にもエクスポートはできますが、なんとバージョン1.0にしか対応していません。
Clusterを初めとして、VRM形式は多くのソフトウェアやプラットフォームが採用していますが、バージョン1.0への対応は進んでいないのが現実です。
なので、VRChatのアバターをClusterで使うということもできない状態です。
まだベータ版ということもあり、現時点では、まだまだ使うのは難しいと思います。

しかしながら、VRM形式に出力できるということはClusterにアバターをアップロードしやすくなるということでもあります。
そして、それらの機能は要望ベースでいずれ実装されることでしょう。
となると、いつもの姿でVRChat以外の場にも行けるということになります。
なので、私は楽しみにVRoidの成長を見守りたいと思います。
27 changes: 24 additions & 3 deletions chapter/13_postscript.re
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
= おわりに

以上、VRoidアバターをAndroidVRChatでも使えるようにする方法を紹介してきました。
設定を使い回すことに慣れれば、いろいろなバリエーションを作ることができるでしょう。
みなさんのVRChatライフがVRoid Studioでさらに豊かになることを心から祈っております。
C102に出した本を全面改定したのですが、なんと脱稿がコミケ1日前という極道入稿になってしまいました。
さらに、直前でVRoidの着せ替え機能対応など大変更が相次ぎ、VKetRealの準備も重なり大わらわになってしまいました。
そのような中で、よくここまでできたなと思います。

着せ替え機能の対応を考えると、VRoidエコシステムは大きな変革の時期に来ているのだと思います。
特に、VRM出力が容易になったということはVRChat以外でも使い慣れたアバターを使いやすくなったということでもあります。
そうなると、他のVRSNSにも行きやすくなり、VRChatにユーザーが集中する事態も変わっていくかもしれません。

その中で、今回はAndroid対応に絞った内容からVRoidアバターの作り方全般へと内容を大きく改変し、VRoidを使ったアバター制作を紹介できるよう心がけました。
また、モダンなツールチェーンに対応することで機能性に関しても向上できたのではないかと思います。
そして、VRoid製アバターで着せかえができなかったという問題も、Modular Avatarの力で解決することができました。
そういう意味では、VRoidアバターを使うにおいて進歩できたのかなと思っています。

さて、私がこの本を書こうと思った理由としては、海外の違法アバター問題があります。
海外で違法にコピーされたアバターが海外の通販サイトで安売りされていたことがありましたが、VRoidによるアバター制作が気軽にできるようになればより低コストでアバターを作れるようになります。
その結果、違法コピーを減らすことができるのではないかと思っています。
私は「ラスクちゃんの人」と誤解されるほどラスクちゃんを話題にしていますが、本来はVRoidアバターの人です。
しかし、ラスクちゃんへのリスペクトは忘れるわけにはいきません。
海外で違法コピーされたラスクちゃんが使われているのを見て、私は胸が痛みました。
VRoidがあれば、気軽にアバターを作れます。
その手法を、広めたかったのです。

そして、今回VRoidとラスクちゃんが交わる点が生まれました。
これが、着せ替え機能です。
25 changes: 1 addition & 24 deletions chapter/1_limit.re
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,7 @@ VRChatのAndroid版でアバターを使うには制限@<bib>{VRCQuestLimit}が

で、公式の情報@<bib>{VRCPerformanceRanks}によれば、Android版アバターのランク付けについては以下の通りとなっています。

//table[AndroidAvatarRanks][Android版のアバターランク]{
//tsize[|latex|30,20,20,20,20]
Avatar Quality Excellent Good Medium Poor
--------------------------------------------------------------------------------------
Polygons 7,500 10,000 15,000 20,000
Bounds Size1 2.5m x 2.5m x 2.5m 4m x 4m x 4m 5m x 6m x 5m 5m x 6m x 5m
Texture Memory 10 MB 18 MB 25 MB 40 MB
Skinned Meshes 1 1 2 2
Meshes 1 1 2 2
Material Slots 1 1 2 4
Animators 1 1 1 2
Bones 75 90 150 150
PhysBones Components2 0 4 6 8
PhysBones Affected Transforms2 0 16 32 64
PhysBones Colliders2 0 4 8 16
PhysBones Collision Check Count2 0 16 32 64
Avatar Dynamics Contacts2 2 4 8 16
Particle Systems 0 0 0 2
Total Particles Active 0 0 0 200
Mesh Particle Active Polys 0 0 0 400
Particle Trails Enabled False False False True
Particle Collision Enabled False False False True
Trail Renderers 0 0 0 1
Line Renderers 0 0 0 1
//image[android-limit][Android版アバターのランク付け][scale=0.4]{
//}

なお、Android版で初期状態で見えるランクはMediumであり、使っているアバターがMediumランクに対応していればAndroidの人から初期状態で見えることになります。
Expand Down
9 changes: 6 additions & 3 deletions chapter/7_vrc_essential.re
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
= Unityよ、私は帰ってきた!!

そしてUnityの作業です。
ここから先は慣れていることも多いと思いますので多くは語りませんが、Unityですべきことが2つあります
ここから先は慣れていることも多いと思いますので多くは語りませんが、Unityですべきことが2つありました……が、一つは過去のものになりました

== VRMの状態で表情を設定する
== VRMの状態で表情を設定する(非推奨)

まず、UnityにVRMをインポートしてそれをそのままVRChat用にコンバートしてはいけません。
なぜなら表情が設定されていないからです。
Expand All @@ -15,7 +15,10 @@ VRMアバターのBlendShapeを開き、それぞれの表情にBlendShapeを設
//}

なお、シェイプキーがあればVRChat形式にコンバートした後で後述するFaceEmoというツールで表情を設定することもできます。
これを使うとVRM形式とは別に表情を作れるのでいろいろ表情を追加できるでしょう。
というか、VRM形式とは別に表情を作れたり表情の合成を行ったりシェイプキーが同じ他のアバターに表情のデータを渡せたりとこっちの方が楽です。
特に、アバターに着せかえを仕込まずに衣装別にアバターを作るという場合は大活躍します。
是非ともFaceEmoを使いましょう。
FaceEmoについては後述します。

== VRChatアバター形式にコンバートする

Expand Down
Loading

0 comments on commit 6e835e6

Please sign in to comment.