天天看點

UE4中材質基于高度的顔色漸變

在資料可視化領域,顔色是非常重要的一個視覺通道,在UE4中想要通過材質顔色的變化來編碼一些高度等資訊,比如Mesh最高點處為紅色,最低點處為藍色。在此記錄一下我找到的一種實作方式。

UE4中材質基于高度的顔色漸變

基于高度(Z軸)的漸變顔色材質藍圖示例

  • 首先World Position節點(World Position官方文檔),它傳回的是像素的絕對世界位置,該位置以世界場景中(0,0,0)為坐标原點,Object Position節點傳回的是對象的世界場景空間中心位置(Object Position官方文檔),二者相減得到的是像素相對于對象的位置。
UE4中材質基于高度的顔色漸變

像素位置減去對象場景位置

  •  Object Bounds節點(Object Bounds官方文檔)傳回對象在每個軸的大小,第一步獲得的位置與對象的大小相除獲得該位置占對象大小的比例,範圍是(-1,1),是以我們可以通過加1再除以2将其映射到(0,1)友善後邊的插值。
UE4中材質基于高度的顔色漸變

位置與對象大小相除并重新映射到(0,1)

  •  最後以上述的得到的結果的Z值作為Alpha(材質中X,Y,Z分别對應R,G,B)對顔色進行插值,當然也可以基于這個值對對象的亮度,透明度進行插值,以此實作亮度的漸變以及透明度的漸變。同時X,Y方向的漸變與Z的思路一緻,即隻需要使用R或G作為Alpha進行插值即可。
UE4中材質基于高度的顔色漸變

基于Z值對顔色進行插值

UE4中材質基于高度的顔色漸變

基于Z值對亮度進行插值

  •  最後使用UE4中自帶的樓梯進行測試,為友善展示,已将材質變為不透明。
UE4中材質基于高度的顔色漸變

效果展示

參考文章

建立漸變顔色

繼續閱讀