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