emTools

(version
Last edited on April 2nd, 2014)

Introduction

Introduction

This free plugin for Softimage|XSI is a collection of diverse little tools.

On the emTools web page you can:

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

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.

Tip: Check out the following sites for more information, videos and discussions:
si-community.com - the unofficial Softimage community
softimage.tv - the Softimage user based video library

Installation

Please read the following before installing the plugin:

  • If you have an older version of this plugin already installed (or perhaps a beta version) 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".

Installing the addon:

  1. Open the "Plugin Manager". It is located under "File -> Plugin Manager":

  2. As mentioned above: please remove / uninstall any previous version of this plugin. This is really important, because if Softimage finds the same plugin twice then one (maybe even both) might not work.

  3. To install the plugin into the user directory simply right-click onto the folder "User Root" and choose "Install .xsiaddon...":

  4. A browser dialogue will be displayed: go to where you copied the .xsiaddon file, select it and click on "OK". The addon is then automatically installed.

  5. Close Softimage. The plugin is now fully 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 Softimage documentation.

ICE Compounds

ICE Compounds

All Sorts of Things

All Sorts of Things

 

Blur Vertex Data

Blur Vertex Data

Blurs the vertex data via "Laplacian Blur".

Note(1): it is also possible to blur ICE data of point clouds, but in order to do that you must have a emVT _ Create Network compound in your ICE Tree prior to the blur compound. See the demo scene "BlurVertexData_Particle_Size.scn".

Note(2): certain data types (e.g. weight maps and color) cannot be blurred directly. To blur them they must first be copied into some temporary ICE data which is then blurred and copied back. See the demo scene "BlurVertexData_WeightMap.scn".

Examples on how to use this compound can be found here:
emTools 1.33 - Walk Through New Stuff

 

Center of Geometry

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.
      This is only used for "Arithmetic Mean".
    • Consider Point Scale
      Same as the previous but for the point scale.
      This is only used for "Arithmetic Mean"
  • The Output Port(s):

    • Center
      The center of the input geometry.

 

Clamp Zero One

Clamp Zero One

Outputs the input value clamped between zero and one.

 

Create 3D Point Primitive

Create 3D Point Primitive

This compound creates 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.

 

Denoise Point Cloud

Denoise Point Cloud

Denoises a point cloud, i.e. removes the noise of the point cloud's positions.
This is somewhat similar to a "Smooth" or "Relax" operator.

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

    • Enable
      Enable/disable the compound.
    • Strength
      The strength of the effect.
    • Weight Gamma
      Controls the falloff. For example a value of 0.5 would be equal a "Square Root" falloff and a value of "3" would be equal a "Cubic" falloff.
    • Relative Cutoff Distance
      The cutoff distance for the neighboring, relative to the particle's size.
  • The Output Port(s):

    • Execute
      Plug this into an execute port.

 

Equal Distribution in Space

Equal Distribution in Space

Distributes particles equally in space.

 

Equal Distribution on Surface

Equal Distribution on Surface

Distributes particles equally on a surface.

Examples on how to use this compound can be found here:
emTools 1.33 - Walk Through New Stuff

 

Evaluate on Camera Change

Evaluate on Camera Change

This compound forces an ICE Tree to be re-evaluated whenever the input camera is modified.
Note: the output port always outputs 'true'.

 

File Exists

File Exists

Checks the existence of a file:
If the file exists then the compound outputs 'true'.

 

Find Path on Mesh

Find Path on Mesh

Finds the shortest path on a polygon mesh, similar to a route guidance system.
Check out the demo scenes to see how this tool is used.

 

Fly towards Position

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.

 

Force Value Evaluation

Force Value Evaluation

Forces the evaluation of the input data.

 

Generate Position Set

Generate Position Set

Generates a position set.

Unlike the factory node this tool generates a non-random set of positions from the input polygon meshes surface or volume. The position set is generated really quickly, making this tool an ideal addition for emTopolizer's Polygonizer preset.

 

Generate Sample Set

Generate Sample Set

Generates a sample set.

Unlike the factory node this tool generates a non-random sample set.

 

Get absolute Particle Radius

Get absolute Particle Radius

Outputs the absolute radius (i.e. size) of a particle.

 

Get Point Cloud as Arrays

Get Point Cloud as Arrays

Returns the particle positions, sizes, etc. of an input point cloud as arrays.

 

Get Vertex Data

Get Vertex Data

Gets the "per Vertex" data.

Examples on how to use this compound can be found here:
emTools 1.33 - Walk Through New Stuff

 

Init slim Particle Data

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 the 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.

 

Join Strings

Join Strings

The opposite of the factory "Split Strings" node:

It will join an array of strings into a single string.

 

Linear Interpolate Color

Linear Interpolate Color

Interpolates between the two input colors.

 

Linear Interpolate Duo

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.

 

Linear Interpolate Trio

Linear Interpolate Trio

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

 

Liquid Filaments

Liquid Filaments

These compounds are a relict of the time when liquid filaments were implemented in emPolygonizer3

Note: These compounds were not designed for production and are not officially supported!

It comes in two flavors: 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.

 

Liquid Particle Shaper

LiquidParticleShaper

Denoises and reshapes the particles. This is typically used for Lagoa liquid simulations. Check out the demo scenes on how to use this compound.

Note that this compound is simply a wrapper for the compounds Denoise Point Cloud and Principal Component Analysis. Check out the respective compounds for more information.

 

Melt Particles

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 is however implemented in emNewton2.

  • 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.

 

Point Force from Nulls

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.

 

Point Force from Points

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.

 

Principal Component Analysis

Principal Component Analysis

Performs a so-called "Principal Component Analysis": an array of positions is analyzed and its local axis is then calculated.

Check out the demo scene "Liquid_Particle_Shaper1.scn". The point cloud has an ICE Tree in the Secondary Shape Modeling stack which uses the Liquid Particle Shaper compound. Enter the compound to see how the "Principal Component Analysis" is used.

 

Pseudo Subframe on Emission

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.

 

Quantize Volume

Quantize Volume

This tool "quantizes a volume", i.e. "fills a volume with particles".

It 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.

 

Radius of Sphere

Radius of Sphere

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

 

Scale Particle Size

Scale Particle Size

Scales the current particle size.

 

Scale Particle Size with Random

Scale Particle Size with Random

Scales the current particle size with some randomness.

 

Show local Axes

Show local Axes

Displays the particle local axis in the viewport.

 

Snap to Grid

Snap to Grid

Snaps the input position to the grid specified by the parameter Grid Size.

 

Turbulize Position

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.

 

Twist Position

Twist Position

Twists 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.

 

Volume of Sphere

Volume of Sphere

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

 

Arrays

Arrays

 

Resample Array Once

Resample Array Once

Examples on how to use this compound can be found here:
emTools 1.33 - Walk Through New Stuff

 

Reverse Array

Reverse Array

Reverses an array.
Example: the array (0, 1, 2, 3, 4) reversed is (4, 3, 2, 1, 0).

 

Shift Array

Shift Array

Shifts an array, for example:

  • the array (0, 1, 2, 3, 4) shifted by 2 becomes (3, 4, 0 ,1 ,2).
  • the array (0, 1, 2, 3, 4) shifted by -1 becomes (1, 2, 3 ,4 ,0).

 

Bits and Bytes

Bits and Bytes

 

Divide Integers

Divide Integers

Performs a 32 bit integer division and outputs the result as well as the remainder.

 

Is unequal Zero

Is unequal Zero

Outputs 'true' if the input is unequal zero.

 

NaN Detector

NaN Detector

Tests if a scalar is a NaN ("Not a Number") or an INF (positive/negative infinity) in compliance with the IEEE floating point standard.

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

    • Input
      The scalar value to test.
  • The Output Port(s):

    • Is NaN
      True if the input is a NaN.
    • Is positive INF
      True if the input is equal +INF.
    • Is negative INF
      True if the input is equal -INF.
    • Is finite Number
      True if none of the above (= the input is a regular finite scalar value).

 

Number to Bytes

Number to Bytes

Extracts the four bytes of a 32 bit integer.

 

Test Bit

Test Bit

Tests whether a bit of a 32 bit integer is set or not.

 

Cars (a.k.a. emCars)

Cars

This group of compounds was developed for a project done by Polynoid in Berlin. It was developed together with the new emTopolizer2 and it is designed to work closely together with the "Roads" functionality of emTopolizer2.

Even though these compounds work great (and are much fun!) they should not be seen as a tool 'fit for production', but rather as an example of what can be done with emTopolizer2's "Road" functionality.

Best is to simply check out the demo scenes of emTopolizer2 once it gets released (*).

(*) at the time of this writing (9th of August 2013) emTopolizer2 is still in beta and not yet released. It should get released in Fall 2013.

 

Control

Control

not yet documented.

 

Data Concoct

Data Concoct

not yet documented.

 

Data Display

Data Display

not yet documented.

 

Init

Init

not yet documented.

 

Simulate

Simulate

not yet documented.

 

Conversion

Conversion

 

Boolean to Scalar

Boolean to Scalar

Converts a boolean into a scalar.

If the input is "True" then the output is "1.0" else the output is "0.0".

 

Integer to String

Integer to String

Converts an integer value into a string.

 

Null to Box

Null to Box

Converts a null into a box.

 

Null to Ellipsoid

Null to Ellipsoid

Converts a null into a ellipsoid.

 

Null to Sphere

Null to Sphere

Converts a null into a sphere.

 

Number to String

Number to String

Converts a number into a string.

 

Object to Sphere

Object to Sphere

Converts an object into a sphere by simply looking at "how big" the object approximately is.

This tool is rather limited and a better and more advanced version of this compound is Objects to Spheres, as it also accepts a group of input objects that can have different types.

 

Objects to Spheres

Objects to Spheres

This is sort of the "big brother" of Object to Sphere. The compound contains a compiled custom ICE node that will convert the input objects according to their type: a null becomes a simple sphere, a bone becomes a line of spheres, etc.

 

Per Node to Per Point

Per Node to Per Point

Converts "per node" ICE data into "per point" ICE data.

 

Per Node to Per Point Color

Per Node to Per Point Color

Converts "per node" color ICE data into "per point" color ICE data.

 

Per Point to Per Node

Per Point to Per Node

Converts "per point" ICE data into "per node" ICE data.

 

Polymesh to Spheres

Polymesh to Spheres

Converts a polygon mesh into spheres: For each polygon a sphere is generated that has its center in the polygon's center and a radius relative to the polygons area.
Check out the demo scene.

 

Scalar to String

Scalar to String

Converts a scalar value into a string.

 

Curves

Curves

 

Get Position on Curve

Get Position on Curve

Returns the position, tangent, normal and bi normal on a curve for a given U value.

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

    • In Name Curve
      The input curve.
    • Mode
      Defines how to interpret U.
    • U
      The U value.
    • SubCurve
      The index of the subcurve.
  • The Output Port(s):

    • Position
      The curve's position at U.
    • Tangent
      The curve's tangent at U.
    • Normal
      The curve's normal at U.
    • Bi Normal
      The curve's bi normal at U.

 

Intersection

Intersection

 

Intersection of a Ray with a Plane

Intersection of a Ray with a Plane

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

 

Intersection of two Boxes

Intersection of two Boxes

Calculates the intersection of two boxes.

 

Intersection of two Ellipsoids

Intersection of two Ellipsoids

Calculates the intersection of two ellipsoids.

 

Intersection of two Lines

Intersection of two Lines

Calculates the intersection of two lines.

 

Intersection of two moving Boxes

Intersection of two moving Boxes

Calculates the intersection of two moving boxes.

 

Intersection of two Spheres

Intersection of two Spheres

Calculates the intersection of two spheres.

 

Test Intersection with Surface

Test Intersection with Surface

Tests whether a particle intersects with a surface.

 

Primal

Primal

 

btoa

btoa

Converts a boolean into a string.

 

ftoa

ftoa

Converts a scalar into a string.

 

itoa

itoa

Converts an integer into a string.

 

Rotation

Rotation

 

Align Orientation

Align Orientation

Aligns the orientation of a particle.

 

Align Vector

Align Vector

These compounds align the input vector to edges, to object axis or to surfaces.

 

Align Velocity

Align Velocity

These compounds align the particle velocity to edges, to object axis or to surfaces.

 

Local Rotation

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.

 

Rotate Vector Advanced

Rotate Vector Advanced

Examples on how to use this compound can be found here:
emTools 1.33 - Walk Through New Stuff

 

Splines

Splines

 

Distribute Spheres along linear Spline

Distribute Spheres along linear Spline

This compound distributes a set of spheres along a linear spline.
Check out the demo scenes.

 

Get closest Control Point on linear Spline

Get closest Control Point on linear Spline

Returns, for a given position, the closest control point on a linear spline.

 

Get linear Spline Tangents

Get linear Spline Tangents

Returns the control point tangents of a linear spline.

 

Resample linear Spline

Resample linear Spline

Resamples a linear spline (defined by the input array of positions).

Furthermore a Laplacian Smooth can be applied to the resampled positions.

Examples on how to use this compound can be found here:
emTools 1.33 - Walk Through New Stuff

Note: this compound also works with strands.

 

Resample linear Spline Once

Resample linear SplineOnce

See Resample Array Once.

Note: this compound also works with strands.

 

Simplify linear Spline

Simplify linear Spline

Simplifies a linear spline using the Ramer – Douglas – Peucker algorithm.

Check out the demo scenes.

 

Strands

Strands

 

Create unique Strand IDs

Create unique Strand IDs

Creates a unique ID for each strand position.

 

Resample Strands Once

Resample Strands Once

Examples on how to use this compound can be found here:
emTools 1.33 - Walk Through New Stuff

 

Vertex Islands

Vertex Islands

 

Initialize Island Data

Initialize Island Data

Initializes the vertex island data.

An example on how to use this compound can be found here:
emTopolizer 1.00 Tutorial 03 - Vertex Islands

 

Create Particles from Island Centers

Create Particles from Island Centers

Creates one particle for each island center.

An example on how to use this compound can be found here:
emTopolizer 1.00 Tutorial 03 - Vertex Islands

 

Transform Islands

Transform Islands

Transforms the vertex islands.

An example on how to use this compound can be found here:
emTopolizer 1.00 Tutorial 03 - Vertex Islands

 

Getters

Getters

A bunch of compounds to get diverse island related data.
The compounds are self-explanatory.

 

Vertex Tagger

Vertex Tagger

The "Vertex Tagger" is a set of ICE compounds that can be used to tag vertices.
The tagged vertices can be used for all sorts of things, e.g. to make polygon meshes grow.

 

Tag

Tag

Tags vertices.

Examples on how to use this compound can be found here:
emTools 1.33 - Walk Through New Stuff

 

Grow Tagged

Grow Tagged

Grows the currently tagged vertices:

It will tag all vertices that are not tagged but have tagged neighbor vertices.

Examples on how to use this compound can be found here:
emTools 1.33 - Walk Through New Stuff

 

Get Tagged

Get Tagged

Gets the "per vertex" tagginess information.

Examples on how to use this compound can be found here:
emTools 1.33 - Walk Through New Stuff

 

Set Topo from Tagged

Set Topo from Tagged

Sets the topology based on the source geometry and its tagged vertices.

What this compound does is to basically filter the polygons of the source topology.

Use this to make polygon meshes grow (or vanish).

Examples on how to use this compound can be found here:
emTools 1.33 - Walk Through New Stuff

 

Create Network

Create Network

The Vertex Tagger only works if a vertex (or a point) has neighbor information. For polygon meshes this neighbor information is available through polygons and edges, but point clouds do not have that.

This compound will create a neighbor network which the Vertex Tagger will use.

Note that this is only required when using the Vertex Tagger with point clouds.

 

Custom Commands

Custom Commands

Find matching Objects

Find matching Objects

This command can be used to find objects in the current scene that best match an input object.

emTools__FindMatchingObjects inObj, inObjConstructionMode, inObjEvaluationFrame, candidateConstructionMode, candidateEvaluationFrame, candidateSkipIfSameParent, candidateSkipIfNotVisible, selectOut, numOut, verbose, weightName, weightPointCount, weightTriangleCount, weightBoundingBox, weightBoundingSphere, weightLocalSurfArea, weightLocalSurfNormalAverage, weightLocalPos, weightLocalRot, weightLocalScl, weightGlobalVertexCenter, weightGlobalSurfArea, weightGlobalSurfNormalAverage, weightGlobalPos, weightGlobalRot, weightGlobalScl,

Inputs:

  • inObj (string)
    the name of the input object.
  • inObjConstructionMode (siConstructionMode)
    the input object's contruction mode when comparing topology etc.
  • inObjEvaluationFrame (float)
    the input object's evaluation frame.
  • candidateConstructionMode (siConstructionMode)
    the candidate object's contruction mode when comparing topology etc.
  • candidateEvaluationFrame (float)
    the candidate object's evaluation frame.
  • candidateSkipIfSameParent (bool)
    skip candidates that have the same parent as inObj.
  • candidateSkipIfNotVisible (bool)
    skip candidates that have the view visibility turned off.
  • selectOut (bool)
    true: select the objects that were found (in order of resemblance, i.e. the best match comes first, then the second best match, etc.).
  • numOut (int)
    limits the amount of objects that are outputted (use <= 0 for no limit).
  • verbose (bool)
    true: enable verbose in history log.
  • weightName (float)
    weight of object name (without parent name).
  • weightPointCount (float)
    weight of point count.
  • weightTriangleCount (float)
    weight of triangle count.
  • weightBoundingBox (float)
    weight of (local) bounding box.
  • weightBoundingSphere (float)
    weight of (local) bounding sphere.
  • weightLocalSurfArea (float)
    weight of local surface area.
  • weightLocalSurfNormalAverage (float)
    weight of local average surface normal.
  • weightLocalPos (float)
    weight of local position.
  • weightLocalRot (float)
    weight of local rotation.
  • weightLocalScl (float)
    weight of local scaling.
  • weightGlobalVertexCenter (float)
    weight of global vertex center.
  • weightGlobalSurfArea (float)
    weight of global surface area.
  • weightGlobalSurfNormalAverage (float)
    weight of global average surface normal.
  • weightGlobalPos (float)
    weight of global position.
  • weightGlobalRot (float)
    weight of global rotation.
  • weightGlobalScl (float)
    weight of global scaling.

Open most recent Scene

Open most recent Scene

This command will open the most recently opened scene file.

Usage:

  • In the script editor (or a script in general) execute the command emTools__OpenMostRecentScene.

Tip: map this command to the keyboard shortcut "Shift + CTRL + O".

 

Shader Compounds

Shader Compounds

Cubic Mapping

Cubic Mapping

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

Usage:

  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.

 

 

 

Shaders

Shaders

emTool_Volume

emTool_Volume

An easy to use volume shader for the good old Mental Ray.
(Windows only)

Its usage is self-explanatory, just take a quick look at one of the demo scenes.

With a little tweaking one can create nice results that look a bit like SSS.

 

 

 

 

 

 

 

emToolsArnold_OSO

emToolsArnold_OSO

A shader for Solid Angle's Arnold.
(Windows only)

It has two different shader modes that were developed during projects with Framestore and Polynoid respectively:

  • OSO (Outer Shell Only)
    This mode can be used to render crystals. It bypasses the internal ray depth counter so that one does not have any trouble with the ray depth when rendering things like for example tons of transparent intersecting cubes.

  • PLND (Additive)
    An additive rendering mode that is well suited to render strands or particles with a "glowy" look. The picture on the right shows strands that were rendered with this mode.

Check out the demo scenes on how to use this shader.

 

 

Device Drivers

Device Drivers

Joystick

Joystick

This device driver (Windows only) can be used to drive things using pretty much any kind of joystick.

Tips and Tricks, Trouble Shooting

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).

    • PROBLEM ("emTool_Volume"): The shader is not working.
      POSSIBLE CAUSE 1: you are working under Linux. This shader is only available for Windows.
      POSSIBLE CAUSE 2: your system doesn't have certain required DLLs installed.
      SOLUTION: install the Visual Studio C++ Redist. Package.

    • PROBLEM ("emTool_Volume"): There are strange looking artefacts in the rendering.
      CAUSE: this is due to a certain MR optimization regarding the internal mesh representation.
      SOLUTION: go into the renderer options and set the "Mesh Splitting Factor" in the tab "Optimization" to a higher value.

Version History

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".
  • New in Version 1.333:

    • new Tool Set "Vertex Tagger".
    • new ICE compound "Align Vector to Edge / Object Axis / Surface".
    • new ICE compound "Align Velocity to Edge / Object Axis / Surface".
    • new ICE compound "Blur Vertex Data".
    • new ICE compound "Clamp Zero One".
    • new ICE compound "Equal Distribution in Space / on Surface".
    • new ICE compound "Get Vertex Data".
    • new ICE compound "Linear Interpolate Color".
    • new ICE compound "Resample Linear Spline".
    • new ICE compound "Resample Array Once".
    • new ICE compound "Resample Strands Once".
    • new ICE compound "Rotate Vector Advanced".
    • new ICE compound "Snap to Grid".
    • new ICE compound "Test Intersection with Surface".
    • updated ICE compound "Liquid Filaments Strands".
    • updated ICE compound "Twist Position".
    • updated ICE compound "Init slim Particle Data".
    • updated ICE compound "Local Rotation".
    • updated ICE compound "Scalar to String".
  • New in Version 1.4:

    • new ICE compound "NaN Detector".
  • New in Version 1.44:

    • new ICE compound "File Exists".
    • new ICE compound "Null to Sphere".
  • New in Version 1.5:

    • new ICE compound "Force Value Evaluation".
    • new Custom command "Open most recent Scene".
    • new ICE compound "Object to Sphere".
    • new ICE compound "Objects to Spheres".
  • New in Version 1.6:

    • new ICE compound "PolyMesh to Spheres".
    • new ICE compound "Join Strings".
    • in preparation for Fabric Engine: moved to XSI SDK 10000 ("Softimage 2012.5").
    • new ICE compound "Resample Linear Spline" now supports all contexts (per object, per point, per polygon, etc.).
    • new ICE compound "Quantize Volume" is now public.
    • new ICE compound "Intersection of a Ray with a Plane" now works with SI 2011 and above.
    • new ICE compound "Intersection of two Lines" now works with SI 2011 and above.
  • New in Version 1.7:

    • new ICE compound "Generate Position Set".
    • new ICE compound "Generate Sample Set".
    • new ICE compound "Simplify Linear Spline".
    • the ICE compound "Number to String" now supports all contexts (per object, per point, etc.).
  • New in Version 1.850:

    • new ICE compound "Show local Axes".
    • new ICE compound "Align Orientation".
    • new device driver "emToolsDDJoystick".
    • new custom command "emTools__FindMatchingObjects".
    • new group of tools called "Cars".
    • new ICE compound "Number to Bytes".
    • new ICE compound "Divide Integers".
    • new ICE compound "Per Point to Per Node".
    • new ICE compound "Per Node to Per Point".
    • new ICE compound "Per Node to Per Point Color".
    • new ICE compounds "btoa", "ftoa" and "itoa".
    • new ICE compound "Find Path on Mesh".
    • new ICE compound "Intersection of two Ellipsoids".
    • new ICE compound "Intersection of two Boxes".
    • new ICE compound "Intersection of two moving Boxes".
    • new ICE compound "Test Bit".
    • new ICE compound "Distribute Spheres along Linear Spline".
    • new ICE compound "Resample Linear Spline Once".
    • new ICE compound "Reverse Array".
    • new ICE compound "Shift Array".
    • new ICE compound "Get Linear Spline Tangents".
    • new ICE compound "Get closest Control Point on Linear Spline".
    • new ICE compound "Is unequal Zero".
    • new ICE compound "Create unique Strand IDs".
    • many nodes were fixed/revised and now support pretty much any context.
    • fix: the ICE compound "Force Value Evaluation" now works correctly.
    • the addon is now built separately for Softimage 2012, 2013, etc. using the respective SDK.
  • New in Version 1.900:

    • new Mental Ray shader "emTool_Volume".
    • new ICE compound "Evaluate on Camera Change".
    • new ICE compound "Get Position on Curve".
    • the ICE compound "NaN Detector" now supports all contexts.
    • the ICE compound "Distribute Spheres along Linear Spline" has been improved a little.
    • the ICE compound "Generate Position Set" now supports the modes "From Surface" and "From Volume".
  • New in Version 1.920:

    • new Arnold shader "emToolsArnold_OSO".
    • small bug fix (SI 2013 SP1) regarding refresh problems with low particle counts.
  • New in Version 1.933:

    • new compound "Null to Box".
    • new compound "Null to Ellipsoid".
    • new compound "Get absolute Particle Radius".
    • new compound "Denoise Point Cloud".
    • new compound "Principal Component Analysis".
    • new compound "Liquid Particle Shaper".
    • improved version of the compound "Get Point Cloud as Arrays"
    • a few minor revisions and bug fixes.
  • New in Version 1.935:

    • new compound "Compare Strings".

Limitations and Remarks

Limitations and Remarks

  • emTools is only available for 64 bit systems (Windows and Linux).
  • emTool_Volume shader for Mental Ray:
    • this shader is only available under Windows.
    • intersecting volumes are not handled properly and ray segments don't accumulate correctly (see MR doc: "Volume Shaders Using Autovolume").