【UE】用樣條線實現測距功能(上)

目錄

效果

步驟

一、創建樣條網格體組件3D模型

二、實現點擊連線功能?

三、實現顯示兩點間距離功能

?

效果

步驟

一、創建樣條網格體組件3D模型

創建一個圓柱模型,這里底面半徑設置為10mm,高度設置為1000mm

注意該模型的坐標軸在如下位置:

然后設置模型的坐標為世界原點

二、實現點擊連線功能?

1. 將模型導入到UE中

給該網格體一個材質

對材質創建一個材質實例,調整參數自發光顏色和強度

2. 新建一個Actor藍圖,這里命名為“BP_Sphere”

該藍圖中只有一個球體組件,然后給該球體賦予上一步創建的材質實例

3. 再新建一個藍圖,這里命名為“BP_Spline”

打開“BP_Spline”,將根節點的可移動性設置為靜態

在事件圖表中,在事件開始運行后,添加一個樣條組件賦予到一個變量上,然后清除樣條組件上的所有的點,最后啟用輸入并顯示鼠標光標

4. 再新建一個藍圖函數庫,這里命名為“BPHL”

打開“BPHL”,添加一個新函數,這里函數命名為“射線檢測”

該函數邏輯如下:

5. 回到藍圖“BP_Spline”中,創建一個自定義事件,這里命名為“測量”,在該事件執行后,發出一條射線,當射線碰撞到某處,我們獲取到該處的位置,然后在該位置添加一個樣條點和一個球體,再將圓柱賦予到生成的樣條線上,再設置每一個樣條的起始和結束點

為控制樣條網格體的粗細,我們可以通過設置起始縮放和結束縮放節點實現(或者直接在“添加網條網格體組件”這個節點上,通過設置“Relative Transform”引腳來控制樣條網格體縮放),這里變量“SplineMeshSize”默認值設置為1

當鼠標點擊時調用自定義事件“測量”

6. 在關卡藍圖中創建藍圖“BP_Sphere”

此時效果如下所示:

我們發現樣條網格體的材質沒有顯示出來,這里需要打開對應的材質,勾選上“使用樣條網格體”

可以看到此時材質就正常顯示了

如果覺得球體太大可以在“BP_Spline”的事件圖表中適當縮小比例

三、實現顯示兩點間距離功能

1. 新建一個控件藍圖,命名為“WBP_Distance”,用于顯示每兩個樣條點之間的距離

打開“WBP_Distance”,添加“畫布面板”和“文本”控件,其中“文本”控件的錨點設置在中下,位置X位置Y均為0,尺寸X尺寸Y分別設置為100和40,對齊設置為(0.5,1),勾選“大小到內容”。最后設置“屏幕尺寸”為“所需”

在圖表中創建一個浮點型變量,這里命名為“Distance”

為文本控件的內容創建一個綁定函數

當變量Distance發生改變時,文本內容也會相應變化

2. 打開藍圖“BP_Spline”,先將第二步(實現點擊功能)中的節點折疊到函數

在“點擊連線”的邏輯后,將我們制作好的控件藍圖添加進來

至于控件藍圖顯示在場景中的哪些位置,應該是顯示在每兩個樣條點中間的位置

此時運行效果如下:

可以看到在上面的效果中,第一個點也出現了距離顯示,我們可以判斷一下當前生成的樣條點數量是否大于1,只有生成的樣條點數量大于1時才顯示控件藍圖

此時就不會在第一個點位置生成控件藍圖了

接下來就要設置距離的內容

在折疊的函數“F_點擊連線”中通過兩個樣條點的位置計算出向量差的長度,除100將cm轉為m

將結果提升為全局變量“Distance”

在事件圖表中,獲取到控件組件包含的控件藍圖,將該控件藍圖類型轉化為“WBP_Distance”,在修改控件藍圖中的變量“Distance”

此時我們就可以準確的計算出兩點之間的距離了,此時效果如下:

視頻鏈接:

https://www.bilibili.com/video/BV1tT4y1r7nD/?spm_id_from=333.788&vd_source=36a3e35639c44bb339f59760641390a8

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161065.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161065.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161065.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于pytest的服務端http請求的自動化測試框架?

1、引言 我有一個朋友是做 Python 自動化測試的。前幾天他告訴我去參加一個大廠面試被刷了。 我問他是有沒有總結被刷下來的原因。他說面試官問了一些 pytest 單元測試框架相關的知識,包括什么插件系統和用力篩選。但是他所在的公司用的技術是基于 unittest 的&am…

Sentinel與SpringBoot整合

好的&#xff0c;以下是一個簡單的Spring Cloud整合Sentinel的代碼示例&#xff1a; 首先&#xff0c;在pom.xml中添加以下依賴&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel&l…

swift-基礎

print區別 print(1,2,3, separator: "-", terminator: "\n")//表示用-來分割//1-2-3 //terminator表示用\n作為終止符 var a "a",b "b" print(a b) //ab print("\(a)前面是a變量\(b)后面是b變量")變量 var name "…

Win10系統無法登錄Xbox live的四種解決方法

在Win10系統中&#xff0c;用戶可以登錄Xbox live平臺&#xff0c;暢玩自己喜歡的游戲。但是&#xff0c;有用戶卻遇到了無法登錄Xbox live的問題。接下來小編給大家詳細介紹四種簡單的解決方法&#xff0c;解決后用戶在Win10電腦上就能成功登錄上Xbox live平臺。 Win10系統無法…

Linux編程 文件操作 creat open

文件描述符 文件描述符在形式上是一個非負整數。實際上&#xff0c;它是一個索引值&#xff0c;指向內核為每一個進程所維護的該進程打開文件的記錄表。當程序打開一個現有文件或者創建一個新文件時&#xff0c;內核向進程返回一個文件描述符。 啟動一個進程之后&#xff0c;…

SquareCTF-2023 Web Writeups

官方wp&#xff1a;CTFtime.org / Square CTF 2023 tasks and writeups sandbox Description&#xff1a; I “made” “a” “python” “sandbox” “”“” nc 184.72.87.9 8008 先nc連上看看&#xff0c;只允許一個單詞&#xff0c;空格之后的直接無效了。 flag就在當…

(C)一些題2

1.在 C 語言中&#xff08;以 16位 PC 機為例&#xff09;,5種基本數據類型的存儲空間長度的順序為&#xff08;&#xff09; A . char < int < long int <float < double B . char int < long int<float <double C . char < int < long int …

inux應用開發基礎知識——串口應用編程(十一)

前言&#xff1a; 在Linux系統中&#xff0c;串口設備以文件的形式存在&#xff0c;通常位于/dev目錄下&#xff0c;如ttyS0、ttyUSB0等。這些設備文件可以用于讀取和寫入數據。要使用串口設備&#xff0c;需要打開相應的設備文件。在打開串口時&#xff0c;可以使用O_RDWR選項…

哈夫曼樹你需要了解一下

哈夫曼樹介紹哈夫曼數特點哈夫曼應用場景哈夫曼構建過程哈夫曼樹示例拓展 哈夫曼樹介紹 哈夫曼樹&#xff08;Huffman Tree&#xff09;是一種特殊的二叉樹&#xff0c;也被稱為最優二叉樹。在計算機科學中&#xff0c;它是由權值作為葉子節點構造出來的一種二叉樹。哈夫曼樹的…

05 取樣器(BeanShell和JSR223 Sampler)

一、取樣器作用 1、取樣器可以理解為Jmeter的橋梁&#xff0c;或者是Jmeter的加工廠&#xff1b; 2、Jmeter使用過程中&#xff0c;經常有些數據不能直接使用&#xff0c;需要加工后才能使用&#xff1b;這樣就用到了取樣器&#xff1b;但是這里存在問題&#xff0c;Jmeter中的…

Differences between package.json and pnpm-lock.yaml

1.pnpm-lock.yaml 是pnpm包管理工具生成的確保依賴包的版本在所有的環境里面都相同對依賴包的任何操作都會更新在該文件中&#xff0c;因此&#xff0c;需要確保提交到代碼倉庫中。包含了解析的依賴項和版本號。如下圖&#xff1a; 2.package.json 列出應用所需的依賴和元數…

批量修改文件名

原理&#xff1a; 利用 bat 的 REN 舊名字 新名字 命令 第一步&#xff1a; 【CtrlA】選中所有文件&#xff0c;按下【Shift】鍵右鍵任一文件夾彈出窗口選擇【復制為路徑】 第二步&#xff1a; 使用Excel技巧構造出 REN 舊名字 新名字 第三步&#xff1a; 用拼接好的命令…

【黑馬甄選離線數倉day01_項目介紹與環境準備】

1. 行業背景 1.1 電商發展歷史 電商1.0: 初創階段20世紀90年代&#xff0c;電商行業剛剛興起&#xff0c;主要以B2C模式為主&#xff0c;如亞馬遜、eBay等 ? 電商2.0: 發展階段21世紀初&#xff0c;電商行業進入了快速發展階段&#xff0c;出現了淘寶、京東等大型電商平臺&a…

(swjtu西南交大)數據庫實驗(數據庫需求分析):音樂軟件數據管理系統

實驗內容&#xff1a; 數據庫需求分析&#xff1a;各用戶組需求描述&#xff0c;繪出數據流圖&#xff08;詳細案例參見教材p333~p337&#xff0c;陶宏才&#xff0c;數據庫原理及設計&#xff0c;第三版&#xff09;&#xff1b; 一、選題背景 近年來&#xff0c;“聽歌”逐…

Ajax入門-Express框架介紹和基本使用

電腦實在忒垃圾了&#xff0c;出現問題耗費了至少一刻鐘time&#xff0c;然后才搞出來正常的效果&#xff1b; 效果鎮樓 另外重新安裝了VScode軟件&#xff0c;原來的老是報錯&#xff0c;bug。。&#xff1b; 2個必要的安裝命令&#xff1b; 然后建立必要的文件夾和文件&…

雷軍:我的程序人生路

今天有朋友發給我一篇我在20年前在BBS上寫的帖子。那還是1996年&#xff0c;我們通過電話線撥號連接到西點BBS上飆帖子玩的年代。那是一個互聯網混沌初開的年代&#xff0c;那是一個BBS和Email幾乎主宰了全部互聯網的年代&#xff0c;那是一個青春的理想和熱血沸騰的年代。 我…

新能源車將突破2000萬輛,漢威科技為電池安全保駕護航

近年來&#xff0c;我國新能源汽車銷量持續突破新高。據中汽協數據&#xff0c;1~10月&#xff0c;國內新能源汽車銷量達728萬輛&#xff0c;同比增長37.8%&#xff0c;市場占有率達到30.4%。隨著第四季度車市傳統旺季的到來&#xff0c;新能源消費需求將進一步釋放&#xff0c…

Python小灰灰

系列文章 序號文章目錄直達鏈接表白系列1浪漫520表白代碼https://want595.blog.csdn.net/article/details/1306668812滿屏表白代碼https://want595.blog.csdn.net/article/details/1297945183跳動的愛心https://want595.blog.csdn.net/article/details/1295031234漂浮愛心htt…

【軟件工程師從0到1】- 封裝 (知識匯總)

前言 介紹&#xff1a;大家好啊&#xff0c;我是hitzaki辰。 社區&#xff1a;&#xff08;完全免費、歡迎加入&#xff09;日常打卡、學習交流、資源共享的知識星球。 自媒體&#xff1a;我會在b站/抖音更新視頻講解 或 一些純技術外的分享&#xff0c;賬號同名&#xff1a;hi…

藍橋等考C++組別八級005

第一部分:選擇題 1、C++ L8 (15分) 以下關于break的說法正確的是( )。 A. 只有循環結構里面才可以使用break語句。 B. 程序運行到break語句的時候會暫停,直到用戶按下任意鍵才會繼續執行。 C. 嵌套循環的內層循環里面遇到break的時候,整個嵌套循環結構會立即停止,…