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 port of libigl's reorient_facets_raycast, written in Rust and used from Python, 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 in Rust by parry, in parallel on every core, and numpy arrays pass in without being copied.

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.

Build

The core is Rust, in src/lib.rs, bound to Python by PyO3 and built by maturin; uv sync builds it, and uv run pytest tests it. Releases are a wheel for each system, so installing needs no Rust.

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

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.9
File Size Uploaded
outie-0.1.9.tar.gz 37.0 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for outie 0.1.9
File
outie-0.1.9-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
outie-0.1.9-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 abi3 Linux glibc 2.17+ x86-64 Details
outie-0.1.9-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details
outie-0.1.9-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details
outie-0.1.9-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details

Total release size: 1.5 MB

Release files / outie-0.1.9.tar.gz

Download URL outie-0.1.9.tar.gz
Size 37.0 kB
Tags Source
SHA-256 checksum
How to use checksums
e19ae6fa28345a91b69a6bbf2afe4c56661ffcb360050f04ca6cffe23efb85a3
BLAKE2b-256 checksum
How to use checksums
e9002972ad8e1ddb5371d96126933a2668e8ce746ae5877b366216483bb2864b
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.9-cp311-abi3-win_amd64.whl

Download URL outie-0.1.9-cp311-abi3-win_amd64.whl
Size 214.9 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
758a0f6d00addabba817275b404ccd68d3969b1d47e54f7a8187ff05b07c2a41
BLAKE2b-256 checksum
How to use checksums
382c7142ed60b898d8ba660f0dd394f5f133fd44b40ae7061c789411388328ab
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.9-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL outie-0.1.9-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 335.6 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
e3f88dc96c4f3efb4a33d86c923b08b32d49f244cfcfbd22cacd3874e2fde0a2
BLAKE2b-256 checksum
How to use checksums
ee1393fba590087e54eb3cd92c30c1b887403e0ec3c72826fc593ad26922dc55
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.9-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL outie-0.1.9-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 331.4 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
7f49d02b91e56e670b7f211edbc1645845dd8dfeb7d7f7335470bcd5bc445754
BLAKE2b-256 checksum
How to use checksums
74afb7760f9e4f0019b1cbe9dcff49db1660bc39300f0d1acf93d3773909b29b
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.9-cp311-abi3-macosx_11_0_arm64.whl

Download URL outie-0.1.9-cp311-abi3-macosx_11_0_arm64.whl
Size 299.4 kB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e25cd822ed6850330143c9e086e6b4cbf5ebe25c5a20b5aee8fc8d7624d1ddd2
BLAKE2b-256 checksum
How to use checksums
09273aef6e92be601e47064da568d2e1138919055c0dc88f3856facd6007c7b2
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.9-cp311-abi3-macosx_10_12_x86_64.whl

Download URL outie-0.1.9-cp311-abi3-macosx_10_12_x86_64.whl
Size 310.3 kB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
d9a4db30c4d5dceaae1d26ef37756226ae3636fb195c4ae8d76b040215f98f88
BLAKE2b-256 checksum
How to use checksums
6de676de60020331dfb7db3f22c7167b8c38f236953e533bc45ea7dd8db0d58f
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

This release

0.1.9 This release

6 release files

0.1.8

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