【VRChat】リアル影システム (for Avatar) PCSS For VRC
- 通常版1,200 JPY
- 作者を支援1,600 JPY
リアルタイムに高解像度な影を比較的低負荷で落とすアバターギミックです。 前髪や、顎、胸といった様々な部位の影がつくことで、圧倒的な立体感・存在感が表現できます。 ワールドのライトの影響を抑え、同梱されているアバターに追従するライトを主として照らすように設定されているので、ワールドライトに依存せず、そのため特定のワールドで真っ暗になってしまったりすることがありません。 また、ライトは本システムのみに影響するように設定されているので、他プレイヤーやワールドオブジェクトに影響して余計な負荷をかけることもありません。 さらに、一定以上(デフォルト10m)離れると、自動で影が無効になります。 セットアップツールが付属しており、ワンクリックでセットアップが可能です。 ・本システムは有償アセットの利用有無で2系統の利用方法がございます。 ①NGSS版:下記アセットを利用します。影の柔らかさ、距離減衰等々細かい調整が可能です。 [Next-Gen Soft-Shadows] https://assetstore.unity.com/packages/vfx/shaders/next-gen-soft-shadows-137380?locale=ja-JP ②SimplePCSS版:こちらは追加アセットの購入の必要はありませんが、影の柔らかさとマスク機能のみのシンプルなバージョンです。 Instructions for the English version can be found in the second half of the document.
前提条件
・Unity2022.3.6f1 or 3.22f1 (※Unity2019は動作対象外です) ・VRChatSDK Avatar 3.0 ・lilToon v1.7.2 or later ・PoiyomiPro v9.0.54 or later ・PoiyomiToon v9.0.54 or later ・Quest版アバターには適用不可 ・NGSS版を利用するには下記アセットが必要です。(なくてもSimplePCSS版は利用可能です) [Next-Gen Soft-Shadows] https://assetstore.unity.com/packages/vfx/shaders/next-gen-soft-shadows-137380?locale=ja-JP
機能詳細
PCSS(Percentage Closer Soft Shadows)という距離に応じて影の柔らかさを変動させる仕組みをVRChatで使えるようにカスタマイズしたものです。 これにより、リアルタイムに高解像度な影を比較的低負荷で落とすことができ、前髪や、顎、胸といった様々な部位の影がつくことで、圧倒的な立体感・存在感が表現できます。 PCSSの実装としては、UnityアセットNext-Gen Soft-Shadows https://assetstore.unity.com/packages/vfx/shaders/next-gen-soft-shadows-137380?locale=ja-JP または下記OSSを参考に作成したシェーダーを使用しています。 https://github.com/TheMasonX/UnityPCSS ・lilToonもしくはPoiyomiをPCSS用にカスタムしたカスタムシェーダーをアバターに組み込みます。 ・上記シェーダーはワールドのライトの影響を抑え、アバターにセットアップされたスポットライトの影響を支配的に受けるように設定されています。 ・上記にある通り、セットアップツールはアバターにスポットライトを組み込みます。 ・スポットライトはHeadを照らすようになっています。 ・スポットライトの向きはPhysBoneでコントロールすることができます。 ・ライトの強さはExpressionMenuからコントロールすることができます。 ・ライトの色もExpressionMenuからコントロールすることができます。Hueが色相、Saturationが彩度です。 ・ワールドライトの色を、自身のライトの色に反映させることができます。 (※カメラコンポーネントを使用しているため、他人視点からは、フレンドかAvatarDisplayしている場合にしか反映されません。) ・ExpressionMenuのRemoteShadowOnをオフにすると、他のプレイヤーの視点では影が映らなくなります。 ・ExpressionMenuのLocalShadowOnをオフにすると、自分の視点では影が映らなくなります。 ・マテリアルの「カスタムプロパティ」で、影の柔らかさ、濃さ、ワールドライトの影響度の調節、マスクの設定などが可能です。 ・一部のアバターで白目に瞳等の影が映りこんでしまうアバターがありますが、マスク機能を使うことで、影を落としたくない箇所をマスクできます。 ・Unityの通常の仕様では、半透過オブジェクトは影がつきません。これを改善し、半透過と影を両立しました。 (※RenderQueue2500以下が必須) ・主にアニメ調向けに影の境界をくっきりさせるShadowClamp機能が追加されました。
マスク機能について
マスク機能を使うことで、影を落としたくない箇所をマスクすることができます。 リアル影システムには2種類のマスクがあります。 【1】ReceiveMask 影の受け取りをマスクする機能です。マスクすると影を受け取らなくなり、常に明るくなります。※こちらはグラデーションが可能です。 →主に、あまり影を濃くしたくない場所をグレーで塗って、明るさを調節するような用途で使います。 →ライトの明るさを反映するようになりました。 【2】CastMask マスクした個所の影を落とさないようにする機能です。マスクした部位の影は投影されなくなります。※こちらはグラデーション不可です。 →主に、影が落ちてほしくない部位(白目など)『の周囲のパーツ』を黒で塗って、影を落とさないようにする用途で使います。 マスクの作り方は以下です。 ①白いテクスチャを用意する。 ②マスクしたいメッシュの元のテクスチャの座標を参考に、マスクしたい部分を黒く塗りつぶす。 ③作成したテクスチャを_xxxMaskTexにセットする。
導入手順
0. 以前のバージョンが入っている場合は、"Assets/nHaruka/PCSS4VRC"フォルダを削除する。 1. [オプション] NGSS(Next-Gen Soft-Shadows)をUnityAssetStoreで購入・インポートする。 2. lilToonVer1.7.2以上またはPoiyomi Pro/Toon v9.0.54以上を導入する。 3. 本パッケージをインポートする。 4. メニューバー「nHaruka」→「PCSS For VRC」を押す。 5. 表示されたウインドウの「Avatar」欄にアバターをD&Dする。 6. 導入手順を確認の上Setupを押す ※アバターにlilToonが同梱されていたりするとバグります。同梱されているlilToonを削除する等して、lilToonがプロジェクト内で重複しないようにしてください。
【重要な注意事項】
アバターのFXレイヤーに本システムのレイヤーが残った状態で、本システムのアセットを削除するとFXレイヤーが破損し、VRCSDKが正しく読み込めなくなります。もしそうなった場合は当該FXレイヤーのAnimatorControllerから"PCSS_"で始まるレイヤーを削除してください。
SimplePCSS版とNGSS版の違いについて
結論から言うと大きな違いはありません。 NGSS版は細部のディティールまでこだわりたい人向けです。 SimplePCSS版と比べてNGSS版の方が影の処理が多少高度化されているため、細部を見るとNGSS版のほうがよく見える場合が多いですが、ズームしたりしなければ大差ないという感じです。
他プレイヤーに正常に表示させるためのTIPS
・UserランクはTrustedにしてください。(User偽装機能を使うとデフォルトセーフティ設定ではフレンド以外に表示されなくなります。) ・影の品質は見ているプレイヤー側のグラフィック設定(Shadow Quality設定)に依存します。 (どうしてもいやな場合はDiscordを見てください) ・RemoteShadowOnをオフにすると、他のプレイヤーの視点では影が映らなくなります。影の処理負荷を気にされる場合はこちらを使ってください。 ・LocalShadowOnをオフにすると、自分の視点では影が映らなくなります。 ・マテリアルのプロパティのShadow Distanceを超えた距離からは影が見えなくなります。
常用する際の注意
可能な限り他プレイヤーへの負荷を低減する措置を施していますが、それでも元のアバターの処理負荷に比例して処理負荷は上昇します。特にマテリアル数は負荷に直結しやすいです。 常用する場合はできるだけ最適化(マテリアルを統合する、ローポリ化する等)を施したアバターで使用し、Shadow Distanceを必要最低限に抑え、さらに『Test Samplers』を16以下、『Filter Samplers』を32以下(デフォルト)に設定することを推奨します。 (最適化にはAvatarOptimaizerがおススメです。https://booth.pm/ja/items/4885109) 他人から見て影が不要な場合は、RemoteShadowOnをオフにして、他人視点での影を無効にしてください。 なお、ver4.1.0からCullingMatrixOverrideとBoundingSphereOverrideを導入しました。これは光や影の影響範囲をUnityデフォルト設定に対して上書きするもので、パフォーマンス向上に貢献します。 一方で、影響範囲を出てしまうと影が出なくなったりしてしまうので、WorldFixを多用される方はご注意ください。 ※どうしてもこれらの機能をOffにしたい場合は、"Assets/nHaruka/PCSS4VRC/ShadowCullingOff.preset"をライトコンポーネントに適用してください。
上手くセットアップできない場合の確認項目
・マテリアルエラーになる原因の9割はlilToonのバージョンミスマッチです。アバターにlilToonが同梱されていたり、unitypackage版とVCC版の重複等により、最新版を入れたつもりでも正しく導入されていないことがあります。マテリアルのインスペクター欄のバージョンが最新か確認してください。 ・ExpressionMenuが機能しない場合の原因の殆どは、上書きインポートによる不完全なインポートです。Unityの上書きインポートは信頼できないので、挙動がおかしい場合は削除してからインポートしなおしてください。 ・Poiyomi版でロック時にマテリアルエラーになる場合は、PCSS関連プロパティのいくつかにAnimatedフラグを付けることで改善する場合があります。 ・アバターのFXレイヤーやExpressionMenuアセット、ExpressionParametersアセットが空になっているとセットアップに失敗します。適切なものをアサインしてからセットアップしてください。
アップデート履歴
<v4未満はDiscordに移行しました> [2024-03-24: v4.0.1β] (Poiyomi NGSS版のみ)ModularShaderSystemに対応、Poiyomi9やProに対応可能に。その他スムージング機能などlilToon版にあった機能を追加。 [2024-03-25: v4.0.2β] (Poiyomi版)SimplePCSS版もModularShaderSystemに対応、Poiyomi9やProに対応可能に。(lilToon版含む)ShadowClamp機能を追加。各マスクの強度を調整可能に。 [2024-03-29: v4.1.0β] CullingMatrixOverrideとBoundingSphereOverrideを設定。たぶんフォーマンスが結構上がる?SpotAngleを少し絞ることにより影の解像度が微向上。シェーダープロパティ名をわかりやすくし、インスペクターも改良。アニメーションの不具合を修正。 [2024-04-07: v4.2.0] 影の無効化処理を最適化、それに伴うパフォーマンス向上。無料版であるPoiyomiToonに対応。lilToon版のプロパティロック機能が動いてなかったのを修正。影のカクツキ防止機能のバグを修正。MaskStrengthのスライダーを調整。SimplePCSS版にもサンプリング数を調整できるプロパティを追加。 [2024-04-09: v4.2.1] lilToon SimplePCSS版で影が出ない不具合を修正。 [2024-04-09: v4.2.2] PoiProPCSS版がVRChat上で正しく表示されない不具合を修正。セットアップツールのマテリアルのRevert処理が正しく行われてなかった不具合を修正。セットアップ/Remove時に、PCSSマテリアルを削除できるオプションを追加。AutoLight用オブジェクトの位置を調整。 [2024-04-10: v4.2.3] LightIntensityを下げてもあまり暗くならない問題を修正。ライトの色のHue/Saturationによっては、影が消えてしまう問題を修正。 [2024-04-10: v4.2.4] lilToonSimplePCSS版でマテリアルエラーになる問題を修正。 [2024-04-14: v4.3.3] リアル影同士の干渉問題を解決。多数のセットアップバグを修正。lilToon版のシェーダー名を大幅変更。クラッシュバグを修正。シェーダーバリアント数を削減。 [2024-04-18: v4.4.5] lil版でShadowNormalBiasが機能しない問題の修正。ライトの端の方へ行くと影が段々になる問題を修正。セットアップでマテリアルスロットが空になる問題を修正。透過シェーダーをちゃんと見えるように色々調整。ライトの合成モードを変更。干渉問題の残バグを修正。 [2024-06-28: v4.5.0] FXレイヤーをコピーして使う機能を追加。lil版でセットアップ時に透明度Boostの値を1にするように。(頬赤がバグる問題の対応) [2024-07-07: v4.6.1] FXレイヤーをコピーして使う機能を修正。簡単セットアップツールを追加。 [2024-08-11: v4.6.3] FXレイヤーをコピーして使う機能が正しく機能していなかったのを修正。非日本語環境でコンパイルエラーになる問題を修正。 [2024-09-06: v4.6.4(PoiProのみ)] ParameterSetterが不足していた問題を修正。 [2024-09-13: v4.7.1] リアルタイムシャドウが使われているワールドで大幅なパフォーマンス向上。ライトプローブの影響を無効化。
既知の不具合・注意事項
・CastMaskをかけたときに、メッシュのライトから見て反対側も影がつかなくなります。 ・LightIntensityが10%以下になると、ライトの影響が無効になってしまいます。(Unityの仕様の問題と思われます。) ・ごくまれにライトが消灯するワールドが存在します。原因調査中です。 ・v4.4.5からライトの合成モードを加算にしました。これにより複数のリアル影用ライトを浴びると白飛びすることがあります。 ・半透明オブジェクトが重なる場合、手前のオブジェクトのRenderQueueが高い場合に正しく表示されます。(これはUnityの仕様です) ・RenderQueue2500以上のオブジェクトは影を受け取りません。(これもUnityの仕様です) ・ファーシェーダーがうまく動きません。
利用規約
・Unitypackageそのものやそれに含まれるアセット、ソースコードの一部または全部の二次配布は禁止します。 ・本ツールを使用してPCSS For VRCを組み込んだアバターのPublishは可ですが(※PoiyomiPro版PoiyomiProの規約により不可)、unitypackage等アセットを取り出し可能な形での再配布は不可とします。 ・販売アバターへの組み込みは個別にご相談ください。 ・NGSSを利用しない場合のSimplePCSSの影シェーダーは下記オープンソースプロジェクトのコードを参考にしています。 https://github.com/TheMasonX/UnityPCSS
バグ報告・サポートについて
バグ報告やサポート依頼については、下記Discordに一元化しております。 お困りの際は下記へお問い合わせください。 https://discord.gg/zuaYSC5FHg サポートガイドライン(抜粋) ・他ギミックとの複合的な問題やUnityのバグ、その他作者の知見を超える内容についてはご回答できない場合があります。 ・リクエストの内容が不鮮明である場合、回答が困難な場合があります。
リアル影システムを用いた商品紹介・広告等に関するガイドライン
リアル影システム(PCSS4VRC)を用いたアバター等を使って衣装やアバターなどの紹介動画・紹介画像・販促ポスターなどを公に公開・掲示する場合は下記の事項に留意してください。 1. リアル影システムが強調されるような表現が含まれる場合(例:影表現を付けることを意図して行った場合など)、影の効果などはリアル影システムによるもので商品単体にリアル影システムのような影がつく機能があるわけではないことを明示してください。(文例:本サンプル画像は『リアル影システム』を使用して撮影されており、影の付き方が商品単体とは異なる可能性があります。) 2. VRChat内・XなどのSNS・Boothの商品ページなどに含まれる画像・動画が主な対象範囲です。イベントのポスターなど商品範囲を混同する恐れのない内容の場合、対象にはなりません。 3. ポスターなどの場合掲示範囲に制約があると考えられるため、簡素な表現(例:「『リアル影システム』を使用して撮影」)でも可とします。 4. 本ガイドラインは「お願い」であり、ガイドラインに準拠できない場合に『リアル影システム』の利用を禁止するものではありません。諸都合で準拠できない場合があると思いますのでベストエフォートでご対応頂ければと思います。
[English] Overview
This avatar gimmick casts high-resolution shadows in real time with a relatively low load. Shadows are cast on various parts of the avatar, such as the forelock, chin, and chest, giving the avatar an overwhelming sense of three-dimensionality and presence. The system is set up to suppress the influence of world lights and mainly illuminate the lights that follow the avatar, so it does not depend on world lights and therefore does not go completely dark in certain worlds. There are two ways to use this system, depending on whether or not paid assets are used. (1) NGSS version: Shadow softness, distance attenuation, etc. can be finely adjusted. The following assets are used: [Next-Gen Soft-Shadows]. https://assetstore.unity.com/packages/vfx/shaders/next-gen-soft-shadows-137380?locale=ja-JP (2) SimplePCSS version: This version does not require the purchase of additional assets, but is a simple version with only soft shadows and a mask function.
[English] Feature Details
PCSS (Percentage Closer Soft Shadows), a mechanism that changes the softness of shadows according to distance, has been customized for use with VRChat. This allows high-resolution shadows to be cast in real-time with relatively low load, and shadows on various parts of the body, such as the forelocks, chin, and chest, can express an overwhelming sense of three-dimensionality and presence. As an implementation of PCSS, the Unity asset Next-Gen Soft-Shadows https://assetstore.unity.com/packages/vfx/shaders/next-gen-soft-shadows-137380?locale=ja-JP or shaders created with reference to the following OSS. https://github.com/TheMasonX/UnityPCSS - Build a custom shader from lilToon for PCSS into your avatar. - The above shader is set to be less affected by the world lights and more dominated by the spotlight set up on the avatar. - As mentioned above, the setup tool incorporates a spotlight into the avatar. - The spotlight is aimed to focus on the Head. - The direction of the spotlight can be controlled with PhysBone. - The intensity of the light can be controlled from the ExpressionMenu. - The softness and density of the shadows, the influence of the world light can be adjusted, and masks can be set in the "Custom Properties" of the material. - Some avatars have shadows on the whites of their eyes, but by using the mask function, you can mask the areas where you do not want shadows cast.
[English] Prerequisites
- Unity2022.3.6f1 - VRChatSDK Avatar 3.0 - lilToon v1.7.2 or later - PoiyomiPro v9.0.54 or later - PoiyomiToon v9.0.54 or later - Not applicable for Quest avatars. * The following assets are required to use the NGSS version. (SimplePCSS version can be used without them.) [Next-Gen Soft-Shadows] https://assetstore.unity.com/packages/vfx/shaders/next-gen-soft-shadows-137380?locale=ja-JP
[English] Setup steps
0. If you use old version, Remove "Assets/nHaruka/PCSS4VRC" folder. 1. [Optional] Purchase and import NGSS (Next-Gen Soft-Shadows) from UnityAssetStore. 2. Import lilToon v1.7.2+ or Poiyomi Pro/Toon v9.0.54+ 3. Import this package. 4. Press the menu bar "nHaruka" -> "PCSS For VRC". 5. D&D your avatar in the "Avatar" field of the window that appears. 6. Confirm the setup guide and press "Setup" button.
[English] Bug Reporting and Support
Bug reports and support requests are centralized on the following Discord. If you have any problems, please contact us at https://discord.gg/zuaYSC5FHg Support Guidelines (excerpt) - Support requests may not be answered if the problem is a complex combination of other gimmicks, a bug in Unity, or other issues beyond the author's knowledge. - Requests with unclear content may be difficult to respond to.
[English] Terms of Use
Secondary distribution of the unitypackage itself, the assets included in it, or the source code, in whole or in part, is prohibited. You may publish avatars that incorporate PCSS For VRC using this tool ( * Poiyomi Pro version is NOT allowed.), but you may not redistribute them in a form that makes it possible to extract assets such as the unitypackage. The shadow shader of SimplePCSS without NGSS is based on the code of the following open source project. https://github.com/TheMasonX/UnityPCSS