Skip to main content

Outie

Turns every face of a polygon 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 rings of corner numbers
faces = [f[::-1] if turn else f for f, turn in zip(faces, flip)]

libigl's function, with its name, arguments and outputs: per face, whether to turn it, and the patch it belongs to. The paper's faces are polygons, and so are outie's: a face is a ring of corners, any number of them, or its outer ring and then its holes, each a ring; faces are given as a list of them or an m by k array; given triangles, it is libigl's function exactly. Each face is cut into triangles only to cast rays from, and is decided whole, with its patch. The 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.

Mending a face that crosses itself is 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.11

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.11
File Size Uploaded
outie-0.1.11.tar.gz 39.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for outie 0.1.11
File
outie-0.1.11-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
outie-0.1.11-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.11-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 abi3 Linux glibc 2.17+ ARM64 Details
outie-0.1.11-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details
outie-0.1.11-cp311-abi3-macosx_10_12_x86_64.whl CPython 3.11 abi3 macOS 10.12+ x86-64 Details

Total release size: 1.7 MB

Release files / outie-0.1.11.tar.gz

Download URL outie-0.1.11.tar.gz
Size 39.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6150ad023353a03c9430cc9e60825a32f0bb1c004252c317a935de399c81357f
BLAKE2b-256 checksum
How to use checksums
b061648d19db9412d5deec5381922205b949282a08db9deeb317328e04ae6b47
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.11-cp311-abi3-win_amd64.whl

Download URL outie-0.1.11-cp311-abi3-win_amd64.whl
Size 247.6 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
400d0a0136ff2b29232c6d23704acb8a03653653d3cae2bca90b192cc9b09a94
BLAKE2b-256 checksum
How to use checksums
6cacff47a9f5d7d86fab4736f90caddf52ba2e39577ab6a44131a6a8c1e96c77
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.11-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL outie-0.1.11-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 366.5 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
79b09acaa24d346913745625cfa29add8793732dcc0eac14bcd1c137548fcc4d
BLAKE2b-256 checksum
How to use checksums
6467fc0b71761aa56d9d100e1416c0587db024bfdc88aed54256e09b18652c40
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.11-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL outie-0.1.11-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 359.0 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
aceda084a31c579ea8f6db69af33e0796a4a8bb3d24a52d22a91ace154cfbaaa
BLAKE2b-256 checksum
How to use checksums
a6f46b398eb0bd61d3ebc834f4eb83e814b193c06d4daa4068782f6bfc9e2654
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.11-cp311-abi3-macosx_11_0_arm64.whl

Download URL outie-0.1.11-cp311-abi3-macosx_11_0_arm64.whl
Size 328.6 kB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5b5f97612f9124eb7a1bbe0ddcf27e5dffd57f09f7e34b3e1d96923eea683cca
BLAKE2b-256 checksum
How to use checksums
b14918918619b7b3f289279e4a7bb6ec51f9d0b8564888165902fcc5e66924f6
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.11-cp311-abi3-macosx_10_12_x86_64.whl

Download URL outie-0.1.11-cp311-abi3-macosx_10_12_x86_64.whl
Size 340.8 kB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
f0ee647f692bdaa9c0f6cca01d774ee54473b359e160da7a3c21dbdd10bff895
BLAKE2b-256 checksum
How to use checksums
17cfe9909802e14afb097503a276b4470504b72d1f992f2985343cfa934eaa29
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.11 This release

6 release files

0.1.9

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