TKSPのUnity関連ブログ

Unityに関することで書きたいことを書く.

VRChat 軽量で快適な合法チートロポリコンを作ってみた!

はじめに

こんにちは!
VRC合法チート研究会開発長のTKSPです!

今回は合法チート研究会のツールとMesh Bakerを使って便利なロポリコンちゃんを作成してみたので,その方法を伝授します!

何をするか

publicワールドやお出かけに使用するShow Avatarしなくても見える軽量で便利なアバターを作っていきます!
Quest版ではExcellent、PC版ではGoodパフォーマンスのロポリコンを作成します。



環境・バージョン

Windows 10
Unity 2019.4.3f1
VRCSDK3-AVATAR-2021.09.30.16.19_Public
LowPoly_Kon ver1.2

下準備

まず必要なものの購入やダウンロードを済ませておきます。

VRC SDK3のダウンロード

VRChat homeのDownloadからダウンロード
VRChat - Home

ロポリコンの購入

こちらのリンクからロポリコンちゃんを購入します。
booth.pm

合法チートツールの購入

こちらのリンクから全て購入します。
booth.pm
booth.pm
booth.pm
booth.pm

Mesh Bakerの購入

こちらのリンクから購入します。
assetstore.unity.com

Dynamic Boneの購入

みんな持ってるよね。
assetstore.unity.com

ModelBoneDeleterのダウンロード

こちらのリンクからダウンロードします。
booth.pm

UTS2_ShaderOnly_v2.0.8_Releaseのダウンロード

こちらからダウンロード
github.com

**>

f:id:ymtkyorosiku:20220107205933p:plain
ユニティちゃんトゥーンシェーダーのダウンロード

PC版のGoodなロポリコンを作成する

PCプロジェクトの用意

PCアバター用のプロジェクトを作成します。
後でQuest用のものをプロジェクトを複製して作成するため保存先は分かる場所にしておいてください。

f:id:ymtkyorosiku:20220107203615p:plain
プロジェクトの作成

パッケージの導入

先ほどダウンロードしたものを以下の順番でインポートします。
(3つほど足りないですが、Quest対応の時にインポートします)

1.VRC SDK3
2.Dynamic Bone
3.UTS2_ShaderOnly_v2.0.8_Release
4.ロポリコン
5.合法チートツール4種
6.好きな動画(mp4,40秒未満を推奨)と好きな音楽(mp3)をProjectにドラッグ&ドロップ

ロポリコンをSDK3化する

1.LowPoly_Kon_PCプレハブをHierarchyに追加します。
Projectから矢印が付いていないほうのLowPoly_Kon_PCをHierarchyにドラッグ&ドロップします。

f:id:ymtkyorosiku:20220108013512g:plain

2.Pipeline Managerと(Scriptの削除)
右クリックでRemove Component

f:id:ymtkyorosiku:20220108013525g:plain

3.VRC Avatar Descriptorを追加
Add Componentからvrcで検索するとすぐに出ます。

f:id:ymtkyorosiku:20220108013541g:plain

4.ViewPositionとリップシンク設定
ViewPositionに(0,0.83,0.007)を設定
リップシンクはAuto Detect!で自動で設定されます。

f:id:ymtkyorosiku:20220108013552g:plain

5.HandsLayerの複製
VRCSDK/Example3/Animation/Controllers/vrc_AvatarV3HandsLayer.controllerを複製します。
選択してctrl + dで複製できます。

f:id:ymtkyorosiku:20220107213934p:plain
HandsLayerの複製

適当なフォルダに移動し、LowPolyKonFXLayerに名前を変えておきましょう。
選択してF2でファイルの名称変更ができます。
f:id:ymtkyorosiku:20220107214051p:plain

6.HandsLayerの編集
LowPolyKonFXLayerをダブルクリックしてAnimatorタブを開きます。
AllPartsとLeft Handの間にIdleを追加します。
Weightを1に設定してください。

f:id:ymtkyorosiku:20220108013610g:plain

7.Idleアニメーションの作成
CreateからAnimationを作成しIdleとします。
先ほど作成したLowPolyKonFXLayerのIdleに追加し、オレンジの枠を選択したら、InspectorからWriteDefaultsを切ります。

f:id:ymtkyorosiku:20220108013622g:plain

8.Idleアニメーションのキーを設定
LowPolyKonFXLayerをLowPoly_Kon_PCのAnimatorのControllerに指定します。

f:id:ymtkyorosiku:20220108013636g:plain

Window>Animation>AnimationでAnimationタブを開き、Idleを指定します。

f:id:ymtkyorosiku:20220108013651g:plain

録画ボタンを押したら、LowPoly_Kon_PC内のLowpoly_konを選択し、vrcで始まるリップシンク以外のやつを全て少し動かして0のKeyを打ちます。

f:id:ymtkyorosiku:20220108013705g:plain

最終的にこのようになります。Keyを打ち終わったら録画ボタンで停止、Previewを押してしゃがみからTポーズに戻してください。
f:id:ymtkyorosiku:20220107220414p:plain

9.変更したControllerを元に戻します。

f:id:ymtkyorosiku:20220107220929p:plain
Noneを設定

10.アニメーションの設定

Left HandのIdleとRight HandのIdleにVGC/VGCResources/EmptyAnimationを設定します。(Keyが何も設定されていないアニメーションファイルです)

f:id:ymtkyorosiku:20220107221349p:plain
Left HandのアニメーションにEmptyを設定
f:id:ymtkyorosiku:20220107221457p:plain
Right HandのアニメーションにEmptyを設定

右手と左手のFistからThumbs upに好きな表情を設定しましょう。
Lowpply_Kon_ver1.2/Animation_ver1.2に表情のアニメーションが14個入っています。

11.FXレイヤーを設定する
LowPoly_Kon_PCのPlayableLayersのFXにLowPolyKonFXLayerを指定します。

f:id:ymtkyorosiku:20220108013723g:plain

お疲れ様でした。ロポリコンのSDK3化はこれで完了です。

VGCツールを導入する

睡眠システム、水泳アニメーション、スケールチェンジシステムの導入

※順番に注意してください。
睡眠システム、水泳アニメーション、スケールチェンジシステムの順で導入する必要があります。
30秒かからないですね。

f:id:ymtkyorosiku:20220108013748g:plain

動画システムの導入

動画システムを導入します。
アスペクト比調整が小さいほど画像が大きくなります。
スキップするフレーム数が小さいほどフレームレートが上がります。
Material数が1になるように調整しましょう。

f:id:ymtkyorosiku:20220107223233p:plain
設定例

DynamicBoneを減らす

耳以外のDynamicBoneは削除します。

f:id:ymtkyorosiku:20220108013806g:plain

PC版のアップロード

PC版のアバターはこれにて完成です。好きな名前でアップロードしましょう。

シーンを保存したらUnityを閉じてください。

Quest版のExcellentなロポリコンを作成する

Questプロジェクトの用意

Questアバター用のプロジェクトを作成します。
上で作成したPCアバター用のプロジェクトをコピーします。

f:id:ymtkyorosiku:20220107224545p:plain
先ほど作成したPCプロジェクトをコピー

分かりやすい名前に変更します。_questでも_androidでもお好きに。

f:id:ymtkyorosiku:20220107224608p:plain
名称変更

UnityHubからリストに追加、プロジェクトを追加したらターゲットをAndroidに変更して開きます。
ターゲットにAndroidが無い場合はそのまま開いてください。

f:id:ymtkyorosiku:20220107225011p:plain
ターゲットをAndroidに変更して開く

ターゲットでAndroidに切り替えられなかった場合は、File>Build SettingからAndroidに切り替えるためのデータをダウンロードできるかと思います。

f:id:ymtkyorosiku:20220107225451p:plain
Androidに切り替え

Quest版のロポリコンをSDK3化する

LowPoly_Kon_PCのVRC Avatar Descriptorを右クリックでコピーし、LowPoly_Kon_QuestのAnimatorを右クリックしてPaste Component As Newで貼り付けます。
(Script)はRemoveしましょう。

f:id:ymtkyorosiku:20220108013830g:plain

PC版を非アクティブにし、リップシンクがPC版を参照しているのでDefaultに戻してAuto Detect!

f:id:ymtkyorosiku:20220108013844g:plain

VGCシステムの再設定

(シーン保存前にUnityを閉じたのが原因か、自分は水泳アニメーションとスケールチェンジのセットアップが未完了になっていたため再セットアップしました)

動画システムの再設定を行います。
今回はExcellentを目指すので、有効化アニメーションを変更にチェックを入れます。

f:id:ymtkyorosiku:20220107231012p:plain
設定例

ArmatureのScaleが100になっているため、ビデオシステムのスケールを0.01倍にします。
ビデオは内側を向いているので180度回転させておきましょう。
Positionも高いのでYに0を入れておきましょう。

f:id:ymtkyorosiku:20220107231556p:plain
ビデオシステムの設定

パッケージの導入

最初に用意しておいて入れていなかったパッケージをインポートします。
1.ModelBoneDeleter
2.Mesh Baker

ボーンを削減する

GatoToolからModelBoneDeleterを使用して、髪としっぽのボーンを削除します。

f:id:ymtkyorosiku:20220108013906g:plain

複製されるのでLowPoly_Kon_Questは非アクティブにします。

f:id:ymtkyorosiku:20220107232321p:plain
もう使用しないので非アクティブ

Meshを結合する

GameObject>Create Other > Mesh Baker > TextureBaker and MeshBaker
からTextureBaker (0)を生成します。

f:id:ymtkyorosiku:20220108000217p:plain
TextureBakerの生成

Assets内の適当なフォルダにMeshBakerのフォルダを作成します。(名前はフォルダ名はMeshBakerじゃなくても分かりやすければよいです。)
f:id:ymtkyorosiku:20220108000352p:plain

TextureBakerを選択し、Create Empty Assets For Combined Materialを選択します。
マテリアルを作成するので、先ほど作成したMeshBakerフォルダに保存しましょう。

f:id:ymtkyorosiku:20220108001023p:plain
マテリアルの保存

LowPoly_Kon_Quest_deleteBonesをDrag & Drop Renderers or Parents HEARにドラッグ&ドロップします。
Objects To Be Combined が2つになっていることを確認します。
Max Tilong Bake Sizeを2048にします。

f:id:ymtkyorosiku:20220108001620p:plain
meshの指定とtexture解像度の設定

include Blend Shapesにチェックを入れます。
Skinned Mesh Rendererに変更します。
Merge Blend Shapes With Same Namesにチェックを入れます。

f:id:ymtkyorosiku:20220108001829p:plain
ブレンドシェイプの設定

Bake Materials Into Combined Materialを押します。

f:id:ymtkyorosiku:20220108004116p:plain
テクスチャとマテリアルの作成

TextureBakerの中にあるMeshBakerを選択し、OutputをBake Into Prefabに変更します。

f:id:ymtkyorosiku:20220108004628p:plain
Bake Into Prefabに変更

Create Empty Prefabで先ほど作成したフォルダに新規Prefabを保存します。

f:id:ymtkyorosiku:20220108004914p:plain
Prefabの保存

Bakeします。

f:id:ymtkyorosiku:20220108005110p:plain
MeshをBakeする

結合したメッシュでアバターを作成する

LowPoly_Kon_Quest_deleteBonesを非アクティブにして作成したPrefabをシーンに配置します。
そのあとMyPrefab0をUnPackPrefabします。

f:id:ymtkyorosiku:20220108014034g:plain

LowPoly_Kon_Quest_deleteBones(Clone)を外に出し、MeshBaker-mesh-meshをLowPoly_Kon_Quest_deleteBones(Clone)の中に入れます。

f:id:ymtkyorosiku:20220108014049g:plain

MyPrefab0を削除します。

f:id:ymtkyorosiku:20220108014059g:plain

Lowpoly_konを削除し、MeshBaker-mesh-meshをLowpoly_konに名称変更します。

f:id:ymtkyorosiku:20220108014112g:plain

リップシンクの設定をやり直します。Defaultに戻してAuto Detect!

f:id:ymtkyorosiku:20220108014140g:plain

マテリアルのシェーダーを変更します。
Legacy Shaders/DiffuseからVRChat/Mobile/Toon Litに変更します。

f:id:ymtkyorosiku:20220108012543p:plain
間違えている状態
f:id:ymtkyorosiku:20220108012556p:plain
正しい状態

アニメーションのパスを修正

VGC/CreateAssets/LowPoly_Kon_QuestにあるVGCVideo_offとVGCVideo_onのパスを変更します。
ダブルクリックでアニメーションを開き、Key名を選択した状態でキーボードのF2で名称変更します。Lowpoly_konに変更します。
f:id:ymtkyorosiku:20220108014208g:plain

Quest版のアップロード

Quest版のアバターはこれにて完成です。
PC版のBlueprint IDをctrl+Cでコピー、Quest版にctrl+Vで貼り付けてAttachします。

f:id:ymtkyorosiku:20220108012735p:plain
PC版のBlueprintを選択してコピー
f:id:ymtkyorosiku:20220108012815p:plain
Quest版に張り付け

エラーをAutoFixで解消します。

f:id:ymtkyorosiku:20220108012840p:plain
Auto Fix

ExcellentやGoodなら成功です!

f:id:ymtkyorosiku:20220108013147p:plain
エクセレント!

どこでも寝れてどこでも座れる、巨大化縮小化が可能で空も飛べる。動画まで再生できるのにExcellentなQuestアバターが完成しました!
まさに合法チート!