Export Particles operator

The Export Particles operator can be used to convert particles into scene objects or save them into various file formats.

If an Export Particles operator is placed into an event on its own, or an event only containing other Export Particles operators, its event will operate in “Global Export” mode. This means that the Export Particle operators in that event will operator on all particles within the flow (note: “Global Export” events are shaded blue).

If an Export Particles operator is placed into an event with other regular operators, it operates in “event” export mode. This means it will only export particles in its own event. If an Export Particles operator in “event” mode is instanced across multiple events, it will export particles from all of the events that it’s instanced inside.

These modes make it easy to control exactly which particles will be exported by an Export Particles operator.

The Export Particles operator will only export particles when its “Export” button is pressed by the user. This operator is not evaluated by the simulation itself.

tyFlow retimer settings are ignored by the Export Particles operator in PRT or tyCache mode. To retime your PRT or tyCache sequence, use the retiming spinner in the PRTLoader or tyCache object you load your files into. To quickly copy retiming settings between your tyFlow object and your cache importer object, right click on the tyFlow retiming spinner and choose “Copy Animation”, then right click on your cache importer retiming spinner and choose “Paste Animation”.

By default, the Export Particles operator will respect your tyFlow cache settings. If caching is enabled, particles that are processed by the Export Particles operator will be added to the tyFlow cache. If you attempt to export more particles than can fit in your RAM while caching is enabled, 3ds Max may run out of memory and the export may fail. If you are exporting huge numbers of particles it is recommended to disable the tyFlow cache before doing so.

Note: This does not apply to export jobs submitted through Deadline, as caching will automatically be ignored by machines that process Deadline tasks.


Export Type Rollout

  • Objects: this mode allows you to convert particles into scene objects.

  • PRT: this mode allows you to convert particles into PRT format files (.prt).

  • tyCache: this mode allows you to convert particles into tyFlow’s tyCache format files.

  • Alembic Point Cloud: this mode allows you to convert particles point clouds into Alembic format files (.abc).

  • VRay Proxy: this mode allows you to convert particles into VRay Proxy format files (.vrmesh).


Frame Range Rollout

  • Start/End: these spinners control the start/end range of frames over which particles will be exported.

General Settings Rollout

Coordinates

  • Local/World: the coordinate system that the particles/meshes will be relative to, prior to export.

When “local” coordinates are chosen, all particle properties will be exported relative to the inverse transform of the tyFlow itself. Therefore the tyFlow icon’s transform will be the coordinate origin, rather than [0,0,0] in the scene.

Particles

  • Export particles: controls whether particles will be exported. Disabling this setting allows you to limit the export to additional geometry only.

  • Birth multiplier: the birth multiplier applied to birth operators at the time of export. Setting this value to something other than 1.0 will increase/decrease the number of particles generated during export.

Simulation Groups
  • Simulation groups: controls which particle simulation groups will be processed by the exporter. Use these groups to limit which particles will be exported.
Export Groups
  • Export groups: controls which particle export groups will be processed by the exporter. Use these groups to limit which particles will be exported.

Actors

  • Export bones particles: controls whether particles imported from a tyActor skin will be exported.

Object switchers

  • Set index: globally override the switch index of all tySwitcher objects in the scene during export.

  • Index value: controls which switch index to use.

Use tySwitcher objects in your flows to quickly swap between different object setups.

Retimer

  • Ignore retimer: turning this on will export raw frame timings (ignoring any retimer settings enabled within the tyFlow).

MAXScript Rollout (Export Objects)

  • Apply MAXScript on particle entry: when enabled, at the time a particle is first exported, custom MAXScript code will be executed on its corresponding scene node.

This option allows you to control various parameters of exported objects that would be otherwise too difficult to control from within the tyFlow UI. For example, if you are scattering PhoenixFD containers at particle locations, you could use this setting to set their cache frame offset to the time that their particle is born.

Object Settings Rollout

This rollout is exposed when the Export Particles operator is set to “Objects” mode.

Export object name (prefix)

  • Name: defines the prefix used to name the objects created by the exporter.

Export layer

  • Name: defines the name of the layer that exported objects will be assigned to.

Export object type

  • Point helpers: exports particles as point helper objects.

  • Meshes: exports particles as editable meshes.

  • Reference Objects: exports particles as duplicates of a reference object taken from the listbox (chosen at random).

  • Copy/Instance: controls whether reference object duplicates will be copies or instances.

Export Settings

  • Animate transforms: controls whether the transforms of the exported objects will be animated to match the motion of their corresponding particles.

  • Always create new objects each export: each time objects are exported, new scene nodes will be created for all of them.

  • Use previously exported objects if found: if objects were previously exported in the scene, they will be updated during export. Otherwise if such previously-created objects are not found, new ones will be created.

  • Export ID: the export ID is an arbitrary numerical value assigned to exported objects, to help the operator track them.

In order for the operator to track exported objects (for later update), it assigns newly exported objects a tracking code. This code can be viewed in the exported object’s user properties. An example code might look something like this: “tfExport_10791161940 = 26” and takes the form of “tfExport[operator_uniqueid][export_id] = [particle_id]”

Lights

These controls apply to reference objects which are lights (supports standard lights and VRay lights)

  • Intensity from cust float: controls whether the intensity value of the lights will be controlled be particle custom float data.

  • Channel: the custom float data channel.

  • Multiplier: an extra multiplier applied to custom float data values.

Pre-born/deleted/ignored

  • Scale to zero: exported objects that do not have a corresponding particle at a particular frame will have their transform’s scale keyframed to zero at that frame.

  • Turn off: exported lights that do not have a corresponding particle at a particular frame will have their intensity animated to zero at that frame.

Limits

  • Max objects: controls the maximum number of objects that will be exported.

  • Sort: volume: when the total number of particles exceeds the maximum number of exported objects, the particles will be sorted such that the biggest particles will take priority.

  • Sort: life: when the total number of particles exceeds the maximum number of exported objects, the particles will be sorted such that the oldest particles will take priority.

Auto-Export On Render Rollout (Export Objects)

  • Enable auto-export on render: when enabled, objects will be exported when a render begins, and subsequently removed when the render ends.

  • Export even if hidden: when enabled, the export will proceed at rendertime even if the tyFlow scene object containing the export operator is hidden.

  • Ignore ‘max objects’ limit: controls whether the “max objects” setting will be respected, while auto-exporting on render.

Renderers can typically handle many more objects than the viewport. Since the auto-exported objects will be auto-deleted when rendering ends, you don’t have to worry about the viewport slowing to a crawl if you’re exporting huge numbers of particles at rendertime.


PRT Settings Rollout

This rollout is exposed when the Export Particles operator is set to “PRT” mode.

Output

  • Filename: the output filename for the resulting PRT file sequence.

  • Skip existing files: partitions will be skipped if all of their files already exist (and no flow update for that partition will occur). Individual files of an incomplete partition will be skipped if they already exist (but the flow will still need to update for the rest of the partition due to its history-dependent nature).

Channels

  • [Channel name - data type]: lists the available channels to save in the PRT files, and their corresponding data type.

Data types and their corresponding size in bytes:
byte = 1 byte
int16 = 2 bytes
int32 = 4 bytes
float16 = 2 bytes
float32 = 4 bytes

The number in square brackets next to some data types represents the number of values that must be stored for that particular channel. For example, a position channel requires X/Y/Z values, each of which is stored as a float32 data type. So the size in bytes for a particular particle position value is 12 bytes (float32 x 3 values).

Export

  • Total partitions: sets the total number of partitions to be demarcated in the PRT filename.

  • Export All/Range: controls whether to export all partitions, or a range of partitions.

A PRT file’s filename is important, when loading it into a Thinkbox PRTLoader object. Partitions are identified using “partXXofXX” syntax. By keeping the “total partitions” value high, but only exporting a small range of partitions, you can easily add to that range later without creating incompatible filenames. For example, setting “total partitions” to 100 and setting the export range to “1 to 2” will create files marked as “part01of100” and “part02of100” which will be recognized as two partitions of the same sequence by a PRTLoader. Later you could set the export range to “3 to 3” which would create files marked as “part03of100”, etc.

However, if (in that example) you set the total number of partitions to 2, your initial files would be marked as “part01of02” and “part02of02”. Later setting the range to “3 to 3” would create files marked “part03of03” which would not be considered part of the same sequence as the prior two partitions, by a PRTLoader.

Therefore, it’s best to keep the value of “total partitions” high, even if you don’t plan on exporting the entire partition range, in order to allow for future increases of the desired partition range within the same sequence.

By default, all seed values in a flow will be re-seeded during a PRT partition export (for all partitions except for the first partition), in order to randomize particle properties between partitions. If you wish to exclude an operator from the reseeding, simply add the keyword “noseed” to its name. For example, rename “Position Object” to “Position Object noseed”.


tyCache Settings Rollout

This rollout is exposed when the Export Particles operator is set to “tyCache” mode.

Output

  • Filename: the output filename for the resulting tyCache file sequence.

Channels

  • [Channel name - data type]: lists the available channels to save in the tyCache files, and their corresponding data type.

Data types and their corresponding size in bytes:
byte = 1 byte
int16 = 2 bytes
int32 = 4 bytes
float16 = 2 bytes
float32 = 4 bytes

The number in square brackets next to some data types represents the number of values that must be stored for that particular channel. For example, a position channel requires X/Y/Z values, each of which is stored as a float32 data type. So the size in bytes for a particular particle position value is 12 bytes (float32 x 3 values).

Mapping values are stored as a float32[3] x the number of mapping channels assigned to the particle.

Mesh file

  • Backup at regular intervals: controls whether or not the mesh file of the cache (xxx_tyMesh.tyc) will be updated at regular intervals throughout the export process.

By default, tyCache mesh files are generated at the end of a tyCache export. If a tyCache export fails (for example: crashes due to lack of available RAM) before the accompanying mesh file is created, you will not be able to load the partial cache. Enabling this option will regularly update the mesh file, so that even if the export fails you may still be able to load the partial cache.

For simulations with a lot of unique meshes, the mesh file can get quite large. In those cases, the regular mesh file backups may take a considerable portion of the overall export time. In those cases, it is recommended to disable mesh file backups if you are confident that your export will complete successfully, as then the mesh file export will only need to happen once.

Post-export action

  • Create tyCache object: controls whether a tyCache object will be created in the scene if the tyCache exporter completes successfully. Its input file sequence will be set to the output sequence of the current exporter, and it will get its material and layer name from the current flow.

  • Only if not already created: a new tyCache object will only be created, if an existing one using the exporter’s output sequence as its input does not already exist. If one already exists, it will simply be updated.

Export layer

  • Name: defines the name of the layer that created tyCache objects will be assigned to.

Geometry Settings Rollout

This rollout is exposed when the Export Particles operator is set to “tyCache” mode.

Geometry

  • Include cloth geo: cloth geometry generated with Cloth Bind operators will be added to the tyCache on a per-frame basis.

  • Include actor skinned meshes: skinned meshes imported with Actor operators will be added to the tyCache on a per-frame basis.

  • By ID: when enabled, only actors with a matching ID will be exported.

  • Include spline paths geo: geometry created with Spline Paths operators (with appropriate tySplineMesher modifiers assigned) will be added to the tyCache on a per-frame basis.

  • Include additional geo: allows you to include additional geometry which will be added to the tyCache on a per-frame basis.

Additional geometry

  • Object list: list of additional objects whose geometry will be included in the tyCache.

An Export Particles operator in “event” export mode that is set to include cloth/actor/spline/additional geometry will include all additional geometry (corresponding to those checkboxes) created by the flow - not merely the additional geometry created by its event. This limitation may be subject to change in the future.


Alembic Point Cloud Settings Rollout

Output

This rollout is exposed when the Export Particles operator is set to “Alembic Point Cloud” mode.

  • Filename: the output filename for the resulting Alembic file.

Coordinates

  • Y-Up: exports particles with Y-Up (left-handed) coordinates.

  • Z-Up: exports particles with Z-Up (right-handed) coordinates.

Y-Up coordinates are used in packages like Maya, Houdini, Unity, etc. Z-Up coordinates are 3ds Max’s default coordinates.

Channels

  • [Channel name - data type]: lists the available channels to save in the Alembic file

Alembic Mesh Settings Rollout

The Alembic format has evolved over time and not all Alembic importers can properly interpret data exported using the latest Alembic SDK and its various documented methods. Since tyFlow uses the latest Alembic SDK, this means that Alembic data exported from tyFlow may not be compatible with all importers.

3ds max: 3ds Max’s Alembic importer uses legacy code that was originally part of the Exocortex plugin suite. In some versions of 3ds Max it is outdated, and does not support important attributes like proper material ID assignments on changing topology. To export Alembic data compatible with 3ds Max’s legacy importer, you should export using 3ds Max’s own exporter, not the Export Particles operator. Make sure your particles are properly converted to meshes using a Mesh operator before exporting. You should also place a default “Edit Mesh” modifier on your tyFlow object so the exporter recognizes it as regular geometry. To import tyFlow’s exported Alembic data into 3ds Max, you should use an updated importer, like the one included in VRay Proxy objects, which fully supports changing topology. If you use an updated importer, you can export tyFlow particles straight from an Export Particles operator. If you use a legacy importer, you need to use the legacy exporter to ensure compatibility.

Maya: Maya’s Alembic importer not only relies on legacy Exocortex code too, but it has a buggy implementation which will fail to load tyFlow Alembic data or may even crash while attempting to load it. Either export using Max’s legacy Alembic exporter (which is compatible with Maya’s legacy importer, as long as you follow the legacy export steps listed above), or import into Maya using a VRay Proxy object as the importer.

Unreal Engine: Unreal can import tyFlow’s exported Alembic data so long as it does not include empty frames which contain no geometry (otherwise it may fail to load the data or freeze during playback). For compatibility with Unreal Engine, enable the “Unreal Engine compatibility” checkbox in the Export Particles operator. When that is enabled tyFlow will automatically add an infinitesimally small triangle to the cache at all frames, which will prevent Unreal from crashing during playback when no other geometry exists in the cache. When importing into Unreal, choose “geometry cache” mode, set sampling type to “per time step” and set the time step to [1/framerate]. So, for example, for a 30fps sequence, set the time step to 0.0333333.

Output

This rollout is exposed when the Export Particles operator is set to “Alembic Mesh” mode.

  • Filename: the output filename for the resulting Alembic file.

Coordinates

  • Y-Up: exports particles with Y-Up (left-handed) coordinates.

  • Z-Up: exports particles with Z-Up (right-handed) coordinates.

Y-Up coordinates are used in packages like Maya, Houdini, Unity, etc. Z-Up coordinates are 3ds Max’s default coordinates.

Misc

  • Unreal Engine compatibility: since an Alembic cache with no geometry can cause issues in Unreal Engine, this setting will automatically add an infinitesimally small triangle to each frame of the exported Alembic cache, so that Unreal Engine will not find any frames with no geometry in the cache.

VRay Proxy Settings Rollout

This rollout is exposed when the Export Particles operator is set to “VRay Proxy” mode

Output

  • Filename: the output filename for the resulting VRay Proxy file.