Overview
Tights Shader Documentation

引っ張り変形シェーダー
~VRChatのアバター向け lilToon 改変シェーダー~

引っ張り変形シェーダーは、lilToonをベースに「引っ張り変形(Pull Deform)」を追加したVRChat向けシェーダーです。

VRChat上でタイツやストッキングなどの布を実際に掴み、引っ張った方向へメッシュを変形させることができます。

Pull Deform Shader

引っ張り変形シェーダー

引っ張り変形ができるlilToon改変シェーダー
セットアップツールでギミックを生成

このシェーダーでできること

メッシュを掴める 『引っ張り変形(Pull Deform)』機能

PhysBoneを利用して掴んだ位置を取得し、掴んだ位置からメッシュを引っ張るように変形できます。

※PhysBone用のボーンは必要ありません

引っ張り変形

いろいろ引っ張る

アイデア次第でなんでも引っ張れます。

引っ張り変形

導入方法

マテリアルに引っ張り変形シェーダーを設定し、セットアップツールでVRChat用ギミックを生成します。

SETUP

引っ張り変形シェーダーを導入する

シェーダーの設定から、PhysBone・Custom Render Textureを使った引っ張り変形ギミックの生成、VRChatでの確認までを順番に説明します。

導入手順へ →

導入手順

引っ張り変形シェーダーをアバターへ導入し、VRChatで実際に掴んで引っ張れるところまでセットアップします。

下記の手順で導入します ※セットアップにはModular Avatarを使用するので、あらかじめ導入しておいてください。

1. 引っ張り変形のセットアップウィンドウを出す

Unity上部メニューから StudioMaron → Pull Deform System → Setup を選択し、セットアップウィンドウを開きます。

Pull Deformセットアップ

2. セットアップするアバター、メッシュ、マテリアルを選ぶ

対象のアバターをセットします。

メッシュが自動検出されるので、セットアップ対象のメッシュを選びます。

マテリアルが自動検出されるので、セットアップ対象のマテリアルを選び、シェーダーを引っ張り変形シェーダーに変換します。

Pull Deformセットアップ

3. セットアップするボーンを選び、ギミックを生成する

ボーンを指定し、ウィンドウ下部の生成ボタンを実行します。必要なPhysBoneやCustom Render Textureなど、引っ張り変形に必要なアバター側のギミックが生成されます。

Pull Deformセットアップ

4. VRChatへアップロードして試す

アバターをVRChatへアップロードします。

アクションメニューに追加された引っ張り変形ギミックを有効にし、対象部分を掴んで引っ張ってみましょう。

VRChatでの確認

5. その他 / 注意点

ギミックIDの重複について

タイツ用と手袋用など、引っ張り変形ギミックを2個以上使う場合はギミックIDが重複しないようにしてください。同じIDを使用すると状態が干渉します。

うまく動かない場合

よくある問題はトラブルシューティングを確認してください。

トラブルシューティングへ →
導入は以上です。 引っ張り方や影響範囲を調整したい場合は「シェーダーパラメータ説明」を確認してください。

シェーダーパラメータ説明

引っ張り変形シェーダーの各パラメータを説明します。lilToon本来のパラメータについては説明しません。

Pull Deform パラメータ
パラメータ説明
引っ張り変形を有効化引っ張り変形を有効にします。
CRTテクスチャセットアップウィンドウによってCRTがセットされます。
CRTパラメータセットアップウィンドウによってボーン数などのパラメータがセットされます。
CRT設定をコピー/ペーストCRTテクスチャとCRTパラメータを別のマテリアルにコピーする機能です。
強さ引っ張った距離に対して、メッシュをどの程度変形させるかを調整します。値を大きくすると、同じ引っ張り距離でも変形量が大きくなります。
伸び部分を透明にする引っ張られて伸びている部分を、変形量に応じて透明に近づけます。タイツや薄い布など、伸びることで薄く見える表現に使用できます。
マスクテクスチャ引っ張り範囲をUVでマスクします。白が有効、黒が無効
距離制限引っ張り開始位置から指定範囲内だけを引っ張ります。
距離減衰の閾値距離制限の開始位置です。
減衰の幅上記の閾値+減衰の幅以内の頂点だけを引っ張り変形します。
法線制限引っ張り方向と頂点法線の向きに応じて変形の影響を制限します。
減衰の閾値法線制限の減衰開始の角度です。
減衰の幅上記の閾値+減衰の幅が変形範囲です。
プレビュー上記のパラメータを使ってドラッグ&ドロップで変形のシミュレーションができます。
想定半径プレビュー上のみ有効。太ももの半径を指定し、変形シミュレーションできます。
プレビューで変形を確認しながら調整するとよいです。

引っ張り変形 Tips

VRChat上で掴んだPhysBoneの『掴んだ瞬間の位置』と『現在の位置』をカスタムレンダーテクスチャ経由でシェーダーに渡し、モデルを変形させる機能です。

引っ張り変形の仕組み

STEP 01
PhysBoneを掴む アニメーションでギミックをONにする
→
STEP 02
掴んだ位置を記録 カメラによって掴み位置をカスタムレンダーテクスチャに記録
→
STEP 03
引っ張る 現在位置もカスタムレンダーテクスチャに記録している
→
STEP 04
頂点を変形 カスタムレンダーテクスチャを読み取って、シェーダーで引っ張り方向を計算し変形する

PhysBone用のボーンは必要なの?

引っ張り変形では、アバターに専用のボーンを用意する必要はありません。

セットアップウィンドウに登録したボーンと同じ位置にダミーオブジェクトを作って、PhysBoneを自動設定します。

image

複数箇所を同時に引っ張れる?

引っ張り変形では、1つのギミックにつき最大16本のボーンにPhysBoneを設定でき、同時に4つまでのPhysBoneの変形が適用されます。

ギミックを削除したいときはどうするの?

アバター直下に作成されたギミック本体とオンオフメニューを削除します。

プロジェクトに生成されたファイルも、フォルダごと削除して構いません

image

ギミックの負荷はどれくらい?

カメラを使うギミックで、アバターの周囲1mを再描画しています。Playerレイヤー、PlayerLocalレイヤーを見るカメラなので、範囲内のキャラクター描画は2回実施されます。
※大雑把ですが、1m範囲の鏡/ミラーがあると考えるとわかりやすいです。

右足を引っ張ると左足も少し引っ張られちゃう場合

距離制限の範囲を狭めることで解決するか、左右でマテリアルとギミックを分けることで解決してください。
※ギミックを分ける際はギミックIDを別にしてください。また、ギミックをオンにするメニューがそれぞれ生成されます。

ギミックIDの仕組みを教えて

Orthographicなカメラで、指定したFar距離を持つカメラだけに描画されるシェーダーを使って掴みのオンオフや位置情報を取得しています。
ギミック生成時にIDに応じてカメラのFar距離を変えて生成するので、ギミックIDが違うカメラには映らず邪魔をしません。

トラブルシューティング

まず確認するチェックリスト

  • UnityプロジェクトにlilToonシェーダー(ver 2.3.4以上)が入っていること
  • UnityプロジェクトにModular Avatarが入っていること

エラーが出る (Assets/_StudioMaron/PullDeformShader...)

・lilToonシェーダーがプロジェクトに入っていない
・Modular Avatarがプロジェクトに入っていない
可能性があります。

image

VRChat上で自分自身だけ引っ張れる。他人から引っ張ることができない

カメラ系のギミックなので、互いにフレンドじゃない場合などは無効になっている可能性があります。
Show Avatarをすることで解消するかと思います。

腕や足のボーンを対象にギミックを生成したが、上手く引っ張れない。

腕のボーンを対象にしてギミックを生成している場合、掴み時に腕のPhysBoneを掴んでいる可能性があります。(PhysBoneは結構当たり判定広いため)
アクションメニューでPhysBoneの可視化をして確かめてください。

Unityエディタ上でギミック確認したいが、ギミックを有効にすると画面が真っ黒になる

AVAPOツールがプロジェクト内に存在する場合に同様の現象が発生することを確認しています。
・Unityエディタ上でギミック確認したい場合はAVAPOツールは削除してご確認下さい。

衣装販売・アバター販売の方へ

引っ張り変形シェーダーを使用した衣装やアバターを販売する方向けの案内です。

販売者向けのライセンス案内

・個人ライセンス または チームライセンス を購入した場合、シェーダー本体はユーザー自身で購入するようにご通達ください。

・同梱販売可能ライセンス を購入した場合、引っ張り変形シェーダー本体も商品に同梱して衣装販売することができます。

※各ライセンスは販売する衣装ごとに買いなおす必要はありません。一度購入すればOKです。

衣装へ引っ張り変形をセットアップする

販売する衣装のボーンに対して引っ張り変形ギミックをセットアップしてください (アバターのボーンを参照しないように気を付けてください)

通常の衣装と同じように導入できる形で配布できます。

シェーダー本体以外の、生成したマテリアルやアニメーションファイル、セットアップ済みのギミックは、どのライセンスでも同梱販売が可能です。その場合、ユーザーにはシェーダー本体を別途購入するようにご通達ください。

image

セットアップ済みの衣装を出力する際の注意点

販売する衣装をunitypackageで出力する際、生成したギミック用のアセットも出力するのを忘れないようご注意ください。
※Assets > _StudioMaron > PullDeformShader > _Generate > PullDeform_○○フォルダのことです

PullDeform_○○のフォルダはご自身の衣装モデルのフォルダに移動してもOKです。

image

ギミックIDについて

引っ張り変形では、複数のギミックを識別するためにギミックIDを使用します。

同じギミックIDをもった人同士が引っ張り合いをすると干渉しますのであしからず。