【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…

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的时候,整个嵌套循环结构会立即停止,…