ホームページ  >  記事  >  Unity3D でプロジェクターを使用する方法

Unity3D でプロジェクターを使用する方法

小老鼠
小老鼠オリジナル
2024-03-01 09:32:221270ブラウズ

使用法: 1. プロジェクターの作成: 空のゲームオブジェクトを作成し、コンポーネントからプロジェクター コンポーネントを追加します。[パッケージのインポート] -> [プロジェクター] を選択してプロジェクター パッケージをインポートすることもできます。

Unity3D でプロジェクターを使用する方法

#プロジェクターの原理

プロジェクターは、セットされた上位錐台内のすべてのオブジェクトにマテリアルを投影できます。通常、2 つのマップ Cookie とフォールオフが含まれます。 Cookie は投影されたパターンであり、Falloff の機能は主に、距離に基づいて投影のアルファ、つまり明暗を決定することです。フォールオフの左側は白で、アルファ値は 1 で、距離が最も近いときの最も明るい投影に対応します。右側は黒に近く、アルファ値は 0 です。これは、投影距離が大きくなるにつれて、黒に近くなります。さらに遠くに行くと、投影は徐々に透明に近づき、さらには見えなくなります。

Unity3D でプロジェクターを使用する方法

【達成可能】

0 キャラクター選択絞り

1 通常のドットシャドウ(ブロブシャドウ)

2 フェイクダイナミック シャドウ

3 ライト プロジェクション

4 プロジェクター (マテリアル マップによると、写真、ビデオ、または別のカメラで見たシーンにすることができます)

5 3D または 2D フラッシュライトの効果

使用手順

1. プロジェクターを作成します。

空のゲームオブジェクトを作成できます。次に、以下に示すように [コンポーネント] から Projector コンポーネントを追加します。

Unity3D でプロジェクターを使用する方法

[Import Package] -> [Projector] を選択して Projector パッケージをインポートすることもできます。パッケージの内容は次のとおりです。

Unity3D でプロジェクターを使用する方法

2: 注意事項

1. Cookie Texture が Clamp

に設定されていることを確認してください。

2. プロジェクターのにじみを避けるために、Cookie テクスチャは境界ミップマップ オプションを有効にするか、ミップマップを直接無効にします

Unity3D でプロジェクターを使用する方法

3.FallOff

正書法かどうか。

FallOff を使用しない場合、最も明るいアルファ 1 を持つクッキーが投影され、錐台の両方向に投影され、望ましくない「二重投影」効果が発生します。システム パッケージに付属のフォールオフ マップを使用する場合。距離が離れると影が薄れます。

【デモンストレーション例】

例 0: キャラクターの足元の開口部

Unity3D でプロジェクターを使用する方法

Unity3D でプロジェクターを使用する方法

使用者プロジェクター シェーダーは次のとおりで、プロジェクターの回転を制御するスクリプトが追加されています。

シェーダー "カスタム/サークル" {
プロパティ {
_ShadowTex ("Cookie"、2D) = "グレー" { TexGen ObjectLinear }
}
サブシェーダー {
タグ { "RenderType"= "透明-1" }
パス {
Zライトオフ
霧 { カラー (1, 1, 1) }
AlphaTest グレーター 0
ColorMask RGB
DstColor Zero のブレンド
SetTexture [_ShadowTex] {
テクスチャの結合、テクスチャ
マトリックス [_Projector]
}
}
}
}

または頂点とフラグメントを使用

シェーダー 「カスタム/サークル」 {
プロパティ {
_ShadowTex ( "Cookie", 2D) = "" { }
}
サブシェーダ { ###### ### ### ### ###合格 ###{###### ### ### ### ### ### ### ### ZWrite
off
Blend DstColor One
CGPROGRAM
#pragma vertex vert
##pragma fragment frag
#include 「UnityCG.cginc」
sampler2D _ShadowTex;

float4x4 _Projector;

struct v2f {
float4 pos:SV_POSITION;
float4 texc:TEXCOORD0;
};
v2f vert(appdata_base v)
{
v2f o;
o.pos=mul(UNITY_MATRIX_MVP,v.vertex);
o.texc=mul(_Projector,v.vertex);
return o;
}
float4 frag(v2f i):COLOR
{
float4 c=tex2Dproj(_ShadowTex,i.texc);
return c;
}
ENDCG
}//エンドパス
}}
例 1: 通常のドット シャドウ (ブロブ シャドウ)

キャラクターの下に追加します。キャラクターのレイヤーをプロジェクター設定の「無視するレイヤー」に追加することを忘れないでください。それでおしまい。

##シェーダー「プロジェクター/乗算」 {Unity3D でプロジェクターを使用する方法

プロパティ {

_ShadowTex ("Cookie", 2D) = "グレー" { TexGen ObjectLinear }
_FalloffTex ("FallOff", 2D) = "白" { TexGen ObjectLinear } }

サブシェーダ {
タグ { "RenderType"="Transparent-1" }
パス {
Zライトオフ
霧 { カラー (1, 1, 1) }
AlphaTest Greater 0
ColorMask RGB
DstColor ゼロをブレンド
オフセット -1、-1
SetTexture [_ShadowTex] {
テクスチャを結合、1 つ - テクスチャ
マトリックス [_Projector]
}
SetTexture [_FalloffTex] {
constantColor (1,1,1,0)
## 前の lerp (テクスチャ) 定数を結合します
マトリックス [_ProjectorClip]

} }
2 フェイク ダイナミック シャドウ (フェイク ダイナミック シャドウ) は 3d Max または Maya を使用します。または、Unity は最初にアニメーションに対応するシャドウをベイクし、それらをシーケンス フレームにします。次に、プロジェクターのマテリアルを使用して、対応するフレーム アニメーションを作成します。

3 光の投影

基本的には、黒いブロブ クッキーを中央の白いクッキーに置き換えます。

4 プロジェクター (マテリアル マップによると、写真、ビデオ、または別のカメラで見たシーンにすることができます)

別のカメラが RenderTexture に描画し、プロジェクターのマテリアルをRenderTexture として使用

5 3D または 2D フラッシュライトの効果は、プロジェクターの方向と範囲の設定がフラッシュライトと一致することです。懐中電灯の明るい色を捨てるだけです。

以上がUnity3D でプロジェクターを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。