Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Primvaria

Physics-ready variability for Physical AI, in OpenUSD.

CI Python 3.10+ License: MIT

Primvaria is a suite of procedural asset generators for the objects robots struggle with most: grains, cloth, cables and small mechanical parts. Every generator follows the same approach: distributions instead of one shape (no two generated instances are the same, and what was drawn is written down as ground truth), measured outputs (mass, shape, stiffness are measured on what was generated, not trusted from the inputs) and honest limits (each asset is checked in real engines, and what was not tested is said).

Every output is OpenUSD with standard UsdPhysics schemas, plus PhysX attributes for NVIDIA Omniverse and Isaac Sim: one file format for Blender, usdview, Omniverse and the other OpenUSD-aware tools, read back into MuJoCo for the checks. Each generator's README says in which engines its assets have been tested so far. Everything can run on CPU.

The name comes from primvar, OpenUSD's primitive variable, and varia, Latin for "diverse things".

The generators

Generator Assets Physics
Granulaire Granulaire sand, gravel, pebbles, seeds, fruit, pellets, packing peanuts; measured shapes, masses and moisture rigid bodies; deformables for OmniPhysics (not tested yet)
Maillage Maillage towels, napkins, tablecloths, sheets, scarves, flags; real sizes, fabrics and masses cloth meshes; drape test in Blender
Filaire Filaire standard cables with male and female connectors and the receptacles they plug into rigid-segment chains with joints; drop, sag and insertion tests in MuJoCo
Quincaillerie Quincaillerie metric screws, nuts and washers with modelled threads; battery cells and their holders rigid bodies, springs and clips; drop, screwing and insertion tests in MuJoCo and Blender

Each generator is its own package, released on its own schedule. Primvaria installs them together and gives them one command line.

Installation

pip install primvaria             # the four generators
pip install "primvaria[all]"      # + renders, MuJoCo checks, MaterialX
Extra Adds
render previews and renders (matplotlib, Pillow)
sim the MuJoCo checks of Filaire and Quincaillerie
materialx MaterialX materials of Quincaillerie
all all of the above

Blender as a Python module is installed with pip install "maillage[blender]" (Python 3.13 only, as the bpy wheels exist for one Python version). Only one generator? Install it alone: pip install granulaire.

Usage

primvaria list                                   # generators and installed versions
primvaria granulaire generate --preset beach_sand
primvaria maillage generate --preset tea_towel
primvaria filaire generate --preset usb_c --length 2
primvaria quincaillerie generate screw M10 --with nut,washer --count 10

primvaria <generator> ... runs that generator's own command line: it is the same as typing granulaire ..., maillage ..., which keep working. From Python, import the generators directly:

from granulaire import generate_scene, write_outputs

write_outputs(generate_scene("beach_sand"), "output")

Development

The project follows GitHub Flow, like the four generators: main is protected, every change goes through a pull request from a short-lived branch (feat/<name>, fix/<name>, …), and CI must be green before merging. Enable the pre-push hook once per clone with git config core.hooksPath .githooks.

Releasing: on a chore/release-X.Y.Z branch, bump version in pyproject.toml and move the Unreleased entries of CHANGELOG.md under the new version; merge, then tag vX.Y.Z on main. The release workflow tests, builds, creates the GitHub release and publishes the package on PyPI through Trusted Publishing.

License

MIT © 2026 Daniel Régis Sarmento Caon

Metadata

Release files for primvaria 0.1.0b1

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

Source distribution (sdist)

Source distribution for primvaria 0.1.0b1
File Size Uploaded Provenance Actions
primvaria-0.1.0b1.tar.gz 7.6 kB With provenance Details for primvaria-0.1.0b1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for primvaria 0.1.0b1
File Interpreter ABI Platform Actions
primvaria-0.1.0b1-py3-none-any.whl Python 3 none any Details for primvaria-0.1.0b1-py3-none-any.whl

Total release size: 15.0 kB

Release files / primvaria-0.1.0b1.tar.gz

Download URL primvaria-0.1.0b1.tar.gz
Size 7.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d6ad8edb1e67d15d55b8e7a51d7f38e5dfe8ba85422c33046daab754ee3c7c0e
BLAKE2b-256 checksum
How to use checksums
ce2c4b734d57858dead78bce137935e0687ecabfc6d5a1416bc8879c0588961a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 29, 2026.

Transparency log

Release files / primvaria-0.1.0b1-py3-none-any.whl

Download URL primvaria-0.1.0b1-py3-none-any.whl
Size 7.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1be9744727a2e55f8ed784c1d9eed86daa2f27873a8a7de639b002892cadc742
BLAKE2b-256 checksum
How to use checksums
26a95d77e47dbda6ca3934d9767a9fa6c245cf6d71aa097c6935c400ad02fb83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 29, 2026.

Transparency log

Security for primvaria 0.1.0b1

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for primvaria-0.1.0b1.tar.gz

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 29, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
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