Frost MY - A Quick Introduction

[size=200]Welcome to the Frost MY Beta![/size]

[size=150]Overview
[/size]Frost is a particles / point cloud mesher. It implements several marching cubes algorithms, as well as a replacement mode to substitute each particle with a custom mesh shape.

[size=150]Installation[/size]
Frost will be installed for all supported versions of Autodesk Maya available on the specific machine.
After installation, launch Maya, go to the Plugin Manager and enable Auto-Load, then restart Maya. Note that in the current build, enabling the Load option might not be able to load the plugin, so a restart is required to auto-load it. Once loaded, a Frost shelf will be added to the Maya UI, providing several Frost creation icons, as well as a PRT converter icon.

[size=150]Data Sources[/size]
Frost accepts data from two major groups of sources - files on disk, and scene nodes.

Supported file formats include:

  • Thinkbox PRT files (used by Krakatoa)
  • Thinkbox SPRT files (used by Sequoia)
  • RealFlow Particle BIN files
  • RealFlow RPC files
  • Comma-Separated Values (CSV) text files
  • E57 LiDAR files
  • LAS and LAZ LiDAR files
  • Leica PTG, PTS, PTX LiDAR files
  • PLY files (using only the vertex position channel)
  • Any text files containing lists of values

Supported scene nodes include

  • Maya particles
  • Maya nParticles
  • Maya PolyMesh Vertices (including other Frost nodes)
  • Krakatoa PRT Loader objects
  • Krakatoa PRT Volume objects
  • Krakatoa PRT Surface objects
  • Krakatoa PRT Fractal objects

[size=150]Meshing Modes[/size]

  • Union Of Spheres - in this mode, each particle has a spherical influence, and Frost will create an iso-surface without any blending. No additional controls are available.
  • Metaballs - this is the classical marching cubes implementation. Additional controls over the scaling of the influence radius and the iso-surface threshold will be available.
  • Zhu/Bridson - this mode adds a blend radius value which helps smooth out the surface between particles. It is based on a paper about simulating sand as a fluid, but is very useful for general fluid meshing.
  • Anisotropic - flattens the surface based on the distribution and influence of neighbor particles.
  • Geometry - each particles will be replaced with a mesh, either a pre-defined primitive or a custom shape from a list. Additional orientation controls are available.

[size=150]Major Meshing Parameters[/size]

  • Radius - The Radius value is usually applied to all particles and defines the influence of the particle on the mesh, or the size of the shapes in Geometry mode. The value can be randomized based on the ID of the particle, or on the Index if no ID is available. The value can also be controlled by a Radius per-particle channel.
  • Quality>Resolution - the Resolution values are separated for the Render mesh and the Viewport mesh, and can be specified either as Relative to the maximum radius value found in the data stream, or as an absolute spacing in world units. In Relative mode, changing the radius will automatically adjust the spacing as a fraction of the maximum radius, thus adapting to the data, but possibly missing fine detail when the difference between the smallest and the largest radius is significant. In Absolute mode, the spacing remains constant and would capture finer detail, but result in denser meshes when the maximum radius is very large.
    Frost defaults to Relative meshing quality with the Viewport set to 1.5x the maximum radius, and the renderer set to 3.0. For example, if the Radius is set to 3.0 units, the resulting render time spacing will be 1.0 unit. While the Viewport quality is set to half of the render quality for speed, you can set the Viewport ot the same value as the Render value to preview the full mesh in the viewport.
  • Vertex Refinement - separate controls for Render and Viewport, this option adjusts the vertices of the mesh in multiple iterations to closer match the underlying iso-surface. The Render iterations are set to 10, while the Viewport does not perform any for performance considerations. However, this process is relatively fast, so you can usually increase both without losing much speed.
  • Mesh Relaxation - when enabled, this performs a regular mesh relaxation on the resulting Frost mesh (when not in Geometry mode). Known issues: Currently the Iterations value is limited to 20. Also, while the Relaxation rollout will not be displayed in Geometry mode, if it was enabled in one of the marching cubes modes, it will still be applied to the Geometry mode unless turned off manually. These issues will be fixed in an upcoming Beta build.

[size=150]Geometry Meshing Mode[/size]

  • In Geometry meshing mode, each particle will be replaced with a mesh shape. Several pre-defined primitives can be selected from the list of Geometry Types, including Plane, Sprite (3 crossed planes), Tetrahedron, Box, and Sphere. The last option is Custom Geometry, which offers a list of mesh nodes to pick from. The assignment can be performed by cycling through the list, at random based on the ID channel of the particle, or using a ShapeIndex channel.
  • The Orientation controls let you rotate the particles to look at a specific node, match the orientation of a specific node, rotate based on an existing quat Orientation or on any Vector channel, or assume a user-defined orientation. In all cases, an additional variation (divergence) which can be in 3D or limited to a specific world or local axis can be provided.

While waiting for the Frost MY documentation, here are a few pointers about how to start using Frost…

[size=150]Meshing A Particle System[/size]

  • Create any Maya particle system, for example a simple nParticles Emitter.
  • While the nParticles system is still selected, click the icon “Frost Node” on the Frost Shelf.

RESULT: A new Frost node will be created and will be set to use the selected particle system as the source for meshing.
[attachment=1]frostmy_nparticles_emitter_mesh.png[/attachment]

You can add more source nodes to the same Frost node after the fact if desired. Alternatively, you can create a Frost node first without any selected sources using the left-most icon on the shelf, tweak the meshing settings in advance, then pick the source nodes or files to mesh.

[size=150]Tweaking The Meshing Settings[/size]

  • By default, the Frost meshing mode will be set to Union Of Spheres which is just for quick previews and does not look very nice for final output.
  • Switch the Mesh Type to Zhu/Bridson.
  • Tweak the Radius value which controls the influence of the particles (their size)
  • Increase the Blend value in the Zhu/Bridson panel to 2.2.
  • In the Quality > Resolution panel, increase the Relative Viewport meshing resolution from 1.5 to 3.0 to improve the mesh quality.
  • In the Mesh Relaxation panel, enable the Relaxation and enter 10 iterations to smooth out the result.
  • Play back the animation.

RESULT: A fluid-like mesh will stretch over the nParticles as they fall down.

[size=150]Meshing Fluid Data From Disk[/size]

  • Start a new scene.
  • Click the Frost File icon on the Frost self - a file picker dialog will open, letting you select a file or file sequence in one of the supported formats.
  • Let’s say that you have a BIN file sequence from RealFlow, (or a PRT file sequence saved by Naiad, converted from BiFrost, or saved using the Krakatoa PRT Saver…)
  • Select any of the files in the sequence - the file will represent the whole sequence, and its frame number will be replaced automatically according to the current time.
  • If you want to mesh only the specific frame and not the animation sequence, you can click the “Single File Only” option in the Particle Files panel - the specific frame will be loaded at all scene times.
  • Tweak the settings as described in the previous paragraph…

[size=150]Using Node Transforms In Frost MY[/size]

  • By default the Frost node will be placed at the world origin.
  • Transforming the Frost node will apply transforms to the resulting mesh.
  • Source Files will always be loaded in the space they have been saved in. To transform the resulting mesh, transform the Frost node as mentioned above.
  • Scene source nodes can be taken in local space, or in world space (including their transforms).
    [list][*]By default, every source node will have the option “Use Object Transform” checked - this will result in the world positions of the source vertices being meshed, and the resulting mesh will then be transformed by the Frost node transforms, if any.
  • When the “Use Object Transform” option is unchecked for a source, it will be loaded in local space, and will then be transformed by the Frost node transforms, if any. This lets you have several sources (particle systems, meshes, Krakatoa PRT objects etc.) placed side by side for easier access, which then get loaded and meshed together into the same space, and can be placed anywhere in the scene using the Frost node transforms.
  • In addition, any coordinate system metadata available in source files will be applied by Frost to transform the points into the Maya Y-up space. For example PRT v1.1 files saved from 3ds Max will be automatically adjusted from Z-up right-handed to Y-up right-handed coordinates; RealFlow BIN files will be automatically transformed from Y-up left-handed to Y-up right-handed coordinates, etc.
    [/*:m][/list:u]

[size=150]Meshing Fluid Data With Custom Channels Via Krakatoa PRT Loader[/size]

  • The Krakatoa PRT Loader and the Krakatoa Magma node can greatly enhance the power of Frost.
  • Instead of using the Particle Files list of the Frost UI directly, you could create a Krakatoa PRT Loader (if installed), apply on-the-fly changes to the channels, and mesh the resulting particle stream.
  • For example, create a Krakatoa PRT Loader and pick the same RealFlow sequence (or whatever fluid sim. data you might have used two paragraphs earlier).
  • With the PRT Loader selected, click the Magma icon on the Krakatoa shelf to add a Magma node.
  • Open the Magma editor and press SHIFT+CONTROL+C to create a Color output.
  • Press SHIFT+V to connect a Velocity InputChannel node.
  • Press CTRL+R to enable Auto-Reorder mode.
  • Hold down ALT and press V and then M to insert a Vector>Magnitude node.
  • Press the / key on the Numpad to insert a Divide node.
  • Enter a divisor like 500 or higher (depending on the maximum speed in units per second of the fastest particle) to normalize the value.
  • Press ALT and then F for Function and B for Blend to insert a Blend operator.
  • Press CTRL+W and SHIFT+CTRL+W to swap the first and second and second and third inputs.
  • Press SHIFT+3 and SHIFT+7 to connect a blue and a white vector to the Blend.
  • Create a Frost Node from the PRT Loader and set it up like in the prevous example above.
  • In the Modeling toolbar of Maya, select Mesh Display > Toggle Display Colors Attribute to show the vertex colors of the Frost mesh

RESULT: Fast particles will be painted in white, slow particles will appear blue. Tweak the divisor value to shift the gradient…
[attachment=3]frostmy_prtloader_magma_color_by_velocity.png[/attachment]

  • Using the same Magma, we could also set a custom Radius channel.
  • Create a new output node and set it to Float, and enter “Radius” as the channel name.
  • Connect the output of the Divide operator to the new Output node.
  • Select the new wire and press the * key on the Numpad to insert a Multiply node.
  • Enter a scale value to adjust the Radius beyond the 0.0 to 1.0 range used for the color mapping.
  • Optionally, you could also insert a Function>Clamp node to limit the Radius between fixed min. and max. values.
  • In the Frost UI, check the option “Use Radius Channel”.

RESULT: The faster particles will become larger, the slower ones will shrink…
[attachment=2]frostmy_prtloader_magma_radius_by_velocity.png[/attachment]

[size=150]Meshing LiDAR Data[/size]
Meshing LiDAR data coming from laser scanners and the likes is very similar to meshing particle simulation data, except the data is usually static and not an animated sequence, but the point count can be significantly higher (into the hundreds of millions). Obviously, enough RAM will be required for seriously large data, but in many cases a regular laptop can handle a smaller scan of 10 million points without problems and within a minute…

  • You can use a Krakatoa PRT Loader if you want to massage / cull the data before meshing, or load the file directly in Frost.
  • Most LiDAR point clouds come with a Color channel, so enabling the Vertex Color display like we did above with the fluid simulation would show the point colors on the mesh.
  • Using Zhu/Bridson with a Blend of about 2.2 to 2.5 and Low Density Trim off usually produces good results.
  • Below is a sample scan provided by Faro and taken at the Guam Police Department - on the left side is the PRT Loader showing the point cloud with 1.3 million points, on the right side is the Frost mesh which took around 10 seconds on a dual core laptop with 8 GB RAM…

[attachment=0]frostmy_lidar_gpd_mesh.png[/attachment]