Mesh: Replace MLoop struct with generic attributes #104424

Merged
Hans Goudey merged 261 commits from refactor-mesh-corners-generic into main 2023-03-20 15:55:25 +01:00
2 changed files with 10 additions and 10 deletions
Showing only changes of commit ee5aac8036 - Show all commits

View File

@ -121,12 +121,12 @@ void load_plydata(PlyData &plyData, Depsgraph *depsgraph, const PLYExportParams
/* Load faces into plyData. */
int loop_offset = 0;
const Span<MLoop> loops = mesh->loops();
const Span<int> corner_verts = mesh->corner_verts();
for (const MPoly &poly : mesh->polys()) {
const Span<MLoop> poly_loops = loops.slice(poly.loopstart, poly.totloop);
Array<uint32_t> poly_verts(poly_loops.size());
const Span<int> mesh_poly_verts = corner_verts.slice(poly.loopstart, poly.totloop);
Array<uint32_t> poly_verts(mesh_poly_verts.size());
for (int i = 0; i < poly_loops.size(); ++i) {
for (int i = 0; i < mesh_poly_verts.size(); ++i) {
float2 uv;
if (export_params.export_uv && uv_map != nullptr) {
uv = uv_map[i + loop_offset];
@ -134,11 +134,11 @@ void load_plydata(PlyData &plyData, Depsgraph *depsgraph, const PLYExportParams
else {
uv = {0, 0};
}
UV_vertex_key key = UV_vertex_key(uv, poly_loops[i].v);
UV_vertex_key key = UV_vertex_key(uv, mesh_poly_verts[i]);
int ply_vertex_index = vertex_map.lookup(key);
poly_verts[i] = (uint32_t(ply_vertex_index + vertex_offset));
}
loop_offset += poly_loops.size();
loop_offset += mesh_poly_verts.size();
plyData.faces.append(std::move(poly_verts));
}
@ -229,7 +229,7 @@ Map<UV_vertex_key, int> generate_vertex_map(const Mesh *mesh,
Map<UV_vertex_key, int> vertex_map;
const Span<MPoly> polys = mesh->polys();
const Span<MLoop> loops = mesh->loops();
const Span<int> corner_verts = mesh->corner_verts();
const int totvert = mesh->totvert;
vertex_map.reserve(totvert);
@ -246,7 +246,7 @@ Map<UV_vertex_key, int> generate_vertex_map(const Mesh *mesh,
UvVertMap *uv_vert_map = BKE_mesh_uv_vert_map_create(polys.data(),
nullptr,
nullptr,
loops.data(),
corner_verts.data(),
reinterpret_cast<const float(*)[2]>(uv_map),
uint(polys.size()),
totvert,

View File

@ -50,7 +50,7 @@ Mesh *convert_ply_to_mesh(PlyData &data, Mesh *mesh, const PLYImportParams &para
CustomData_add_layer(&mesh->pdata, CD_MPOLY, CD_SET_DEFAULT, nullptr, mesh->totpoly);
CustomData_add_layer(&mesh->ldata, CD_MLOOP, CD_SET_DEFAULT, nullptr, mesh->totloop);
MutableSpan<MPoly> polys = mesh->polys_for_write();
MutableSpan<MLoop> loops = mesh->loops_for_write();
MutableSpan<int> corner_verts = mesh->corner_verts_for_write();
int offset = 0;
/* Iterate over amount of faces. */
@ -62,7 +62,7 @@ Mesh *convert_ply_to_mesh(PlyData &data, Mesh *mesh, const PLYImportParams &para
for (int j = 0; j < size; j++) {
/* Set the vertex index of the loop to the one in PlyData. */
loops[offset + j].v = data.faces[i][j];
corner_verts[offset + j] = data.faces[i][j];
}
offset += size;
}