[Bf-blender-cvs] [6976d49b262] geometry-nodes-distribute-points: Fix generating to many points on dense meshes

Sebastian Parborg noreply at git.blender.org
Fri Nov 27 12:18:01 CET 2020


Commit: 6976d49b2620c303572b955d5ead72c2695590e0
Author: Sebastian Parborg
Date:   Fri Nov 27 12:17:42 2020 +0100
Branches: geometry-nodes-distribute-points
https://developer.blender.org/rB6976d49b2620c303572b955d5ead72c2695590e0

Fix generating to many points on dense meshes

===================================================================

M	source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc

===================================================================

diff --git a/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc b/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc
index dac501987b4..23c0c6af6fd 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc
@@ -139,8 +139,10 @@ static Vector<float3> poisson_scatter_points_from_mesh(const Mesh *mesh,
     const int looptri_seed = BLI_hash_int(looptri_index + seed);
     RandomNumberGenerator looptri_rng(looptri_seed);
 
-    const float points_amount_fl = area / (2.0f * sqrtf(3.0f) * min_dist * min_dist);
-    const int point_amount = quality * (int)ceilf(points_amount_fl);
+    const float points_amount_fl = quality * area / (2.0f * sqrtf(3.0f) * min_dist * min_dist);
+    const float add_point_probability = fractf(points_amount_fl);
+    const bool add_point = add_point_probability > looptri_rng.get_float();
+    const int point_amount = (int)points_amount_fl + (int)add_point;
 
     for (int i = 0; i < point_amount; i++) {
       const float3 bary_coords = looptri_rng.get_barycentric_coordinates();



More information about the Bf-blender-cvs mailing list