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

flip, patch = outie.reorient_facets_raycast(vertices, faces)   # vertices n by 3, faces m by 3 triangles
faces[flip] = faces[flip][:, ::-1]                              # turn the ones that pointed in

libigl's function, with its name, arguments and outputs: per triangle, whether to turn it, and the patch it belongs to. Its 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, triangles as corners, k by 3 by 3, that rays can hit but that are never turned: the ground a model stands on, or the things around it. A model with no floor is otherwise as open below as above. The ground belongs exactly at the model's lowest point, not below it.

Outie takes triangles, as the paper does. Cutting polygons into triangles, mending rings that cross themselves, and deciding a polygon from its triangles are the caller's.

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.8

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.8
File Size Uploaded
outie-0.1.8.tar.gz 31.7 kB Details

Built distribution (wheel)

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

Total release size: 42.2 kB

Release files / outie-0.1.8.tar.gz

Download URL outie-0.1.8.tar.gz
Size 31.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a703950aa45a25fa5e9794476273bda398770b9774c54655c3def0d9f3e87fe0
BLAKE2b-256 checksum
How to use checksums
6db0218744fb9b41272ade2b5a1cf500723fd9908172aa0632ff087a2ea3fc71
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 Oct 3, 2026.

Transparency log

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

Download URL outie-0.1.8-py3-none-any.whl
Size 10.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ed6a8ff8a91bfcf0f0a5e565972beea9c28c028b1a6139a701e2b2924e443794
BLAKE2b-256 checksum
How to use checksums
f1d4dbb745d7fcc3a33367bbd2bfc2e36ca4e4cfb8e6f2995c2f347e4646c87a
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 Oct 3, 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

This release

0.1.8 This release

2 release files

0.1.7

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