procedural mesh设置了顶点颜色 最后生成的模型没有颜色
时间: 2023-12-06 20:02:37 浏览: 34
如果你设置了顶点颜色,但是生成的模型没有颜色,有可能是因为你没有为材质指定顶点颜色通道。你可以在材质的属性面板中找到“顶点颜色”选项,并将其设置为“颜色”或“颜色和透明度”,然后重新生成模型。此外,也需要确保你的网格渲染器已启用了顶点颜色,可以在网格渲染器的属性面板中找到“顶点颜色”选项,并将其设置为“开启”。
相关问题
为什么UE 中的procedural mesh 给予顶点颜色数组后 没有颜色
在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,可以检查一下颜色数组的值是否正确。
ue C++给procedural mesh的各个顶点设置颜色
要设置procedural mesh的各个顶点颜色,可以使用以下步骤:
1.在procedural mesh的生成代码中,为每个顶点添加颜色属性,可以使用FColor或FLinearColor类型。
2.在生成procedural mesh的代码中,为每个顶点设置颜色属性。可以使用SetVertexColor方法。
3.在procedural mesh的渲染代码中,指定颜色属性的使用方式。可以使用VertexColor材质属性,并在材质中使用VertexColor节点。
以下是一个简单的例子代码,用于在UE4中生成一个带有颜色顶点的procedural mesh:
```
UProceduralMeshComponent* MeshComp = CreateDefaultSubobject<UProceduralMeshComponent>(TEXT("ProceduralMesh"));
MeshComp->SetMaterial(0, MyMaterial);
TArray<FVector> Vertices;
TArray<int32> Triangles;
TArray<FLinearColor> VertexColors;
// populate vertices, triangles and vertex colors arrays
MeshComp->CreateMeshSection_LinearColor(0, Vertices, Triangles, TArray<FVector>(), TArray<FVector2D>(), VertexColors, TArray<FProcMeshTangent>(), false);
```
在这个例子中,我们首先创建了一个UProceduralMeshComponent对象,并为其指定一个材质。然后,我们填充了顶点、三角形和顶点颜色数组,并使用CreateMeshSection_LinearColor方法创建了一个带有颜色顶点的procedural mesh。在这个方法中,我们使用了VertexColors数组来指定每个顶点的颜色属性。最后,我们可以在材质中使用VertexColor节点来指定如何使用这些颜色属性。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)