https://github.com/a-chaudhary/age3d
A Python Library to age 3d models by simulating the effects of weather
https://github.com/a-chaudhary/age3d
3d-models mesh open3d python simulation stl visualization weather
Last synced: 18 days ago
JSON representation
A Python Library to age 3d models by simulating the effects of weather
- Host: GitHub
- URL: https://github.com/a-chaudhary/age3d
- Owner: A-Chaudhary
- License: apache-2.0
- Created: 2023-02-11T22:23:37.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-11-08T21:27:05.000Z (over 2 years ago)
- Last Synced: 2025-08-21T08:33:10.126Z (11 months ago)
- Topics: 3d-models, mesh, open3d, python, simulation, stl, visualization, weather
- Language: Python
- Homepage: https://a-chaudhary.github.io/age3d/
- Size: 3.73 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README

# age3d
A Python Library to age 3d models by simulating the effects of weather
[](https://github.com/A-Chaudhary/age3d/actions?query=workflow%3A%22Build+Status%22)
[](https://codecov.io/gh/A-Chaudhary/age3d)
[](https://github.com/A-Chaudhary/age3d/blob/main/LICENSE)
[](https://github.com/A-Chaudhary/age3d/issues)
[](https://pypi.org/project/age3d/)
[](https://age3d.readthedocs.io/en/latest/?badge=latest)
[](https://a-chaudhary.github.io/age3d/)
## Overview
Age3D is a Python Library that allows for eroding of 3d models. It uses the `.stl` file format and incorporates Open3D functionality, allowing users to simulate material removal.
Features:
- Conversion of `.stl` to `TriangleMesh`
- Allows for Segmentation of Mesh Vertices based on Height Params
- Erodes Mesh by Simulating Erosion Particles
- Customizable Number of Particles
- Customizable Lifetime of Particles
- Performs Raycasting Computation to Only Remove Material
## Dependencies
age3d requires the [open3d](http://www.open3d.org/) Python Library which is installed during libray installation.
## Installation
The recommended way to install age3d is through pip.
```
pip install age3d
```
## Usage
Import the library:
```
import age3d
```
Import a `.stl` model where `file_path` points to the location:
```
mesh = age3d.import_mesh(file_path)
```
### Erosion
If the `mesh` is low-poly, run with `number_of_subdivisions > 0`:
```
mesh = age3d.mesh_subdivision(mesh, iterations = number_of_subdivisions)
```
Erode the `mesh`:
```
eroded_mesh = age3d.erode(mesh)
```
If Erosion with customized Passes and Max Particle Lifetime:
```
updated_vertices, eroded_mesh = age3d.erode(mesh, iterations = 2, erosion_lifetime = 10)
```
### Point Cloud Creation
Make a `PointCloud` with Red Color Points:
```
point_cloud = age3d.make_point_cloud(mesh, color = [255, 0, 0])
```
### Visualization
Visualize Eroded Mesh:
```
eroded_mesh.compute_vertex_normals()
age3d.visualize(eroded_mesh)
```
or
```
eroded_mesh.compute_vertex_normals()
age3d.visualize([eroded_mesh])
```
Visualize Mesh & Point Cloud:
```
eroded_mesh.compute_vertex_normals()
age3d.visualize([eroded_mesh, point_cloud])
```
Visualize Mesh & Point Cloud with Wireframe:
```
eroded_mesh.compute_vertex_normals()
age3d.visualize([eroded_mesh, point_cloud], show_wireframe = True)
```

## Contributing
If you encounter an issue, please feel free to raise it by opening an issue. Likewise, if you have resolved an issue, you are welcome to open a pull request.
See more at [CONTRIBUTING.md](./CONTRIBUTING.md)