diff options
author | Jacques Lucke <jacques@blender.org> | 2021-11-09 18:46:58 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-11-09 18:46:58 +0300 |
commit | 0bdf9d10a4f6aa01eba05fed66257e8eab7e726a (patch) | |
tree | ba2be702fe20772d6ca78323ddf4d47f8b81c03a /source/blender/nodes/geometry | |
parent | fb0ae66ee59dca499fd64947f395b8ad6b74a2be (diff) | |
parent | cc949f0a40237d38c3f57b7bd6e15415dcdab1bd (diff) |
Merge branch 'blender-v3.0-release'
Diffstat (limited to 'source/blender/nodes/geometry')
-rw-r--r-- | source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc b/source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc index fa439b04da0..115ad09a9e6 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc @@ -295,6 +295,12 @@ BLI_NOINLINE static void propagate_existing_attributes( for (Map<AttributeIDRef, AttributeKind>::Item entry : attributes.items()) { const AttributeIDRef attribute_id = entry.key; const CustomDataType output_data_type = entry.value.data_type; + + ReadAttributeLookup source_attribute = mesh_component.attribute_try_get_for_read(attribute_id); + if (!source_attribute) { + continue; + } + /* The output domain is always #ATTR_DOMAIN_POINT, since we are creating a point cloud. */ OutputAttribute attribute_out = point_component.attribute_try_get_for_output_only( attribute_id, ATTR_DOMAIN_POINT, output_data_type); @@ -303,23 +309,12 @@ BLI_NOINLINE static void propagate_existing_attributes( } GMutableSpan out_span = attribute_out.as_span(); - - std::optional<AttributeMetaData> attribute_info = point_component.attribute_get_meta_data( - attribute_id); - if (!attribute_info) { - continue; - } - - const AttributeDomain source_domain = attribute_info->domain; - GVArrayPtr source_attribute = mesh_component.attribute_get_for_read( - attribute_id, source_domain, output_data_type, nullptr); - if (!source_attribute) { - continue; - } - - interpolate_attribute( - mesh, bary_coords, looptri_indices, source_domain, *source_attribute, out_span); - + interpolate_attribute(mesh, + bary_coords, + looptri_indices, + source_attribute.domain, + *source_attribute.varray, + out_span); attribute_out.save(); } } |