[Bf-blender-cvs] [122d6d67e6a] master: Fix: Points to Volume node crashes with too small radius
Jacques Lucke
noreply at git.blender.org
Fri Dec 9 11:45:24 CET 2022
Commit: 122d6d67e6a0b9036be46f871765d7789921579e
Author: Jacques Lucke
Date: Fri Dec 9 11:42:10 2022 +0100
Branches: master
https://developer.blender.org/rB122d6d67e6a0b9036be46f871765d7789921579e
Fix: Points to Volume node crashes with too small radius
OpenVDB likes to crash even in release builds when volumes become too small.
To fix this I used the same function that we use in other places already to
determine if the resulting volume will be too small.
===================================================================
M source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc
===================================================================
diff --git a/source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc b/source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc
index c6801cf15aa..8e5e84fd94a 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_points_to_volume.cc
@@ -209,9 +209,14 @@ static void initialize_volume_component_from_points(GeoNodeExecParams ¶ms,
}
}
+ if (positions.is_empty()) {
+ return;
+ }
+
const float max_radius = *std::max_element(radii.begin(), radii.end());
const float voxel_size = compute_voxel_size(params, positions, max_radius);
- if (voxel_size == 0.0f || positions.is_empty()) {
+ const double determinant = std::pow<double>(voxel_size, 3.0);
+ if (!BKE_volume_grid_determinant_valid(determinant)) {
return;
}
More information about the Bf-blender-cvs
mailing list