[Bf-blender-cvs] [9facc5067af] master: Cleanup: Simplify mesh and point cloud conversion
Hans Goudey
noreply at git.blender.org
Fri Jan 27 21:34:15 CET 2023
Commit: 9facc5067af9975f923d17993de15ddebbb5458a
Author: Hans Goudey
Date: Fri Jan 27 14:07:48 2023 -0600
Branches: master
https://developer.blender.org/rB9facc5067af9975f923d17993de15ddebbb5458a
Cleanup: Simplify mesh and point cloud conversion
Since mesh positions are stored as a generic attribute,
the attribute doesn't need special handling here.
===================================================================
M source/blender/blenkernel/BKE_mesh.h
M source/blender/blenkernel/intern/mesh_convert.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index 557b70b8a11..c9928b9c4d6 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -212,7 +212,7 @@ void BKE_mesh_to_curve(struct Main *bmain,
struct Depsgraph *depsgraph,
struct Scene *scene,
struct Object *ob);
-void BKE_pointcloud_from_mesh(struct Mesh *me, struct PointCloud *pointcloud);
+void BKE_pointcloud_from_mesh(const struct Mesh *me, struct PointCloud *pointcloud);
void BKE_mesh_to_pointcloud(struct Main *bmain,
struct Depsgraph *depsgraph,
struct Scene *scene,
diff --git a/source/blender/blenkernel/intern/mesh_convert.cc b/source/blender/blenkernel/intern/mesh_convert.cc
index ffc3365b908..d9a84e98326 100644
--- a/source/blender/blenkernel/intern/mesh_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_convert.cc
@@ -627,29 +627,11 @@ void BKE_mesh_to_curve(Main *bmain, Depsgraph *depsgraph, Scene * /*scene*/, Obj
}
}
-void BKE_pointcloud_from_mesh(Mesh *me, PointCloud *pointcloud)
+void BKE_pointcloud_from_mesh(const Mesh *me, PointCloud *pointcloud)
{
- using namespace blender;
-
- BLI_assert(me != nullptr);
- /* The pointcloud should only contain the position attribute, otherwise more attributes would
- * need to be initialized below. */
- BLI_assert(pointcloud->attributes().all_ids().size() == 1);
- CustomData_realloc(&pointcloud->pdata, pointcloud->totpoint, me->totvert);
+ CustomData_free(&pointcloud->pdata, pointcloud->totpoint);
pointcloud->totpoint = me->totvert;
-
- /* Copy over all attributes. */
CustomData_merge(&me->vdata, &pointcloud->pdata, CD_MASK_PROP_ALL, CD_DUPLICATE, me->totvert);
-
- bke::AttributeAccessor mesh_attributes = me->attributes();
- bke::MutableAttributeAccessor point_attributes = pointcloud->attributes_for_write();
-
- const VArray<float3> vert_positions = mesh_attributes.lookup_or_default<float3>(
- "position", ATTR_DOMAIN_POINT, float3(0));
- bke::SpanAttributeWriter<float3> point_positions =
- point_attributes.lookup_or_add_for_write_only_span<float3>("position", ATTR_DOMAIN_POINT);
- vert_positions.materialize(point_positions.span);
- point_positions.finish();
}
void BKE_mesh_to_pointcloud(Main *bmain, Depsgraph *depsgraph, Scene * /*scene*/, Object *ob)
@@ -675,10 +657,7 @@ void BKE_mesh_to_pointcloud(Main *bmain, Depsgraph *depsgraph, Scene * /*scene*/
void BKE_mesh_from_pointcloud(const PointCloud *pointcloud, Mesh *me)
{
- BLI_assert(pointcloud != nullptr);
-
me->totvert = pointcloud->totpoint;
-
CustomData_merge(
&pointcloud->pdata, &me->vdata, CD_MASK_PROP_ALL, CD_DUPLICATE, pointcloud->totpoint);
}
More information about the Bf-blender-cvs
mailing list