Skip to content

Commit

Permalink
改版アップデート準備
Browse files Browse the repository at this point in the history
  • Loading branch information
huideyeren committed Dec 6, 2023
1 parent 94724f2 commit 4a3ee14
Show file tree
Hide file tree
Showing 20 changed files with 440 additions and 419 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/jobs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,10 @@ jobs:
run: pwd | python3 svg.py >> .svg.log
- name: Show .svg.log
run: cat .svg.log
# - name: Grayscaling images.
# run: pwd | python3 grayscaling.py >> .grayscaling.log
# - name: Show .grayscaling.log
# run: cat .grayscaling.log
- name: Grayscaling images.
run: pwd | python3 grayscaling.py >> .grayscaling.log
- name: Show .grayscaling.log
run: cat .grayscaling.log
- name: Build PDF.
run: bundle exec rake clean pdf
- name: Upload artifact.
Expand Down
1 change: 0 additions & 1 deletion .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"recommendations": [
"atsushieno.language-review",
"taichi.vscode-textlint",
"coenraads.bracket-pair-colorizer-2",
"8amjp.charactercount",
"mhutchie.git-graph",
"donjayamanne.githistory",
Expand Down
16 changes: 12 additions & 4 deletions catalog.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
PREDEF:
# - preface.re
- 0_preface.re

CHAPS:
- vroid-quest.re
- 1_limit.re
- 2_strategy.re
- 3_face.re
- 4_blender.re
- 5_vcc.re
- 6_vrc_essential.re
- 7_modern_plugin.re
- 8_gimmick.re
- 9_kisekae.re

APPENDIX:

POSTDEF:
# - postscript.re
- bib.re
- 10_postscript.re
- 11_bib.re

12 changes: 12 additions & 0 deletions chapter/0_preface.re
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
= はじめに

イメージに合うVRChatのアバターがいないときの強い味方がVRoid Studioです。
このVRoid Studioは無料で使え、けっこう望んだ姿のアバターを作ることができます。
しかも、BOOTHなどで頒布されている衣装テクスチャを使えば、アバターのバリエーションはさらに広がるでしょう。
そのため、私がVRChatにいるとき、だいたいVRoid Studioで作成したアバターを使っています。
私はVRChatにはPC版から入りましたが、初めて入ったのがQuestユーザーのイベントだったので早い段階でアバターのQuest対応を意識しています。
しかし、VRChatのQuest版ではシェーダーが限定され、透過が使えないなどの厳しい制限があります。
他のアバターならポリゴン数を削れば何とかなるのですが、VRoid製アバターの場合テクスチャに透過をかなり多く使っているため対応にコツがいります。
しかしながら、大体これならちょうどよいという改変方法を見つけたので共有します。
なお、この本は過去にUnityを使ってアバターをアップロードしたことがある人向けとなっております。
既出だったり、手ぬるいと言われたりするかもしれませんが、ご笑納いただければ幸いです。
5 changes: 5 additions & 0 deletions chapter/10_postscript.re
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
= おわりに

以上、VRoidアバターを手っ取り早くQuest対応させる方法を紹介してきました。
設定を使い回すことに慣れれば、いろいろなバリエーションを作ることができるでしょう。
みなさんのVRChatライフがVRoid Studioでさらに豊かになることを心から祈っております。
File renamed without changes.
26 changes: 26 additions & 0 deletions chapter/1_limit.re
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
= Questアバターへの制限

VRChatのQuest版やAndroid版でアバターを使うには以下のような制限があります。
まずはじめに、VRChat公式ではQuestで使用するアバターはポリゴン数を10,000以下にすることを推奨@<bib>{VRCQuest}しています。
そして、VRChatのアバターは表示のしやすさに応じてランクが付けられています。
非常に軽くて表示しやすいExcellentのアバターを作るのはよほど単純化しないといけません。
ランクがExcellentやGoodならQuestで表示できないアバターを使っているときに表示するFallbackアバターにすることができますが、多くのアバターはPoorかVeryPoorになってしまうと思います。
イベントによっては重くなるのでVeryPoorのアバターを使っている人の参加をお断りすることがあり、PoorランクやMediumランクを目指す改変者も多いです。

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

//image[quest-avatar-ranks][Quest版アバターのランク付け]{
VRChat公式より
//}

なお、Quest版で初期状態で見えるランクはMediumであり、使っているアバターがMediumランクに対応していればQuestの人から初期状態で見えることになります。
しかし、Mediumランクでさえこれを実現するのは難しいです。
ましてや、Fallbackアバターを目指すのは至難の業と言うことがお分かりでしょう。

== Android版の制限

VRChatのAndroid版が登場しました。
6GB以上RAMを積んだスマートフォンのみの対応ですが、これによって出先でヘッドセットを被らずともVRChatができるようになりました。
で、特段に対応が必要かというと……実のところ、アバターのランクがVery Poorにならなければ、これまでのQuest対応で事足ります。
そう、QuestでPoor以上であれば、普段使いのアバターでAndroid版でもなんとかなってしまうのです!!

33 changes: 33 additions & 0 deletions chapter/2_strategy.re
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
= 今回の改変戦略

私はQuest対応アバターを作る時、以下のような改変方針にしています。

* なるべくPoorを目指すが改変の結果最悪VeryPoorになってもしかたがない
* 服の透過対応は諦める
* 顔は顔の皮膚テクスチャに描き込む

中にはうまかちゃんさんの紹介している方法@<bib>{umakachan}のようにメッシュを切り抜いて透過させる部分を切り抜く対応をするという方法もあります。
私も実際に一回対応してみたのですが、どうもうまく切り抜けずゴミのようなものが残ってしまいます。
なので、私は確実に対応可能な顔の対応のみ行い、服の透過は諦める感じで進めました。

//image[vanilla-vroid][最少状態のVRoidアバター][scale=0.6]{
競泳水着:ららるーのアトリエ様
//}

この図は肌テクスチャに競泳水着@<fn>{mizugi}を重ねた状態の最小構成のVRoidアバターをVRM出力しようとしているところです。
なお、この状態でポリゴンは40,142個です。
しかも、ボーンも95個あります。
マテリアルに関しては12個もあります。
しかも、VRMの揺れものも付いている状態です。
特に、髪が長いこの子ではボーンが増えてしまわざるを得ません。
そして、この状態でそのままアップロードしてもVeryPoorにしかなりません。

//image[sorochka-vroid][ウクライナ民族衣装を着せたVRoidアバター][scale=0.6]{
ウクライナ民族衣装:鶏肉工場様
//}

さらに、これは極端な例ですが服を着せるとこのくらいまでボーン数とテクスチャ数が増えます。
ここまで来ると最悪ボーンを削らないとアップロードできないでしょう。
ここからさらに上のランクを目指すには、Blenderとの格闘が必要になってきます。

//footnote[mizugi][競泳水着:ららるーのアトリエ様]
18 changes: 18 additions & 0 deletions chapter/3_face.re
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
= 顔のテクスチャを描き込む

まず最初の難関が、顔のパーツをどうやってQuest対応するかということです。

厄介なことに、VRoidの顔パーツは透過を使ったテクスチャで描かれています。
これは、Quest版では表示ができません。
それっぽく見せる方法としては顔のテクスチャに描き込むしかないのですが、この顔のテクスチャに描き込むのも普通の人には一苦労でしょう。

なお、Windows版限定ではありますが、まゆ毛とアイラインに関してはVRoid Texture Converter for VRChat on Questというツールがあります。
このツールはVRoid正式版の眉毛とアイラインのテクスチャを、顔の肌レイヤーに重ねられるように加工してくれるものです。
まゆ毛とアイラインのテクスチャをこのツールに読み込ませると、顔に重ねられるテクスチャ画像が出力されます。
ただし、出力された画像は透過ではないのでペイントツールを使って透過色に加工します。
これを怠ると昔のお公家さんみたいな、白塗りの顔になってしまいます。
なお、出力されたテクスチャ画像でカラー調整を使っているとグレーの画像になります。
この場合はペイントツールでは色も加工しなければいけません。
なので、カラー調整を使わないで出力するとうまくいくとおもいます。
完成した画像を肌テクスチャに重ねると、透過を使わない顔パーツが出来上がります。
この透過を使わないバージョンはPC用の透過を使うバージョンと分けておくとPCとQuestでアバターを作り分けることが出来ます。
120 changes: 120 additions & 0 deletions chapter/4_blender.re
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
= アバターをBlenderで軽量化する

== Blenderと和解せよ!

残念ながら、UnityとVRoid Studioだけではたとえ水着だとしてもQuestでまともに表示させるアバターを作るのは難しいでしょう。
ボーン数を削ることに関してはかなり難しいですが、テクスチャを重ねてポリゴンを削る所まではBlenderでなんとかできます。
なので、早速VRM出力していきましょう。
設定に関しては、デフォルトのままで大丈夫です。マテリアル数も、ボーン数も減らさなくてよいでしょう。
なぜなら、マテリアルはBlenderで結合できるからです。
ひとまず髪を短くしたアバター@<fn>{short-hair}を用意し、出力してみるとボーン数は89、これならポリゴン数を削ればFallbackにできるかもしれません。

//image[short-hair][髪を短くしてVRM出力][scale=0.6]{
【使用衣裳】白ワンピ:星井まゆき星空通販様、スク水:ここなふぁくとりー様、桜の髪飾り:リザのアトリエ様
//}

//footnote[short-hair][【使用衣裳】白ワンピ:星井まゆき星空通販様、スク水:ここなふぁくとりー様、桜の髪飾り:リザのアトリエ様]

さて、ここからはBlenderを使うのですが、必ず2系のBlenderを使用してください。
かつ、以下のプラグインが必要になります。

* VRM Add-on for Blender@<fn>{vrm-blender}
* Cats Blender Plugin@<fn>{cats-blender}
* material-combiner-addon@<fn>{material-combiner-addon}

//footnote[vrm-blender][https://vrm-addon-for-blender.info/ja/]
//footnote[cats-blender][https://github.com/absolute-quantum/cats-blender-plugin]
//footnote[material-combiner-addon][https://github.com/Grim-es/material-combiner-addon]


これらを使用するとVRMをBlenderで扱うことができるようになります。

なお、BlenderはPythonというプログラミング言語の実行環境が必要です。
OSに別のPythonがインストールされている場合、material-combiner-addonで必要なPillowという画像処理ライブラリのインストールに失敗する場合があります。
その場合は、Windowsの場合は以下のコマンドを実行する必要があります。

//cmd{
> set PythonPath="Your\Copied\Path\To\Python\bin\Folder"
> %PythonPath%\python.exe -m pip install Pillow --user --upgrade
//}

なお、「Your\Copied\Path\To\Python\bin\Folder」の部分は各自のフォルダに読み替えてください。

また、世の中にはMacでアバター改変を行っている方もいると思いますが、Macの場合は少々面倒です。
まず、Blenderを開きましょう。
その後で、ShiftキーとF4キーを同時に押すとPythonコンソールが開きます。
その後、以下のコードを貼り付ければPillowがインストールされます。

//source[blender-pillow-install.py]{
__import__('ensurepip')._bootstrap()
__import__('pip._internal')\
._internal.main(['install', '-U', 'pip', 'setuptools', 'wheel'])
__import__('pip._internal')._internal.main(['install', 'Pillow'])

//}

このようにして、Pillowをインストールし終えたらUnityでの改変準備は完了です。

== Blenderを開いたら

まず、Blenderを開くと最初に四角形が表示されていますが、これらは消します。
その後、使用するVRMをインポートすると画面にVRMアバターが表示されます。

//image[in-blender][blenderへインポートしたところ][scale=0.6]{
//}

=== メッシュの分割

まずすべきは、CATSプラグインのModel Optionsを開き、マテリアル単位にメッシュを分割することです。
なお、1回では服のポリゴンがうまく分かれてくれないために悲惨なことになります。
顔のメッシュを分割するとシェイプキーが壊れるという話もありますが、ここは全部のメッシュを分割します。
だいたい15個前後のマテリアルになると思います。
なお、Questでは透過が使えないためここからテクスチャを編集して透過部分を削るという荒技をする人もいます。
しかし、Blenderと和解するにはかなりの時間がかかるかと思いますので今回は飛ばして先に進みます。

== ポリゴンの削減

メッシュの分割が終わったら、Decimationのタブを開きます。
まずはCustomを選択し、全てのシェイプキーを保護します。
なお、保護しないとシェイプキーが消えて表情が付けられなくなってしまうので必ず保護しましょう。
その後にSmartを選択し、Save Fingersを選んでTrisは10,000にしてQuick Decimationをクリックします。
失敗するとロボットのように指が分離してしまうので、Save Fingersは必ず選びましょう。
そしてポリゴン数を減らすと以下のような見た目になると思います。

//image[decimated][ポリゴン数を減らしたところ][scale=0.6]{
//}

== メッシュの結合

これが終わったらまずはメッシュを結合しましょう。
先ほどと同じCATSプラグインのModel Optionsを開くと結合できます。
これは一つにまとめてしまって大丈夫ですが、重くなるの承知でメッシュを分けると服を脱がすことができます。
ただし、重くなるのでおすすめはできません。
それと、靴下をボディスーツで着せていない場合は脱がせません。
なぜなら、肌着や普通の靴下の場合は身体のテクスチャにそのまま重なってしまうからです。
ボディスーツで靴下を着せれば脱がせられるのですが、その場合は靴に入らなくなります。
なので、脱がすギミックを仕込む場合はサンダルにして当初から靴下を履かないように作りましょう。

== テクスチャの結合

これが終わったら、テクスチャを結合します。
まずは、Blenderのファイルを保存し、FileメニューからExternal Data内のUnpack All Into Filesを選びます。
その後に表示されるメニューではUse files in current directoryを選び、フォルダ内に保存しましょう。

//image[material][マテリアルを結合する][scale=0.6]{
//}

これが終わったらCATSプラグインのOptimizationを開き、Generate Material Listをクリックするとたくさんのテクスチャが開かれます。
Save Atlas To..をクリックするとマテリアルが結合されます。

これが終わったらEye TrackingとVisemesを設定しましょう。
これも表情に関わるところですが、次の画像の通りに設定すればよさそうです。

//image[eye-tracking][Eye Tracking(目の動き)の設定][scale=0.6]{
//}

//image[visemes][Visemes(口の動き)の設定][scale=0.6]{
//}

これが終わったらVRMに出力します。
VRMを保存し終わったらVCCとUnityの世界に帰れます。
Loading

0 comments on commit 4a3ee14

Please sign in to comment.