アバター小技

アバターに実装可能なギミックの作例を紹介しています。

自分だけに見えるカメラモニター

FaceCheck.png

こんなのです。
このモニターは常に視界の左側に表示していて、
自分にだけ見えて他の人からは透明で見えないようになっています。

これは自分にしか見えないカメラ(以下、ローカルカメラ)とStandard Shaderの透過機能を使っています。

カメラの実装の仕方はUnityの標準と同じ方法なので以下を参照してもらいたいのですが
簡単にいうと
1. Cameraコンポーネントを付けたオブジェクトを用意する
2. RenderTextureを作成する
3. CameraのTargetTextureに先ほど作成したRenderTextureを設定する
4. PlaneもしくはQuadを作成し、先ほどのRenderTextureを設定したマテリアルを適用する
こんな感じの手順でできます。

VRChatの仕様上、このカメラはこの状態だと自分にしか映像が写らない(他人から見ると黒い画面)モニターになります。
今回はこのローカルカメラを使用します。

手順

FaceCheckRT_explain.png
これは上記の4で設定したマテリアルの設定項目です。
既に自分だけに見えるモニターとして設定されています。

1. マテリアルのShaderを①の部分からStandard Shaderにします。
2. ②の部分でTextureがCameraに設定したRenderTextureになっていることを確認する。
3. ③の部分のRendering Modeを「Fade」に変更します。
(FadeはGBやBBなど透過にすべき箇所を自動的に透過してくれます。)

マテリアルの特殊な設定はこれだけです。

次にカメラの設定項目です。
FaceCheck_camera.png

4. Clear Flags④をSolid Colorに、BackgroundをBlackにします。
(これでFadeによって透過するようになります。)
5. Culling Mask⑤をMirrorReflectionにします。
(これで自分だけ写るカメラになります。)
6. Target Texture⑥が2に設定したRenderTextureになっていることを確認する。

あとはローカルカメラとモニターをいい感じのところに置きます。
私が設定したものはカメラを自分のアバターの顔を写すように
モニターを視界の左側にくるように設定しました。

FaceCheck_inspecter.png
インスペクターではBodyやArmatureの外に出すことで
アバターのローカル座標に追従するようにしています。
上記画像のインスペクター内では
ローカルカメラ→MiniDisplayCamera
モニター→MiniDisplay
に対応しています。

アップロード時、「Cameras are removed from non-local avatars at runtime.」という警告がでるが気にしなくてよい。

配布


同じアバターでの歩行モーションの切り替え


擬似ピックアップ(ワールド固定)

アバター内のオブジェクトを特定のローカル空間やワールド空間に固定する仕組み。

EmoteSwitch(エモートスイッチ)

執筆者 : @gatosyocora
Emoteでオブジェクトを出したり、消したりできる技術です。
あるオブジェクトを出すEmoteを実行すると、消すEmoteを実行するまで残り続けます。
(この技術は海外の方に教えていただいたものを自分なりに最適化したものです。)


LegacyAnimationが使えなくなったことにより、旧バージョンは使えなくなりました。
現在はAnimatorを使った新バージョンを使用してください。

新バージョン




旧バージョン

同系統の技術(VRC_ToggleProp): https://www.youtube.com/watch?v=5m8RZQd4JAw

Prefabを用意しました。参考にしてください↓

レガシーアニメーションを使用した旧バージョン


仕様・挙動

  • Emoteを実行した際に同じワールドにいるプレイヤー実行者を見てて近くにいるプレイヤーとは対象オブジェクトのアクティブ/非アクティブの状態はほぼ同期する。(ごくまれに同期しないことがあった?)
  • あとから同じワールドに入った人にはデフォルト(まだEmoteSwitchを使っていない)の状態で見えている。
  • いろんなことができるのですが、一般的には武器やコライダーボードのセーフティとして使うといいかもです。

腕の動きに同期して動くサブアーム

アバターの腕を動かすとそれに同期して動くサブアームです
※SDK3を利用することでConstraintsを使用しより安定した挙動が実現可能

心音

アバターに心音を設定する方法です

Particle Triggers

ParticleSystemを用いた衝突時に発生するトリガーです

使用例:

  • 最終更新:2020-09-28 12:36:08

このWIKIを編集するにはパスワード入力が必要です

認証パスワード