The following illustration shows the top level of a sample particle graph. All Bifrost graphs have similar elements.
Bifrost is a pure data flow graph. Data flows "downstream" from left to right along connections between ports on nodes.
The inputs may be coming from the host scene through input
nodes, such as scene geometry or numeric parameters. Alternatively, they can be created inside the graph itself, for example, with value
nodes or simple geometry-creation nodes like create_mesh_sphere
.
The results of the graph computation are sent to the scene through a connection to an output
or terminal
node. Most graphs output Bifrost geometric objects, which create bifrostGraph
objects in the scene. These can be displayed in the viewport, as well as rendered with compatible renderers such as Arnold.
By default, graphs have one input
node and one output
node. However you can create additional input
and output
nodes in the same way as any other node.
Alternatively, Bifrost graphs can output geometry to standard formats like Alembic and VDB for use with other renderers. See Input and output data from files.
Nodes perform operations on their inputs, and output the results. The input ports are on the left, and the output ports are on the right.
There are nodes for basic functions like add
and multiply
. There are also high-level nodes like simulate_particles
that perform many operations to create an effect, as well as medium-level nodes that serve as useful utility functions.
The high-level and medium-level nodes are usually compounds. Compounds are nodes that contains subgraphs of other nodes and possibly even other compounds. You can double-click on a compound to enter it and view its contents. You can also create your own compounds to organize your graphs, as well as to publish them for reuse — see Create and edit compounds.
Published compounds that you add to a graph are referenced by default. This means that they refer to a node definition on disk. You cannot modify the internal subgraph of a referenced compound until you import it locally into a graph — see Import a referenced compound.