"""
A simple example showing various properties of `Trimesh` objects.
"""
'\nA simple example showing various properties of `Trimesh` objects.\n'
import numpy as np
import trimesh
# load a file by name or from a buffer
mesh = trimesh.load_mesh('../models/featuretype.STL')
# to keep the raw data intact, disable any automatic processing
#mesh = trimesh.load_mesh('../models/featuretype.STL', process=False)
# is the current mesh watertight?
mesh.is_watertight
True
# what's the euler number for the mesh?
mesh.euler_number
-16
# the convex hull is another Trimesh object that is available as a property
# lets compare the volume of our mesh with the volume of its convex hull
np.divide(mesh.volume, mesh.convex_hull.volume)
0.7792407744466932
# since the mesh is watertight, it means there is a
# volumetric center of mass which we can set as the origin for our mesh
mesh.vertices -= mesh.center_mass
# what's the moment of inertia for the mesh?
mesh.moment_inertia
array([[ 6.93059627e+00, -1.43877613e-03, -1.49424850e-01], [-1.43877613e-03, 2.19191960e+01, -1.25194047e-04], [-1.49424850e-01, -1.25194047e-04, 2.62344872e+01]])
# if there are multiple bodies in the mesh we can split the mesh by
# connected components of face adjacency
# since this example mesh is a single watertight body we get a list of one mesh
mesh.split()
array([<trimesh.Trimesh(vertices.shape=(1722, 3), faces.shape=(3476, 3))>], dtype=object)
# preview mesh in a pyglet window from a terminal, or inline in a notebook
mesh.show()