在資料可視化領域,顔色是非常重要的一個視覺通道,在UE4中想要通過材質顔色的變化來編碼一些高度等資訊,比如Mesh最高點處為紅色,最低點處為藍色。在此記錄一下我找到的一種實作方式。
基于高度(Z軸)的漸變顔色材質藍圖示例
- 首先World Position節點(World Position官方文檔),它傳回的是像素的絕對世界位置,該位置以世界場景中(0,0,0)為坐标原點,Object Position節點傳回的是對象的世界場景空間中心位置(Object Position官方文檔),二者相減得到的是像素相對于對象的位置。
像素位置減去對象場景位置
- Object Bounds節點(Object Bounds官方文檔)傳回對象在每個軸的大小,第一步獲得的位置與對象的大小相除獲得該位置占對象大小的比例,範圍是(-1,1),是以我們可以通過加1再除以2将其映射到(0,1)友善後邊的插值。
位置與對象大小相除并重新映射到(0,1)
- 最後以上述的得到的結果的Z值作為Alpha(材質中X,Y,Z分别對應R,G,B)對顔色進行插值,當然也可以基于這個值對對象的亮度,透明度進行插值,以此實作亮度的漸變以及透明度的漸變。同時X,Y方向的漸變與Z的思路一緻,即隻需要使用R或G作為Alpha進行插值即可。
基于Z值對顔色進行插值
基于Z值對亮度進行插值
- 最後使用UE4中自帶的樓梯進行測試,為友善展示,已将材質變為不透明。
效果展示
參考文章
建立漸變顔色