mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2026-05-02 08:29:36 +00:00
fix: xmodel glTF dumps dropping COLOR_0 vertex attributes
This commit is contained in:
committed by
Jan Laupetin
parent
1a41f432a9
commit
98d8ea9005
@@ -265,7 +265,7 @@ namespace gltf
|
||||
std::optional<unsigned> WEIGHTS_0;
|
||||
};
|
||||
|
||||
NLOHMANN_DEFINE_TYPE_EXTENSION(JsonMeshPrimitivesAttributes, POSITION, NORMAL, TEXCOORD_0, JOINTS_0, WEIGHTS_0);
|
||||
NLOHMANN_DEFINE_TYPE_EXTENSION(JsonMeshPrimitivesAttributes, POSITION, NORMAL, COLOR_0, TEXCOORD_0, JOINTS_0, WEIGHTS_0);
|
||||
|
||||
class JsonMeshPrimitives
|
||||
{
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace
|
||||
{
|
||||
float coordinates[3];
|
||||
float normal[3];
|
||||
float color[4];
|
||||
float uv[2];
|
||||
};
|
||||
|
||||
@@ -190,6 +191,7 @@ namespace
|
||||
|
||||
primitives.attributes.POSITION = m_position_accessor;
|
||||
primitives.attributes.NORMAL = m_normal_accessor;
|
||||
primitives.attributes.COLOR_0 = m_color_accessor;
|
||||
primitives.attributes.TEXCOORD_0 = m_uv_accessor;
|
||||
|
||||
if (hasBoneWeightData)
|
||||
@@ -455,6 +457,15 @@ namespace
|
||||
m_normal_accessor = static_cast<unsigned>(gltf.accessors->size());
|
||||
gltf.accessors->emplace_back(normalAccessor);
|
||||
|
||||
JsonAccessor colorAccessor;
|
||||
colorAccessor.bufferView = m_vertex_buffer_view;
|
||||
colorAccessor.byteOffset = static_cast<unsigned>(offsetof(GltfVertex, color));
|
||||
colorAccessor.componentType = JsonAccessorComponentType::FLOAT;
|
||||
colorAccessor.count = static_cast<unsigned>(xmodel.m_vertices.size());
|
||||
colorAccessor.type = JsonAccessorType::VEC4;
|
||||
m_color_accessor = static_cast<unsigned>(gltf.accessors->size());
|
||||
gltf.accessors->emplace_back(colorAccessor);
|
||||
|
||||
JsonAccessor uvAccessor;
|
||||
uvAccessor.bufferView = m_vertex_buffer_view;
|
||||
uvAccessor.byteOffset = static_cast<unsigned>(offsetof(GltfVertex, uv));
|
||||
@@ -545,6 +556,11 @@ namespace
|
||||
vertex->normal[2] = commonVertex.normal[2];
|
||||
LhcToRhcCoordinates(vertex->normal);
|
||||
|
||||
vertex->color[0] = commonVertex.color[0];
|
||||
vertex->color[1] = commonVertex.color[1];
|
||||
vertex->color[2] = commonVertex.color[2];
|
||||
vertex->color[3] = commonVertex.color[3];
|
||||
|
||||
vertex->uv[0] = commonVertex.uv[0];
|
||||
vertex->uv[1] = commonVertex.uv[1];
|
||||
|
||||
@@ -681,6 +697,7 @@ namespace
|
||||
unsigned m_first_bone_node = 0u;
|
||||
unsigned m_position_accessor = 0u;
|
||||
unsigned m_normal_accessor = 0u;
|
||||
unsigned m_color_accessor = 0u;
|
||||
unsigned m_uv_accessor = 0u;
|
||||
unsigned m_joints_accessor = 0u;
|
||||
unsigned m_weights_accessor = 0u;
|
||||
|
||||
Reference in New Issue
Block a user