How to calculate volume of a 3d object?

Example: Suzanne (monkey) or Blender Guru’s Donut

I mean complex geometry, not like box or cylinder

Hi Raditya,

Have you tried the built in 3D Print Toolbox addon? Is has Volume and Area tools.

See https://docs.blender.org/manual/en/latest/addons/mesh/3d_print_toolbox.html

Cheers and happy blending!

The problem is that you can’t add driver to the volume calculations result.

Or can you give me the math calculations?

I can give you an approximate, stupidly innefficient workaround using Blender version 3.1 geonodes:

- create a 3-D array of small cubes
- add an intersection boolean modifier with the object whose volume you want to measure
- add a weld modifier set to “connected”

This will result in a cloud of vertices whose number is roughly proportional to the volume of the mesh

- add this geonode setup:

This will result in a mesh, consisting of a single vertical line whose height is equal to the number of vertices in the above mentioned point cloud.

You can access this height in a driver in the following way:

Here, I have added a driver to the z-rotation of the empty “Empty”, where I access the dimensions of “cube”, which is the object with the geonodes, dimensions[0] is the x-size, dimensions[1] the y size and dimensions[2] the z-size.

procedural volume measurement…blend (122.9 KB)

I actually have an idea to do this, but blender geometry nodes dont support arrays. I want to do that every point.

I am not even sure how I’d triangulate the *volume* for an arbitrary geometry even using a general programming language.

Granted, if you can separate your volume algorithmically into simplexes, you can then use the triple product to compute the individual volumes https://en.wikipedia.org/wiki/Triple_product

Computing those simplexes is the problem, though.

As I said, calculating the volume is a difficult task… You can try the workaround I proposed here:

I’ve download an icosahedron vdb file. I want to calculate the volume. But why the density grid (is_icosahedron) is not on the spreadsheet? I want to calculate it with density*voxel size to get an approximation of that volume. And show me how to add volume grids.

Maybe consider using sverchok: apparently, it has functionalities for computing volumes: