【UE】用样条线实现测距功能(上)

news2025/1/18 10:04:51

目录

效果

步骤

一、创建样条网格体组件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.coloradmin.cn/o/1239320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计循环队列,解决假溢出问题

什么是假溢出? 当我们使用队列这种基本的数据结构时,很容易发现,随着入队和出队操作的不断进行,队列的数据区域不断地偏向队尾方向移动。当我们的队尾指针指向了队列之外的区域时,我们就不能再进行入队操作了&#xff…

瑞吉外卖优化

1.缓存问题 用户数量多&#xff0c;系统访问量大频繁访问数据库,系统性能下降,用户体验差 2.导入依赖 和配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependenc…

C语言好好题(一维数组)

两天没有更新了&#xff0c;贴纸们&#xff0c;有没有想我呀。&#x1f604;&#x1f604;&#x1f604; 好了&#xff0c;就寒暄到这里吧&#xff0c;下面请看题&#xff1a; 有序序列判断 输入一个整数序列&#xff0c;判断是否是有序序列&#xff0c;有序&#xff0c;指序列…

Java基础(程序控制结构篇)

Java的程序控制结构与C语言一致&#xff0c;分为顺序结构、选择结构&#xff08;分支结构&#xff09;和循环结构三种。 一、顺序结构 如果程序不包含选择结构或是循环结构&#xff0c;那么程序中的语句就是顺序的逐条执行&#xff0c;这就是顺序结构。 import java.util.Sc…

iperf3 网络测试

iperf3 测试网络的上下行带宽 下载地址 https://iperf.fr/iperf-download.php 开启服务器 开启客户端 常用命令 -c 代表客户端-s 代表服务端-u 代表 udp-r 代表数据方向是否反向 https://baijiahao.baidu.com/s?id1731514357681464971&wfrspider&forpc

c语言-操作符详解(含优先级与结合性)

文章目录 了解什么是操作数、操作符操作数&#xff1a;操作符 操作符详解&#xff1a;1.算术操作符&#xff1a; 、- 、* 、/ 、%2.移位操作符: << >>3.位操作符: & | ^4. 赋值操作符: 、 、 - 、 * 、 / 、% 、<< 、>> 、& 、| 、^5. 单⽬操…

移动机器人,开启智能柔性制造新篇章

智能制造是当今工业发展的必然趋势&#xff0c;而柔性制造则是智能制造的重要组成部分。在这个快速变革的时代&#xff0c;如何提高生产效率、降低成本、增强灵活性成为了制造业的关键挑战。富唯智能移动机器人应运而生&#xff0c;为柔性制造注入了新的活力。 基于富唯智能AI-…

xss-labs靶场6-10关

文章目录 前言一、靶场6-10关1、关卡62、关卡73、关卡84、关卡95、关卡10 总结 前言 此文章只用于学习和反思巩固xss攻击知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不能随意去尚未授权的网站做渗透测试&#xff01;&#xff01;&#xff01; …

xilinx zynq平台 elf文件到bin文件格式转化

在嵌入式实际开发过程中&#xff0c;因为系统资源有限&#xff0c;需要尽可能的节省资源&#xff0c;尤其是flash资源。在某些场景下&#xff0c;需要直接执行占用内存较小的bin文件&#xff0c;而非elf文件。但xilinx SDK编译的输出文件一般为elf文件&#xff0c;所以需要进行…

国际版Amazon Lightsail的功能解析

Amazon Lightsail是一项易于使用的云服务,可为您提供部署应用程序或网站所需的一切,从而实现经济高效且易于理解的月度计划。它是部署简单的工作负载、网站或开始使用亚马逊云科技的理想选择。 作为 AWS 免费套餐的一部分&#xff0c;可以免费开始使用 Amazon Lightsail。注册…

【Delphi】使用TWebBrowser执行JavaScript命令传入JSON参数执行出错解决方案

目录 一、问题背景&#xff1a; 二、实际示例&#xff1a; 三、解决方案&#xff1a; 1. Delphi 代码&#xff1a; 2. javaScript代码&#xff1a; 一、问题背景&#xff1a; 在用Delphi开发程序&#xff0c;无论是移动端还是PC端&#xff0c;都可以很方便的使用TWebBrows…

LongAccumulator

原子操作之LongAccumulator 和LongAdder的区别在于&#xff0c;LongAdder是在Cell里面只能做加减操作&#xff0c;不能乘除&#xff0c;而LongAccumulator就可以定义乘除操作。原理和LongAdder都是一样的&#xff0c;一个Base和一个Cells数组。 原文跳转地址

Java游戏之飞翔的小鸟

前言 飞翔的小鸟 小游戏 可以作为 java入门阶段的收尾作品 &#xff1b; 需要掌握 面向对象的使用以及了解 多线程&#xff0c;IO流&#xff0c;异常处理&#xff0c;一些java基础等相关知识。一 、游戏分析 1. 分析游戏逻辑 &#xff08;1&#xff09;先让窗口显示出来&#x…

51单片机按键控制LED灯亮灭的N个玩法

51单片机按键控制LED灯亮灭的N个玩法 1.概述 这篇文章介绍按键的使用&#xff0c;以及通过控制LED灯的小实验&#xff0c;发现按键中存在的问题&#xff0c;然后思考并解决这些问题。达到熟练使用按键控制元器件。 2.搭建硬件环境 1.硬件准备 名称型号数量单片机STC12C205…

【办公常识】写好的代码如何上传?使用svn commit

首先找到对应的目录 找到文件之后点击SVN Commit

如何做好项目管理?年薪百万项目大佬一直在用这11张图

大家好&#xff0c;我是老原。 日常工作中&#xff0c;我们会遇到各种大大小小的工作项目&#xff0c;如何能让项目保质保量的完成&#xff0c;是我们项目经理的目标。 项目管理的流程可以说是由一系列的子过程组成的&#xff0c;它是一个循序渐进的过程&#xff0c;所以不能…

排序算法-----快速排序(非递归实现)

目录 前言 快速排序 基本思路 非递归代码实现 前言 很久没跟新数据结构与算法这一栏了&#xff0c;因为数据结构与算法基本上都发布完了&#xff0c;哈哈&#xff0c;那今天我就把前面排序算法那一块的快速排序完善一下&#xff0c;前面只发布了快速排序递归算法&#xff0c;…

智能合约安全漏洞与解决方案

// SPDX-License-Identifier: MIT pragma solidity ^0.7.0;import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v3.3/contracts/math/SafeMath.sol";/*智能合约安全在智能合约中安全问题是一个头等大事&#xff0c;因为智能合约不像其他语…

LeetCode 2304. 网格中的最小路径代价:DP

【LetMeFly】2304.网格中的最小路径代价&#xff1a;DP 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-path-cost-in-a-grid/ 给你一个下标从 0 开始的整数矩阵 grid &#xff0c;矩阵大小为 m x n &#xff0c;由从 0 到 m * n - 1 的不同整数组成。你可以…