91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity3D中Projector怎么用

發布時間:2021-12-04 15:18:45 來源:億速云 閱讀:1059 作者:小新 欄目:大數據

這篇文章主要介紹Unity3D中Projector怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

                 Projector 

【原理】

Projector能將一個Material投影到所有在設定的平截頭體內的物體上。通常包含兩張貼圖Cookie和Falloff。Cookie就是投影的圖案,Falloff的作用主要是根絕距離來決定投影的Alpha即明暗。Falloff左邊為白色,alpha值為1,對應投影距離最近時最亮,右邊接近全黑,alpha值為0,表示投影距離變遠時投影會漸漸接近透明甚至看不見。

Unity3D中Projector怎么用

【可以實現】

0 角色選擇光圈

1 普通圓點陰影(blob shadow)

2 偽動態陰影(Fake Dynamic shadow)

3 光的投影

4 投影儀(根據Meterial的貼圖,可以是圖片,視頻,另一個相機看到的景象)

5 3D或者2D手電筒的效果

【使用步驟】

一. 創建Projector.

 可以創建空GameObject,然后從Component處添加Projector組件如下圖

Unity3D中Projector怎么用

也可以Import Package-> Projector,導入Projector包。包內容如下

Unity3D中Projector怎么用

二:注意事項

1.確保Cookie Texture一定要設置為Clamp

2.為了避免projector bleeding, Cookie Texture 開啟Border Mipmaps選項, 或者直接禁用Mipmap

Unity3D中Projector怎么用

FallOff

不管是orthographic還是不是。

如果不用FallOff, 投影下來的都是最亮即alpha為1的cookie,并且會向frustrum的正反2個方向投影,造成我們并不想看到的“雙重投影”的效果。用系統包帶的Falloff貼圖的話。投影會隨著距離變淡。

【實例演示】

例0:角色腳下的光圈

Unity3D中Projector怎么用Unity3D中Projector怎么用

projector所使用的shader如下,再加上腳本控制projector旋轉即可。

Shader "Custom/Circle" {
 Properties {
    _ShadowTex ("Cookie", 2D) = "gray" { TexGen ObjectLinear }
 }
 Subshader {
    Tags { "RenderType"="Transparent-1" }
    Pass {
       ZWrite Off
       Fog { Color (1, 1, 1) }
       AlphaTest Greater 0
       ColorMask RGB
       Blend DstColor Zero
       SetTexture [_ShadowTex] {
          combine texture,texture
          Matrix [_Projector]
       }
    }
 }
}

或者用Vertex&Fragment

Shader "Custom/Circle" {
 Properties {
   _ShadowTex ("Cookie", 2D) "" }
 }
 Subshader {
    pass {
       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
   }//endpass
 }
}

例1: 普通圓點陰影(blob shadow)

加在角色下面,記得把角色的layer加進 projector設置下的'Ignore Layer'即可。

Unity3D中Projector怎么用

Shader "Projector/Multiply" {
 Properties {
    _ShadowTex ("Cookie", 2D) = "gray" { TexGen ObjectLinear }
    _FalloffTex ("FallOff", 2D) = "white" { TexGen ObjectLinear  }
 }

 Subshader {
    Tags { "RenderType"="Transparent-1" }
    Pass {
       ZWrite Off
       Fog { Color (1, 1, 1) }
       AlphaTest Greater 0
       ColorMask RGB
       Blend DstColor Zero
      Offset -1, -1
       SetTexture [_ShadowTex] {
          combine texture, ONE - texture
          Matrix [_Projector]
       }
       SetTexture [_FalloffTex] {
          constantColor (1,1,1,0)
          combine previous lerp (texture) constant
          Matrix [_ProjectorClip]
       }
    }
 }
}

2 偽動態陰影(Fake Dynamic shadow)

就是用3d Max或者 Maya或者Unity,先把動畫對應的陰影烘焙好, 做成序列幀。然后用projector的材質做對應的幀動畫即可。

3 光的投影

基本是就把黑的blob cookie換成 中間是白色的cookie即可。

4 投影儀(根據Meterial的貼圖,可以是圖片,視頻,另一個相機看到的景象)

另一個相機繪制到RenderTexture,然后projector的材質使用RenderTexture即可

5 3D或者2D手電筒的效果就是projector的方向和范圍設置和手電一致。把電筒的光顏色投出去即可。

以上是“Unity3D中Projector怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奉新县| 淳安县| 鲁山县| 长沙市| 合阳县| 沧源| 赫章县| 龙门县| 桑植县| 甘南县| 台东县| 齐河县| 科技| 雷州市| 南宫市| 江门市| 环江| 威海市| 德昌县| 上饶市| 图木舒克市| 永福县| 鄯善县| 西青区| 梨树县| 东乌珠穆沁旗| 武功县| 兴海县| 工布江达县| 油尖旺区| 金平| 铜梁县| 西华县| 永定县| 海伦市| 顺义区| 太仓市| 营口市| 南华县| 恩施市| 新干县|