Geometry
Mesh utilities for bring-your-own geometry.
clean_mesh repairs one mesh: it joins duplicate vertices, drops
degenerate and duplicate triangles, and makes the triangle winding consistent
and outward-facing.
Notes
You do not need it for correct results: the SDK already cleans every building
before it grids facades and roofs (unless a payload sets
mesh_cleaning="off"). Use it to see what the cleaning does to your mesh, or
to make an upload smaller (an unwelded export carries every shared corner once
per triangle).
MeshCleanReport
dataclass
What clean_mesh did to one mesh.
Attributes:
| Name | Type | Description |
|---|---|---|
vertices_welded |
int
|
Input vertices joined into an earlier vertex at the same position. |
degenerate_faces_removed |
int
|
Triangles removed because they repeat a vertex or have zero area. |
duplicate_faces_removed |
int
|
Triangles removed because they exactly repeat an earlier triangle. |
faces_flipped |
int
|
Kept triangles whose winding is the reverse of the input winding. |
closed_components |
int
|
Connected parts that form a closed surface (turned outward). |
open_components |
int
|
Connected parts with open edges; they keep their authored direction. |
non_manifold_edges |
int
|
Edges shared by three or more triangles. |
CleanedMesh
Bases: NamedTuple
The result of clean_mesh: flat arrays and the report.
Attributes:
| Name | Type | Description |
|---|---|---|
coordinates |
ndarray
|
Flat vertex positions |
indices |
ndarray
|
Flat triangle vertex indices, little-endian |
report |
MeshCleanReport
|
What the cleaning changed. |
clean_mesh
clean_mesh(coordinates, indices) -> CleanedMesh
Clean one mesh the way the SDK cleans each building.
The steps: join vertices at bit-identical positions (-0.0 equals
+0.0, no tolerance), drop degenerate and exact duplicate triangles,
make the winding consistent (the authored majority wins), and turn closed
parts outward. An open part keeps its authored direction.
Warnings
Clean each building on its own: two objects that touch must stay apart.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
coordinates
|
array_like
|
Vertex positions, flat |
required |
indices
|
array_like
|
Triangle vertex indices, flat or |
required |
Returns:
| Type | Description |
|---|---|
CleanedMesh
|
Flat |
Raises:
| Type | Description |
|---|---|
ValueError
|
If a coordinate is not finite, an index is out of range, or an index
is not a whole number in |