UE4学习笔记:访问StaticMesh的网格顶点并画点

这篇博客介绍了如何在UE4中访问StaticMesh的网格顶点并进行描点操作。作者通过更新UE4官方论坛上的代码示例,提供了一种适用于当前引擎的方法。博客内容包括注意事项、访问顶点的代码实现、描点的步骤以及运行结果展示。代码中使用FPositionVertexBuffer类来获取顶点坐标,并在Tick函数中通过DrawDebugPoint函数进行描点绘制。
摘要由CSDN通过智能技术生成

学习来源:UE4官方论坛:

地址:https://forums.unrealengine.com/development-discussion/c-gameplay-programming/7509-accessing-vertex-positions-of-static-mesh#post1824245

这里面第一页Rama大神的代码在现在的引擎中已经不再适用,我也在这个问题底下发了新的代码,32楼就是本人。而且之前的代码中并没有具体写出画点的步骤,对U++(UE4魔改C++,笑)不熟悉的朋友可能这一点也需要了解。

注意事项

需要添加以下头文件:

#include "Components/StaticMeshComponent.h"
#include "Rendering/PositionVertexBuffer.h"
#include "Engine/StaticMesh.h"
#include "StaticMeshResources.h"
#include "DrawDebugHelpers.h"

访问StaticMesh顶点:

是自定义的成员函数,代码如下:
头文件:(在GENERATE BODY( )的下面加入代码)

UFUNCTION(BlueprintPure, Category = "Corridor", meta = (Keywords = "corridor vertex mesh meshdata", NativeBreakFunc))

TArray<FVector> MeshData(const UStaticMeshComponent* StaticMeshComponent);

这里大神还扩展了蓝图类,这样在蓝图中也可以用这个函数。

CPP:

TArray<FVector> AGetStaticMeshVertexes::MeshData(const UStaticMeshComponent* StaticMeshComponent)
{
   
	TArray<FVector> vertices = TArray<FVector>();
	
	//~~~~~~~~~~~~~~~~~~~~
	// Many thanks to Rama for this solution! :)
	//
	// Vertex Buffer
	if (!IsValidLowLevel()) return vertices;
	if (!StaticMeshComponent) return vertices;
	if (!StaticMeshComponent->GetStaticMesh()) return vertices;
	if (!StaticMeshComponent->GetStaticMesh()->RenderData) return vertices;
	if (StaticMeshComponent->GetStaticMesh()->RenderData->LODResources.Num()
  • 11
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值