diff options
author | Erik Abrahamsson <ecke101@gmail.com> | 2022-06-29 18:56:17 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2022-06-29 18:56:17 +0300 |
commit | 1516f7dcde34a4a31f6f3d04eac5f60310ea32b7 (patch) | |
tree | ee5a6c53cad8944e6768d1548a1a15ee2db62e08 /source/blender/geometry/GEO_mesh_to_volume.hh | |
parent | 6b508eb012b929b34e893f71a785580562cc9a6a (diff) |
Geometry Nodes: Add Mesh To Volume Node
This adds a Mesh To Volume Node T86838 based on the existing modifier.
The mesh to volume conversion is implemented in the geometry module,
and shared between the node and the modifier.
Currently the node outputs a grid with the name "density". This may
change in the future depending on the decisions made in T91668.
The original patch was by Kris (@Metricity), further implementation
by Geramy Loveless (@GeramyLoveless), then finished by Erik Abrahamsson
(@erik85).
Differential Revision: https://developer.blender.org/D10895
Diffstat (limited to 'source/blender/geometry/GEO_mesh_to_volume.hh')
-rw-r--r-- | source/blender/geometry/GEO_mesh_to_volume.hh | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/source/blender/geometry/GEO_mesh_to_volume.hh b/source/blender/geometry/GEO_mesh_to_volume.hh new file mode 100644 index 00000000000..384293df336 --- /dev/null +++ b/source/blender/geometry/GEO_mesh_to_volume.hh @@ -0,0 +1,50 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include "BLI_float4x4.hh" +#include "BLI_string_ref.hh" + +#include "DNA_mesh_types.h" +#include "DNA_meshdata_types.h" +#include "DNA_modifier_types.h" + +#pragma once + +struct Volume; +struct VolumeGrid; +struct Depsgraph; + +/** \file + * \ingroup geo + */ + +namespace blender::geometry { + +struct MeshToVolumeResolution { + MeshToVolumeModifierResolutionMode mode; + union { + float voxel_size; + float voxel_amount; + } settings; +}; + +#ifdef WITH_OPENVDB +float volume_compute_voxel_size(const Depsgraph *depsgraph, + const float3 &bb_min, + const float3 &bb_max, + const MeshToVolumeResolution resolution, + float exterior_band_width, + const float4x4 &transform); +/** + * Add a new VolumeGrid to the Volume by converting the supplied mesh + */ +VolumeGrid *volume_grid_add_from_mesh(Volume *volume, + const StringRefNull name, + const Mesh *mesh, + const float4x4 &mesh_to_volume_space_transform, + float voxel_size, + bool fill_volume, + float exterior_band_width, + float interior_band_width, + float density); +#endif +} // namespace blender::geometry |