VRChat想定 カーテン用シェーダー「AyStandard_Curtain」
- ダウンロード商品¥ 800
Unity、主にVRChatでの使用を想定したカーテン用シェーダーです。
機能紹介
物理演算を行わず、Sin波の組合せで頂点を動かし低負荷にカーテンの揺れを表現したシェーダーです。 揺れる位置や揺れ方を調整できるため、様々な既存のモデルに適用可能です。 Unity標準のStandard Shaderを改変して作成しているため、見た目についてはStandard Shaderと同じように設定できます。 Quest版VRChatにも対応しています。 Unity2019.4.31f1で作成と動作確認を行っています。 下記URLのVRChatの非公開ワールドにて簡単なサンプルを展示しています。 「AyStandard_Curtain Sample」 https://vrchat.com/home/world/wrld_b2b8e795-3473-4042-ace2-8d41a24fe9f5
使用上の注意
適用するモデルのポリゴン数が極端に少ない場合などは綺麗に揺れを表現できません。 Blender等で面を細分化するなどの対応を行ってください。 ※本シェーダーにテッセレーションの機能はありません。
更新履歴
2022/04/16 v1.0 ・販売開始 2022/06/18 v1.1 ・Unityの動的バッチによって動作しなくなるケースがある不具合を修正
内容物
・シェーダー本体(AyStandard_Curtain.shaderおよび関連するcgincファイル3点) ・サンプルマテリアル6種 ・サンプルモデル1種(curtain_fbx △12800) ・Bounds編集用エディタ拡張(Bounds Editorおよび関連するスクリプトファイル2点)
サンプルマテリアルの説明
・Curtain_opaque_whole 通常の不透明かつある程度重みのあるカーテンが全体に風を受けているような表現です。 ・Curtain_opaque_oneside 通常の不透明かつある程度重みのあるカーテンが右半分に風を受けているような表現です。 ・Curtain_fade_whole レースの半透明で軽いカーテンが全体に風を受けているような表現です。 ・Curtain_fade_oneside レースの半透明で軽いカーテンが右半分に風を受けているような表現です。 ・Curtain_trans_whole レースの半透明で軽いカーテンが全体に風を受けているような表現ですが、 fadeと比較して反射等が強く反映されるため、光沢感や透明感が強調された表現となります。 ・Curtain_trans_whole レースの半透明で軽いカーテンが右半分に風を受けているような表現ですが、 fadeと比較して反射等が強く反映されるため、光沢感や透明感が強調された表現となります。 ※FadeとTransparentの違いはEmissionやReflectionなど、Albedo以外の色にAlpha値が乗算されるか否かです。 Alphaが0のとき、Fadeは完全に消えますがTransparentは反射等が残りガラスのような表現になります。
エディタ拡張の説明
カーテンが揺れた際に元々のBoundsの範囲外に移動し、カメラの向きによってカーテンが消えてしまうように見えるケースがあります。 Mesh RendererのBoundsを修正するエディタ拡張を同梱していますので、それを用いて修正してください。 ※Unityではメッシュがカメラの範囲外に移動した際に描画をしないことで負荷を軽減しています。その判定を行うのがBoundsです。 ・本商品をインポートするとUnityのメニューバー上に「Editor」メニューが追加されます。 ・Editor>BoundsEditorを選択しBoundsEditorを起動します。Boundsを修正したいオブジェクトを選択し、値を修正してApplyを押してください。 ・Unityを終了した場合はBoundsが一時的にリセットされますが、再起動後は再生時・ビルド時に修正後のBoundsが適用されます。 ・Boundsを元々の大きさに戻したい場合は、BoundsModifierコンポーネントを削除しUnityを再起動してください。 ・同じメッシュを使うオブジェクトのBoundsは共通になっているため、別々に設定したい場合は元のFBXファイル等を複製してください。 ・サンプルのPrefabについてはBoundsを修正してありますが、これらも一度ビルドまたは再生するまで適用されません。 ※BoundsEditorはBoundsModifierコンポーネントを追加し、BoundsModifierコンポーネントはビルド・再生時にBoundsを修正するという動作です。
パラメータの説明
・CullMode メッシュの描画しない面を選択します。 両面とも描画する場合はOffを選択してください。 ・InvertWave 波の進行方向を反転します。 ・UpsideDown 波の上下を反転します。 ・ModelDirection 波の方向とモデルの方向を合わせます。 デフォルトのXYZにおいて、次のような方向を想定しています。 ・Y+方向が上、Z+方向がカーテンの表、XY平面にカーテンが広がっている ・WaveCenterY 揺れの付け根の位置(通常はカーテンレールの位置)を指定します。 オブジェクトの原点に対する位置で入力します。 オブジェクトのScaleが変更されている場合はその影響を受けます。 ・WaveTopSmoothRange WaveCenterYからスムーズを効かせる範囲を指定します。 カーテンが付け根から折れているように見えることを防ぐためのパラメータです。 ・WaveEdgeX 揺れの横方向の開始位置を指定します。 オブジェクトの原点に対する位置で入力します。 この値より波の進行方向逆側の頂点は一切動きません。 窓が片側閉じている場合に調整するためのパラメータです。 カーテン全体を同じように揺らしたい場合は十分に大きい値を設定し、 WaveSideSmoothRangeを0にします。 ・WaveSideSmoothRange WaveEdgeXからスムーズを効かせる範囲を指定します。 マイナスの値を指定すると、波の進行方向側の頂点が動かなくなります。 ・WaveOffset カーテンの角度を調整します。 カーテンは2つのsin波を組み合わせて揺れています。 1つ目の波は大きくゆっくり、2つ目の波は小さく早く調整することでそれらしい揺れを表現できます。 サンプルマテリアルを参考に、以下のパラメータを調整してください。 ・WaveIntensity1 1つ目の波の強さを調整します。 ・WaveScale1 1つ目の波の横幅を調整します。 ・WaveSpeed1 1つ目の波の速さを調整します。 ・WaveDelay1 1つ目の波においてカーテンの先端がカーテンの根本に対しどの程度遅れるかを調整します。 ・WaveIntensity2 2つ目の波の強さを調整します。 ・WaveScale2 2つ目の波の横幅を調整します。 ・WaveSpeed2 2つ目の波の速さを調整します。 ・WaveDelay2 2つ目の波においてカーテンの先端がカーテンの根本に対しどの程度遅れるかを調整します。 Rendering ModeでFadeまたはTransparentを選択したときのみ、以下のパラメータが表示されます。 レースの厚みを表現する場合などに使用してください。 ・AlphaRimRate Alpha値にリムライトの値をどの程度ブレンドするか指定します。 0のときAlpha値をそのまま使用し、1のとき視線に対し垂直な面が完全に透明になります。 ・RimPower リムライトの値を何乗するか指定します。
利用規約
利用規約 Term of Use 本商品はVN3ライセンスを使用しております。 本商品に関するライセンスの詳細は同梱の下記ファイルをご確認ください。 ※購入前にリンク先からご確認いただくことも可能です。 This product uses the VN3 license. For details of the license for this product, please refer to the following file included in the package. *You can check the link before purchasing. 日本語 vn3license.pdf https://drive.google.com/file/d/1PNB7Y19fHjPgROuSYeObb3EE5eKkgiKk/view?usp=sharing English vn3license_eng.pdf https://drive.google.com/file/d/13RjSAw40fJ6eImz5W8MuW4DBQZG5ao2V/view?usp=sharing 本商品はUnity builtin_shaders-2019.4.31f1(MIT license)を改変して作成されているため、以下にそのライセンスも併記します。 This product was created by modifying Unity builtin_shaders-2019.4.31f1 (MIT license), so its license is also listed below. ------------------------------------------------------------------------------------- Copyright (c) 2016 Unity Technologies Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.