【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.mzph.cn/news/161065.shtml

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

相关文章

基于pytest的服务端http请求的自动化测试框架?

1、引言 我有一个朋友是做 Python 自动化测试的。前几天他告诉我去参加一个大厂面试被刷了。 我问他是有没有总结被刷下来的原因。他说面试官问了一些 pytest 单元测试框架相关的知识,包括什么插件系统和用力筛选。但是他所在的公司用的技术是基于 unittest 的&am…

Win10系统无法登录Xbox live的四种解决方法

在Win10系统中,用户可以登录Xbox live平台,畅玩自己喜欢的游戏。但是,有用户却遇到了无法登录Xbox live的问题。接下来小编给大家详细介绍四种简单的解决方法,解决后用户在Win10电脑上就能成功登录上Xbox live平台。 Win10系统无法…

Linux编程 文件操作 creat open

文件描述符 文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。 启动一个进程之后,…

SquareCTF-2023 Web Writeups

官方wp:CTFtime.org / Square CTF 2023 tasks and writeups sandbox Description: I “made” “a” “python” “sandbox” “”“” nc 184.72.87.9 8008 先nc连上看看,只允许一个单词,空格之后的直接无效了。 flag就在当…

inux应用开发基础知识——串口应用编程(十一)

前言: 在Linux系统中,串口设备以文件的形式存在,通常位于/dev目录下,如ttyS0、ttyUSB0等。这些设备文件可以用于读取和写入数据。要使用串口设备,需要打开相应的设备文件。在打开串口时,可以使用O_RDWR选项…

哈夫曼树你需要了解一下

哈夫曼树介绍哈夫曼数特点哈夫曼应用场景哈夫曼构建过程哈夫曼树示例拓展 哈夫曼树介绍 哈夫曼树(Huffman Tree)是一种特殊的二叉树,也被称为最优二叉树。在计算机科学中,它是由权值作为叶子节点构造出来的一种二叉树。哈夫曼树的…

05 取样器(BeanShell和JSR223 Sampler)

一、取样器作用 1、取样器可以理解为Jmeter的桥梁,或者是Jmeter的加工厂; 2、Jmeter使用过程中,经常有些数据不能直接使用,需要加工后才能使用;这样就用到了取样器;但是这里存在问题,Jmeter中的…

Differences between package.json and pnpm-lock.yaml

1.pnpm-lock.yaml 是pnpm包管理工具生成的确保依赖包的版本在所有的环境里面都相同对依赖包的任何操作都会更新在该文件中,因此,需要确保提交到代码仓库中。包含了解析的依赖项和版本号。如下图: 2.package.json 列出应用所需的依赖和元数…

【黑马甄选离线数仓day01_项目介绍与环境准备】

1. 行业背景 1.1 电商发展历史 电商1.0: 初创阶段20世纪90年代,电商行业刚刚兴起,主要以B2C模式为主,如亚马逊、eBay等 ​ 电商2.0: 发展阶段21世纪初,电商行业进入了快速发展阶段,出现了淘宝、京东等大型电商平台&a…

(swjtu西南交大)数据库实验(数据库需求分析):音乐软件数据管理系统

实验内容: 数据库需求分析:各用户组需求描述,绘出数据流图(详细案例参见教材p333~p337,陶宏才,数据库原理及设计,第三版); 一、选题背景 近年来,“听歌”逐…

Ajax入门-Express框架介绍和基本使用

电脑实在忒垃圾了,出现问题耗费了至少一刻钟time,然后才搞出来正常的效果; 效果镇楼 另外重新安装了VScode软件,原来的老是报错,bug。。; 2个必要的安装命令; 然后建立必要的文件夹和文件&…

新能源车将突破2000万辆,汉威科技为电池安全保驾护航

近年来,我国新能源汽车销量持续突破新高。据中汽协数据,1~10月,国内新能源汽车销量达728万辆,同比增长37.8%,市场占有率达到30.4%。随着第四季度车市传统旺季的到来,新能源消费需求将进一步释放&#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】- 封装 (知识汇总)

前言 介绍:大家好啊,我是hitzaki辰。 社区:(完全免费、欢迎加入)日常打卡、学习交流、资源共享的知识星球。 自媒体:我会在b站/抖音更新视频讲解 或 一些纯技术外的分享,账号同名:hi…

Jenkins扩展篇-流水线脚本语法

JenkinsFile可以通过两种语法来声明流水线结构,一种是声明式语法,另一种是脚本式语法。 脚本式语法以Groovy语言为基础,语法结构同Groovy相同。 由于Groovy学习不适合所有初学者,所以Jenkins团队为编写Jenkins流水线提供一种更简…

DataFunSummit:2023年OLAP引擎架构峰会-核心PPT资料下载

一、峰会简介 OLAP技术是当前大数据领域的热门方向,该领域在各个行业都有广泛的使用场景,对OLAP引擎的功能有丰富多样的需求。同时,在性能、稳定性和成本方面,也有诸多挑战。目前,OLAP技术没有形成统一的事实标准&…

redis性能管理

redis的数据库是存放在内存当中,所以对内存的监控至关重要 redis内存监控和解析 1.如何查看redis内存使用情况 [rootlocalhost utils]# redis-cli -h 20.0.0.170 -p 6379 20.0.0.170:6379> info memory used_memory:853336 //redis中数据占用的内存 use…

触发设备离线

业务场景 业务开发过程中,我们经常会需要判断远程终端是否在线,当终端离线的时候我们需要发送消息告知相应的系统, 环形队列 1.创建一个index从0到30的环形队列(本质是个数组) 2.环上每一个slot是一个Set&#xf…

MYSQL索引使用注意事项

索引使用注意事项: 1.索引列运算 不要在索引列上进行运算操作,否则索引将失效; 2.字符串不加引号 字符串类型使用时,不加引号,否则索引将失效; 3.模糊查询 如果仅仅是尾部模糊匹配,索引将不会失…

关于软raid的实现及常见问题

RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。 磁盘阵列是由很多价格较便宜的磁盘,以硬件(RAID卡)或软件(MDADM&…