学习来源: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()