问题总结笔记

news2024/11/17 17:49:21

1.向量旋转

       问题: 将一个向量旋转90

        方法:旋转矩阵

FVector FrontDir = EndMousePoint - Point;
FrontDir.Normalize();
FVector Left = FVector(-FrontDir.Y, FrontDir.X, 0);
Verties.Add(Point + Left * (WallWedith / 2));
Verties.Add(FVector(Verties[0].X, Verties[0].Y, Verties[0].Z + WallHeight));
Verties.Add(Point - Left * (WallWedith / 2));
Verties.Add(FVector(Verties[2].X, Verties[2].Y, Verties[2].Z + WallHeight));
Verties.Add(EndMousePoint - Left * (WallWedith / 2));
Verties.Add(FVector(Verties[4].X, Verties[4].Y, Verties[4].Z + WallHeight));
Verties.Add(EndMousePoint + Left * (WallWedith / 2));
Verties.Add(FVector(Verties[6].X, Verties[6].Y, Verties[6].Z + WallHeight));

Point:起点坐标, EndMousePoint:终点坐标。

依次加入点的坐标,WallWedith:立方体的宽,WallHeight:立方体的高。

2.ProceduralMeshActor

问题:利用ProceduralMeshActor创建立方体

//侧面
for (int32 i = 0; i < Verties.Num() - 1; i = i + 2) {

	Triangles.Add(i);
	Triangles.Add((i+2)% Verties.Num());
	Triangles.Add(i+1);
	Triangles.Add(i+1);
	Triangles.Add((i+2)% Verties.Num());
	Triangles.Add((i+3) % Verties.Num());
}

//上下面
for (int32 i = 0; i < 2; i++) {
	for (int32 j = 0; j < Verties.Num(); j++) {
		if (j % 2 == i) {
			Triangles.Add(j);
		}
	}
	Triangles.Add(i);
	Triangles.Add(i+4);

}

先构建一个侧面,通过循环构建所有侧面,上下面单独处理

3.鼠标屏幕坐标转换成空间坐标(有偏差,有待改进) 


FVector2D MousePosition;

UWorld* world = GetWorld();
if (world)
{
	APlayerController* pc = world->GetFirstPlayerController();
	if (pc)
	{
		ULocalPlayer* LocalPlayer = pc->GetLocalPlayer();
		if (LocalPlayer && LocalPlayer->ViewportClient)
		{
			LocalPlayer->ViewportClient->GetMousePosition(MousePosition);
		}
	}
}

float Scale = UWidgetLayoutLibrary::GetViewportScale(this);

FVector WorldLocation;
FVector WorldDirection;
APlayerController::DeprojectScreenPositionToWorld(MousePosition.X, MousePosition.Y, WorldLocation,WorldDirection);

MouseLocal = FVector(WorldDirection.X * 1000/ Scale, WorldDirection.Y * 1000/ Scale, 0);

记得在Build.cs文件里添加"UMG"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1615064.html

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

相关文章

告别数据丢失,轻松掌握文件自动备份秘籍

在这个数字化高速发展的时代&#xff0c;我们的工作和生活都离不开电脑&#xff0c;而电脑中存储的文件和数据更是至关重要。然而&#xff0c;数据丢失的风险无处不在&#xff0c;可能因为硬件故障、软件崩溃、病毒攻击等原因而导致重要文件丢失。因此&#xff0c;文件自动备份…

漫谈HAMR硬盘的可靠性-2

很显然&#xff0c;HAMR已经成为业内用于提升HDD硬盘容量硬盘的技术手段。三家机械硬盘HDD厂商&#xff0c;希捷、西数、东芝都已对HAMR硬盘进行了十多年的研究&#xff0c;但只有希捷大胆押注HAMR。相反&#xff0c;东芝和西部数据在采用HAMR之前选择了能量辅助垂直磁记录&…

iOS 在OC旧项目中使用Swift进行混编

iOS 在OC旧项目中使用Swift进行混编 1、创建桥接文件 ​ 第一次在Swift创建OC文件&#xff0c;或者第一次OC创建Swift时&#xff0c;xcode会提示桥接&#xff0c;Creat Bridging Header即可,这个文件用于Swift调用OC文件&#xff0c;与OC调用Swift无关。 2、在TARGETS中设置D…

机器学习(三)之监督学习2

前言&#xff1a; 本专栏一直在更新机器学习的内容&#xff0c;欢迎点赞收藏哦&#xff01; 笔者水平有限&#xff0c;文中掺杂着自己的理解和感悟&#xff0c;如果有错误之处还请指出&#xff0c;可以在评论区一起探讨&#xff01; 1.支持向量机&#xff08;Support Vector Ma…

第22天:安全开发-PHP应用留言板功能超全局变量数据库操作第三方插件引用

第二十二天 一、PHP留言板前后端功能实现 开发环境&#xff1a; DW PHPStorm PhpStudy Navicat Premium DW : HTML&JS&CSS开发 PHPStorm : 专业PHP开发IDE PhpStudy &#xff1a;Apache MYSQL环境 Navicat Premium: 全能数据库管理工具 二、数据库创建&架…

【Flutter】One or more plugins require a higher Android SDK version.

问题描述 项目里多个组件需要更高版本的Android SDK One or more plugins require a higher Android SDK version.解决方案&#xff1a; 报错提示requires Android SDK version 34 按提示修改android项目app里build.gradle的compileSdkVersion 为34 android {compileSdkVe…

线程池 ThreadPoolExecutor 参数详解

一、引言 提到 Java 线程池&#xff0c;就不得不说 ThreadPoolExecutor&#xff0c;它是 Java 并发包 java.util.concurrent 中的一个类&#xff0c;提供一个高效、稳定、灵活的线程池实现&#xff0c;用于实现多线程并发执行任务&#xff0c;提高应用程序的执行效率。 在《任…

JVM与GC原理

JVM运行流程 Java 虚拟机&#xff08;Java Virtual Machine&#xff0c;JVM&#xff09;是 Java 平台的核心组件之一&#xff0c;它是一个在实际硬件和操作系统上模拟运行 Java 字节码的虚拟计算机 Java 程序被执行的顺序通常包括以下几个步骤&#xff1a; 编辑&#xff08;E…

Midjourney 中文文档

快速使用 学习如何在Discord上使用Midjourney Bot从简单的文本提示中创建自定义图像。 行为准则 不要表现出不良行为。不要使用我们的工具制作可能引起煽动&#xff0c;不安或引起争议的图像。这包括血腥和成人内容。尊重其他人和团队。 1&#xff1a;加入Discord 访问Midj…

如何让AI生成自己喜欢的歌曲-AI音乐创作的正确方式 - 第507篇

历史文章 AI音乐&#xff0c;8大变现方式——Suno&#xff1a;音乐版的ChatGPT - 第505篇 日赚800&#xff0c;利用淘宝/闲鱼进行AI音乐售卖实操 - 第506篇 导读 在使用AI生成音乐&#xff08;AI写歌&#xff09;的时候&#xff0c;你是不是有这样的困惑&#xff1a; &…

Docker 部署网页版 vscode (code-server)

什么是 code-server code-server 是一个基于 Visual Studio Code 的开源项目&#xff0c;它允许你通过 Web 浏览器来使用 Visual Studio Code 的编辑功能。这意味着你可以在任何设备上&#xff0c;只要有浏览器和网络连接&#xff0c;就可以访问和使用 Visual Studio Code&…

如果备份了oradata文件,该如何还原Oracle数据呢?

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

(mac)性能监控平台搭建JMeter+Grafana+Influxdb

【实现原理】 通过influxdb数据库存储jmeter的结果&#xff0c;再通过grafana采集influxdb数据库数据&#xff0c;完成监控平台展示 一、时间序列数据InfluxDB 1.InfluxDB下载安装 官网下载 https://portal.influxdata.com/downloads/ 官网最新版&#xff1a; &#xff0…

AI预测体彩排列3第2套算法实战化测试第1弹2024年4月22日第1次测试

从今天开始&#xff0c;开始新一轮的测试&#xff0c;本轮测试&#xff0c;以6码为基础&#xff0c;同步测试杀号情况&#xff0c;争取杀至4-5码。经过计算&#xff0c;假如5码命中&#xff0c;即每期125注&#xff0c;投入250元&#xff0c;十期共计2500元&#xff0c;则命中率…

06 JavaScript学习:语句

JavaScript 语句是用来执行特定任务或操作的一组指令。它可以包括变量声明、条件语句、循环语句、函数调用等。JavaScript 语句以分号结尾&#xff0c;每个语句都会被解释器执行。 分号 ; 在JavaScript中&#xff0c;分号&#xff08;;&#xff09;用于表示语句的结束。尽管在…

一款pdf工具

下载链接&#xff1a;点击跳转&#xff1b; 它是一个installer&#xff0c;下好它之后&#xff0c;把网断掉&#xff0c;然后双击它&#xff0c;他会默认安装在C盘&#xff0c;安装时&#xff0c;浏览器可能会有一个弹窗&#xff0c;直接关掉并进入任务管理器杀掉所有smallerp…

漫谈HAMR硬盘的可靠性-1

随着云计算、AI应用、大数据分析等领域对存储需求的持续增长&#xff0c;HAMR技术正逐步引领HDD行业进入新的发展阶段。目前&#xff0c;业内已经有了基于HAMR技术的大容量硬盘&#xff0c;并计划在未来几年内进一步提高至40TB甚至更高容量。 希捷在之前财报中透露&#xff0c;…

C语言结构体,枚举,联合

系列文章目录 第一章 C语言基础知识 第二章 C语言控制语句 第三章 C语言函数详解 第四章 C语言数组详解 第五章 C语言操作符详解 第六章 C语言指针详解 第七章 C语言结构体详解 第八章 详解数据在内存中的存储 第九章 C语言指针进阶 文章目录 1. 结构体 1.1 声明结构…

xhEditor实现WORD粘贴图片自动上传

1.下载示例&#xff1a; 从官网下载 http://www.ncmem.com/webapp/wordpaster/versions.aspx 从gitee中下载 https://gitee.com/xproer/wordpaster-php-xheditor1x 2.将插件目录复制到项目中 3.引入插件文件 定义插件图标 初始化插件&#xff0c;在工具栏中添加插件按钮 效果…

面向对象目录总结

【零】思维导图 【一】初识面向对象 Python 初识面向对象-CSDN博客 【二】面向对象-封装 Python 面向对象之封装和装饰器property_面向对象python封装property-CSDN博客 【三】面向对象-继承 Python 面向对象之继承和组合_面向对象 组合 继承-CSDN博客 【四】面向对象-多…