Mesh: Replace MLoop struct with generic attributes #104424
|
@ -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,
|
||||
|
|
|
@ -50,7 +50,7 @@ Mesh *convert_ply_to_mesh(PlyData &data, Mesh *mesh, const PLYImportParams ¶
|
|||
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 ¶
|
|||
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue