为什么UE 中的procedural mesh 给予顶点颜色数组后 没有颜色
时间: 2024-03-20 21:39:56 浏览: 141
在UE中,给Procedural Mesh Component设置Vertex Color时需要注意以下两点:
1. 在创建Procedural Mesh Component时,需要设置bUseVertexColor为true。
```c++
// 创建Procedural Mesh Component
ProceduralMeshComp = NewObject<UProceduralMeshComponent>(this);
ProceduralMeshComp->bUseComplexAsSimpleCollision = true;
ProceduralMeshComp->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
ProceduralMeshComp->SetCollisionObjectType(ECC_GameTraceChannel1);
ProceduralMeshComp->SetCollisionResponseToAllChannels(ECR_Block);
ProceduralMeshComp->SetGenerateOverlapEvents(false);
ProceduralMeshComp->bUseAsyncCooking = true;
ProceduralMeshComp->SetSimulatePhysics(true);
ProceduralMeshComp->SetEnableGravity(false);
ProceduralMeshComp->SetCanEverAffectNavigation(false);
ProceduralMeshComp->bUseVertexColor = true; // 设置bUseVertexColor为true
```
在上面的代码中,我们创建了一个Procedural Mesh Component并设置bUseVertexColor为true。
2. 在设置顶点颜色时,需要使用FProcMeshTangent类型的Tangent参数,将VertexColor和Tangent参数一起添加到Procedural Mesh Component的Vertex Buffer中。
```c++
// 添加Procedural Mesh Component的顶点、索引、法线、UV和颜色
ProceduralMeshComp->CreateMeshSection_LinearColor(0, Vertices, Indices, Normals, UVs, VertexColors, Tangents, true);
```
在上面的代码中,我们使用CreateMeshSection_LinearColor函数将顶点、索引、法线、UV和颜色等信息添加到Procedural Mesh Component中,其中需要使用FProcMeshTangent类型的Tangent参数,将VertexColor和Tangent参数一起添加到Procedural Mesh Component的Vertex Buffer中。
如果设置了bUseVertexColor为true,并且在设置顶点颜色时也使用了FProcMeshTangent类型的Tangent参数,但仍然没有颜色,可能是因为颜色值被设置为了0,可以检查一下颜色数组的值是否正确。
阅读全文