SOFTIMAGE “Sumatra” (code-name) RC2 disk

Posted on Facebook by Manny P
Softimage 2015 User Guide compiled help file
It took a bit more work this year, but here’s a CHM version (210MB) of the Softimage 2015 User Guide.

The User Guide is available online , and you can also download an offline HTML version.
Update: If you don’t see any content in the right-hand pane, right-click the .chm file in Explorer, and click Unblock.

The CHM version has a better index. I was able to use all the index entries, not just the top-level entries. See the difference in the screenshot below?

This year, I had to generate the CHM toc and index from these huge JScript arrays of anonymous objects. It was actually pretty simple, I just needed one little recursive function to handle arrays that look something like this:
ixdata = [
{ l: '', c: [
{ l: '_ADSK_LicServers', f: './files/distrib_render_SettingUpForDistributedRendering.htm'},
{ l: '.motor (normalized motion) files', f: './files/mocap_SavingAnimationDatainNormalizedMotionFiles.htm'},
{ l: '.xsi_n.n (Linux environment script), editing environment variables', f: './files/configfiles_EditingtheEnvironmentScriptsetenvbatand.htm'}
]},
{ l: '', c: [
{ l: '2-point constraints', f: './files/constraints_ConstraintsbetweenPoints.htm'},
{ l: '2D and 3D chains', f: './files/char_skel_WhatMakesUpaSkeleton.htm'},
{ l: '2D motion blur', f: './files/cam_motion_blur.htm'},
{ l: '2D paint', f: './files/compfx_paint.htm'
,c: [
{ l: 'also raster paint, vector paint', f: './files/compfx_paint.htm'},
{ l: 'background color', f: './files/2D_paint_GettingStartedPaintingonImages.htm'},
{ l: 'brush cursor', f: './files/2D_paint_GettingStartedPaintingonImages.htm'},
Wednesday word cloud
Word cloud for the 2015 Release Notes, which lists the bug fixes (216) and known issues (12). I took the top 50 words and removed a few.

Top 25 or so words in the Softimage 2015 What’s New section.

Softimage 2015 Install Now
Friday Flashback #167
From Feb 2003, an xsibase interview With The Mill’s Jordi Bares And Stephen Venning about using Softimage|XSI to bring buffalos to life in the Levi’s Stampede Commercial.
How to check if an object exists with no error handling
Yes, this old chestnut…I thought I had posted this ages ago, but I don’t see in the archives, so:
If you want to check if an object exists, and you don’t want to deal with any error handling, then do it this way:
from sipyutils import disp # win32com.client.Dispatch
def objExists( name ):
c = disp( "XSI.Collection" )
c.Items = name
return not( c.Count == 0 )
print 'Object does exist' if objExists( "XSI_Man.geom" ) else 'Does not exist'
Getting the plugin path
You can use the OriginPath property to get the location of a plugin, but OriginPath is available in the scope of a plugin callback only.
__sifile__ and __sipath__, however, can be used in the global scope.
import win32com.client from win32com.client import constants import sipyutils Application.LogMessage( "Global: __sipath__=%s" % __sipath__ ) Application.LogMessage( "Global: __sifile__=%s" % __sifile__ ) null = None false = 0 true = 1 def XSILoadPlugin( in_reg ): in_reg.Author = "SOLIDANGLE" in_reg.Name = "TestPlugin" in_reg.Major = 1 in_reg.Minor = 0 #Register plugin items Application.LogMessage( "XSILoadPlugin: __sipath__=%s" % __sipath__ ) Application.LogMessage( "XSILoadPlugin: __sifile__=%s" % __sifile__ ) Application.LogMessage( "XSILoadPlugin: in_reg.OriginPath=%s" % in_reg.OriginPath ) return true
The above will output something like the following:
# INFO : Global: __sipath__=C:\Users\SOLIDANGLE\Autodesk\Softimage_2015\Application\Plugins # INFO : Global: __sifile__=C:\Users\SOLIDANGLE\Autodesk\Softimage_2015\Application\Plugins\TestPlugin.py # INFO : XSILoadPlugin: __sipath__=C:\Users\SOLIDANGLE\Autodesk\Softimage_2015\Application\Plugins # INFO : XSILoadPlugin: __sifile__=C:\Users\SOLIDANGLE\Autodesk\Softimage_2015\Application\Plugins\TestPlugin.py # INFO : XSILoadPlugin: in_reg.OriginPath=C:\Users\SOLIDANGLE\Autodesk\Softimage_2015\Application\Plugins\
Friday Flashback #166
ICE: Getting the edge index of the longest edge
For each polygon, I want to get the EdgeIndex of the longest edge (ultimately, I want to get the midpoint of the longest edge for each polygon).
Being literal-minded, I started by getting the length of the longest edge for each polygon:

Here’s a Show Values to show it works:

From there, I hacked my way to the edge index:

The Show Values:

For my second try at getting the index of the longest edge, I stopped trying to go from the length back to the index. I think this is a little better approach:








