Some site news…
In less than two weeks, I’ll be going on a three-week vacation. I’ve scheduled Friday Flashbacks to automatically post while I’m away, plus a few other posts here and there. I probably won’t be checking in during that time 🙂
Friday Flashback #117
March 2000 SOFTIMAGE|3D 3.9 was the first release distributed via “the world wide web”.
The SOFTIMAGE|3D Version 3.9 release also represents a milestone for the company as it will be the first ever release that Softimage distributes to customers via the world wide web. Rather than waiting the customary 6-8 weeks that it takes for reproduction and shipping, customers under a valid support contract will be able to log on to the Softimage Support web site to download the software.
ISIVTCollections, output arguments, and implicit return values
Commands that don’t explicitly define a return value, but do have output arguments, have an implicit return value: an ISIVTCollection.
The ISIVTCollection is a “special type of collection”, but it may help to think of it as [something like] a dictionary. An ISVTCollection holds a collection of key, value pairs (like a Python dictionary). You use the key names, like “Value”, to extract the associated value.
For example, the PickElement command has three “output arguments”; that is, parameters that return some value. These output arguments are PickedElement, ButtonPressed, and ModifierPressed.
So PickElement returns an ISIVTCollection collection with three key-value pairs. The keys are “PickedElement”, “ButtonPressed”, and “ModifierPressed”.
You can use the ISIVTCollection.Value method to get the value of a key:
from sipyutils import si # win32com.client.Dispatch('XSI.Application')
from sipyutils import log # LogMessage
from sipyutils import C # win32com.client.constants
si = si()
vtcol = si.PickElement(C.siObjectFilter, "Pick deformer")
button = vtcol.Value( "ButtonPressed" )
modkey = vtcol.Value( "ModifierPressed" )
o = vtcol.Value( "PickedElement" )
There’s also an Item property, but like most Item properties it fails in Python:
vtcol = si.PickElement(C.siObjectFilter, "Pick deformer") o = vtcol.Item( "PickedElement" ) # ERROR : Traceback (most recent call last): # File "<Script Block >", line 7, in <module> # o = vtcol.Item( "PickedElement" ) # TypeError: 'NoneType' object is not callable
Fortunately, Item is the default property, so you can omit it:
vtcol = si.PickElement(C.siObjectFilter, "Pick deformer") o = vtcol( "PickedElement" )
You can also use an integer index instead of the key string. It just so happens that ISIVTCollections are sorted by key name (case insensitive), so you can work out which index to use.
# ISIVTCollection is sorted by name (case insensitive) # 0 = ButtonPressed # 1 = ModifierPressed # 2 = PickedElement o = si.PickElement(C.siObjectFilter, "Pick deformer")(2) print ( si.ClassName(o) ) # X3DObject
Wednesday word cloud: DSScripts functions
There are 770 functions in the VBS files in $XSI_HOME\Application\DSScripts. Here’s a word cloud of the function names. To create the word cloud, I took the camel-case names like SetCameraSequencerLayoutProc and split them into Set, Camera, Sequencer, Layout, and Proc.
Proc indicates a function that is the implementation of a command. So the command SetCameraSequencerLayout would ultimately end up running SetCameraSequencerLayoutProc. So you see a lot of commands are actually implemented in VBS 🙂
Unlimited batch rendering with xsibatch -processing
Hat tip: Andy Jones on the Softimage mailing list
You can use xsibatch -processing to render scenes with third-party renderers like Arnold. With -processing, xsibatch uses a Processing token instead of a Batch license, so you’re not limited by the number of Batch licenses you happen to have. Back in the days before third-party renderers, -processing for was for non-rendering tasks. Now it’s for non-mental ray tasks!
I was sure I tested this long ago, but obviously I must have made a mistake on my command line.
xsibatch -processing -render //server/project/Scenes/example.scn ======================================================= Autodesk Softimage 11.1.57.0 ======================================================= License information: using [Processing] # INFO : [sitoa] SItoA 2.7.1 win loaded. # INFO : [sitoa] Arnold 4.0.12.1 detected.
Here’s actual proof in the form of a screenshot 🙂
Starting the license server service from a batch file
It’s rare, but the occasional customer has a problem where the license server keeps stopping (for example, after the computer goes to sleep). Normally the license service should always be running, but if you were really stuck and needed a workaround, you could add something to XSI.bat to start the license server before starting xsi.exe.
For example, here’s something I got from stackoverflow. You probably could just call sc start; if the service is already running, sc will just report that and nothing bad will happen.
@echo off
for /F "tokens=3 delims=: " %%H in ('sc query "Softimage License Server" ^| findstr "STATE"') do (
if /I "%%H" NEQ "RUNNING" (
sc start "Softimage License Server"
echo "Starting Softimage License Server"
)
)
The service name (on lines 2 and 4) is the same name you specified in LMTOOLS:

Screenshots of the week
Sector/Segment Area
by Sue Sauer



Mechanical Rigging – Bike Chain Setup
by TD Survival
https://vimeo.com/64144489
Neighbours of Neighbours
by iamVFX

New LK Lightning Tutorials
aking Character Animation using Softimage 2014 Camera Sequencer
by SUN @ SI_UsersNotes
Friday Flashback #116
Marketing collateral for SOFTIMAGE|DS (from the Avid days).

I was originally hired at Softimage to be the lead writer on the DS documentation. That never happened. I sat around for months reading specs, going to meetings, and endlessly preparing doc plans, until I was drafted into doing some actual writing work on DKit. Then I moved on to the SOFTIMAGE|SDK, and I never did work on the DS docs, except for the DS|SDK.
Compiled CHM version of the Softimage 2014 SDK guide
Here’s a compiled CHM version of the XSI SDK guide.
There’s no index, but you can always use Search with Search titles only enabled. If I can find my old python scripts, maybe I’ll get around to adding one (but it will just be an index of objects, methods, and properties).

This year I tried the Maxscript 2013 Help CHM creator, but really all that got me was the TOC for the Programmer’s Guide. I still had to add the Ref Guide TOC, and fix up the scripting errors, and remove the unneeded navigation buttons. I do all that with a few global search and replaces.




