Search:

emTools (version 1.25)   Online Documentation
last modifications to this page: January 17th 2012

 


Chapter 1: Introduction

This free plugin for Softimage|XSI is a collection of little tools, mainly ICE compounds.

On the emTools web page you can:

  • download the plugin.
  • download demo and tutorial scenes.

Content:

On my Vimeo page are many video tutorials in which I show and explain different aspects and techniques concerning emTools and its usage. You might also try to search for "emTool" on Vimeo to find some videos made by other people.

Note: If you feel that something is not well explained (or not explained at all) then please write me a short e-mail. I will then update the documentation and/or make a demo scene as quickly as possible.

 


Chapter 2: Installation

Important:

  • If you already have a version of this plugin installed then you must uninstall it first.
    To do that go into Softimage|XSI's "Plugin Manager", right-click on the plugin and choose "Uninstall Addon".

This plugin comes as a so called "Addon", here's how to install it:

  1. Open the "Plugin Manager". It is located under the "File" menu: "File ->Plugin Manager":
  2. As mentioned above: please remove / uninstall any previous version of this plugin. This is really important, because if Softimage|XSI finds two times the same plugin then one (maybe even both) might not work.
  3.  

  4. To install the plugin into the user directory simply right-click onto the folder "User Root" and choose "Install .xsiaddon...":
  5. A browser dialogue will be displayed: go to where you copied the .xsiaddon file, select it and click on "OK". The Addon is automatically installed.
  6.  

  7. Close Softimage|XSI. The plugin is now installed and ready to be used.
    For more information concerning Addons and how to install / uninstall them please check the chapter "Working with Addons" in the XSI Guides.

 


Chapter 3: The ICE Compounds

 
 

The Compound "emTool _ Center of Geometry"

This compound calculates the center of the input geometry (typically a point cloud or a polygon mesh).

  • The Input Port(s) and Parameter(s):

    • In Name of Geometry
      The input geometry.
    • Type
      The type of calculation:
      • Arithmetic Mean
      • Barycenter (Center of Mass)
    • Consider Point Size
      If enabled then the point size (if available) is taken into consideration when calculating the center. This means that a big particle will have more weight than a small particle.
    • Consider Point Scale
      Same as the previous but for the point scale.

  • The Output Port(s):

    • Center
      The center of the input geometry..

 


The Compound "emTool _ Create 3D Point Primitive"

This compound lets you create 3D point primitives based on a 3D point grid.

There currently is no documentation available, however the compound is relatively straight forward and easy to use.

 


The Compound "emTool _ Fly towards Position"

This will make a particle fly towards a position (= a goal) without changing its speed.

  • The Input Port(s) and Parameter(s):

    • Active
      Enables/disables the compound.

    • Fly towards Position
      • Position
        The position of the goal.
      • Limit Rotational Velocity
        Enables/disables the limit of rotation velocity.
        This limits the rotational velocity so that the particles turn more smoothly towards the goal.
      • Maximum Rotational Velocity
        The maximum allowed rotational velocity.

  • The Output Port(s):

    • Execute
      Plug this into an execute port.

 


The Compound "emTool _ Init slim Particle Data"

This is very similar to the factory compound "Init Particle Data" that is used under the hood by the factory emitter compounds.
This compound however only sets/initializes the most commonly used data and furthermore allows you to set - or not set - the _Init data.

Note that data Scale and State_ID is also set by this compound, however they are not exposed. If you want to expose them simply enter the compound and create a new port.

  • The Input Port(s) and Parameter(s):

    • Shape, Size, etc.
      The value of the respective data.

  • The Output Port(s):

    • Set Data
      Plug this into an execute port to set the data.
    • Set Init Data
      Plug this into an execute port to set the "*_Init" data.

 


The Compound "emTool _ Integer to String"

Converts a integer value into a string.

 


The Compound "emTool _ Intersection of a Ray with a Plane"

This compound calculates the intersection of a ray with a plane.

The usage and the parameters are self-explanatory.

 


The Compound "emTool _ Intersection of two Lines"

This compound calculates the intersection of two lines.

The usage and the parameters are self-explanatory.

 


The Compound "emTool _ Intersection of two Spheres"

This compound calculates the intersection of two spheres.

The usage and the parameters are self-explanatory.

 


The Compound "emTool _ Linear Interpolate Duo"

This compound is more or less identical to the factory node "Linear Interpolate" with the only difference that you interpolate between two pairs of values rather then between two values.

The usage and the parameters should be self-explanatory. If not sure then simply enter the compound, it only consists of four nodes.

 


The Compound "emTool _ Linear Interpolate Trio"

Same as Linear Interpolate Duo, but for three sets of values.

 


The Compound "emTool _ Liquid Filaments Points/Strands"

This compound is a relict of the time when liquid filaments were implemented in emPolygonizer3.

It comes in two flavours: a "point" and a "strand" version.

It will create liquid filaments (= particles along a line) between a particle and its neighbors.

  • The Input Port(s) and Parameter(s):

    • Use
      Specifies what points shall be used for the creation of the liquid filament points.
      You can use either the input geometry or the current points.

    • In Geometry Name
      The input geometry. This is only needed if the above parameter is set to "Input Geometry".

    • Main
      • Level of Detail
        The level of detail of the filaments (= the amount of points per unit).
        The higher this value the more points are generated.
      • Use absolute Level of Detail
        If enabled then the level of detail is in SI Units, else it is relative to the point size.
      • Size Scale
        An overall scale for the filament points.
      • Shape
        The shape of the filament points.

    • Neighboring
      • Cutoff Distance
        The cutoff distance. Any points beyond this distance are ignored.
      • Enable Max Number of Points
        If enabled then the amount of neighbor points is limited.
      • Max Number of Points
        The maximum number of neighbor points.

    • Size
      • Fade first Particles
        If enabled then the first filament points are faded in via their size.
      • Consider Size Ratio
        If enabled then bigger particles will tend to "ignore" smaller particles.

    • Clean-up
      • Enable
        Enables/disables clean-up (= deleting very small points).
        It is recommended to have this enabled.
      • Epsilon
        Any newly created filament point that is smaller than this value will be removed.

  • The Output Port(s):

    • Create Particles
      Plug this into an execute port.

 


The Compound "emTool _ Local Rotation"

This handy little compound will rotate a particle around one of its local axes.

  • The Input Port(s) and Parameter(s):

    • Rotate
      The local axis around which to rotate: X, Y or Z.
    • Angle
      The rotation angle (in degrees).

  • The Output Port(s):

    • Execute
      Plug this into an execute port.

 


The Compound "emTool _ Melt Particles"

This compound is based on some code that was implemented a few years ago in the plugin emNewton. What it does is the following:

When two particles with a size greater than zero intersect then the intersection volume is added to the bigger particle and at the same time removed from the smaller particle. Furthermore a particle is deleted when it reaches a certain size close to zero.
In short: many small particles melt together into fewer bigger ones.

It should be noted that this compound does not accurately conserve the total volume contained in a point cloud. Due to some optimization the total volume can vary significantly from the original volume.
An accurate version of this compound will be available as a compiled C++ node in the near future.

  • The Input Port(s) and Parameter(s):

    • Enable
      Enable/disable the compound

    • Melting
      • Melt Speed
        The speed at which particles melt (= exchange volume).
      • Consider Size Ratio when melting
        If enabled then the particle size ratio is considered when two particles are melting.
        In simple words: when a very small particle is melting with a very big particle then the small particle is entirely absorbed regardless of the value of "Melt Speed".
      • Only melt if Particle Age greater than T
        If enabled then a particle must reach a certain age before being involved in any melting. This is most useful when having some permanent particle emission: it prevents new born particles from immediately melting.
      • T (Seconds)
        The age, in seconds, that a particle must have before it is used for melting.

    • Neighboring
      • Enable Max Number Points
        Enables a maximum number of neighbor points.
        It is recommended to enable this (much better performance).
      • Max Number Points
        The maximum number of neighbors.
      • Cutoff Mode
        The distance cutoff mode. It can be set to "automatic" (recommended) or to "Use Distance Value", in which case the value of the parameter "Distance" is used.
      • Distance
        The cutoff distance.

    • Delete
      • Delete Particles smaller than Epsilon
        A particle that has lost most of its volume will be very small (and more or less useless).
        By enabling this parameter these very small particles (smaller than Epsilon) will be deleted in order to reduce the amount of points and increase overall performance.
      • Epsilon
        Particles that are smaller than this value are deleted.

  • The Output Port(s):

    • Execute
      Plug this into an execute port.

 


The Compound "emTool _ Point Force from Nulls"

This compound can be used to have a null (or a group of nulls) act as point forces.

  • The Input Port(s) and Parameter(s):

    • In Nulls
      Null or group of nulls.
    • Active
      Enable/disable the compound.
    • Strength
      The strength of the force.
    • Size
      Size of the Nulls.
    • Multiply by Null Size
      If enabled then the null's size is considered.
    • Multiply by Null Scale
      If enabled then the null's scale is considered.

  • The Output Port(s):

    • Force
      The force. Plug this into an "Add Force" compound.
    • Fader
      This special value goes from 0 to 1.
      A value of 0 means that a particle is not influenced by any of the nulls and a value of 1 means that a particle is fully influenced by at least one null.
      This value can be used to fade in/out other forces. An example might be to fade out the gravity the more a particle is influenced by a null.

 


The Compound "emTool _ Point Force from Points"

This compound can be used to have all the points of an input geometry (point cloud, polygon mesh, etc.) act as point forces.

  • The Input Port(s) and Parameter(s):

    • In Name
      Input geometry.
    • Active
      Enable/disable the compound.
    • Strength
      The strength of the force.
    • Size
      Size of the points.
    • Multiply Size by Point Size
      If enabled then the point's size is considered.
    • Multiply Size by Point Scale
      If enabled then the point's scale is considered.
    • Multiply Size by Object Scale
      If enabled then the object's global scale is considered.

  • The Output Port(s):

    • Force
      The force. Plug this into an "Add Force" compound.
    • Fader
      This special value goes from 0 to 1.
      A value of 0 means that a particle is not influenced by any of the points and a value of 1 means that a particle is fully influenced by at least one point.
      This value can be used to fade in/out other forces. An example might be to fade out the gravity the more a particle is influenced by a point.

 


The Compound "emTool _ Pseudo Subframe on Emission"

An older and almost obsolete little compound that helps reducing the banding when emitting fast moving particles.
The newer emission compounds in Softimage 2011 and above do not require this compound any more, but if you are using Softimage 2010 or even XSI 7.xx then it can be of some help.

  • The Input Port(s) and Parameter(s):

    • Variance
      The amount of variance when emitting particles.

  • The Output Port(s):

    • Execute on Emit
      Plug this into an execute port of an emission compound.

 


The Compound "emTool _ Quantize Volume"

This special compound "quantizes a volume", a rather fancy way for saying "fills a volume with particles".

This compound was originally created for a client (hello, Peter!) some time ago. With his permission, for which I am grateful, it now is available for everyone.

  • The Input Port(s) and Parameter(s):

    • Input Surface (Orientation)
      The input geometry that will be used for rotation and orientation.
    • Input Geometry (Points/Volume)
      The input geometry that will be used for everything that involves points and volume.

    • Particle Amount
      • Use
        Specifies what shall be used when quantizing (volume or points). If volume is used then the level of detail can be specified either by an absolute number of particles in X, Y and Z or by a number of particles per SI Unit.
      • Number in X/Y/Z
        The "resolution" (= amount of particles) in X, Y and Z.
        This is only used if "Type" is set to "Volume, Number in XYZ".
      • Number-per-SI-Unit
        The amount of particles per SI Unit.
        This is only used if "Type" is set to "Volume, Number-per-SI-Unit".

    • Distribution (Volume)
      • Type
        The distribution type, "Grid" or "Packed".

    • Particle Size and Scale
      • Size
        The size of the points.

      • Scale
        • X/Y/Z
          The scale of the points.
        • Consider Input Geo's Bounding Box (Volume)
          If enabled then the point scale is set to the same ratio as the bounding box of the input geometry. Furthermore the particles are automatically scaled depending on the particle amount.
          When this is enabled then the parameter "Size" is best set to a value of 0.5.

    • Particle Orientation

      • Align to Surface
        • Weight
          Weight of rotational alignment.
        • Type
          The type of alignment.

      • Rotation Offset
        • X/Y/Z
          A rotation offset per axis.

    • Particle Miscellaneous
      • Shape
        The shape of the particles.
      • Color
        The color of the particles.
      • State ID
        The state ID of the particles.
      • Execute on Creation
        Some further "Set Data" compounds can be plugged in here, if needed.

    • Post Effects

      • Filtering (Volume only)
        • Filter by Volume
          If enabled (recommended) then the points are filtered by the input volume.
        • Negate
          If enabled then the input volume is negated.
        • Epsilon
          The epsilon value ( = tolerance value) when filtering by volume.

      • Randomize Rotations
        • Random-Seed
          The random seed.
        • Amount X/Y/Z
          Amount of randomness in X, Y and Z.

      • Randomize Positions
        • Random-Seed
          The random seed.
        • Amount X/Y/Z
          Amount of randomness in X, Y and Z.

    • Post Executes
      • Execute
        These ports are executed once the compound is done creating and filtering all the points.
        Note that any node or compound that is plugged in here will only affect the newly created points.

  • The Output Port(s):

    • Execute
      Plug this into an execute port.

 


The Compound "emTool _ Radius of Sphere"

This compound calculates the radius of a sphere.
q.v. Volume of Sphere.

  • The Input Port(s) and Parameter(s):

    • Volume
      The sphere's volume.

  • The Output Port(s):

    • Radius
      The radius of the sphere.

 


The Compound "emTool _ Scalar to String"

Converts a scalar value into a string.

 


The Compound "emTool _ Scale Particle Size"

Scales the current particle size.

  • The Input Port(s) and Parameter(s):

    • Scale
      The scale factor.

  • The Output Port(s):

    • Execute
      Plug this into an execute port.

 


The Compound "emTool _ Scale Particle Size with Random"

Scales the current particle size with some randomness.

  • The Input Port(s) and Parameter(s):

    • Scale
      The scale factor.

    • Random
      • Seed
        The random seed.
      • Time Varying
        Enable to use a different random at each frame.
      • Variance
        The variance around the "Scale" value.

  • The Output Port(s):

    • Execute
      Plug this into an execute port.

 


The Compound "emTool _ Turbulize Position"

A little compound that will turbulize the current positions.
It is usually used in a Post-Simulation ICE Tree to add some jittering.

  • The Input Port(s) and Parameter(s):

    • Enable
      Enable/disable the compound.
    • Strength
      The amount of turbulence.
    • freq_Time
      The frequency in time of the turbulence.
    • freq_Space
      The frequency in space of the turbulence.
    • Complexity
      The complexity of the turbulence.
    • Seed
      The random seed of the turbulence.

  • The Output Port(s):

    • Execute
      Plug this into an execute port.

 


The Compound "emTool _ Twist Position"

A further little compound that will twist the current positions.

  • The Input Port(s) and Parameter(s):

    • Enable
      Enable/disable the compound.
    • Inside Twist
      Twist the inside rather than the outside.
    • Invert Twist Direction
      Inverts the twist direction.
    • Degrees per SI Unit
      The amount of degrees to twist per SI unit. The higher this value the more the positions get twisted.
    • Center
      The twist center.
    • Axis
      The twist axis.

  • The Output Port(s):

    • Execute
      Plug this into an execute port.

 


The Compound "emTool _ Volume of Sphere"

This compound calculates the volume of a sphere.
q.v. Radius of Sphere.

  • The Input Port(s) and Parameter(s):

    • Radius
      The radius of the sphere.

  • The Output Port(s):

    • Volume
      The volume of the sphere.

 


Chapter 3: The Shader Compounds

 
 

The Compound "emTool _ Cubic Mapping"

This shader compound will produce a nice cubic mapping without any seams.

The usage is simple:

  1. In the Render Tree Viewer enter "cubic" in the search field to find the shader compound called "emTool_CubicMapping"

  2. Drag and drop the compound into your Render Tree and connect it to a shader, e.g. the ambient and diffuse ports of a Phong shader.

  3. Add and connect three image shaders to the emCubicMapping compound as shown in the picture below. Each image shader should use a different projection: XY, YZ and XZ. You can use one, two or three different images. Below is an example that uses three different images.

 

 


Tips and Tricks, Trouble Shooting

  • Tips and Tricks:

    • Don't use the Softimage "Simulation Root" compound.
      It is recommended to not use the above compound.

  • Trouble Shooting:

    • PROBLEM ("emTools _ Melt Particles"): Some particles get huge even though it is obvious that they shouldn't.
      SOLUTION: the neighboring parameters probably are not correct. Try using "Automatic" for the distancing and possibly increase the maximum number of neighbors (setting this value too low results in those big particles).

    • KNOWN ISSUE ("emTools _ Create 3D Point Primitive"): Softimage crashes when creating millions of particles.
      CAUSE: unfortunately there is a bug in the factory Softimage node "Sort Array with Key".
      This bug results in crashes when using the "Filter by Sphere/Cylinder/Profile" feature together with high amount of particles (around 32 million).
      This bug has been reported and Softimage will hopefully fix it for the next version (Softimage 2013).

 


Version History

  • New in Version 1.1:

    • New ICE compound "Center of Geometry".
    • New ICE compound "Melt Particles".
    • New ICE compound "Quantize Volume".
    • New ICE compounds to calculate the intersection between spheres as well as the volume/radius of spheres.
    • Some little helper ICE compounds.

  • New in Version 1.17:

    • New ICE compound "Create 3D Point Primitive".
    • New Shader compound "Cubic Mapping".
    • Updated ICE compound "Init slim Particle Data".

  • New in Version 1.25:

    • New ICE compound "Integer to String".
    • New ICE compound "Scalar to String".
    • New ICE compound "Twist Position".
    • New ICE compound "Liquid Filaments Strands".
    • Updated ICE compound "Liquid Filaments Points" (renamed and made public).
    • Updated ICE compound "Center of Geometry" (now also supports barycenter).
    • Updated ICE compound "Create 3D Point Primitive".

 


Limitations and Remarks

  • emTools runs fine with Softimage 2011 SP1 or above.

  • emTools seems to work with Softimage 2010 SP1, too, but officially only Softimage 2011 SP1 and above is supported.

  • The demo scenes are only available for Softimage 2011 SP1 and above.