Object model methods for finding objects


The Softimage 2011 Subscription Advantage Pack includes new methods for finding objects.

These FindObjects methods are more efficient than X3DObject.FindChildren, because the FindObjects methods don’t go through the scene hierarchy (they go directly to an internal database of objects).

Model.FindObjects( siClassID )
Finds all objects under the model that match a specified class ID (for example, all shaders or all ICE Trees). For example:

 # Enumerate all shaders under the scene root.
 from win32com.client import constants as c
 shaders = Application.ActiveSceneRoot.FindObjects( c.siShaderID )
 for s in shaders:
 	LogMessage( s.ProgID )
 # INFO : Softimage.soft_light.1.0

Supported siClassIDs:
siCameraID | siClusterID | siClusterPropertyID | siConstraintID | siCustomOperatorID | siCustomPropertyID | siEnvelopeID | siEnvelopeWeightID | siExpressionID | siGeometryID | siGroupID | siICETreeID | siLightID | siMaterialID | siModelID | siNullID | siNurbsSurfaceMeshID | siNurbsCurveListID | siOperatorID | siPolygonMeshID | siPropertyID | siShaderID | siShapeKeyID | siX3DObjectID

Application.FindObjects( siClassID )
Finds all objects that match a specified class ID. For example:

from win32com.client import constants as c
oICETrees = Application.ActiveSceneRoot.FindObjects( c.siICETreeID )
for x in oICETrees:
 	LogMessage( x.Nodes.Count )

Supported siClassIDs:
siCameraID | siClusterID | siClusterPropertyID | siConstraintID | siCustomOperatorID | siCustomPropertyID | siEnvelopeID | siEnvelopeWeightID | siExpressionID | siGeometryID | siGroupID | siICETreeID | siImageClipID | siLayerID | siLightID | siMaterialID | siModelID | siNullID | siNurbsSurfaceMeshID | siNurbsCurveListID | siOperatorID | siPassID | siPolygonMeshID | siPropertyID | siShaderID | siShapeKeyID | siX3DObjectID

Model.FindObjectsFomCLSID( sCLSID )
Finds all objects that match a specified CLSID. You can determine the CLSID of an object using XSIUtils.DataRepository () or by inspecting Softimage objects with the SDK Explorer.

# Enumerate all visibility properties under the scene root.
 props = Application.ActiveSceneRoot.FindObjectsFromCLSID( "{11EBE301-A20C-11D0-8478-00A024C7919C}" )
 for vis in props:
 	LogMessage( vis.FullName )
 # INFO : Camera_Root.visibility
 # INFO : Views.ViewC.SpotCamera.visibility
 # INFO : Camera.visibility
 # INFO : Views.ViewB.SpotCamera.visibility
 # INFO : Camera_Interest.visibility
 # INFO : Views.ViewD.SpotCamera.visibility
 # INFO : Views.ViewA.SpotCamera.visibility
 # INFO : light.visibility

C++ versions:

Python: importing modules into plugins


New in the Softimage 2011 Subscription Advantage Pack

The siutils Python module makes it easier to import modules into your self-installing plugins. Just put your modules in the same location as your plugin file , and you can use the __sipath__ variable to specify the module location.

__sipath__ is always defined in the plugin namespace, so no matter where you put a plugin, you can simply use __sipath__ to specify the location.

Here’s a simple example that shows how to import a module into your plugin.

  • Line 04: Import the siutils module
  • Line 39: Use add_to_syspath() to add __sipath__ to the Python sys path.
    If the module was located in a subfolder of the plugin location, you could use siutils.add_subfolder_to_syspath( __sipath__, ‘mysubfolder’ )

  • Line 40: Import the module
import win32com.client
from win32com.client import constants

import siutils

null = None
false = 0
true = 1

def XSILoadPlugin( in_reg ):
	in_reg.Author = "blairs"
	in_reg.Name = "TestPlugin"
	in_reg.Major = 1
	in_reg.Minor = 0

	in_reg.RegisterCommand("Test","Test")
	#RegistrationInsertionPoint - do not remove this line

	return true

def XSIUnloadPlugin( in_reg ):
	strPluginName = in_reg.Name
	Application.LogMessage(str(strPluginName) + str(" has been unloaded."),constants.siVerbose)
	return true

def Test_Init( in_ctxt ):
	oCmd = in_ctxt.Source
	oCmd.Description = ""
	oCmd.ReturnValue = true

	return true

def Test_Execute(  ):

	Application.LogMessage("Test_Execute called",constants.siVerbose)

#	print __sipath__ 

	siutils.add_to_syspath( __sipath__ )
	import TestModule
	TestModule.test( "hello world" )

	return true

Connect to workgroups with a .data file


New in the Softimage 2011 Subscription Advantage Pack
You can now use a workgroup_path.data file to specify your workgroups.

At startup, Softimage scans the Factory (installation) and User folders for a workgroup_path.data file, and connects to all the workgroups listed in that file.

The workgroup_path.data file is a plain text file that can contain multiple directory paths. Each path must be added on a separate line and each line must end with a newline character. For example:

C:\Users\blairs\Documents\Support\Workgroups\studioNEST
\\server\Softimage\workgroups\Shaders

Softimage 2011 Subscription Advantage Pack (incl Lagoa) is available


Sign in to the Subscription Center and get it now.
autodeskcom/subscriptionlogin

You don’t need a new serial number. The Subscription Advantage Pack (aka SAP or 2011.5) runs with your 2011 license. So, if you have a Network license, just point 2011.5 to your license server. If you have a Standalone license, enter your 2011 serial number at startup.

Just add ICE


As you’ve probably heard, the Autodesk Entertainment Creation Premium Suites include Softimage and some new interoperability technology that allows users to transfer ICE effects into Maya or 3ds Max.

I recently had a chance to check this out when I was asked to give a quick training session to the Maya support team.

Long story short, the way it works is that from Maya you can send geometry (via FBX) to Softimage, and Softimage sends back ICE effects (particle effects or deformations) via nCache. There’s plugins in both Maya and Softimage that care of the details, so in Maya you simply select some objects and click Send to Softimage (or Update/Add if you want to add new objects to an existing scene). In Softimage, you create the ICE effect and then click Update Maya, and the ICE effects are cached out and the Maya scene is updated to use the cached effects.

http://area.autodesk.com/userdata/static/ibc10/pr/Autodesk_Suites_Premium.pdf

Autodesk Softimage software, featuring the Interactive Creative Environment (ICE) to help in the creation of more sophisticated effects that can be integrated into Maya and 3ds Max through new ICE interoperability technology…

http://investors.autodesk.com/phoenix.zhtml?c=117861&p=irol-newsArticle&ID=1452020&highlight=

Featuring sophisticated cross-product integration, the Premium Suites also allow users to transfer Softimage ICE effects to Maya or 3ds Max with a simple menu click.

http://autodesk.com/entertainmentcreationsuites

Export ICE effects … to Maya for greater flexibility

Who gets the Subscription Advantage Pack?


As you can probably tell from the name “Subscription Advantage Pack”, any Softimage customer on Subscription gets the Subscription Advantage Pack (SAP).

If your Subscription expires within a month of the SAP release, you’ll still be able to download the SAP.

If you purchase Softimage with no Subcription after the SAP, you don’t get the SAP, you get 2011SP1.

The case of the missing Lagoa


Why aren’t Lagoa and Matchmover mentioned on the Softimage SAP page? Is this omission ominous?

If you ask me, most likely that copy was written when the legal stuff was still being ironed out. I don’t think the omission means anything. You’ll notice that Lagoa is still mentioned on the AREA and on the Autodesk youtube channel (where you can see all the 2011 SAP feature videos).

But Lagoa and Matchmover are still in at the time of this posting. Since it hasn’t been released, there’s always some possibility something could happen, but right now, all I know is that they are still in.

btw, the friendly URL for the Softimage SAP page is autodesk.com/advantagepack-softimage. These advantage pack pages are for us at Autodesk to send out to customers when we tell them the SAP is available.