Debugging Rollout

This rollout contains controls which allow users to profile and debug various aspects of a flow.


MAXScript Listener

  • Print simulation summary: controls whether a summary of simulation details will be printed to the MAXScript listener each time a sequence of frames is simulated.

  • Print cache summary: controls whether a summary of cache details will be printed to the MAXScript listener each time a cache frame is loaded.

  • Print simulation details: controls whether a verbose list of simulation timing details will be printed to the MAXScript listener each time a sequence of frames is simulated.

  • Print GPU mesh details: controls whether a verbose list of timing details will be printed to the MAXScript listener regarding the time required to upload tyFlow meshes to the GPU for display.

  • Print GPU particle details: controls whether a verbose list of timing details will be printed to the MAXScript listener regarding the time required to upload tyFlow particle transforms to the GPU for display.

Simulation details can provide useful insights into the time required to complete each step of the simulation process. If a simulation is running slowly, you can view the simulation details to see which operator or function is taking the most time to process.

Computing simulation details has a minor performance cost, and printing simulation details to the listener is a slow process, so these settings should remain disabled unless you are actively trying to debug or profile a simulation.

It is now recommened to use the tyProfiler (found in the Utilities right-click menu of a tyFlow editor), instead of the a”print ___ details” options of the Debugging rollout listed above. Its GUI is easier and more intuitive to understand than the MAXScript listener printouts for simulation timing info.

  • Print CCCS details: controls whether a verbose list of CUDA Cloth Collision Solver details will be printed out for each time step where the CCCS is active.

Viewing CCCS details can help debug certain collision solver issues. For example, it will show how much VRAM is used each frame, how many successive collisions and impact zones are generated for a particular frame, etc.

  • Print simulation reset info: controls whether information about changes to input objects is printed to the MAXScript listener.

Every time a flow’s input objects change, the flow’s simulation is reset to account for the changes. Sometimes a buggy input object may send rogue notifications to the flow, announcing it has changed, even though hit has not. This can cause a flow to continually reset its simulation in an undesirable manner. Enabling this setting can help users figure out which objects are sending change notifications to the flow.

  • Print editor keycode: keycodes of keys pressed in the editor will be printed in the MAXScript listener.

  • Print bind partition errors: if a bind partition contains adjacent constraints, an error will be printed to the MAXScript listener.

Partition error printing is a developer setting that should generally be kept off - it involves extra calculations that will slow down the simulation, and doesn’t provide any useful information to regular users.

  • Print while playing: controls whether simulation summaries or details will be printed to the MAXScript listener during timeline playback. Keeping this setting disabled will maximize viewport playback speed, by suppressing messages while playback is occurring.

  • Log to file: simulation profiler data will be saved to a log file on the hard disk.

OpenCL

  • Print OpenCL Info: pressing this button will print a list of available OpenCL devices and their properties to the MAXScript listener.

  • Re-initialize OpenCL: rebuilds OpenCL programs and kernels. In case of an OpenCL error during simulation, OpenCL must be re-initialized before it can be utilized again.

  • Allow unsafe allocations: allows OpenCL to try to allocate more VRAM than the default allocation limit (which is 14 of total VRAM), where necessary.

Input Mesh Data

These settings allow users to see visual properties of a flow’s input meshes in the viewport. The resulting markers represent the exact data held in RAM by the flow in its custom tyMesh object format, not necessarily the raw data contained within the input objects’ Mesh objects. Usually, there should not be a discrepancy between the two, but these options will allow you to see if there is.

  • Display wireframes: manually draws the wireframes of all input meshes in the viewport.

  • Display face normals: manually draws the face normals of all input meshes in the viewport.

  • Face normal size: controls the overall length of the drawn normals.

  • Display velocities: manually draws vertex velocity vectors of all input meshes in the viewport.

  • Display vertex indices: manually draws vertex index numbers for all faces of all input meshes in the viewport.

  • Display vertex positions: manually draws vertex position values of all input meshes in the viewport.

  • Display face indices: manually draws face index numbers for all faces of all input meshes in the viewport.

Bounding box

  • Inflate: manually inflates the bounding box of the tyFlow object by the specified value.

By default, the bounding box of a flow encapsulates all of its particle positions. In order to maximize performance, the bounding box does not encapsulate the shape mesh of each particle, merely the particle’s volumeless 3D position in space. Due to this optimization, if all of the particles of a flow are positioned outside of a viewport’s frustum, the entire flow may be culled from display even if the shape meshes of particles are large enough to overlap the interior of the frustum. By manually inflating the bounding box of a flow to account for the size of its particle meshes, you can ensure that the flow will not be culled from viewport display even if no particle positions are in view.

Miscellaneous

  • Ignore .abc notifications: Ignores rogue change notifications sent by imported Alembic files.

Max’s default Alembic importer sends rogue change notifications to its dependent objects when the time slider is moved. Enabling this setting will ignore those notifications, and prevent tyFlow simulations which are dependent on Alembic objects from resetting each time the time slider is moved.

  • Expand editor rollout: some Windows display configurations can result in the tyFlow editor rollout being cropped improperly. Enabling this setting and increasing the percentage spinner will increase the width of the editor rollout.

  • %: the percentage (relative to default width) to increase the editor rollout.

This is a sticky setting that will persist across max scene files.