ScatterFlow V2.0 - Set Dressing Toolset for Maya

Tutorial / 15 April 2025

ScatterFlow is a toolset for quickly and intuitively set-dressing in Autodesk Maya by clicking and dragging to place assets on surfaces in your viewport. It includes brush based placement, attribute managed transform randomisation, a full asset publishing system with automatic version management, and intelligent instancing to quietly create exceptionally optimised scenes.

This post only shows the updates!
See the original post demonstrating core features here.


New Features:

More Asset Types:

Previously, the tool would only support dressing using Arnold's AiStandin nodes.
With this update, we are now able to dress scenes using imported Maya files, and Maya References.


Instancing Control:

You can now choose to disable or enable instancing using a checkbox "Allow Instancing" in the Settings Tab.
This will not affect previously placed assets. Asset placements made thereafter will either use or not use instancing as chosen.

Scatter on Scatter:

Now that we can dress using mesh directly, and we were already placing assets in scene by casting to mesh with the brushes, we can now instantly place mesh on top of mesh within the same drag stroke.


Exposed Offset Transformations

Previously you could only offset the base scale of assets to be placed.
Now, you can also choose a Translate Y, allowing you to place assets so they float or sink into the ground.
Also Rotation is exposed for the X, Y, and Z axis if you want to introduce some lean or spin.

Measure Performance:

When using the "Drag" brush to place assets, you can now see the average time gap between each asset placement compared to your target drop delay.

Quickly Change directories:

Quickly place assets into different paths in your scene with just a quick change to the Setting Tab "Path".
In instance mode, all references to the same asset will remain instances of a single shape regardless of which group they are in.


Tweaks:

UI Beautification. New icons, styling and order of widgets to the Settings Tab.
The "Uniform Scale" spin box now allows a much smaller minimum value to allow users to really micro dress with their assets.

To Instance:

You can use the "To Instance" function in the toolbar "Functions" menu to cause a selection of objects to become instances of the 1st selected object. This tool now supports AiStandin, Mesh, and Referenced nodes. 
Note: For now, referenced nodes can only be the source, not the target which is replaced.

To Geometry:

The "To Geometry" utility in the "Functions" menu of the toolbar now also supports reverting a selection of Referenced meshes into plain geometry.



Bugfixes:

Compatibility:
The tool is now dual compatible with Pyside2 and Pyside6.
Pyside2 was used in Maya for a long time up until Maya 2025 started using Pyside6.
This makes ScatterFlow compatible with Maya 2024, 2025, and 2026

Bugfix: Scale Randomisation now works correctly.
Bugfix: The Active Assets Area contents were being visually cleared when re-loading the library from disk.
And many more minor bugfixes, securities, and optimisations.


Links:

Documentation V1.0 - Link
Store Page - Link


Report

Easy USD Exporter V1.3

Tutorial / 26 January 2025

Select objects in Maya and populate them into an interactive panel for batch USD export to separate files with clear customisable settings.
The UI promotes standardisation of export settings through the use of user defined presets which are sharable as a file.


How to Use it:

Select targets for export:

Select a list of each of the asset's you want to export to separate files. Each item in your selection will be used as the root of a file.
Then run the tool by clicking the button on your shelf.

You can adjust what is acted on in your selection without removing the entries from the list using the "Enable All" and "Disable All" buttons, or the "Enable Selected" and "Disable Selected" actions which area available when you right click in the graph with a selection of one or more items.
The "Remove" action in the right click menu will remove the entry from the list entirely. To add it or anything else back in, you can select what you want and then use the "Add Selection" Button to add every item you currently have selected in your viewport to the list.
To scrap your current list and include only what you have selected, use the "Refresh Selection" button.

 

You can automatically collect the list of all skinned mesh and add them to your graph using the "Scan for Skinned Mesh" action in the "Functions" menu. After doing this, there might be too many separate pieces for the same asset. You can combine them into one entry by selecting the list of them, right clicking, and using the menu action "Merge to Common Ancestor".


Choose export settings:

Choose your "Frame range Source" which is where it will collect an assumed frame range from.

The options include:

  • Playback Bar: Range
  • Playback Bar: Full Range
  • Render Settings
  • Keyframes

The "keyframes" option will recurse through all descendants of the chosen root to be exported and determine the overall first and last frame.
This can allow you to avoid unnecessary caching of frames after and before those necessary in camera.

You can then "override" the value in the frame range for each separate asset.
Do this by double clicking in the Frame Range column and typing the range you want in the form "start_frame:end_frame". Use a ":" between the two.
You can also use negative frames: "-10:20"
or single frames "25". By typing in just the number, it will be converted to "25:25" automatically.

Customise the "Export Flags" and other USD settings to your preference. This includes the "Frame Stride" and "Frame Relative Sample" settings which are able to be set per export in the graph.
You can get a reminder of the intended notation for the frame relative sample by seeing the tooltip when hovering over the graph title.

Settings that are changed from the default for the current preset will be marked in bold and with blue text.


Confirm the export directory:

Under the "Export Path" group you will find the path your files will be exported to. You can change it by selecting a new path in the file manager that will open when you click the file icon to the right.
You can choose to include the current maya scene name in the cache file name with the "Include Scene Name" checkbox. This can help prevent mix ups when the same asset is exported from different shots or scenes within the same Maya Project.
Use the "Version Up" checkbox to increment the version attached to a cache. Leaving it unchecked will cause an overwrite of the existing version.


Custom File names:
You can take full control over the output file name of an export by double clicking in the "File Name"  column.
Hover over a file name entry to see a tooltip exposing what the full export path is expected to be.


Save a Preset:

Once you have customised some settings, you may want to save a preset using the options in the hamburger menu to the right of the "Preset" selection box.

  • Overwrite: Will overwrite the currently selected preset with your current settings.
  • Save As: Will open a pop-up allowing you to give your new preset a name.
  • Re-name: Will open a pop-up allowing you to give your current preset a new name.
  • Delete: Will remove the preset from the selection box and delete the file storing its data on disk.

The presets are stored on a per project basis inside your project file in "your_maya_Project\data\alembic_exporter_settings".You can share or re-use them by simply copying these json files into the same directory in any other Maya project directory.

Export:

Once you are ready, you can finish the operation by clicking the self explanatory "Export" or "Export and Close" buttons.
This will show you a pop-up to display the progress through your list of export tasks.
Once your first export is finished, you may want to view the files on disk. You can get to them quickly using the "Open Output Dir" button on the bottom right


Extras:

You can dock the USD Export UI in Maya.

Notice the icon to the left of each entry. This will denote the recognised object type and includes support for group, mesh, joint. nurbsCurve, nurbsSurface, locator, camera, and light.

If you double click on an item in the "Maya Item" shelf, you can type in an alternative target to be cached out. If you try change it to a path that does not exist, the suggestion will be ignored.

You can remove all user overrides (denoted by blue text) made in the graph at once using the "Clear All User Overrides" action in the "Functions" menu.


Installation:

Open Maya and view the shelf that you want to add the tool to.

Drag and drop the "usd_export.py" file into your Maya session.

The tool will appear on your current shelf.



Other Links:

See it in action: Youtube - Easy USD Exporter for Maya

Report

ScatterFlow V1.0 - Set Dressing Toolset for Maya

Tutorial / 13 October 2024


ScatterFlow is a toolset for quickly and intuitively set-dressing in Autodesk Maya by clicking and dragging to place assets on surfaces in your viewport.
It includes randomisation of placed assets, a full asset publishing system with automatic version management, and intelligent instancing to quietly create exceptionally optimised scenes.



Publishing Assets:

With one asset per Maya file, setup your asset for publishing with a single assembly level node.

Thumbnails:
Here you can choose to render a thumbnail of your asset.
It can be either a single frame, or a 2 second turnaround. 
You can render it as seen in the Maya "viewport 2.0", or use the "Rendered" checkbox to render it with Arnold.
There is no need to add your own lights and camera. These and other necessary components are created, positioned, and removed during the thumbnail capturing process.

The publisher UI will autofill itself with information on the Asset it thinks you want to publish from the current scene.
If the asset found is already in your library it will indicated that by showing you an interactable thumbnail you can rotate around to see the state of the asset at its last export as well as some file information including size on disk and date modified.
If it guesses the asset wrong, that is likely due to there being multiple assembly level assets in your scene. Just select the top level node representing the asset you want to publish, then go to the "Publish" UI, and click "Refresh Asset"

Publishing:
The "Publish" button will export it as an asset into your library which is stored in "{Current Project}\assets\Library_A"
The publish exports a Maya file, an Arnold Ass file, and creates a backup of those files in "{Current Project}\assets\Library_A\.backups\{asset_code}"


Your Library:

After publishing a few assets, you will now have a library.
You can use this to access your assets with options such as:
Open Maya File - Open the Maya file in the current session.
Open In Explorer - Open the file explorer pathed to the right-clicked asset in your library.
Add to Scene - Add the right clicked asset to your scene as an AiStandin, Geometry, or referenced Geometry.
Utilities|Update Thumbnail - Re-capture the thumbnail of the right clicked asset based on the current state of its Maya file.
Substitute - Replace all transforms selected in the Maya viewport with instances of this asset.

Use the Folder icon on the top left to open a file explorer to the library's base directory.
Use the button with the circular arrow icon on the top left to reload the contents of your current library from disk.
Use the box icons on the top right to show the asset preview icons at different sizes.

Hover over an asset to get an animated turnaround look at it.

Dressing the scene:

Start by launching the master layout UI by clicking the brush icon on your ScatterFlow Shelf.
This will bring up a UI with settings tabbed on the right, and a toolbar above your viewport.
Then you will need some mesh such as a plane in your scene to project onto. By default the tool will project onto all mesh.

At the bottom of the layout UI on the right there is the "Active Asset Area", showing the subset of assets you are currently dressing with.
To add to it you click on the Library Button above it on the left to open your library, select the assets you want, and then click the "Add to Active" button on the bottom of the library UI.

Now with a selection of assets active, you can enable a brush from the "Brush Types" area at the top of the right side UI, or from the Toolbar.


Drop:

Allows precise placement of assets, with exact scaling and rotation set by dragging your mouse after clicking to place it.


Drag:

Click and drag to place assets from your active asset list at small time intervals.


Randomisation:

Asset Randomisation:
The new asset placed after each click is taken from the active asset area at the bottom of the Settings Gui on the right.
How it is chosen is determined by the "Change Mode" which can be set to:
Repeat - Keep placing the same asset every time.
Cycle (Default) - Place the next asset in the list each time.
Random - Pick a random asset from the list to place each time.

Attribute Randomisation:
To quickly create variation as you place assets, you can set randomisation on Scale and Rotation which will be changed between the placement of each asset.

Under the "Randomization" heading in the Settings UI on the right, tick the "Scale" checkbox to enable it.
This will expose a range with min and max values. A number will be chosen from between these values and multiplied with the base scale of the asset to be placed.

Under the "Randomization" heading in the Settings UI on the right, tick the "Rotation" checkbox to enable it.
This will expose ranges for minimum and maximum values for each rotation axis, X, Y, and Z. A random value in degrees will be taken from between the min and max range for each axis.

When in "Drop" mode, you can still hit the "Shift" hotkey to change to the next asset, this will also re-randomise the random attributes.
You can also still click and drag to get exact control of the placement of a particular instance.



Control Projection Surfaces:

By default, all meshes in the scene will be considered as surfaces that assets can be placed onto.
You can limit this by going to the secondary tab of the window on screen right called "Projection Surface"

Select a few meshes in your viewport and then click the "Add Selected" button to add them to the list of collision surfaces.
From there you can remove them by selecting them in viewport again clicking the "Remove Selected" button, or by right clicking them in the list and choosing "Remove Selection" from the menu.
You can quickly swap back to using all projection surfaces at any time with the "Use All Surfaces" checkbox.

Toolbar Features:

At the far left side of the toolbar you can see the name of the asset currently following your cursor.
You can enable or disable your "Drag" or "Drop" asset placement mode interchangeably here with the settings UI on the right.
This toolbar will also host some settings based on your brush mode for quick access.

View:

You can control how all aiStandin's are represented in your scene at once by choosing the preferred method here.

Functions:

These are some extra utilities.
"To Geometry" will replace all of the instances you have selected with their geometry counterpart from their source Maya file.

"To Instance" will replace the selected items, while keeping their current translation, rotation, and scale, with instances of the first item selected.



Installation:

This is very simple. Just drag the file called "install.py" and drop it onto your viewport in Maya.
This will copy the module to the scripts folder of your current Maya version
- Windows: "C:/Users/{UserName}/Documents/maya/{Maya Version Year}/scripts/"
Then it will create a shelf called "ScatterFlow", and add buttons to control the scripts there.


Importing an existing Library:

If you have a folder containing a list of Maya files of clean assets on origin, you can have them batch publish into the format and location expected by this tool.

1. Install the tool  by dragging and dropping the setup.py into your Maya session.
2. Set your project. (The assets will be published into this project's "assets" folder)
3. Open the script editor and paste the code between the """ into it:

"""
# Convert the contents of a flat directory of maya files into assets in the format expected by this tool.
import scatter_flow.utilities
folder_path = r"C:/hyperspeed_storage/CG_Projects/Maya_project/scenes/asset_lib"  # Replace with your own path
scatter_flow.utilities.batch_initialise_library(folder_path, turnaround=True)
"""

4. Replace "C:/hyperspeed_storage/CG_Projects/Maya_project/scenes/asset_lib" with the path to your folder containing the Maya files of assets.
5. Run the code with the hotkey "Ctrl+Enter"

It will now open each file, publish it, and playblast a turnaround for it.


Get the tool here:

https://www.artstation.com/a/41636820


Report

Automatic Blend Shapes to Set-Driven-Keys Attributes for Autodesk Maya V3.3

Tutorial / 22 June 2024


Introduction:

Use Case Example:

Given a character with a blend shape based facial rig, rather than set your driven keys one by one, you can simply select the head and run the script which will set-driven-keys to attributes, named after their source target, on a locator in just a few seconds.

What does it do?

The script will create or populate a controller with attributes named based on the chosen blendShapes and then use Set-Driven-Keys to connect the activation of those blendShapes to the value of the attribute on your control.

  • The tool supports the use of both In-Between targets and Combination Targets.


See it in action with this video demo:


Features:

Filtering:

Dynamically add an array of simultaneously additive filters.

  • Use the Eye icon to ignore the effect of any particular filter.
  • Use the "Not" checkbox to invert the result of the filter.
  • Choose where to check for the user-input string among the options, [Contains, Starts With, or Ends With]
  • Click the Bin icon at the end of the row to remove that filter.


Hard Include/Exclude:

To assist in more specific filtering, you can force individual items to be included or excluded from being added to the control regardless of their relationship to the filtering done above. Do this by accessing the option menu for an item by right clicking it.




Variable Output Target:

You can output the attributes that will be used to control the blendShapes to different targets.

If you select Locator, Circle, or Sphere, an object of that type will be created and named for you before having the attributes SDK'ed to it.
If you selected more than just your mesh with the blendShapes initially, you will find that the items in that selection become available as output targets.


How to Use:

Select the mesh you want to map blend shapes for, and optionally also the control where you want to put the control attributes.

Run the script.

Filter which blend shapes should go through if you wish.

Choose what you want to export the attributes to.

Click "Execute" and watch it run.


Installation Instructions:

Open the .py file in any text or script  editor.

Paste the entire contents of the .py file into  the Maya Script Editor.

Save the script as a button to your shelf.


Report

Camera Heatmap v1.0 for Maya - Tutorial

Tutorial / 28 May 2024

Camera Heatmap


Introduction:

Camera Heatmap is a tool for visualising the data visible in the frustum of a camera or combination of a list of cameras. 

The interface allows you to select a list of cameras and a list of geometry. 

It will then process the combination to output a heatmap, represented in a colorset applied to the geometry.


Application:

The output heatmap colours can clearly combine the points of interest in a list of cameras across varied frame ranges.

This can assist in determining which areas of an environment will need the most detail in texture, or set dressing based on them being closest to any particular camera.

It can visualise where detail can be minimised or removed due to walls, hills, or buildings blocking off large areas of terrain from the cameras field of view.

The poly size in camera scan can assist in determining areas that may need increased subdivision.



Features:

Frame Range Source:

Allows you to choose from a variety of presets to auto populate for each camera.

  • Current Frame: Will match the frame you are currently on in the timeline.
  • Playback Bar: Range / Full Range: Will use the limited or full range of the playback bar as the source.
  • Render Settings: Will fetch the frame range set in your render settings.
  • Keyframes: Will Fetch the first and last keyframe relevant to each camera.

Override Frame Range:

Double click a frame range item to type in your own custom frame range override which will then ignore changes to the "Frame Range Selection"


Preview Cameras:

When you click on a camera in the UI, you will automatically look through that camera at its first frame in the viewport.


Identify Mesh:

When you click on a mesh in the UI, that mesh will be selected in your viewport and its full name displayed temporarily.


Right-Click menu:

For batch enabling and disabling mesh and cameras for processing.

Also to clear Frame Range overrides.


Ignore Occlusion:

If you do not need assets closer to camera to block calculation of faces behind them, then you can Ignore Occlusion to vastly reduce the computation time.


Detailed Occlusion:

Perform an occlusion check on more points per face providing increased accuracy for partially occluded faces at the cost of increased processing time.


Far Clip:

A distance, beyond which to ignore faces for calculation.


Create Heatmap:

The button that runs the process.


Cleanup:

Removes all of the data created to represent the heatmap.


How to use it:

  1. Run the script through the button on your shelf.
  2. Choose which cameras you want to export.
  3. Choose the frame range you want to use.
  4. Choose which mesh you want to scan and apply the heatmap to.
  5. Click "Create Heatmap"


Installation:

  1. Open Maya and view the shelf that you want to add the tool to.
  2. Drag and drop the "camera_heatmap.py" file into your Maya session.
  3. The tool will appear on your current shelf.


Report