がとーしょこらの技術録(旧)

記録や技術的な記事を書いていきます

【VRChat他】アバター改変を支援するために作ったツールの紹介

はじめに

本記事はVRChat 2 Advent Calender 2019 16日目の記事です。

これまで

主にVRChatのアバター改変で使えるUnity向けツール

を開発をしてきたのでそれを一通り紹介していきます。

ここで紹介しているものはすべて がとーしょこらのおみせ @gatosyocora - BOOTH で公開しています。

VRChat向けツール

ここではVRChatのアバター改変で使用することを前提として開発したツールを紹介します。

VRCDeveloperTool

Unityでちょっとした作業をやりやすくするEditor拡張を詰めたよくばりセットです。 gatosyocora.booth.pm

便利なツールがあっても一つ一ついれるのが大変なので、「これをいれたらいろんな便利なツールが使えるよ」ってものをイメージして作りました。

この中でよく使われているものをピックアップして紹介します。

ちなみにHandPoseAdder, HumanoidPoseResetter, MeshBoundsSetter, ProbeAnchorSetterは後述のVRCAvatarEditorに同様の機能を持たせているのでそちらを使うのをオススメします。

  • HandPoseAdder

表情切り替え用アニメーションファイルに手の形のアニメーションを追加します。

FISTやHANDOPENなどVRChatでよく用いられる手の形はアニメーションファイルを右クリックで簡単に追加できます。 さらにCustomHandPose機能を使ってそれ以外の手の形を設定すれば同様に追加できるようになります。

  • ShapeKeyNameChanger

アバターのシェイプキーの名前を変更します。

特定のワールドのアニメーションではシェイプキーの名前を参照して表情を変えたりするので、名前を変更することでそれに対応できます。

また、好きな名前を入力して設定するだけでなく, ツール側で用意した名前から選ぶこともできるようになったので某ワールド対応が簡単になりました。

  • ShapeKeyMixer

複数のシェイプキーを合成して一つのシェイプキーにします。

例えば, 目を動かすシェイプキーと口を動かすシェイプキーを合成することで目と口を一緒に動かすシェイプキーを作ることができます。 片目同士のシェイプキーを合成で、両目を動かすシェイプキーにするなどいろいろ組み合わせることができると思います。

  • SubMeshDeleter

マテリアルレベルでメッシュを削除します。

例えば, 服と体のマテリアルが分かれている場合, これを使うことで服だけ消したり, 体だけ消したりすることができます。

  • ShapeKeyReorder

シェイプキーの順番を変えます。

VRChatでは上から4つのシェイプキーがアイトラッキングに使用されるため, 適切に順番を設定する必要があります。

これをBlenderなどのモデリングソフトを使わずにUnity上でおこなえます。

  • AnimationPropertyConverter

アニメーションファイルに含まれるプロパティの名前を変更します。

表情切り替え時にアニメーションファイルで設定されたシェイプキーの名前でシェイプキーを参照して表情を切り替えています。 ShapeKeyNameChangerなどでシェイプキーの名前を変更した際にシェイプキーを参照できなくなりアニメーションが機能しなくなります。 その際にアニメーションファイルで設定されているシェイプキーの名前を変更後のものに変更することで使えるようにできます。

ShapeKeyNameChangerとあわせてお使いください。


VRCAvatarEditor

UnityでVRChat用アバターを編集することを手助けします。

https://gatosyocora.booth.pm/items/1258744

このツールのポイントは小さなモニターで実際のアバターを確認しながら表情などの編集をおこなえるところです。

以下のような機能を持っています。

  • アバターの簡単な情報を確認したり, 設定したりする
  • アバターの表情を設定する
  • 顔などの一部分だけ光の当たり方が変になる現象を解消する
  • アバターの一部がまれに消えてしまう現象を解消する
  • 使われているシェーダーを確認する

これまで表情設定する際に毎回SceneViewで顔を写しながらするのが大変だったところから、小さなモニターを見ながら編集できるようにしました。

マニュアルもありますが、使い方を紹介してくださっている記事もありますのでそちらを参考にしてみてください。

VRChat 表情変更のやり方|mi|note


EmoteSwitchV3Editor

VRChatのEmoteでオブジェクトを出し入れするEmoteSwitchの設定を簡単におこなえるようにするEditor拡張です。

gend-vrchat.booth.pm

EmoteSwitchV3のギミック本体は元怒さんが作成されたものでPrefab化されており、Editor拡張でそれをアバターに設定しています。

使い方を紹介してくださっている方々がいるのでそちらも記事も参考にしてみてください。

第20回 Emoteで取り出せ!~EmoteSwitchV3解説~ | ユニティちゃんでわかるVRchatのためのunity教室

【VRChat】EmoteSwitch V3(エモートスイッチ)使ってみた!! | ケーキのPC情報集会所


EasyToTakeSSシェーダー

VRChatでスクリーンショットを取るときに撮影画面に貼りつくことで綺麗に撮影できるようにします。

gatosyocora.booth.pm

VRChatではワールドで作成した抱き枕カバー習字スクリーンショットとして持ち帰ったり, シェーダーで処理した結果をSteamCameraで外部配信する際などに使っていただいています。

全般向けツール

ここではVRChatのアバター改変でも使用できますが, その他プラットフォームのアバター改変でも使用することを目指して開発したツールを紹介します。

MeshDeleterWithTexture

Unity上でテクスチャを塗ることで対応するメッシュを削除できます。

https://gatosyocora.booth.pm/items/1501527

これはUnity上で簡単なメッシュ編集する方法としてどんなものがいいかなと模索した結果の一つです。 他にもさまざまな方法で編集ができると良さそうですね。

Quadを使ってメッシュを分割および削除するものを作っておられる方もいます。

処理の高速化のために塗る部分にComputeShaderを使ったり、マスク画像を作れるようにしたりなどちょっとしたポイントにも力を入れました。

こちらの記事で使い方を紹介していただいてます。

[Unity]テクスチャを塗りつぶすだけでメッシュ削除する方法 | VIRTUALBANKAS


ModelBoneDeleter

Unity上でアバターのボーンを削除できます。

https://gatosyocora.booth.pm/items/1484630

ウェイトが塗られたアバターだとボーンを削除するとメッシュがすごいことになります。

本ツールではウェイトを塗りなおすことでこれを解消するように作りました。

こだわりポイントは削除するボーンを選択するところのUIです。たぶん使いやすくなったと思います。


UploadPlatformChecker

現在のビルドプラットフォームを確認できたり, 切り替えたりできます。

gatosyocora.booth.pm

Quest対応アバターをアップロードする際にAndroid用にビルドプラットフォームに切り替える必要があります。

Unityの標準機能でも確認できますが、結構移動しないといけないのでぱっと確認できるようにと作りました。

切り替え機能は実はおまけです。

さいごに

VRにおいてアバターは重要な存在で、特にVRSNSにおいては自分の個性を表現する大きな手段です。 また、アバターはVRSNSをつなぐ架け橋になりうるとも感じています。

どんな人でも表現したいアバターが作れるようになることを望んでこれからもツールを作っていきたいです。