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, given as a list of rings 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.10

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.10
File Size Uploaded
outie-0.1.10.tar.gz 39.1 kB Details

Built distributions (wheels)

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

Total release size: 1.6 MB

Release files / outie-0.1.10.tar.gz

Download URL outie-0.1.10.tar.gz
Size 39.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a4a14e2834e73310e703fe1dbc6cdb015c4fe4f8fb92cc1ae2b5aef9cf12fce1
BLAKE2b-256 checksum
How to use checksums
65c005c48f8119a7e298861b150d4f616b0abe189844925b7acdae8f5313568d
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.10-cp311-abi3-win_amd64.whl

Download URL outie-0.1.10-cp311-abi3-win_amd64.whl
Size 232.4 kB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
d90ee03d1db9a13e1720ccf5617f114e2959221da52e9d9e533dc2a98c89e020
BLAKE2b-256 checksum
How to use checksums
accb3ec037b6db60eaa9663d2783df14380eeb44f9c9fd19224f151919ec9a11
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.10-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL outie-0.1.10-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 351.1 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
dd589ccf49de02fb4d5e6d56baaa3beac80c97c16d2d3efa32ee4e548b7f10fa
BLAKE2b-256 checksum
How to use checksums
ef5aef46f219c6f348bbb2da4d7a2897607a9ad732cdf968a84a917bbd23d91e
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.10-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL outie-0.1.10-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 347.6 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
ca39b543a59b80dc013c15975968ff8025646cb4ca350de1d48c9c7996b24845
BLAKE2b-256 checksum
How to use checksums
3f11d7ec2c8e116b0b24e96d7d6291b28459f60bb72acfb29339ba34fba5c6f7
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.10-cp311-abi3-macosx_11_0_arm64.whl

Download URL outie-0.1.10-cp311-abi3-macosx_11_0_arm64.whl
Size 315.9 kB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c1be68d9dae63286efde3fc2ba402ddc7bcc90da34d103723c3c1ab2e105b3ff
BLAKE2b-256 checksum
How to use checksums
688e88d35128244ca187024080e85275ffff780f380c39d5ed64a3db285375dc
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.10-cp311-abi3-macosx_10_12_x86_64.whl

Download URL outie-0.1.10-cp311-abi3-macosx_10_12_x86_64.whl
Size 325.5 kB
Tags CPython 3.11 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
7af7c16dc7a22251603938907412092feced7312d58f299acd56297703f107ca
BLAKE2b-256 checksum
How to use checksums
6e5aa25e92c43cbb11a9f62ce127c5e0f0bc32fa3f9e18aa6ec449d16cc86271
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.10 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