UE4距離測試工具【源碼】

在這個教程中我們將學習如何使用藍圖製作一個簡單的距離測量工具,它可以測量空間中用戶定義的點之間的距離。

1、運行機制

距離測量工具是基於樣條線的。它包含一些藍圖函數,可讓你調整樣條曲線以獲得空間中兩個或多個點之間的距離。

在這裏插入圖片描述

要使用距離測試工具,只需將其拖放到您的場景中。可以像移動任何其他樣條線組件一樣來更改終點。長度值會自動更新。可以通過按住 alt 鍵並向外拖動來添加其他點。

2、用戶變量

在“配置”下的詳細信息面板中可以找到一些易於使用的功能。

  • Reset Tangents:重置切線,將所有樣條線切線重置爲其默認值。
  • Zero-Out Tangents:將所有樣條切線設置爲零。這對於快速移除所有樣條曲線曲率很有用。
  • Unit Type:單位類型,此設置使你可以選擇更改工具使用的測量單位。默認情況下,它設置爲釐米。
  • Anchor Actor:如果此值不爲 null,則樣條線的末端將鎖定到此處指定的 Actor。

就這些參數,非常簡單,它可以在編輯器和運行時工作。

讓我們開始吧!

3、項目設置

我們將從製作一個新的虛幻引擎項目開始。對於本教程,我使用的是 4.26 版本,但它也應該適用於早期/後期版本。 在這裏插入圖片描述

這次我將創建一個空的僅藍圖項目——你不需要任何 C++ 來完成它。我還將添加入門內容,因此有一些道具可用於測試,這些道具比幾個立方體更有趣。

在這裏插入圖片描述

一旦我們啓動並運行,要做的第一件事就是在我的內容瀏覽器的根目錄中創建一個名爲MeasurementTool的新文件夾,以便確保爲該工具創建的所有資產都保留在此文件夾中。這非常重要,因爲我計劃將這些文件遷移到我的幾個項目中,並且不希望這些文件與現有資產混合或衝突。

4、單位類型

我們要在 MeasurementTool 文件夾中創建的第一件事是一個名爲EUnitTypes的枚舉。這樣就可以設置要使用的測量單位。

在這裏插入圖片描述

在這裏插入圖片描述

5、文字材質

在我們開始藍圖之前,需要爲其文本讀出組件製作一個新材質。此材質將是 Unreal 默認使用的文本渲染材質的近似副本,但我們將對其進行修改以始終面向相機。這個步驟可以在任何時候完成(也可以跳過),但最好現在就處理一下。

我們可以從頭開始創建這個材質,但是由於本教程的重點不是材質創建,所以我們走捷徑。在內容瀏覽器的視圖選項中有一個標記爲“顯示引擎內容”的複選框。啓用該功能後,運行對DefaultTextMaterialOpaque 的搜索。

在這裏插入圖片描述

我們不想修改這個材料(直接改變引擎內容幾乎總是一個糟糕的主意),所以右鍵單擊並複製。將其命名爲合理的名稱(我將其命名爲M_TextMaterial_CameraFacing),然後將其拖到MeasuringTool文件夾中。我們將對這種材料進行兩個快速更改。 在這裏插入圖片描述

首先,將 Vertex Color 輸出連接到 Emissive Color,這樣即使在弱光條件下也能看到文本。

第二個更改是創建一個“AlignMeshToTheCamera”函數和兩個 v​​ector3 值。此功能將改變其應用的網格的頂點,使其始終面向相機。默認設置使它以錯誤的角度呈現網格,因此我們需要稍微調整一下。

將向量插入Custom Object Basis 2 和 3(1 可以保持默認),並將它們分別設置爲 (1,0,0) 和 (0,-1,0)。這樣做是切換(現在倒置的)Y 軸和 Z 軸以更改對齊的旋轉,以便我們可以正確閱讀文本。

現在可以關閉材質編輯器。

6、創建藍圖

獲得枚舉和文本殘值後,我們將創建一個新的藍圖類。選擇“Actor”作爲其父類,因爲我們希望它是一個簡單的對象,可以將其拖放到場景中。我將其命名爲BP_MeasuringTool。 在這裏插入圖片描述

打開新藍圖並添加以下組件:

  • Spline 樣條組件的長度是工具將測量的長度。我們將製作一些函數來定義它的開始和結束位置。
  • Text Render (x2) 我們需要文本渲染組件以清晰的格式輸出樣條線的距離值。將其中一個命名爲Value,另一個命名爲Distance 。
  • Billboard Billboard不是絕對必要的,這只是爲了展示。也就是說,它有助於從背景中挑選出測量工具,並使整個事情看起來更專業一些。

添加組件後,單擊廣告牌並將其拖動到層次結構的頂部,使其成爲 Actor 的父組件,同樣將距離文本渲染作爲Value 的父級。藍圖佈局應如下所示。

在這裏插入圖片描述

7、組件設置

Billboard 可以將Billboard精靈設置爲你喜歡的任何內容。即使測量工具被部分遮擋,這純粹是一種幫助識別測量工具。如果你特別有藝術感,甚至可以創建自己的! 在這裏插入圖片描述

我發現精靈紋理“T_Loft_Spline”非常適合我。這是一個引擎紋理,所以你必須啓用“顯示引擎內容”。不用擔心這個文件位於你的內容文件夾之外,因爲它是一個未更改的引擎資源,虛幻引擎會知道在哪裏可以找到它。

Spline 我們需要在此處更改的唯一設置是選中“Input Spline Points to Construction Script”框。這很重要,因爲將樣條點數據暴露給構造腳本。沒有它,我們的工具將無法在編輯器中正確更新。 在這裏插入圖片描述

Text Render 兩個文本渲染組件都應該分配我們的M_TextMaterial_CameraFacing材質,並將水平和垂直對齊設置爲居中。

將距離文本值設置爲'DISTANCE',將其世界大小設置 爲16,並在 Z 軸上添加22 釐米,使其位於其父級上方。這就是我們將對這個組件所做的所有事情,因爲它只是爲了便於閱讀。 在這裏插入圖片描述

Value文本渲染的位置和文本值將以編程方式設置,因此它可以保持原位,但將其 World Size 值設置爲26。 在這裏插入圖片描述

8、更新距離值

返回藍圖並創建一個新的EUnitTypes變量。將其命名爲UnitType。這是在藍圖編輯器之外使用的變量之一,因此單擊眼睛圖標將其公開,並將其置於易於識別的類別中——我傾向於使用Config。

在這裏插入圖片描述

接下來,創建一個名爲UpdateText的新函數。這將根據樣條線的長度設置我們的Value渲染文本組件的位置和值。 在這裏插入圖片描述

從構造腳本和 Event Tick 中觸發此函數,以便它在編輯器中和運行時工作。 在這裏插入圖片描述

如果現在將BP_MeasurementTool拖放到場景中,將能夠移動樣條線並創建新點,並且文本將根據你在藍圖的詳細信息面板中設置的單位類型自動更新其值。

9、切線控制

樣條曲線可能很繁瑣。我們要添加的下一件事是一些功能,讓我們只需單擊一下即可設置所有切線。爲此,我們需要在藍圖中添加三個新函數。

第一個是“ SetTangents ”,它將簡單地遍歷我們所有樣條的切線並將它們設置爲指定的向量輸入。 在這裏插入圖片描述

最後兩個非常相似,我分別稱它們爲ZeroOutTangents和ResetTangents。每個都將使用不同的輸入觸發SetTangents——前者將所有切線設置爲0,0,0(無曲率),後者設置爲樣條線的默認值0,0,100。 在這裏插入圖片描述

這些是我們將在編輯器中觸發的功能,因此將它們分配給您的配置類別並確保它們的“調用編輯器”複選框均已勾選。這會將它們變成藍圖詳細信息面板中的按鈕。 在這裏插入圖片描述

10、Actor對齊

我們要添加到測量工具的最後一個功能是將樣條線的末端對齊到Actor的位置。爲此,我們需要Config部分中的最後一個變量,即對參與者的引用。我們將其命名爲AnchorActor。這是針對每個實例進行調整的另一項,因此請記住將其設置爲可公開編輯。

創建一個名爲SnapToActor的新函數,並將其添加到構造腳本和 Event Tick 中。確保它在文本更新功能之前觸發,否則讀數將過時!

在這裏插入圖片描述

SnapToActor函數很簡單。它會查看你是否分配了一個Actor,如果是,它會將最後一個樣條點移動到它的位置。如果AnchorActor變量爲空,則它什麼也不做。簡單! 在這裏插入圖片描述

11、結束語

教程代碼可以從這裏下載。

雖然可能沒有你在 Unreal Marketplace 上找到的插件的所有功能,但我希望這個簡單的測量工具可以幫助你完成項目,並且使用起來不那麼笨重。


原文鏈接:UE4距離測試工具開發 — BimAnt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章