volume_object_model_3d_relative_to_plane — Calculate the volume of a 3D object model.
volume_object_model_3d_relative_to_plane calculates the volume under the faces of a 3D object model relative to a plane. The plane is defined by the x-y plane of the pose given in Plane.
For ObjectModel3D, a triangulation or a list of polygons must be available. With default settings, if the mesh is watertight and ordered, the operator calculates the actual volume of the 3D object model. To also cover cases where the mesh is not closed or the faces are not ordered consistently, the calculation of the volume can be influenced with the parameters Mode and UseFaceOrientation.
How the volume is calculated:
First, the operator calculates the volume of the prisms that are constructed by projecting each face onto the plane.
The individual volumes of the prisms can be positive or negative depending on the orientation of the face (away or towards the plane) or the location of the face (above or below the plane). This can be controlled with the parameter UseFaceOrientation.
After that, the volumes of the prisms are added up depending on the parameter Mode.
The volume returned in Volume is the absolute value of the calculated sum.
How to set the parameters:
Mode can be set to the following options:
The volumes above and below the plane are added.
The volume below the plane is subtracted from the volume above the plane.
Only faces above the plane are taken into account.
Only faces below the plane are taken into account.
UseFaceOrientation can be set to the following options:
Use the orientation of the faces relative to the plane. A face points away from the plane if the corner points are ordered clockwise when viewed from the plane. The volume under a face is considered positive if the orientation of the face is away from the plane. In contrast, it is considered negative if the orientation of the face is towards the plane.
The volume under a face is considered positive if the face is located above the plane. In contrast, it is considered negative if the face is located below the plane.
For example, with the default combination (Mode: 'signed', UseFaceOrientation: 'true'), you can approximate the real volume of a closed object. In this case, the Plane is still required, but does not change the resulting volume.
The calculation of the volume might be numerically unstable in case of a large distance between the plane and the object (approx. distance > 10000 times the object diameter).
Handle of the 3D object model.
Pose of the plane.
Default value: [0,0,0,0,0,0,0]
Method to combine volumes laying above and below the reference plane.
Default value: 'signed'
List of values: 'negative', 'positive', 'signed', 'unsigned'
Decides whether the orientation of a face should affect the resulting sign of the underlying volume.
Default value: 'true'
List of values: 'false', 'true'
Absolute value of the calculated volume.
Number of elements: Volume == ObjectModel3D
gen_box_object_model_3d ([0,0,0,0,0,0,0],3,2,1, ObjectModel3D) convex_hull_object_model_3d (ObjectModel3D, ObjectModel3DConvexHull) volume_object_model_3d_relative_to_plane (ObjectModel3DConvexHull,\ [0,0,0,0,0,0,0], 'signed',\ 'true', Volume)
volume_object_model_3d_relative_to_plane returns 2 (H_MSG_TRUE) if all parameters are correct. If necessary, an exception is raised.
read_object_model_3d, xyz_to_object_model_3d, select_points_object_model_3d