【VRChat】リアル影システム (for Avatar) PCSS For VRC
- ダウンロード商品通常版¥ 1,500
- ダウンロード商品作者を支援¥ 2,000
- ダウンロード商品ShadowCast Addon¥ 500
※導入前に本ページを最後まで読んでください。ほとんどのトラブルの解決法は書いてあります。 ※v5.0.0からNGSS版は廃止されました。 リアルタイムに高解像度な影を比較的低負荷で落とすアバターギミックです。 前髪や、顎、胸といった様々な部位の影がつくことで、圧倒的な立体感・存在感が表現できます。 ワールドのライトの影響を抑え、同梱されているアバターに追従するライトを主として照らすように設定されているので、ワールドライトに依存せず、そのため特定のワールドで真っ暗になってしまったりすることがありません。 また、ライトは本システムのみに影響するように設定されているので、他プレイヤーやワールドオブジェクトに影響して余計な負荷をかけることもありません。 さらに、一定以上(デフォルト10m)離れると、自動で影が無効になります。 セットアップツールが付属しており、ワンクリックでセットアップが可能です。 ※nHarukaの実験室サポートDiscordサーバでは各ギミックのトラブルシューティングやプリセット共有、便利なTipsなどが集積されています。 お困りの際は一度ご参照ください。 https://discord.gg/zuaYSC5FHg 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版アバターには適用不可
機能詳細
PCSS(Percentage Closer Soft Shadows)という距離に応じて影の柔らかさを変動させる仕組みをVRChatで使えるようにカスタマイズしたものです。 これにより、リアルタイムに高解像度な影を比較的低負荷で落とすことができ、前髪や、顎、胸といった様々な部位の影がつくことで、圧倒的な立体感・存在感が表現できます。 PCSSの実装としては、下記OSSを参考に作成したシェーダーを使用しています。 https://github.com/TheMasonX/UnityPCSS ・lilToonもしくはPoiyomiをPCSS用にカスタムしたカスタムシェーダーをアバターに組み込みます。 ・上記シェーダーはワールドのライトの影響を抑え、アバターにセットアップされたスポットライトの影響を支配的に受けるように設定されています。 ・上記にある通り、セットアップツールはアバターにスポットライトを組み込みます。 ・スポットライトはHeadを照らすようになっています。 ・スポットライトの向きはPhysBoneでコントロールすることができます。 ・ライトの強さはExpressionMenuからコントロールすることができます。 ・ライトの色もExpressionMenuからコントロールすることができます。Hueが色相、Saturationが彩度です。 ・ワールドライトの色を、自身のライトの色に反映させることができます。 (※カメラコンポーネントを使用しているため、他人視点からは、フレンドかAvatarDisplayしている場合にしか反映されません。) ・ExpressionMenuのRemoteShadowOnをオフにすると、他のプレイヤーの視点では影が映らなくなります。 ・ExpressionMenuのLocalShadowOnをオフにすると、自分の視点では影が映らなくなります。 ・マテリアルの「カスタムプロパティ」で、影の柔らかさ、濃さ、ワールドライトの影響度の調節、マスクの設定などが可能です。 ・一部のアバターで白目に瞳等の影が映りこんでしまうアバターがありますが、マスク機能を使うことで、影を落としたくない箇所をマスクできます。 ・Unityの通常の仕様では、半透過オブジェクトは影がつきません。これを改善し、半透過と影を両立しました。 (※RenderQueue2500以下が必須) ・主にアニメ調向けに影の境界をくっきりさせるShadowClamp機能が追加されました。
マスク機能について
マスク機能を使うことで、影を落としたくない箇所をマスクすることができます。 一般的に影は、①光を遮り影を作るオブジェクト(遮蔽物)と②それによって影になるオブジェクト(被遮蔽物)の2つのオブジェクトが作用します。 それに応じてリアル影システムには2種類のマスクがあります。 ①CastMask(遮蔽物をマスク) マスクした個所の影を落とさないようにする機能です。マスクした部位の影は投影されなくなります。※こちらはグラデーション不可です。 →主に、影が落ちてほしくない部位(白目など)『の周囲のパーツ』を黒で塗って、影を落とさないようにする用途で使います。 ②ReceiveMask(被遮蔽物をマスク) 影の受け取りをマスクする機能です。マスクすると影を受け取らなくなり、常に明るくなります。※こちらはグラデーションが可能です。 →主に、あまり影を濃くしたくない場所をグレーで塗って、明るさを調節するような用途で使います。 →ライトの明るさを反映するようになりました。 マスクの作り方は以下です。 ①白いテクスチャを用意する。 ②マスクしたいメッシュの元のテクスチャの座標を参考に、マスクしたい部分を黒く塗りつぶす。 ③作成したテクスチャをマテリアルプロパティの_xxxMaskTexにセットする。 また、ユーザーが作成したマスクテクスチャの共有所が下部記載のDiscordサーバーにあります。
導入手順
0. 以前のバージョンが入っている場合は、"Assets/nHaruka/PCSS4VRC"フォルダを削除する。 1. lilToonVer1.7.2以上またはPoiyomi Pro/Toon v9.0.54以上を導入する。 2. 本パッケージをインポートする。 3. メニューバー「nHaruka」→「PCSS For VRC」を押す。 4. 表示されたウインドウの「Avatar」欄にアバターをD&Dする。 5. 導入手順を確認の上Setupを押す ※アバターにlilToonが同梱されていたりするとバグります。同梱されているlilToonを削除する等して、lilToonがプロジェクト内で重複しないようにしてください。
ShadowCast Addonについて
動画4つ目にあるように、アバター自身だけでなくワールドオブジェクト等に影を落とすことができるようになるアドオンです。 スクリーンスペースのため負荷増はごくわずかです。(環境によりますがFPSにほぼ変化が現れないレベル) Expressionメニューから影の濃さやOn/Offを制御できます。 【導入手順】 1.リアル影システム本体を先に導入する。 2.メニューバー「nHaruka」→「PCSS For VRC ShadowCastAddon」を押す。 3. 表示されたウインドウの「Avatar」欄にアバターをD&Dする。 4. Setupを押す。 【注意点】 ・ワールドだけでなく他アバター等にも影をキャストします。 ・他オブジェクトが影を落とす設定になっている場合、そのオブジェクトの影も落ちます。 ・ライトの影生成範囲を出ると影が途切れることがあります。 ・他オブジェクトの影はミラーには写りません。(VRChatの仕様です) ・Stencilが設定されているオブジェクトには影が映らず、その部分だけ透けてるように見えることがあります。 【更新履歴】 [2024-10-30: v1.0.2] 初公開。 [2024-11-02: v1.0.3] 影響範囲を5mに。 [2024-11-14: v2.0.1] 光の当たっていない部分の処理をスキップすることで、大幅にパフォーマンス向上。
【重要な注意事項】
アバターのFXレイヤーに本システムのレイヤーが残った状態で、本システムのアセットを削除するとFXレイヤーが破損し、VRCSDKが正しく読み込めなくなります。もしそうなった場合は当該FXレイヤーのAnimatorControllerから"PCSS_"で始まるレイヤーを削除してください。
他プレイヤーに正常に表示させるためのTIPS
・UserランクはTrustedにしてください。(User偽装機能を使うとデフォルトセーフティ設定ではフレンド以外に表示されなくなります。) ・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の上書きインポートは信頼できないので、挙動がおかしい場合は削除してからインポートしなおしてください。 ・アバターのFXレイヤーやExpressionMenuアセット、ExpressionParametersアセットが空になっているとセットアップに失敗します。適切なものをアサインしてからセットアップしてください。 ・メッシュレンダラーのReceiveShadowsがデフォルトでOffになっているアバターがいます。(しなの・メリノ等)ReceiveShadowsのチェックを入れることで影が落ちるようになります。
アップデート履歴
<v5未満はDiscordに移行しました> [2024-10-25: v5.0.2β(lilのみ)] PCSS版を改良してNGSS版を廃止。Expressionをコピーする機能を追加。 [2024-10-26: v5.1.0β(lilのみ)] AvatarやFX, ExParam等がセットされてないとセットアップできないようにした。スポットライトでめっちゃ明るくなる問題を修正。SoftnessRange項目を追加。コピーセットアップ機能を修正。 [2024-10-30: v5.2.3(lil/poi)] ShadowCastアドオンに対応。Poiyomi版を最新に。 [2024-11-02: v5.2.4(lil/poi)] アーティファクト軽減のために、マテリアルのデフォルトパラメーターを変更。 [2024-11-14: v6.0.2(lilのみ)] サンプリングロジックを大幅に改良し、ノイズ軽減のほか、より少ないサンプリング数での描画が可能となり、パフォーマンスが向上。半透明オブジェクトから半透明の影が投射されるように。
Unity上での動作について
NDMF(ModularAvatar等)が有効だと、PlayMode時にEditorOnlyのオブジェクト(検証用ライト)が削除されてしまいます。 GestureManagerはアニメーションをエミュレートしますが、Layerはエミュレートしないので、inGameではPlayer/PlayerLocalレイヤーになるはずのアバターオブジェクトがDefaultレイヤーのままになるので、アバターが照らされなくなります。 AV3 Emulatorはレイヤーまでエミュレートするので、検証はそちらを推奨します。
既知の不具合・注意事項
・CastMaskをかけたときに、メッシュのライトから見て反対側も影がつかなくなります。 ・LightIntensityが10%以下になると、ライトの影響が無効になってしまいます。(Unityの仕様の問題と思われます。) ・ごくまれにライトが消灯するワールドが存在します。原因調査中です。 ・v4.4.5からライトの合成モードを加算にしました。これにより複数のリアル影用ライトを浴びると白飛びすることがあります。 ・半透明オブジェクトが重なる場合、手前のオブジェクトのRenderQueueが高い場合に正しく表示されます。(これはUnityの仕様です) ・RenderQueue2500以上のオブジェクトは影を受け取りません。(これもUnityの仕様です) ・ファーシェーダーがうまく動きません。
利用規約
・Unitypackageそのものやそれに含まれるアセット、ソースコードの一部または全部の二次配布は禁止します。 ・ギミックの機構、コンセプトをそのまま模倣し販売することを禁止します。 ・本ツールを使用してPCSS For VRCを組み込んだアバターのPublishは可ですが(※PoiyomiPro版PoiyomiProの規約により不可)、unitypackage等アセットを取り出し可能な形での再配布は不可とします。 ・販売アバターへの組み込みは個別にご相談ください。 ・PCSSの影シェーダーは下記オープンソースプロジェクトのコードを参考にしています。 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.
[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, 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.
[English] Setup steps
0. If you use old version, Remove "Assets/nHaruka/PCSS4VRC" folder. 1. Import lilToon v1.7.2+ or Poiyomi Pro/Toon v9.0.54+ 2. Import this package. 3. Press the menu bar "nHaruka" -> "PCSS For VRC". 4. 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 is based on the code of the following open source project. https://github.com/TheMasonX/UnityPCSS