Bifrost 2.2.1.0 Release Notes

Bifrost 2.2.1.0 is a feature release with new capabilities, performance improvements, and bug fixes. It is available for Maya 2018, 2019, 2020, and 2022 from the Autodesk Accounts Portal.

Backward Compatibility Warnings

Bifrost 2.2.1.0 contains no changes that break backward-compatibility compared to the previous version.

Arnold Compatibility Information

To obtain the latest Arnold for Maya installer, visit the Autodesk Accounts portal.

Release Highlights

Bifrost 2.2.1.0 includes the following new features.

Filter particles (BIFROST-2226)

Fireworks made using `filter_particles`

The new filter_particles node extracts points that satisfy various criteria into a new object. There is also a new killed_particles output on the simulate_particles that includes the points that expired on the current frame.

One of the possible uses of the resulting object is to emit other particles into a subsequent particle system. For example, you can create fireworks with particles emitting trails as they rise before exploding into bursts when they die.

Refine aero after simulation (BIFROST-4681)

`post_refine_aero` with two levels of refinement

The new post_refine_aero node enhances detail in aero effects after simulation. It still requires the original aero sources and colliders, but it can also be applied to a file cache.

It is generally faster than connecting an aero_refinement_settings node into the additional_settings port of aero_solver_settings, but the extra detail is not fed back into the simulation.

Resume simulations from cache (BIFROST-4946)

The new set_initial_state node can be connected into the additional_settings port of a simulation's settings to read an initial state from a cached file. This prototype is the first step toward a fully-featured initial-state mechanism.

Note that it does not yet work properly with MPM cloth simulations.

Voxelize non-watertight meshes (BIFROST-4837, BIFROST-5065, BIFROST-5311)

The convert_to_volume node can now voxelize non-watertight meshes when volume_mode is set to solid. The min_hole_radius parameter controls the size of the smallest holes allowed in the result.

Selective evaluation of terminals

Selective evaluation means that the sub-graph connected into a terminal's final port is not evaluated by default except when rendering offline. You do not need to wait for a heavy, high-resolution computation to complete before seeing the proxy or diagnostic results in the viewport.

Selective evaluation works in DG evaluation mode in Maya 2020 and earlier versions.

If you have a scene with Terminals that was created in Bifrost 2.2.0.x, run the following code snippet to take advantage of the fix for BIFROST-5465 so that your scene renders correctly in Parallel Evaluation mode:

from maya import cmds

def fix_terminal_outputs(graph_node):
    terminal_category = "terminal_node_output_attribute"
    for flag in ("final", "proxy", "diagnostic"):
        attr = "Core__Graph__terminal__%s" % flag
        if cmds.attributeQuery(attr, node=graph_node, exists=True):
            cmds.addAttr("%s.%s" % (graph_node, attr), edit=True, category=terminal_category)

for graph_node in cmds.ls(type="bifrostGraphShape") + cmds.ls(type="bifrostBoard"):
    fix_terminal_outputs(graph_node)

Faster plug-in loading (BIFROST-5387, BIFROST-5388, BIFROST-5386, BIFROST-4244)

The Bifrost plug-in now loads faster in both Maya and Arnold, especially with many compounds. We are continuing to work on reducing start-up time.

Faster particle collisions (BIFROST-4835)

Particle surface and self-collisions are now faster.

New sample graphs (BIFROST-5549)

There are several new graphs available in the Bifrost Browser, including examples of fields and scattering. Some of these examples show basic effects, while others illustrate general techniques and usage.

Volume rendering and motion blur (ARNOLD-309)

Various fixes improve motion blur when rendering volumes. In particular:

MPM cloth stability (BIFROST-5047, BIFROST-5048, BIFROST-5051, BIFROST-5190, BIFROST-5414)

A number of fixes have been made to improve the stability of MPM cloth simulations.

Scatter pack improvements (BIFROST-5402, BIFROST-5378)

Several improvements have been made to scattering and instancing.



What's Fixed in Bifrost 2.2.1.0
Aero: CPU utilization drops significantly with apply fields BIFROST-5349
Aero: Memory doesn't get freed when returning to start frame, only freed when forcing a recompile of the graph BIFROST-5257
Compound Loading: Avoid many extra checks on disk by not interpreting file:///bob.json as an absolute path BIFROST-5387
Compound Loading: Bifrost crashes if custom compound location also contains Bifrost plugin folders BIFROST-5295
Convert to volume: Robust Voxelization to better handle non-water-tight meshes BIFROST-4837
Esc Termination: Option to disable resumable simulations BIFROST-5165
FCurve: Single point f-curves draw correctly in the UI but sample incorrectly BIFROST-4838
Geometry: BIF geometry C++ access creates copies of data BIFROST-5099
Interaction: Crash copy and pasting input nodes that cause a port naming collision BIFROST-5143
Interaction: Creating a cycle of dependencies upstream of terminals crashes BIFROST-5554
Interaction: Creating an new output port from a clamp node crashes due to a port naming collision BIFROST-5498
Interaction: linear_interpolate nodes crashes Maya if created with an input selected BIFROST-5445
Maya Plug-In: Use callback to free volume memory pools on new scene, open scene, delete graph as well as recompile BIFROST-5397
Maya Plug-in: Incorrect graph results from animated Maya inputs when cache playback is on BIFROST-5423
Maya Plug-in: Memory leaks during playback BIFROST-4988
Maya Plugin: 2D array outputs from BifrostBoard do not trigger evaluation on scene open BIFROST-5366
Mesh: Improve update_mesh_normal performance by using mesh adjacency data BIFROST-4930
Particles: Performance improvement BIFROST-4835
Render Archive Instancing: render_archive_instance causing MayaTopologyEvaluator crash with animated input BIFROST-5394
Scatter Pack: Improve preview geometry handling in set_instance_geometry and bake_instanced_geometry BIFROST-5402
Scatter Pack: scatter_points with negative density weights and DistanceBased culling act as positive values BIFROST-5378
Strands: update_strands_tangents returns incorrect tangents on end points BIFROST-5487
Terminals: Arnold renderer is not refreshing terminal outputs when cached playback is enabled BIFROST-5344
Terminals: Convert graph shape to board shape broken with terminals BIFROST-5544
Terminals: Crash clicking Final Viewport checkbox in Terminal Attribute Editor then disconnecting malformed diagnostic port connection BIFROST-5522
Terminals: Crash when creating terminal inside scatter_points_blue_noise BIFROST-5372
Terminals: Enable selective evaluation in Maya 2022, and in DG Evaluation mode only for other Maya versions BIFROST-5404
Terminals: Final mode switch BIFROST-4466
Terminals: Final plug connected to a compound with error crashes Maya BIFROST-5568
Terminals: Final terminal plug (which is hidden in the viewport) may not render correctly in old scenes in parallel EM mode

For scenes created with Bifrost 2.2.0.x, run the script in the 'Selective evaluation of terminals' section to update your scene to take advantage of this fix. BIFROST-5465
Terminals: Malformed compound after deleting interior Terminal node BIFROST-5431
Terminals: More extra evaluations when creating connections to regular outputs BIFROST-5246
Terminals: Selective evaluation causes extra evaluations when rendering without terminals BIFROST-5275
Terminals: Viewport 2.0 displays stale terminal outputs when cached playback is enabled BIFROST-5346
Terminals: Viewport fails to display the proper content in Parallel mode BIFROST-5473
Viewport: Instancing empty geometry is very slow BIFROST-5059
Volumes: Artifacts with optimized adaptivity BIFROST-5396
Volumes: Field_to_volume produces blocky results BIFROST-5161
Volumes: Implement robust subroutine in convert to volume BIFROST-5065
Volumes: Performance issues with robust convert to volume BIFROST-5311
Arnold-Bifrost: Volume renders take velocity into account even without motion blur, blur is backwards, and blur does not properly scale to motion length ARNOLD-309
Assigning a particle_cloud shader to particles crashes Maya if a live IPR is running ARNOLD-331
Bifrost Volumes: Basic combustion doesn't render properly when aiStandardVolume assigned to bifrostGraph via outliner. ARNOLD-343
Bifrost Volumes: fix volume velocity motion blur ARNOLD-171


Known Issues and Limitations
BIFROST-3144 Aero: Blue flame tile artifact when exporting and viewing combustion rate

Tile or voxel artifacts may sometimes appear in blue flame (combustion rate).
BIFROST-2823 Aero: Boost detail with points kills combustion

Enabling "boost detail with points" with a combustion simulation kills soot emission.
BIFROST-5579 Aero: Escape Termination may cause a viewport glitch when scene scale is greater than 1

The viewport glitch will go away if the simulation is resumed or restarted.
BIFROST-822 Aero: Sourcing from a volume sometimes creates ghost voxels around emitter

Occasionally, some ghost emissions may occur outside of the aero source geometry.
BIFROST-3150 Aero: combustion soot sometimes pulsates

Occasionally a combustion simulation will produce soot which pulsates too much.
BIFROST-3762 Backdrops: Annotations do not support non-ASCII characters

BIFROST-5514 Cached Playback: Graph sometimes cached with incorrect time values when cached playback enabled

BIFROST-5342 Cached playback: Performing an Arnold render invalidates cached playback frames

BIFROST-2109 Compound Publishing: Auto ports with immediates should stay auto ports with immediate values when published

BIFROST-3408 Compound Publishing: Compounds that reference themselves may cause crash or hang

BIFROST-2767 Compound Publishing: Republishing is blocked in cases of signature change and no auto ports

Workaround: Add a new port, re-publish the compound, then delete the new port, and re-publish again. This works because it only blocks in very specific cases of signature changes.
BIFROST-2279 Encapsulation: Creating a compound out of a node that is auto-looped may change graph behavior

BIFROST-3024 Errors: When using write nodes such as the write_OpenVDB node, the node's success port always returns 1 even when writing fails

Workaround: Ensure that your folder and file names are valid when writing.
BIFROST-3626 File IO: Write/dump nodes do not work with non-ASCII characters in file path

BIFROST-3152 Geometry: Merge geometry uses first object to set merging behavior but should instead use the schema of the first non-empty object

As a result, if your first object is empty, merge geometry would not work.

Workaround: Ensure that your first object is not empty and is of the right type.
BIFROST-5339 Graph Shape: Converting from graph shape to DG loses its material assignment if connected to Terminals

BIFROST-5509 Graph Shape: In-graph material assignments don't display in viewport when no material is assigned in Maya

BIFROST-5058 GraphShape: Undo delete or undo convert to DG results in nothing displayed in the viewport

Saving and re-opening the scene restores the drawing.
BIFROST-574 Interaction: Focus issue - when the mouse is over a compound when editing a value in the Parameter Editor, pressing Enter will dive into the compound

BIFROST-2428 Interface: High DPI issues with Bifrost UI

BIFROST-3028 Materials: Input meshes will not have a material assigned if it has per-face shading, first material found is not used

Per-face shading in input meshes is not supported at this time.
BIFROST-3745 Maya 2020: Case-sensitive Mac: crash when creating a graph

Bifrost 2.0.3.0 and higher on Maya 2020 and higher does not support case-sensitive file systems on macOS.

Visit this page for more information
BIFROST-5283 Maya Plug-in: Bad viewport update of Maya geometry with Bifrost input object parented under animated controller in DG evaluation mode

For Maya 2020 and its Update releases, set the environment variable MAYA_DISABLE_MAX_CHANGE_BUFFER=1 to avoid the issue. Note that this workaround may reduce performance.

This issue is fixed in Maya 2022.

BIFROST-2334 Maya Plug-in: Bifrost plug-in should unload and reload cleanly

Unloading and re-loading Bifrost plug-ins within the same session of Maya causes instability and other issues.

BIFROST-3070 Maya Plug-in: BifrostGraph plug-in should load automatically when clicking the Shelf icons

If this error appears when you click the Bifrost Graph Editor or Bifrost Browser buttons on the Shelf:

// Error: line 1: Cannot find procedure "openBifrostGraphEditorFromSelection".

You need to load the bifrostGraph plug-in. Do this by selecting Windows > Settings/Preferences > Plug-in Manager.
BIFROST-3073 Maya Plug-in: Crash loading scene containing bifrostGraph node if bifrostGraph plug-in is missing

Workaround: Ensure that you have installed the bifrostGraph plug-in before opening scenes that contain Bifrost nodes.
BIFROST-4864 Maya Plug-in: If Maya 2019 is launched on macOS from Maya.app/Contents/bin/Maya, Bifrost plug-in doesn't load

Workaround: If launching Maya on macOS using a terminal, use Maya.app/Contents/MacOS/Maya.
BIFROST-2997 Maya Plug-in: On graph inputs, changing port types loses inputs and exposing ports do not maintain values

BIFROST-2330 Maya Plug-in: Scene loading doesn't trigger the vnn plug-in to load in mayapy

Bifrost will still work in mayapy, but the VNN plug-in will not load automatically and therefore the VNN Python commands will not work.

Workaround: To use VNN commands in mayapy, load the plug-in using the loadPlugin command first.
BIFROST-4447 Maya Plugin: UV changes do not always update the graph

BIFROST-3551 Module paths starting with "///" are parsed incorrectly as "//" by Maya and Bifrost

BIFROST-1655 Node library: Conversion nodes do not behave correctly if the input is the same type as the output

BIFROST-3023 Node library: Frame tokens in folder name (e.g. #) are not replaced for write file nodes such as write_OpenVDB

This works correctly with tokens in file names, just not folder names.
BIFROST-4139 Numeric Display: set_point_shape does not property set up for float, float2, or int data

Numeric display does not work when the shape is selected, only draws values of float3 and float, and always draws them in the format of float3.
BIFROST-3154 Particles: Incorrect emission position from volume if no velocity property

Emitting particles from a volume without velocity data produces bad results.
BIFROST-3199 Particles: vary point_orientation rotations result in shearing objects

BIFROST-3372 Particles: vary_source_property doesn't sample color when Use Color Set is enabled

BIFROST-3272 Publishing: "not a valid Amino JSON file" error appears if library config json file is in the search path

BIFROST-3680 Publishing: Bifrost won't parse BIFROST_LIB_CONFIG_FILES if its resolved path contains a # character

BIFROST-2532 Publishing: Cannot type in namespace field if there is an error, loses focus with each keystroke

Workaround: Temporarily change the name of the compound in the publishing editor to remove the error, edit the namespace, then change the name back.
BIFROST-4911 Publishing: Re-publishing with renamed output port results in unfixable graph

When re-publishing, if output ports are renamed and those ports are connected inside the graph in question, it can cause a corrupted connection to that graph. Reloading the scene will allow you to fix it.
BIFROST-2729 Simulation: Slow simulation bounds performance

Simulation bounds still lacks certain performance improvements.
BIFROST-5281 Terminals: Crash connecting terminal to another terminal

BIFROST-5200 Terminals: Errors whenever the graph shape is selected

When selecting a graph shape in Maya 2020.0, you may see an error message such as "Error: <function selCom at 0x7f29c5c04aa0>". This is fixed in Maya 2020.1 or higher.
BIFROST-3278 Viewport 2.0: bifShape displays with texture even in non-textured shaded mode

BIFROST-5052 Viewport Drawing: Aero fails to render with "Alpha Cut" Viewport 2.0 Transparency Algorithm

BIFROST-4668 Viewport: AMD Vega GPUs: Viewport 2.0 in DX11 mode aero renders pink

BIFROST-3511 Viewport: Aero bounding box doesn't allow object selection in viewport

BIFROST-3059 Viewport: Connecting a float3 value for set_geo_property color on already-connected graph doesn't update the viewport

BIFROST-2604 Viewport: Face-vertex, face, strand, component and constant user data don't work in the viewport

BIFROST-2429 Viewport: Float4 colors cause Z-fighting in viewport on meshes and strands

Workaround: Select an alternative Transparency Algorithm (Depth Peeling or Alpha Cut).
BIFROST-5149 Viewport: Instance viewport drawing does not respect disabled instances when there is one geometry with a preview geometry, and has strange update issues

BIFROST-2638 Viewport: Instanced meshes without normals display as black meshes

Instanced meshes without normals render without shading (all black) in the viewport.

Ensure normals are present on your meshes, or regenerate them with update_mesh_normals.
BIFROST-3391 Viewport: Instances explode when you transform them in Maya

BIFROST-5515 Viewport: Levelset/density volumes don't display with multisample anti-aliasing (MSAA) and DirectX

BIFROST-3383 Viewport: Maya Bounding box override on bif shapes only works on volumes and not other geometries

BIFROST-1982 Viewport: Multiple volumes in the viewport don't always render with correct transparency order

BIFROST-2353 Viewport: Volumes fail to render in Viewport 2.0's OpenGL Legacy mode (only a white cube appears)

BIFROST-2573 Viewport: Volumes may not draw correctly when post-effects are enabled in the viewport

In addition, volumes and other bifShapes don't draw correctly if Use Default Material is enabled for Viewport 2.0.
BIFROST-3054 Viewport: set_geo_property_reference does not work for all shader properties

BIFROST-1593 Watchpoints: Not removable after port type change

BIFROST-5033 Watchpoints: data inside for-each is not deterministic

ARNOLD-45 Arnold-Bifrost: ~15 second delay to start first Arnold session (due to Bifrost loading in Arnold)

ARNOLD-87 Bifrost Geometry: Oriented strands don't render in Arnold

Strands with "camera facing" disabled, with twisting normals and rotating about their tangent appear correctly in viewport but render in Arnold as camera facing.

Strands set to "oriented" with "set_Arnold_strands_settings" do not render.
ARNOLD-67 Bifrost Geometry: Strands rendering too picky, must set set_strand_shape to render, and strands with fewer than four segments do not render

ARNOLD-123 Bifrost Volumes: levelset causes errors in Arnold