6.01_World_Position
Absolute World Position 絕對世界位置
輸出的是像素的世界位置,不是物體的世界位置
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 連接配接到BaseColor上,會自動進行鉗制到0和1之間,是以要連接配接到Emissive Color自發光顔色上
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 6.02_Actor_Position
Actor_Position 物體世界位置
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 按住Shift,可以随相機移動
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 6.03_Camera_Position
Camera_Position
輸出得是相機的世界位置
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 6.04_Object_Position
Object Position
輸出的是物體的中心位置
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade Object Position輸出的是模型中心的值,而不是坐标原點
Aactor Position輸出的是坐标原點的位置
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 6.05_Object_Bounds
Object Bounds 物體邊界
輸出的是物體XYZ的長度或者大小
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 6.06_Object_Radius
Object_Radius 物體半徑
輸出物體的半徑,輸出的是一個标量,不是向量
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 輸出的是XYZ三個軸中最大的值作為它的半徑
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 輸出的效果是會随着半徑産生變化
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 6.07_Object_Orientation
Object_Orientation 物體的朝向
輸出的是物體朝向的方向,同時輸出的也是三維資料
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 6.08_Screen_Position
Screen_Position 螢幕位置
ViewportUV,PixelPosition兩個輸出接口功能不一樣
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade ViewportUV
輸出的是二維資料,因為螢幕是X,Y兩個軸,它沒有Z軸,我們的螢幕是平面,它沒有深度
它輸出的是一個螢幕位置,也就是說螢幕上的每一個點,它得位置都是不同的,Debug隻能顯示中間這個區域的這個像素點,它的位置
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 實際遊戲運作一般有兩種運作狀态
一種是全屏,我們整個螢幕都是它的位置
一種是視窗,這個視窗的大小,才是它螢幕的位置
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade UE的螢幕坐标,輸出的是一個相對位置
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade PixelPosition 像素位置
輸出的是一個實際的資料,而不是0-1了
輸出的是每一個像素點的X,Y的相對的坐标,它是基于螢幕的像素點來算的
它不是0-1,它是0到這個螢幕的分辨率,輸出的是一個基于螢幕的像素點的數,它不是一個相對0-1的數
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 6.09_Transform_Vector
Transform_Vector 變換向量
把向量從一個參考坐标系轉換為另一個參考坐标系
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 6.10_Distance
Distance 距離
接受2個輸入,計算它們的距離
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade Actor Position物體位置到Camera Position之間的距離為263...
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 6.11_PixelDepth
PixelDepth 像素深度
輸出的是像素的深度 實際上就是相機到像素的距離
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 輸出的是相機到物體的距離
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 它計算的是每一個像素,而這個球體,我們可以看到每個像素的深度都是不一樣的
從頂視圖看,因為它是個球體,是以它都是這樣一排一排的,它每一排的像素距離我們的螢幕深度都是不一樣的,是以就會顯示這樣的的效果
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade Actor Position和Camera Position
弊端之一,如果你是以這個表面的距離來作為咱們相機之間的距離的話,那麼就不能使用Actor Position和Camera Position它們之間的距離來作為表面和相機之間的距離,哪怕調到很高的倍數,它的距離還是不會産生變化,是以就應該使用PixelDepth像素深度,那麼它輸出的值才是正确的
可以使用PixelDepth像素深度來準确的判斷這個表面上它每個像素距離相機的深度
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade Actor Position和Camera Position
隻計算它物體中心的距離
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade PixelDepth
可以計算每個像素到相機之間的距離
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 邊緣也離相機更近,使用像素深度也可以得到一個漸變效果
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 6.12_SceneDepth
SceneDepth 場景深度
輸出的是它背後的像素到相機之間的距離
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 黃框代表相機,白色Plane到相機就得到了一個像素到相機之間的距離,就是之前講到的節點PixelDepth像素深度,那麼這個場景深度它實際上得到的是它背後的第一個像素的深度,地闆上的像素就是得到這樣一個值
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade SceneDepth 場景深度
這個節點是不能在Opaque不透明模式下使用的,必須要改為Translucent半透明模式
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 為什麼是Translucent半透明模式才能使用?
在之前的章節講到過,延遲渲染會将後面的像素剔除掉,也就是說如果這個材質它不是半透明模式,那麼它後面的像素也就是消失了,我們根本無法得到後面的像素,是以必須要設定為半透明模式,這個節點才能獲得它背後的像素的距離
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 水到岸邊會淺一些,到水的中心,也就是深海區,會深一些,那麼水的顔色也會随之變化,淺水區水的顔色會淺一些,深水區水的顔色會深一些,我們就可以使用這個節點來判斷,它距離水下的地闆有多遠,然後根據深度來切換它們的顔色
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 現在就可以看到淺水區是一個藍色,深水區是一個黃色,但是這樣做會有一個弊端,因為它計算的是相機的距離,是以當我們相機遠離的時候,整個地方都會被視作深水區,也就是說我們的水并不是完全由這個節點來制作的,它隻能實作一部分效果,而且這個效果是有弊端的
這個節點可以根據它背後的物體距離它多遠來制作這樣一個效果,它雖然有弊端,但也是有實際用途的
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade SceneDepth場景深度減去PixelDepth像素深度再除以100,會出現這個效果,球體出現黑色漸變邊緣,并且靠近下面的物體就會變黑
SceneDepth場景深度輸出的是背後的像素到相機之間的距離,PixelDepth輸出的是像素到相機之間的距離
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 一個輸出的背後的距離,一個輸出的是自己的距離,這裡是用的背後的像素距離減去它自己的像素距離
這紅色線段上,它自己的距離和它背後的距離剛好是一樣的,是以它這裡是一個純黑色
到這個地方,它自己像素到相機之間的距離和它背後到相機之間的距離,是不是隔着這一段,是不是它就是一個白色
而中間的距離會近一些,是以它就是灰色
左邊的距離完全一樣,就是純黑色
背後的像素距離減去它自身的像素距離,就得到這樣一個差,那麼這個差就可以作為一個像這樣靠近物體,它就變黑的一個遮罩,靠近物體,就得到一個消失的效果
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 6.13_DepthFade
DepthFade 深度消退
得到一個靠近其他物體時的遮罩效果(效果等同場景深度減去像素深度)
深度消退同樣需要設定為Translucent半透明模式
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade Opacity 代表連接配接原本的不透明,作為末端的輸出
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade FadeDistance 代表消退的距離,可以控制強度
這個輸入不會受到相機距離的影響,因為它計算的是物體之間的距離
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade 不會随着相機的距離産生變換,它是一個完全本地的效果
UE4材質06_距離,坐标,深度6.01_World_Position 6.02_Actor_Position6.03_Camera_Position6.04_Object_Position6.05_Object_Bounds6.06_Object_Radius 6.07_Object_Orientation6.08_Screen_Position6.09_Transform_Vector6.10_Distance6.11_PixelDepth 6.12_SceneDepth6.13_DepthFade