Export GFBMDL second channel vertex colors.

This commit is contained in:
KillzXGaming 2019-12-14 13:28:10 -05:00
parent 2b65b5b3c9
commit 4cb103e987
2 changed files with 21 additions and 12 deletions

View file

@ -63,6 +63,12 @@ namespace FirstPlugin
values.Add(mesh.vertices[v].col.Z * 255);
values.Add(mesh.vertices[v].col.W * 255);
break;
case VertexType.Color2:
values.Add(mesh.vertices[v].col2.X * 255);
values.Add(mesh.vertices[v].col2.Y * 255);
values.Add(mesh.vertices[v].col2.Z * 255);
values.Add(mesh.vertices[v].col2.W * 255);
break;
case VertexType.UV1:
values.Add(mesh.vertices[v].uv0.X);
values.Add(1 - mesh.vertices[v].uv0.Y);
@ -105,12 +111,6 @@ namespace FirstPlugin
values.Add(mesh.vertices[v].bitan.Z);
values.Add(mesh.vertices[v].bitan.W);
break;
case VertexType.Color2:
values.Add(mesh.vertices[v].col2.X * 255);
values.Add(mesh.vertices[v].col2.Y * 255);
values.Add(mesh.vertices[v].col2.Z * 255);
values.Add(mesh.vertices[v].col2.W * 255);
break;
case VertexType.Tangents:
values.Add(mesh.vertices[v].tan.X);
values.Add(mesh.vertices[v].tan.Y);

View file

@ -276,11 +276,13 @@ namespace Toolbox.Library
List<float> UV2 = new List<float>();
List<float> UV3 = new List<float>();
List<float> Color = new List<float>();
List<float> Color2 = new List<float>();
List<int[]> BoneIndices = new List<int[]>();
List<float[]> BoneWeights = new List<float[]>();
bool HasNormals = false;
bool HasColors = false;
bool HasColors2 = false;
bool HasUV0 = false;
bool HasUV1 = false;
bool HasUV2 = false;
@ -324,6 +326,7 @@ namespace Toolbox.Library
if (vertex.nrm != Vector3.Zero) HasNormals = true;
if (vertex.col != Vector4.One && settings.UseVertexColors) HasColors = true;
if (vertex.col2 != Vector4.One && settings.UseVertexColors) HasColors2 = true;
if (vertex.uv0 != Vector2.Zero) HasUV0 = true;
if (vertex.uv1 != Vector2.Zero) HasUV1 = true;
if (vertex.uv2 != Vector2.Zero) HasUV2 = true;
@ -346,6 +349,7 @@ namespace Toolbox.Library
}
Color.AddRange(new float[] { vertex.col.X, vertex.col.Y, vertex.col.Z, vertex.col.W });
Color2.AddRange(new float[] { vertex.col2.X, vertex.col2.Y, vertex.col2.Z, vertex.col2.W });
List<int> bIndices = new List<int>();
List<float> bWeights = new List<float>();
@ -463,7 +467,10 @@ namespace Toolbox.Library
writer.WriteGeometrySource(mesh.Text, SemanticType.NORMAL, Normal.ToArray(), triangleLists.ToArray());
if (HasColors)
writer.WriteGeometrySource(mesh.Text, SemanticType.COLOR, Color.ToArray(), triangleLists.ToArray());
writer.WriteGeometrySource(mesh.Text, SemanticType.COLOR, Color.ToArray(), triangleLists.ToArray(), 0);
if (HasColors2)
writer.WriteGeometrySource(mesh.Text, SemanticType.COLOR, Color2.ToArray(), triangleLists.ToArray(), 1);
if (HasUV0)
writer.WriteGeometrySource(mesh.Text, SemanticType.TEXCOORD, UV0.ToArray(), triangleLists.ToArray(), 0);
@ -541,6 +548,8 @@ namespace Toolbox.Library
foreach (var item in collada.Items)
{
if (item is library_controllers)
LoadControllers((library_controllers)item);
if (item is library_geometries)
LoadGeometry((library_geometries)item);
if (item is library_images)
@ -556,6 +565,11 @@ namespace Toolbox.Library
return true;
}
private void LoadControllers(library_controllers controllers)
{
}
private void LoadVisualScenes(library_visual_scenes nodes)
{
@ -566,11 +580,6 @@ namespace Toolbox.Library
}
private void LoadControllers(library_controllers controllers)
{
}
private void LoadMaterials(library_materials materials)
{