Skip to main content

Outie

Turns every face of a mesh to point out, like an outie, even when the mesh is not closed.

A Python port of libigl's reorient_facets_raycast, the reference code for Takayama, Jacobson, Kavan and Sorkine-Hornung, A Simple Method for Correcting Facet Orientations in Polygon Meshes Based on Ray Casting, 2014.

How

Rays shot off both sides of a wall: the side they escape from is the outside

Faces that share edges are gathered into patches first, so a patch is decided as one. Rays are traced by Embree, through trimesh.

Use

import outie

polygons = outie.orient(polygons)              # a list of rings, each n by 3
faces = outie.orient_mesh(vertices, faces)     # triangles: vertices n by 3, faces m by 3

Both return what they were given, with the faces that pointed in turned round. Polygons are cut into triangles first, each as one consistent piece, and a ring that touches or crosses itself, as a ring with a hole cut into it does, is mended before it is cut. Cleaning the mesh, dropping collapsed or doubled faces, splitting faces that are not flat, is the caller's job before calling. Underneath are libigl's own two functions, with its names, arguments and outputs, for callers who need to know which faces moved or which patch each belongs to:

flip, patch = outie.reorient_facets_raycast(vertices, faces)   # per triangle: turn it? and its patch
faces, patch = outie.bfs_orient(faces)                         # faces wound to agree, and their patches

The paper's settings are keyword arguments with libigl's defaults: rays_total, rays_minimum, facet_wise, use_parity, and seed so a run repeats. One addition: occluders are faces that block rays but are never turned, for the ground a model stands on or the things around it, since a model with no floor is otherwise as open below as above.

Licence

MPL-2.0, as libigl is: this is a port of its code, taken at libigl commit 7100764. The method is its authors'.

Metadata

Release files for outie 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for outie 0.1.7
File Size Uploaded
outie-0.1.7.tar.gz 38.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for outie 0.1.7
File Interpreter ABI Platform
outie-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 50.8 kB

Release files / outie-0.1.7.tar.gz

Download URL outie-0.1.7.tar.gz
Size 38.4 kB
Tags Source
SHA-256 checksum
How to use checksums
416b550364d6657508184c15e45ea7585ca27cbaeecf91270c50efa3d1dbc8e1
BLAKE2b-256 checksum
How to use checksums
ace2851be428b1c57c812e0fe5bf2e467bcb3bc979b5d31deda56deca543162c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / outie-0.1.7-py3-none-any.whl

Download URL outie-0.1.7-py3-none-any.whl
Size 12.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b658f1987b3b8b9f2aa2aaca76ffa981320ef2ed94f2c0bf8ccdb116a5d8b160
BLAKE2b-256 checksum
How to use checksums
c461df4f0e20de4cfcb94ae43584ce5445fe4e7101f93c25c9676b9c346faf59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.2

13 release files

0.2.1

13 release files

0.2.0

13 release files

0.1.9

6 release files

0.1.8

2 release files

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page