UE5世界中绘制射线(C++)

UE5世界中绘制射线(C++)
引入的源文件库
#include “GameFramework/Actor.h”//引用游戏框架的演员Actor的源文件库
#include “Engine/TriggerVolume.h”//引用引擎的触发区域TriggerVolume的源文件库
#include “Engine/World.h”//引用引擎的世界World的源文件库
#include “DrawDebugHelpers.h”//引用射线的源文件库

在.h文件中定义射线长度
private:
UPROPERTY(Editanywhere);
//定义射线长度
float Reach = 5000.0f;

在.cpp文件中实现实现方法

// 每一帧运行(unity中的Update)
void UGrabber::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
	Super::TickComponent(DeltaTime, TickType, ThisTickFunction);

	// ...
	FVector PlayerViewPointLocation;//定义射线的起点位置
	FRotator PlayerViewPointRotation;//定义射线的旋转后面朝方向
	//获取角色的位置和旋转方向
	GetWorld()->GetFirstPlayerController()->GetPlayerViewPoint(PlayerViewPointLocation,PlayerViewPointRotation);
	//射线终点位置(向量的加法,向量c=向量a+向量b)
	FVector LineTraceEndLocation = PlayerViewPointLocation + PlayerViewPointRotation.Vector() * Reach;
	//在场景中画线
	DrawDebugLine(
		GetWorld(),//获取当前运行世界(场景)
		PlayerViewPointLocation,//起点位置
		LineTraceEndLocation,//终点位置
		FColor(255, 0, 0),//颜色
		false,//是否一直在世界中显示射线
		0.0f,
		0.0f,
		3.0f//射线粗细
	);
}

运行之后效果图:
在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将MediaPipe的坐标转换为UE4世界坐标,你需要知道以下信息: 1. MediaPipe的坐标原点是左上角,而UE4的坐标原点是心点。 2. MediaPipe的坐标以像素为单位,而UE4的坐标以厘米为单位。 3. MediaPipe的坐标系是2D平面,而UE4的坐标系是3D空间。 因此,为了将MediaPipe的坐标转换为UE4世界坐标,你需要进行以下步骤: 1. 将MediaPipe的坐标原点移动到左下角。 2. 将MediaPipe的坐标从像素转换为厘米。 3. 将MediaPipe的坐标转换为3D坐标。 4. 将3D坐标转换为UE4世界坐标。 以下是一个示例代码,它将MediaPipe的坐标转换为UE4世界坐标: ```cpp // MediaPipe坐标 cv::Point3f mediapipe_point = ...; // 将原点移动到左下角 mediapipe_point.y = height - mediapipe_point.y; // 将坐标从像素转换为厘米 mediapipe_point.x *= cm_per_pixel; mediapipe_point.y *= cm_per_pixel; // 将2D坐标转换为3D坐标 cv::Point3f mediapipe_point_3d(mediapipe_point.x, mediapipe_point.y, 0); // 将3D坐标转换为UE4世界坐标 FVector world_location = FVector(mediapipe_point_3d.x, mediapipe_point_3d.y, mediapipe_point_3d.z); ``` 其,`height`是MediaPipe图像的高度,`cm_per_pixel`是每个像素对应的厘米数。要注意,这个值需要根据实际情况进行设置。然后,将MediaPipe的2D坐标转换为3D坐标时,我们将其z坐标设置为0,因为MediaPipe的坐标系是2D平面。最后,我们将3D坐标转换为UE4世界坐标时,我们使用了UE4的`FVector`类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值