UE4编程实现网格体实时更新

1. 概要

可视化项目中,UE4针对网格体数据(Mesh)的实时更新,包括材质和纹理的实时改变,编程该如何操作,下面进行探讨。

2. 方法

2.1 网格体

通过ProceduralMeshComponent插件能够绘制网格体,这里介绍C++实时更新网格体数据并通过蓝图调用绘制接口。

主要的顶点信息有顶点坐标、三角面索引、法线、切线、颜色、UV坐标及纹理等。一般来说顶点、三角面索引、UV和纹理是常用的,对于顶点颜色、法线等根据实际应用需要进行设置。

USTRUCT(BlueprintType)
struct FMeshData
{
	GENERATED_USTRUCT_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = FMeshData)
	TArray Vertex;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = FMeshData)
	TArray Triangle;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = FMeshData)
	TArray UV0;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = FMeshData)
	UTexture2D* Texture;

public:
	FMeshData()
	{
	
	}
};

实时更新的网格体数据,在Update()函数中填充。

UFUNCTION(BlueprintCallable, Category = ImportedMeshDataActor)
void Update(FMeshData& MeshData);

蓝图事件图表中事件Tick调用Update()函数进行网格数据的实时更新,下面是创建网格组件过程:

UE4编程实现网格体实时更新_第1张图片

2.2 材质

通过创建动态材质实例设置网格组件的材质,并根据纹理参数值传递纹理。

UE4编程实现网格体实时更新_第2张图片

2.3 纹理

实时更新的纹理通过设置纹理参数值进行改变,在材质中设置纹理参数。

UE4编程实现网格体实时更新_第3张图片

参考

[1] Procedural Mesh Component in C++:Getting Started

你可能感兴趣的:(编程语言,UE4,网格体,Mesh)