# Calculating volume for three dimensional mesh

How to calculate volume of a 3d object?
Example: Suzanne (monkey) or Blender Guru’s Donut

1 Like

I mean complex geometry, not like box or cylinder

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

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:

1. create a 3-D array of small cubes
2. add an intersection boolean modifier with the object whose volume you want to measure
3. 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

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 is the x-size, dimensions the y size and dimensions 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.

In Blender 3.1 you can calculate the face area. Any ideas about calculating the volume

?

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: