emRPC (emRenderPointCloud) online Documentation v.3.05

last modification of this documentation: January 3rd 2010

this page is best viewed with Mozilla Firefox or IE8

emRPC (emRenderPointCloud) online Documentation v.3.05
Chapter 1: Introduction

Just as its name suggests, this plug-in for Softimage|XSI's ICE is a specialised renderer for point clouds.

On the emRPC web page you can:

  • Take a look at some animations that were rendered using this plug-in.
  • Download the demo version of this plug-in.
  • Purchase the full version of this plug-in.
  • Download demo and tutorial scenes.

On my Vimeo page you can watch some Video Tutorials.

This documentation has the following chapters:

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 try to update the documentation and/or make a demo scene as quickly as possible.

Chapter 2: Installation (Windows/Linux)

Important:

  • if you have a version below 2.25 of emRPC already installed then you need to remove manually all emRenderPointCloud.dll files, all emRenderPointCloud*.so files and all emRenderPointCloud*.xsicompound files before installing this version.
    If you don't know where those files are located then go into the "Plug-in Manager", right-click on the plug-in and choose "Explore".
  • if you have a version 2.25 or higher already installed then you need to uninstall it.
    To do that go into Softimage|XSI's "Plug-in Manager", right-click on the plug-in and choose "Uninstall Addon".

Important Note: Scenes that were created using elder versions of this plug-in will NOT work properly with this new version! You will have to remove the old "emRenderPointCloud" compounds from the ICE Tree and replace them by the new "emRPC" compounds.

This plug-in comes as a so called "Add-On", here's how to install it:

  1. Open the "Plug-in Manager". It is located under the "File" menu: "File ->Plug-in Manager":
  2. As mentioned above: please remove / uninstall any previous version of this plug-in. This is really important, because if Softimage|XSI finds two times the same plug-in then one (maybe even both) might not work.
  3. To install the plug-in 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 Add-on is automatically installed.
  5. Close Softimage|XSI. The plug-in is now installed and ready to be used.
    For more information concerning Add-ons and how to install / uninstall them please check the chapter "Working with Add-ons" in the XSI Guides.
Chapter 3: Demo Version Restrictions

If you are using the full version of emRPC then you can skip this chapter. If not, please read the following list of restrictions of the demo version:
  • The resolution of the output pictures is limited to 512x384.
  • Rendering is only performed between frame 1 and frame 250.
  • The text "emRenderPointCloud DEMO VERSION" is contained in the output pictures.
Chapter 4: Tutorials

Video Tutorials only (on Vimeo) !

Please go to my Vimeo page where you will find many demo and tutorial videos in which I explain and show how to work with emRPC.

Note: if you have not yet downloaded the demo and tutorial scenes, then please do it now by follow this link:
Download emRPC Demo Scenes

Chapter 5: The Compounds

The compound "emRPC"

This is the main compound of the plug-in. Its "Execute" output port is typically plugged into the last port of the
"ICETree" node, so that the particles are rendered after the rest of the ICE Tree has been evaluated.
In order for the emRPC compound to work properly it must also have the "emRPC Settings Particles/Shadows/Strands" plugged into it. These compounds contain the settings for particles, shadows and strands.
A typically emRPC setup should look like this:

The Input Ports / Parameters:

On the right you can see the property page of the "emRPC" compound.
Below is a brief description of all the parameters.

  1. Main parameters

    Enable
    Enables/disables the renderer. If disabled, the compound does absolutely nothing.
  2. Options (Miscellaneous)

    Display Progress Bar
    If enabled, then a progress bar with a cancel button is displayed during rendering.
  3. Options (File Settings)

    Write Images to Disk
    Enable this to render and write images. In some cases you might want to disable this, for example when you are using the OGL preview mode (see next parameter group "Options (OGL Preview)").

    File Format
    The file format for the output pictures.
    Available formats:
    • Targa (8 bit per color channel, rle compressed)
    • Softimage (8 bit per color channel, rle compressed)
    • SGI (8 bit per color channel, uncompressed)
    • SGI (16 bit per color channel, uncompressed)
    • OpenEXR (HDR, zip compressed)

    Append this to Filename
    This defines the characters that are appended to the output filename that is defined in the current pass.
    Example: let's say the scene output is set to
    "C:\Temp\Frames" and the passes filename is set to "MyPic". If you render the pass with XSI and Mental Ray the picture sequence would look like this:
    "C:\Temp\Frames\MyPic.1.pic"
    "C:\Temp\Frames\MyPic.2.pic"
    "C:\Temp\Frames\MyPic.3.pic"
    etc.
    Let's say "Append this to Filename" is set to "rpc" and the picture format is set to "SGI".
    The picture sequence produced by emRPC would then look like this:
    "C:\Temp\Frames\MyPic_rpc.1.sgi"
    "C:\Temp\Frames\MyPic_rpc.2.sgi"
    "C:\Temp\Frames\MyPic_rpc.3.sgi"
    etc.
  4. Options (OGL Preview)
    These parameters allow you to get an OGL preview of what emRPC is rendering.
    Note that this only works for particles, not for strands.

    Set Particle Colors from Rendering
    If enabled, then the colors that were calculated by the renderer are mapped onto the particles.

    Set Alpha=1
    If enabled, then the particles alpha is set equal 1.
  5. Options (Rendering)

    Threading
    The emRPC renderer is multithreaded. With this option you tell the renderer how many cores your CPU has. It will then use an appropriate number of threads for rendering.

    Background Color
    The background RGBA color of the output pictures.

    Anti-Alias
    If enabled, then the entire picture is anti aliased (=> render time is 2-4 times longer!).
    This is off by default, because particles are always rendered with anti aliasing. When using masks, though, it might be necessary to turn this on, because masks have no anti-alias due to the z-buffering algorithm used.

    Render Strands
    If enabled, then strands are rendered, too.
    Note that strands are not rendered as lines but as dots.

    Calculate Lightning only for visible Points
    If enabled, then lightning is only calculated for particles that are visible by the (current passes) camera, thus resulting in better render times, especially when calculating shadows.

    Calculate Shadows
    If enabled, then shadows are calculated depending on the light settings and "emRPC Settings Shadow" compound.
  6. Options (Rendering) - Masks

    Use visible Meshes as Masks
    If enabled, then all polygon meshes (that are visible for rendering) are used as masks.

    Shrink
    If enabled, then the outer line of a mask is not used. This helps reduce the toon-like lines around masked objects during compositing.

    Cast-Shadows-on-Masks
    If enabled, then the particles cast shadows on the masks. The shadows can be rendered into the Alpha channel or into the RGBA channels.

    Shadow-Factor-Percentage
    High values produce harder shadows, low values produce smoother shadows.

    Maximum Shadow Darkness
    Defines the maximum darkness of the shadows.
  7. Auto Fade-out giant Particles
    Particles that are very close to the camera are of course very big. With these parameters those "giant" particles can automatically be faded out, resulting in better render times and nicer results, especially when the camera is flying through a particle cloud.

    Fade Active
    Enable the automatic fade-out (recommended).

    Fade Start
    Percentage of output x-resolution where fading starts.

    Fade End
    Percentage of output x-resolution where fading ends.

The Output Ports:

Execute
Plug the compound into an execute port (typically the last port of the "ICETree" node).
The compound "emRPC Settings Particle"

This compound contains the settings concerning particles, below a screenshot of the compound and its property page as well as a short description of all parameters.

Important: all the parameters of this compound have the context "per object or point of point cloud" !

The Input Ports:

  1. Rendering

    Drawing
    The mode in which the particles are drawn: "normal", "additive" or "screen".

    Shape
    The shape in which the particles are drawn.

    Shading
    The shading mode. If this is not "Constant (without Shadows)" then the visible lights in the scene are used to illuminate the particles and/or calculate the shadows.
  2. Shadows

    Cast
    Amount of shadow a particle can cast.

    Multiply Cast Value by Alpha
    If enabled, then the above "Cast" value is multiplied with the particle alpha value => the lower the alpha the less shadow a particle casts.

    Receive
    Amount of shadow a particle can receive.
  3. Size

    Size
    Defines the particle size to use during rendering.

    Multiplier
    Depending on the value of the above parameter "Size" this value will be either ignored or multiplied with the particle's size.

    Pixels
    Depending on the value of the above parameter "Size" this value defines the absolute size in pixels.
  4. Color

    Color
    Defines the particle color to use during rendering.

    Multiplier (RGBA)
    Depending on the value of the above parameter "Color" this RGBA value will be either ignored or multiplied with the particle's color or multiplied with the RGBA values of the parameter "Fixed (RGBA)".

    Fixed (RGBA)
    Depending on the value of the above parameter "Color" this RGBA value is ignored or used instead of the original particle's color.

    Shadow Multiplier (RGB) - Overall Shadow Multiplier
    An overall color multiplier that is typically used with the compound "emRPC Simple Shadow Caster".

The Output Port:

Particle Settings
Plug this output port into the "Particle Settings" input port of an "emRPC" compound.

The compound "emRPC Settings Strand"

This compound contains the settings concerning strands.
It is identical to the compound emRPC Settings Particle except for its first parameter called "Subdivision".

The Input Ports:

  1. Rendering

    Subdivision
    Sets the subdivision level for the strands.
    Note: emRPC only renders the strand points.

    For a description of the other parameters please go here: emRPC Settings Particle.

The Output Port:

Strand Settings
Plug this output port into the "Strand Settings" input port of an "emRPC" compound.

The compound "emRPC Settings Shadow"

This compound contains the shadow settings, below is a screenshot of the compound and its property page as well as a short description of all parameters.

The Input Ports:

  1. Self-Shadowing

    Enable Self-Shadowing
    Enable/disable self-shadowing.

    Amount
    Amount of self-shadowing.

    Level-of-Detail
    The level of detail for the shadows. Using higher values will produce more detail (if needed) but also uses more memory space and calculations.
    Note: this actually defines the cell size of the octree by setting the cell size equal 1 / LOD.

    Caster-Size-Multiplier
    This value can be used to increase the size of particles when they cast shadows.
    If for example you have very small particles that hardly cast any shadow you can increase this value to make them virtually bigger so that they cast more shadows but are still drawn in their original size.

    Shadow-Factor-Percentage
    The smaller this value the more particles are needed to produce much shadow. Using high values (>50%) results in more (harder) shadow, lower values produce softer shadows.

    Maximum-Shadow-Darkness
    Defines the maximum darkness of the shadows.
  2. Octree

    Percentage-of-Particles-to-use-in-the-Octree
    The name says it all: this defines the percentage of the input particles that are used in the octree. When working with many particles (>1.000.000) it most often is not necessary to use all of them in the octree. Values of about 20% will produce nearly the same results but significantly reduce the time it takes to build the octree.

    Density-Limit
    The maximum density of an octree cell.

    Memory-Limit(MBytes)
    The maximum amount of memory (in megabytes) that may be used for the octree.

    Interpolation-between-Cells
    Defines the octree cell interpolation: "None", Tri-Linear" or "Tri-Sine", the latter producing the best results.

    Plot Cubes rather than Spheres
    When particles are added to the octree they can either be considered as cubes (faster, but not as accurate) or spheres.

    Strength (Blur)
    Strength of the octree blur. Blurring the octree produces smoother shadows and less artefacts.

    Iterations (Blur)
    Amount of iterations when blurring the octree. More iteration result in more blurriness.
  3. Caster Visibility Interval

    Use Fade-in Interval

    In Start

    In End

    Use Fade-out Interval

    Out Start

    Out End
  4. Caster near Light Distance

    Use Distance

    In Start

    In End

The Output Port:

Shadow Settings
Plug this output port into the "Shadow Settings" input port of an "emRPC" compound.

The compound "emRPC Simple Shadow Caster"

This compound expects a light and some geometry as input and outputs a simple RGB shadow to be used for the compounds "emRPC Settings Particle" and "emRPC Settings Strand".

The Input Ports:

  1. Main Parameters

    Enable
    If enable, then calculate and output shadows.

    Amount
    Amount of shadowing.

    Shadow Color
    The shadow's RGB color.

    In Light Name
    The light's name.
    Note: only the position (point lights) and orientation (for infinite lights) are used, all other light parameters are ignored.

    In Geometry
    The geometry (polygon meshes / surface meshes) that shall cast shadows.
    Note: only the geometry is used, any other parameters (i.e. render visibility parameters) are ignored.

The Output Port:

Shadow (Multiplier)
Plug this output port into the "Shadow Multiplier (RGB)" input port of an "emRPC Settings Particle" or "emRPC Settings Strand" compound.

Chapter 6: Tips and Tricks, Troubleshooting

Tip: the particle's alpha
The alpha value of a particle is very important. Use small alpha values when rendering in "additive" or "screen" mode and higher alpha values when rendering in "normal" mode.

Tip: "additive" mode vs. "screen" mode
These two modes are very similar, but the "screen" mode is easier to use and produces better results than the "additive" mode.

Tip: use the "per point" feature!
The context of nearly all parameters of emRenderPointCloud is "per object or point of point cloud". For example you could emit particles with different states and then, at render time, use the different states to control how the particles are to be drawn: some could be drawn in "additive" mode and some in "normal" mode, or they could use different settings for "Shape" and "Shading" depending on their age or age percentage.
Or: a very convenient way to fade particles in and out is to set the color and/or size multiplier depending on the particle's age percentage.

Tip: use several emRenderPointCloud compounds at once
You can use several emRenderPointCloud compounds in the same ICE Tree, each with own settings. That way you can render several different versions of the same point cloud at once. Some of the demo and tutorial scenes use that trick.

Troubleshooting: I have memory problems when working with many particles
You are probably working with the 32bit version of XSI. When working with many particles (more than 500.000) I highly recommend the 64bit version of XSI.

Troubleshooting: I'm working with emRPC's OGL Preview and my particles all disappear!
emRPC's OGL Preview mode replaces the particle colors (and the alpha!). So simply set the particle color explicitely each frame. Or check the parameter "Set Alpha=1" in the "emRPC" compound.

Troubleshooting: I made changes to the ICE Tree but they don't appear in the rendering
emRPC checks whether the "Skip Rendered Frames" option of the current pass is on or off. If it is on, then existing frames are not overwritten. Uncheck "Skip Rendered Frames" and re simulate the ICE Tree.

Troubleshooting: Strands look fine in XSI but crappy when rendered with emRPC (at least in version XSI 7.01)
Workaround: use a "Set Particle Age Limit" compound AND a "Delete Particle at Age Limit" compound. This bug seems to be due to a problem in the XSI SDK when gathering the strand positions.
Note that this problem does NOT occur with Softimage 2010 SP1.

Troubleshooting: I have (many) particles with a very low alpha. The renderings look great, but in the OGL Preview I see nothing
OGL has problems with very small alpha values (smaller than 1/256), so set the alpha a little higher for the OGL Preview.

IMPORTANT BUG (in XSI 7.01): The colors do weird things... looks like a bug
Workaround: you MUST have a "Set Particle Age Limit" and a "Delete Particle at Age Limit" compound in your ICE Tree. Furthermore the "Delete Particle at Age Limit" compound must come just before the "Simulate" node.
Version History

  • New in Version 3.0:

    • new features:
      • new compounds.
      • self-shadowing.
      • shadows on masks.
      • OGL preview.
      • strands (well, actually only the strand points) can now be rendered, too.
      • the calculation of lightning now is multi-threaded.
      • horizontal and vertical FOV are now supported.
      • giant particles are automatically faded out.
    • the old "emRenderPointCloud Enhanced Setup" compound no longer exist and has been replaced by the following new compounds:
      • emRPC
      • emRPC Settings Particle
      • emRPC Settings Strand
      • emRPC Settings Shadow
      • emRPC Simple Shadow Caster
    • CONCERNING COMPATIBILITY TO VERSION 2.25 AND BELOW:
      • the node and compounds are NOT backward compatible with the old node and the old compounds.
        If you load a scene that uses emRPC 2.25 or below then you will have to replace the old compounds with the new ones.
    • main functionality / bug fixes:
      • local point positions are converted into global space before they are passed to the renderer,
        so that point clouds can now be moved/scaled/rotated.
      • the progress bar has been fixed and now works fine.
      • emRPC outputs an error message whenever unsupported camera or pass settings are used.
      • it now is possible to choose "append nothing to Filename" for the parameter "append this to filename".
  • New in Version 3.05:

    • new features:
      • the file format OpenEXR from ILM is now supported (only implemented for Win 64 bit).
      • a pixel ratio other than 1.0 is now allowed. Allowed value range: 1.0 to 2.0.
    • bug fixes:
      • emRPC no longer crashes when a point cloud has no particles and "OGL Preview" is enabled.
      • memory sizes are now correctly calculated (no more issues when rendering really many particles).
      • light sources are now correctly gathered for the next version of 2010 SP1.
Render Settings, Limitations and Remarks

  • Render Settings (from XSI's current pass)

    The following parameters of the current pass are used for rendering (anything not listed here is ignored):
    -the output path + filename + padding.
    -skip rendered frames.
    -the output resolution.
    -premultiply with alpha.
    -the camera.

  • Camera Settings

    The following parameters of the current passes camera are used for rendering (anything not listed here is ignored):
    -global SRT (position, orientation and scaling).
    -field of view.
    -clipping plane near.
    -clipping plane far.

  • Limitations

    This plug-in renders only the point cloud to which it belongs, nothing else. Polygon meshes can be used as masks, though.

Epilogue: Thanks

Special thanks to my friend Oliver Weingarten who constantly feeds me with advice, bug reports, animations,
cool ideas, etc. !