Fix T88947: invalid normals when converting point cloud to mesh

This commit is contained in:
Jacques Lucke 2021-06-14 11:07:31 +02:00
parent 2db09f67a4
commit a19c9e9351
Notes: blender-bot 2023-02-14 08:06:35 +01:00
Referenced by issue #88947, Invalid mesh using Point Distribute
1 changed files with 6 additions and 0 deletions

View File

@ -472,6 +472,11 @@ static Mesh *join_mesh_topology_and_builtin_attributes(Span<GeometryInstanceGrou
poly_offset += mesh.totpoly;
}
}
const float3 point_normal{0.0f, 0.0f, 1.0f};
short point_normal_short[3];
normal_float_to_short_v3(point_normal_short, point_normal);
if (convert_points_to_vertices && set.has_pointcloud()) {
const PointCloud &pointcloud = *set.get_pointcloud_for_read();
for (const float4x4 &transform : set_group.transforms) {
@ -480,6 +485,7 @@ static Mesh *join_mesh_topology_and_builtin_attributes(Span<GeometryInstanceGrou
const float3 old_position = pointcloud.co[i];
const float3 new_position = transform * old_position;
copy_v3_v3(new_vert.co, new_position);
memcpy(&new_vert.no, point_normal_short, sizeof(point_normal_short));
}
vert_offset += pointcloud.totpoint;
}