editor fix: mesh merging will retain tangents

This commit is contained in:
Turánszki János
2024-12-30 16:47:00 +01:00
parent 2e9d3bac90
commit 5aa4c1ce54
+15
View File
@@ -364,6 +364,7 @@ void MeshWindow::Create(EditorComponent* _editor)
ObjectComponent merged_object;
MeshComponent merged_mesh;
bool valid_normals = false;
bool valid_tangents = false;
bool valid_uvset_0 = false;
bool valid_uvset_1 = false;
bool valid_atlas = false;
@@ -453,6 +454,18 @@ void MeshWindow::Create(EditorComponent* _editor)
XMStoreFloat3(&merged_mesh.vertex_normals.back(), XMVector3TransformNormal(XMLoadFloat3(&merged_mesh.vertex_normals.back()), W));
}
if (mesh->vertex_tangents.empty())
{
merged_mesh.vertex_tangents.emplace_back();
}
else
{
valid_tangents = true;
merged_mesh.vertex_tangents.push_back(mesh->vertex_tangents[i]);
XMFLOAT3* tan = (XMFLOAT3*)&merged_mesh.vertex_tangents.back();
XMStoreFloat3(tan, XMVector3TransformNormal(XMLoadFloat3(tan), W));
}
if (mesh->vertex_uvset_0.empty())
{
merged_mesh.vertex_uvset_0.emplace_back();
@@ -576,6 +589,8 @@ void MeshWindow::Create(EditorComponent* _editor)
{
if (!valid_normals)
merged_mesh.vertex_normals.clear();
if (!valid_tangents)
merged_mesh.vertex_tangents.clear();
if (!valid_uvset_0)
merged_mesh.vertex_uvset_0.clear();
if (!valid_uvset_1)