Primvaria

primvar + varia · open source · MIT

Physics-ready variability for Physical AI, in OpenUSD.

Procedural asset generators for the objects robots struggle with most: grains, cloth, cables and small mechanical parts. No two instances are the same, every value is measured, and every preset is checked in real engines before it ships.

pip install primvaria
Source on GitHub PyPI
4 generatorsOpenUSD + UsdPhysicsBlender · MuJoCo · Isaac Simruns on CPU

Three rules, in every generator

Vary

Distributions, not one mesh copied a hundred times: shape, size, tolerance, defects, wear and physics drawn per instance, each with its own seed, and written into the file as ground truth.

Measure

What was generated is measured afterwards: mass, sphericity, drape, stiffness, fit. The numbers ship with the asset, so a training set can be filtered and stratified.

Prove

Every preset passes OpenUSD's validators and physical tests in real engines, read back from the file. What has not been tested is said, in the table below.

The generators

Each is its own package, released on its own schedule. pip install primvaria installs all four and one command line.

Grains of every Granulaire preset, dry to saturated

Granulaire

granular · grainy

Sand, gravel, pebbles, seeds, fruit, pellets and regolith with measured shapes, sizes, masses and four moisture states.

25 presets · 0.07 mm to 5 cm
One piece of each Maillage preset: towels, napkins, tablecloths, sheets, scarves and a flag

Maillage

mesh · knit stitch

Towels, napkins, tablecloths, sheets, scarves and flags in real sizes and fabrics, meshed for cloth solvers, with engine-neutral stiffness.

12 presets · 11 fabrics
Cables of eight Filaire presets with their connectors

Filaire

wired · wireframe

Standard cables with real male and female connectors, the receptacles they plug into, and rigid-segment physics from the cable's stiffness.

14 presets · 17 connector families
Ten varied instances of a screw, nut and washer, and battery cells

Quincaillerie

hardware · nuts and bolts

Threaded screws, nuts and washers, battery cells and their holders, where tolerances, defects and wear change how parts really behave.

M3–M12 · 41 catalogue assets

Engine matrix

Where each generator stands in each engine, on 29 October 2026. Tests run in each project's CI on every preset, from the OpenUSD file alone.

GeneratorOpenUSD validatorsBlenderMuJoCoIsaac Sim · PhysXOmniPhysics deformables
Granulaire testedevery preset and moisture state testedpile test, every preset testedpile test, every preset not yetstandard UsdPhysics rigid bodies exportedpeanuts, tomatoes; not run
Maillage testedevery preset, OmniPhysics layer included testeddrape test, every preset testedflex export, drape test, every preset n/acloth: see OmniPhysics exportedsurface deformables, structure checked; not run
Filaire testedevery preset, with and without physics testeddrop through the add-on, every preset testeddrop, sag, coil, insertion not yetUsdPhysics joints, PhysX attributes n/a
Quincaillerie testedwhole catalogue, varied instances testeddrop and assemblies through the add-on testeddrop, screwing, jammed threads, insertion not yetUsdPhysics, PhysX attributes n/a

Not yet in Isaac Sim. The files follow the standard UsdPhysics schemas and carry PhysX attributes, but no run in Isaac Sim has been done: it needs an NVIDIA RTX GPU. That run is the next milestone.

Fine grains at any scale. Sand and regolith are simulated with lengths and gravity scaled by the same factor, which leaves the motion unchanged and keeps engines away from their absolute tolerances. Each README says how.

Install and generate

pip install primvaria           # the four generators
pip install "primvaria[all]"    # + renders, MuJoCo checks, MaterialX

Python 3.10+, no GPU needed. One generator only? pip install granulaire, or any of the others.

primvaria list
primvaria granulaire generate --preset beach_sand
primvaria maillage generate --preset tea_towel
primvaria filaire generate --preset usb_c
primvaria quincaillerie generate screw M10 --with nut,washer