Skip to main content

Trimesh tools collection

Project description

TrimeshTools - collection of tools for 3D modeling with Trimesh

PyPI package version number PyPI Downloads Actions Status License

Overview

trimeshtools-pypi is a minimalistic Python library designed to extend the capabilities of the popular trimesh library. It provides a limited set of tools for basic 3D mesh manipulation, including operations for combining, moving, rotating, and visualizing 3D models. This library aims to simplify common mesh processing tasks, making it easier for developers and researchers to work with 3D data in Python.

Key Features

  • Mesh Combination: Seamlessly perform boolean union operations and concatenate multiple meshes.
  • Advanced Deformation: Apply various deformation techniques such as bending, spiral bending, and twisting to meshes.
  • Precise Editing: Subdivide meshes for increased detail and accurately cut meshes using defined planes.
  • Transformations: Easily move meshes to specific positions (center, floor, custom bounds) and apply rotations or mirroring transformations.
  • Geometric Figure Creation: Generate complex 3D shapes like Archimedean spirals and rounded boxes.
  • Surface Operations: Utilize the Surface class for advanced operations, including creating surfaces from vertices, paths, Z-functions, and parametric functions, as well as thickening surfaces.
  • Visualization: Conveniently display meshes in a 3D viewer, with optional axis visualization.
  • Mesh Repair Utilities: Includes functions to fix common mesh issues such as merging vertices, removing duplicate faces, and correcting normals.

Installation

To install trimeshtools-pypi, you can use pip:

pip install trimeshtools-pypi

Usage

Here are some basic examples of how to use trimeshtools-pypi.

Combining Meshes

import trimesh
from trimeshtools.combine import union_meshes, concatenate_meshes

# Create some sample meshes
mesh1 = trimesh.creation.box()
mesh2 = trimesh.creation.sphere()

# Perform a union operation
combined_mesh_union = union_meshes(mesh1, mesh2)

# Concatenate meshes
combined_mesh_concat = concatenate_meshes(mesh1, mesh2)

Deforming Meshes

import trimesh
from trimeshtools.deform import bend_mesh, spiral_bend_mesh, twist_mesh

# Create a sample mesh
mesh = trimesh.creation.box()

# Bend the mesh
bent_mesh = bend_mesh(mesh.copy(), radius=10)

# Spiral bend the mesh
spiral_bent_mesh = spiral_bend_mesh(mesh.copy(), bend_amount=0.5)

# Twist the mesh
twisted_mesh = twist_mesh(mesh.copy(), num_rotations=3)

Editing Meshes

import trimesh
from trimeshtools.edit import subdivide_shape, cut_mesh
import numpy as np

# Create a sample mesh
mesh = trimesh.creation.box()

# Subdivide the mesh
subdivided_mesh = subdivide_shape(mesh.copy(), iterations=1)

# Cut the mesh
plane_origin = [0, 0, 0]
plane_normal = [0, 0, 1]
mesh_above, mesh_below = cut_mesh(mesh.copy(), plane_origin, plane_normal)

Moving Meshes

import trimesh
from trimeshtools.move import move_to_center, move_to_floor, move_to_bound

# Create a sample mesh
mesh = trimesh.creation.box()

# Move to center
centered_mesh = move_to_center(mesh.copy())

# Move to floor
floored_mesh = move_to_floor(mesh.copy())

# Move to specific bound
bound_mesh = move_to_bound(mesh.copy(), x=1, y=-1, z=0)

Rotating Meshes

import trimesh
from trimeshtools.rotate import create_rotation_matrix_for_x, create_mirror_matrix
import numpy as np

# Create a sample mesh
mesh = trimesh.creation.box()

# Create rotation matrix and apply
rotation_matrix = create_rotation_matrix_for_x(np.radians(45))
rotated_mesh = mesh.copy().apply_transform(rotation_matrix)

# Create mirror matrix and apply
mirror_matrix = create_mirror_matrix(x=True)
mirrored_mesh = mesh.copy().apply_transform(mirror_matrix)

Showing Meshes

import trimesh
from trimeshtools.show import show_mesh

# Create a sample mesh
mesh = trimesh.creation.box()

# Show the mesh
show_mesh(mesh)

Surface Operations

import trimesh
import numpy as np
from trimeshtools.surface import Surface

# Create a surface from vertices
vertices = np.array([
    [0, 0, 0],
    [1, 0, 0],
    [0, 1, 0],
    [1, 1, 0]
])
surface_from_vertices = Surface.from_vertices(vertices)

# Create a surface from a z-function
def custom_z_function(X, Y):
    return np.sin(X) + np.cos(Y)

surface_from_function = Surface.from_z_function(
    custom_z_function, x_range=(0, 2*np.pi), y_range=(0, 2*np.pi), steps_count=50
)

# Thicken a surface
thickened_surface = surface_from_vertices.thicken(0.1)

Dependencies

trimeshtools-pypi relies on the following core libraries:

  • trimesh: A powerful Python library for 3D meshes and geometry.
  • numpy: The fundamental package for scientific computing with Python.
  • scipy: Scientific computing tools for Python, used for Delaunay triangulation in surface creation.
  • shapely: A Python library for manipulation and analysis of planar geometric objects, used for creating spiral meshes.

These dependencies will be automatically installed when you install trimeshtools-pypi using pip.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trimeshtools-0.1.1.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trimeshtools-0.1.1-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file trimeshtools-0.1.1.tar.gz.

File metadata

  • Download URL: trimeshtools-0.1.1.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for trimeshtools-0.1.1.tar.gz
Algorithm Hash digest
SHA256 19cd9dd1a84a020e5acc4fcafccc3b22b6e482a51998e3232ffefefb6f5678ed
MD5 168e3461175e9cb531dc167376ca1b9b
BLAKE2b-256 a95b8c14ad0b692ec3a20552241faad1d8e258e1585098e733f0c9b617b93813

See more details on using hashes here.

File details

Details for the file trimeshtools-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: trimeshtools-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for trimeshtools-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ea7497eaaf7b265b6e1ee736222b1da270ca389652f12c060d72ceb99997b906
MD5 c6f4c6a47b6f5cecf9b84cc8dd82fc19
BLAKE2b-256 0084d1ccb6a7c32167c5b4fa8a2a596412178910e8525c77c9f63157f70ca63a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page