Partio

Partio is an open source C++ library for reading, writing and manipulating a variety of standard particle formats (GEO, BGEO, PTC, PDB, PDA).

Partio has a Python API and a collection of simple command-line tools.

Motivation

Particles are an important part of effects work, because they allow free-form information in 3D space. Unfortunately, there is no standard format for particles akin to Wavefront .obj. Most animation systems have their own proprietary particle formats. For example Maya uses the binary and ascii particle database formats .pdb and .pda file formats. Houdini uses the .geo and .bgeo geometry uber formats. Renderers typically have their own point cloud format such as RenderMan's PTC format and Houdini's .pc. All of these formats share a common theme. They allow particles to be iterated or indexed and associate a customizable set of attributes with them. The goal of Partio is to provide a unified interface akin to unified image libraries that makes it easier to load, save, and manipulate particle files.

At Walt Disney Animation Studios, we had used a mix of PDB formats, PTC formats and BGEO formats, depending on the authoring environments. Many of our tools supported more than one of these, but the code was scattered and copied to read these formats. Additionally, some of these formats required linking to large libraries to use. For this reason we desired a library that could read and write all of these file formats in a simple way. This would allow all of our tools to easily support all the possible formats that we could throw at them. It also allowed more flexibility in moving particles into proprietary packages without having to write an importer/exporter for every different tool.

Features

  • Supports Houdini's GEO and BGEO, Maya's PDB and PDA, RenderMan's PTC
  • Arbitrary back end in-memory/cached formats can be supported from a single interface
  • A Python API for easy scripting of particle manipulation
  • A C++ API for high performance particle manipulation
  • Nearest Neighbor Lookups for density estimation, Voronoi computation, etc.
Your browser is not supported. Please upgrade to continue.