Naiad Overview

 

Naiad is a dynamics solver and a simulation framework capable of producing animations of dynamic bodies including:

  • liquids
    • large and small bodies of water
    • breaking waves
    • splashes and foam
    • accurate viscous liquids featuring buckling, coiling and bending motion
    • high degree of creative control while preserving realistic fluid motion
  • gases
    • fire
    • smoke
    • explosions
  • full two-way coupling of rigid-bodies, soft-bodies and particles to fluids

Naiad is more than just a software package, it is:

  • a description of a simulation expressed as a graph: the Naiad Graph
  • an interface specification used to construct a Naiad Graph: the Naiad Interface
  • a plug-in API allowing users to write custom nodes in the Naiad Graph
  • a software package which conforms to the Naiad Interface and runs the simulation described by a Naiad Graph
  • an open-source software package allowing an artist to interactively construct a Naiad Graph using a 3D GUI front-end
  • a standard file-format for storing the results of a Naiad simulation, called the EMP format.

We will now give a brief overview of these components.

The Naiad Time-Step Graph

The Naiad time-step graph is the heart of the framework: it allows the artist to express what happens at each time-step of the simulation.

Figure 1: A Naiad particle-liquid time-step graph, visualized in the Naiad Studio GUI.

Each node in the Naiad Graph is called a Naiad Operator. There are two kinds of Ops: BodyOps and FieldOps.  BodyOps are used to create, evolve or terminate bodies, while FieldOps perform compositing-like operations on 3D fields such as velocity, density, pressure, etc.

The edges in the graph which connect the Ops are called feeds and, as the name suggests, they are used to feed the data between Ops.

The Naiad Interface

In order to have a Naiad graph, we need some way to make one.  In order to make one, we need a language that can describe it. That is the purpose of the Naiad Interface: to describe a Naiad graph to whatever Naiad-compliant solver back-end is present.

There are two variants of it:

  • Naiad Interface file (.ni) - a text file containing Naiad Graph-building commands.  You can think of a .ni file as the "simulation version" of a RenderMan® RIB file.
  • Naiad Interface (Ni) API - the same Naiad Scene-building commands as .ni but wrapped in a C++ API. The Naiad Interface API is more powerful than .ni files since it allows reading back information from the scene -- the one-way nature of the .ni format makes this impossible.  Writing Naiad plug-ins (user Ops) also requires using the Naiad Interface API.  Using this API consumes a Naiad license.  You can think of the Naiad Interface as the "simulation version" of the RenderMan® API©.

Prior to the release of Naiad version 1.0, there will also be full Python bindings to the Naiad Interface.

The Naiad Software

There are two sofware packages that ship with Naiad: the command-line solver "naiad", and "Naiad Studio" - the interactive graph-building GUI, which is open-source.

The Naiad command-line solver

The command-line solver reads a .ni file and runs the Naiad Graph described in it.  The output of the solve is usually EMP files, unless the graph contains user Ops which output something else.

Naiad Studio

Naiad Studio is our open-source, .ni file creator GUI, which can also be used for interactive simulation.  It's a great way to get build and test/debug a Naiad Graph.

The EMP File Format

EMP (Exotic Matter Pack) File Format stores the Naiad bodies on disk.  It is currently a closed format so that we can change it without breaking compatibility.

Copyrights and Trademarks

RenderMan is a registered trademark of Pixar.  The RenderMan API is Copyright 1989-2009 Pixar.