[Bf-blender-cvs] [986bf72c44d] soc-2021-porting-modifiers-to-nodes-merge-by-distance: Changes based on review by Hans Goudey (HooglyBoogly)
Fabian Schempp
noreply at git.blender.org
Thu Sep 30 10:01:53 CEST 2021
Commit: 986bf72c44d56c14debdc234b317a4ed6fa338ed
Author: Fabian Schempp
Date: Thu Sep 30 10:01:47 2021 +0200
Branches: soc-2021-porting-modifiers-to-nodes-merge-by-distance
https://developer.blender.org/rB986bf72c44d56c14debdc234b317a4ed6fa338ed
Changes based on review by Hans Goudey (HooglyBoogly)
===================================================================
M source/blender/geometry/intern/pointcloud_merge_by_distance.cc
===================================================================
diff --git a/source/blender/geometry/intern/pointcloud_merge_by_distance.cc b/source/blender/geometry/intern/pointcloud_merge_by_distance.cc
index 8c7bff8d3e8..19657046e7b 100644
--- a/source/blender/geometry/intern/pointcloud_merge_by_distance.cc
+++ b/source/blender/geometry/intern/pointcloud_merge_by_distance.cc
@@ -92,10 +92,9 @@ PointCloud *pointcloud_merge_by_distance(PointCloudComponent &pointcloud_compone
const float merge_threshold,
Span<bool> selection)
{
- const PointCloud &original_src_pointcloud = *pointcloud_component.get_for_read();
- Array<bool> merge_map(original_src_pointcloud.totpoint, false);
- Span<float3> positions((const float3 *)original_src_pointcloud.co,
- original_src_pointcloud.totpoint);
+ const PointCloud &src_pointcloud = *pointcloud_component.get_for_read();
+ Array<bool> merge_map(src_pointcloud.totpoint, false);
+ Span<float3> positions((const float3 *)src_pointcloud.co, src_pointcloud.totpoint);
build_merge_map(positions, merge_map, merge_threshold, selection);
@@ -107,28 +106,32 @@ PointCloud *pointcloud_merge_by_distance(PointCloudComponent &pointcloud_compone
}
IndexMask copyMask(copy_mask_vector);
- PointCloudComponent *src_pointcloud_component = (PointCloudComponent *)
- pointcloud_component.copy();
- const PointCloud &src_pointcloud = *src_pointcloud_component->get_for_read();
+ // PointCloudComponent *src_pointcloud_component = (PointCloudComponent *)
+ // pointcloud_component.copy(); const PointCloud &src_pointcloud =
+ // *src_pointcloud_component->get_for_read();
- PointCloud *result = BKE_pointcloud_new_nomain(copyMask.size());
- pointcloud_component.replace(result);
+ // PointCloud *result = BKE_pointcloud_new_nomain(copyMask.size());
+ // pointcloud_component.replace(result);
+
+ PointCloud *pointcloud = BKE_pointcloud_new_nomain(src_pointcloud.totpoint);
+ PointCloudComponent dst_component;
+ dst_component.replace(pointcloud, GeometryOwnershipType::Editable);
for (const int i : copyMask.index_range()) {
- copy_v3_v3(result->co[i], src_pointcloud.co[copyMask[i]]);
- result->radius[i] = src_pointcloud.radius[copyMask[i]];
+ copy_v3_v3(pointcloud->co[i], src_pointcloud.co[copyMask[i]]);
+ pointcloud->radius[i] = src_pointcloud.radius[copyMask[i]];
}
- src_pointcloud_component->attribute_foreach(
+
+ pointcloud_component.attribute_foreach(
[&](const bke::AttributeIDRef &attribute_id, const AttributeMetaData &meta_data) {
- fn::GVArrayPtr read_attribute = src_pointcloud_component->attribute_get_for_read(
+ fn::GVArrayPtr read_attribute = pointcloud_component.attribute_get_for_read(
attribute_id, meta_data.domain, meta_data.data_type);
- if (pointcloud_component.attribute_try_create(
+ if (dst_component.attribute_try_create(
attribute_id, meta_data.domain, meta_data.data_type, AttributeInitDefault())) {
- bke::OutputAttribute target_attribute =
- pointcloud_component.attribute_try_get_for_output_only(
- attribute_id, meta_data.domain, meta_data.data_type);
+ bke::OutputAttribute target_attribute = dst_component.attribute_try_get_for_output_only(
+ attribute_id, meta_data.domain, meta_data.data_type);
fn::GMutableSpan dst_span = target_attribute.as_span();
fn::GSpan src_span = read_attribute->get_internal_span();
@@ -142,7 +145,7 @@ PointCloud *pointcloud_merge_by_distance(PointCloudComponent &pointcloud_compone
return true;
});
- return result;
+ return pointcloud;
}
} // namespace blender::geometry
More information about the Bf-blender-cvs
mailing list