trimesh.creation#
creation.py#
Create meshes from primitives, or with operations.
- trimesh.creation.annulus(r_min, r_max, height=None, sections=None, transform=None, segment=None, **kwargs)#
Create a mesh of an annular cylinder along Z centered at the origin.
- Parameters:
r_min (float) – The inner radius of the annular cylinder
r_max (float) – The outer radius of the annular cylinder
height (float) – The height of the annular cylinder
sections (int or None) – How many pie wedges should the annular cylinder have
transform ((4, 4) float or None) – Transform to apply to move result from the origin
segment (None or (2, 3) float) – Override transform and height with a line segment
**kwargs – passed to Trimesh to create annulus
- Returns:
annulus – Mesh of annular cylinder
- Return type:
- trimesh.creation.axis(origin_size=0.04, transform=None, origin_color=None, axis_radius=None, axis_length=None)#
Return an XYZ axis marker as a Trimesh, which represents position and orientation. If you set the origin size the other parameters will be set relative to it.
- Parameters:
transform ((4, 4) float) – Transformation matrix
origin_size (float) – Radius of sphere that represents the origin
origin_color ((3,) float or int, uint8 or float) – Color of the origin
axis_radius (float) – Radius of cylinder that represents x, y, z axis
axis_length (float) – Length of cylinder that represents x, y, z axis
- Returns:
marker – Mesh geometry of axis indicators
- Return type:
- trimesh.creation.box(extents=None, transform=None, bounds=None, **kwargs)#
Return a cuboid.
- Parameters:
extents (float, or (3,) float) – Edge lengths
transform ((4, 4) float) – Transformation matrix
bounds (None or (2, 3) float) – Corners of AABB, overrides extents and transform.
**kwargs – passed to Trimesh to create box
- Returns:
geometry – Mesh of a cuboid
- Return type:
- trimesh.creation.camera_marker(camera, marker_height=0.4, origin_size=None)#
Create a visual marker for a camera object, including an axis and FOV.
- Parameters:
camera (trimesh.scene.Camera) – Camera object with FOV and transform defined
marker_height (float) – How far along the camera Z should FOV indicators be
origin_size (float) – Sphere radius of the origin (default: marker_height / 10.0)
- Returns:
meshes – Contains Trimesh and Path3D objects which can be visualized
- Return type:
list
- trimesh.creation.capsule(height=1.0, radius=1.0, count=None, transform=None)#
Create a mesh of a capsule, or a cylinder with hemispheric ends.
- Parameters:
height (float) – Center to center distance of two spheres
radius (float) – Radius of the cylinder and hemispheres
count ((2,) int) – Number of sections on latitude and longitude
- Returns:
capsule –
- Capsule geometry with:
cylinder axis is along Z
one hemisphere is centered at the origin
other hemisphere is centered along the Z axis at height
- Return type:
- trimesh.creation.cone(radius, height, sections=None, transform=None, **kwargs)#
Create a mesh of a cone along Z centered at the origin.
- Parameters:
radius (float) – The radius of the cylinder
height (float) – The height of the cylinder
sections (int or None) – How many pie wedges per revolution
transform ((4, 4) float or None) – Transform to apply after creation
**kwargs (dict) – Passed to Trimesh constructor
- Returns:
cone – Resulting mesh of a cone
- Return type:
- trimesh.creation.cylinder(radius, height=None, sections=None, segment=None, transform=None, **kwargs)#
Create a mesh of a cylinder along Z centered at the origin.
- Parameters:
radius (float) – The radius of the cylinder
height (float or None) – The height of the cylinder
sections (int or None) – How many pie wedges should the cylinder have
segment ((2, 3) float) – Endpoints of axis, overrides transform and height
transform ((4, 4) float) – Transform to apply
**kwargs – passed to Trimesh to create cylinder
- Returns:
cylinder – Resulting mesh of a cylinder
- Return type:
- trimesh.creation.extrude_polygon(polygon, height, transform=None, **kwargs)#
Extrude a 2D shapely polygon into a 3D mesh
- Parameters:
polygon (shapely.geometry.Polygon) – 2D geometry to extrude
height (float) – Distance to extrude polygon along Z
triangle_args (str or None) – Passed to triangle
**kwargs (dict) – Passed to triangulate_polygon
- Returns:
mesh – Resulting extrusion as watertight body
- Return type:
- trimesh.creation.extrude_triangulation(vertices, faces, height, transform=None, **kwargs)#
Extrude a 2D triangulation into a watertight mesh.
- Parameters:
vertices ((n, 2) float) – 2D vertices
faces ((m, 3) int) – Triangle indexes of vertices
height (float) – Distance to extrude triangulation
**kwargs (dict) – Passed to Trimesh constructor
- Returns:
mesh – Mesh created from extrusion
- Return type:
- trimesh.creation.icosahedron(**kwargs)#
Create an icosahedron, one of the platonic solids which is has 20 faces.
- Parameters:
kwargs (dict) – Passed through to Trimesh constructor.
- Returns:
ico – Icosahederon centered at the origin.
- Return type:
- trimesh.creation.icosphere(subdivisions=3, radius=1.0, **kwargs)#
Create an isophere centered at the origin.
- Parameters:
subdivisions (int) – How many times to subdivide the mesh. Note that the number of faces will grow as function of 4 ** subdivisions, so you probably want to keep this under ~5
radius (float) – Desired radius of sphere
kwargs (dict) – Passed through to Trimesh constructor.
- Returns:
ico – Meshed sphere
- Return type:
- trimesh.creation.random_soup(face_count=100)#
Return random triangles as a Trimesh
- Parameters:
face_count (int) – Number of faces desired in mesh
- Returns:
soup – Geometry with face_count random faces
- Return type:
- trimesh.creation.revolve(linestring, angle=None, sections=None, transform=None, **kwargs)#
Revolve a 2D line string around the 2D Y axis, with a result with the 2D Y axis pointing along the 3D Z axis.
This function is intended to handle the complexity of indexing and is intended to be used to create all radially symmetric primitives, eventually including cylinders, annular cylinders, capsules, cones, and UV spheres.
Note that if your linestring is closed, it needs to be counterclockwise if you would like face winding and normals facing outwards.
- Parameters:
linestring ((n, 2) float) – Lines in 2D which will be revolved
angle (None or float) – Angle in radians to revolve curve by
sections (None or int) – Number of sections result should have If not specified default is 32 per revolution
transform (None or (4, 4) float) – Transform to apply to mesh after construction
**kwargs (dict) – Passed to Trimesh constructor
- Returns:
revolved – Mesh representing revolved result
- Return type:
- trimesh.creation.sweep_polygon(polygon, path, angles=None, **kwargs)#
Extrude a 2D shapely polygon into a 3D mesh along an arbitrary 3D path. Doesn’t handle sharp curvature well.
- Parameters:
polygon (shapely.geometry.Polygon) – Profile to sweep along path
path ((n, 3) float) – A path in 3D
angles ((n,) float) – Optional rotation angle relative to prior vertex at each vertex
**kwargs (dict) – Passed to triangulate_polygon.
- Returns:
mesh – Geometry of result
- Return type:
- trimesh.creation.torus(major_radius, minor_radius, major_sections=32, minor_sections=32, transform=None, **kwargs)#
Create a mesh of a torus around Z centered at the origin.
- Parameters:
major_radius ((float)) – Radius from the center of the torus to the center of the tube.
minor_radius ((float)) – Radius of the tube.
major_sections (int) – Number of sections around major radius result should have If not specified default is 32 per revolution
minor_sections (int) – Number of sections around minor radius result should have If not specified default is 32 per revolution
transform ((4, 4) float) – Transformation matrix
**kwargs – passed to Trimesh to create torus
- Returns:
geometry – Mesh of a torus
- Return type:
- trimesh.creation.triangulate_polygon(polygon, triangle_args=None, engine=None, **kwargs)#
Given a shapely polygon create a triangulation using a python interface to triangle.c or mapbox-earcut. > pip install triangle > pip install mapbox_earcut
- Parameters:
polygon (Shapely.geometry.Polygon) – Polygon object to be triangulated.
triangle_args (str or None) – Passed to triangle.triangulate i.e: ‘p’, ‘pq30’
engine (None or str) – Any value other than ‘earcut’ will use triangle
- Returns:
vertices ((n, 2) float) – Points in space
faces ((n, 3) int) – Index of vertices that make up triangles
- trimesh.creation.truncated_prisms(tris, origin=None, normal=None)#
Return a mesh consisting of multiple watertight prisms below a list of triangles, truncated by a specified plane.
- Parameters:
triangles ((n, 3, 3) float) – Triangles in space
origin (None or (3,) float) – Origin of truncation plane
normal (None or (3,) float) – Unit normal vector of truncation plane
- Returns:
mesh – Triangular mesh
- Return type:
- trimesh.creation.uv_sphere(radius=1.0, count=None, transform=None, **kwargs)#
Create a UV sphere (latitude + longitude) centered at the origin. Roughly one order of magnitude faster than an icosphere but slightly uglier.
- Parameters:
radius (float) – Radius of sphere
count ((2,) int) – Number of latitude and longitude lines
kwargs (dict) – Passed thgrough
- Returns:
mesh – Mesh of UV sphere with specified parameters
- Return type: