Over 10 billion served?


I notice the SR number for my last service request was 1-10019581901.

Has Autodesk really had 10 billion service requests?

I checked out the SRs (service request) for today, I see that the SR numbers aren’t sequential:

1-10003606461
1-10003606471
1-10003606481
1-10003606501
1-10003606521
1-10003606541
1-10003606560
1-10003606566
1-10008631466
1-10010742572
…and so on

So “no”, we haven’t handled over 10 billion service requests.

PPG doesn’t pop up automatically when you create a null


A customer mentioned to me the other day that the PPG didn’t pop up when he created a null.

It turns out we never pop-up the PPG when you create a null. I just never noticed that.
To verify that, I checked the implementation of GetPrim, which is the script GetPrimProc in %XSI_HOME%\Application\DSScripts\primitives.vbs.

In GetPrimProc, you’ll see that we skip nulls when we call AutoInspect:

'--------------------------------------------------------------------
' Inspect the new object
'--------------------------------------------------------------------
if Not TypeName (out_primitive) = "Nothing" then
	if  Not out_primitive.type = "null" then
		AutoInspect GetPrimProc, ,, "General"
	end if
end if

The customer also had another problem: pressing ENTER didn’t open up the PPG either, or if it did, all he got was a numeric slider for setting the Icon. Restarting Softimage fixed this; my guess is that the cached PPG layout was corrupted somehow (Softimage caches PPG layout definitions–if you’ve spent any time coding custom properties you’ve probably noticed how the PPGs of existing properties don’t change when you change the layout code).

Finding all Store in Channel shaders


// Get all shaders
var x = FindObjects(null, "{6495C5C1-FD18-474E-9703-AEA66631F7A7}" );
LogMessage( x.Count );
var oShaderCollection = new ActiveXObject( "XSI.Collection" );

// Build up a collection of all Store in Channel shaders
oEnum = new Enumerator( x ) ;
for (;!oEnum.atEnd();oEnum.moveNext() )
{
	var oShader = oEnum.item() ;
	try {
		//LogMessage( oShader.ProgID );
		if ( oShader.ProgID.indexOf( "_storeinchannel" ) > 0 )
		{
			oShaderCollection.Add( oShader );
		}

	}
	catch(e)
	{
		LogMessage(e.message);
	}
}


LogMessage( oShaderCollection.Count );

Crash when you open the render tree or Material Manager


Some users have reported crashes when they open the render tree or Material Manager. For some users, this happens after a period of extended usage; for others, it appears to be scene- or geometry-specific.

I’ve had users send me scenes with geometry that appeared to crash the render tree and Material Manager, but when I tried on my machine, everything worked fine. So, it’s a bit of a mystery.

There is a workaround however: open the render tree and Material Manager before you load your scene. After that, you can work normally.

You could use an OnStartup event to automatically open those views when Softimage starts. I believe you could just open and close them at startup, and then everything will be ok afterwards.

VBScript compilation errors with Python PPG logic


On a machine that has Softimage 2011 or 2011 SP1 installed, but not Python, you’ll get VBScript compilation errors when you run a script or plugin that uses Python for the PPGLayout.Logic of a dynamic (on-the-fly) property. For example, running this script

xsi = Application
oRoot = xsi.ActiveSceneRoot
oProp = oRoot.AddProperty("CustomProperty", False, "test")
oLayout = oProp.PPGLayout
oLayout.Language = "Python"
oLayout.Logic ="""
Application.LogMessage('Hello world')
"""
xsi.InspectObj( oProp )

will give this VBScript syntax error:

# ERROR : Syntax error - [line 2]
# ERROR : Property Page Script Logic Error (Microsoft VBScript compilation error)
# ERROR :    [1] (null)
# ERROR :   >[2] Application.LogMessage('Hello world')
# ERROR :    [3] (null)
# ERROR : 	Syntax error

This happens because Softimage 2011 doesn’t detect the Python installed with Softimage, so it falls back to the default VBScript when it tries to execute the Python PPG.Logic code. However, Python works as usual in all other respects (note that the above errors are logged as Python comments!).

You can workaround this by setting PPGLayout.Language to “pythonscript”.

Or you could leave the Language set to “Python” and add these registry entries to your system.
This way you don’t have to update existing code.

[HKEY_CLASSES_ROOT\Python]
@="Python ActiveX Scripting Engine"

[HKEY_CLASSES_ROOT\Python\CLSID]
@="{DF630910-1C1D-11d0-AE36-8C0F5E000000}"

[HKEY_CLASSES_ROOT\Python\CurVer]
@="Python.AXScript.2"
[HKEY_CLASSES_ROOT\Python\OLEScript]

To add the registry entries, save the above in a .reg file and then double-click it.

JALSR: Just another licensing service request


Phone call from a customer who upgraded to Windows 7 and now gets “no interactive network license”.

  1. Ask whether license manager was reinstalled, and whether the license was installed. Yes.
  2. This is Softimage 2010 on Windows 7, so edit setenv.bat and change _ADSK_LicServers to @127.0.0.1 (Softimage 2011 automatically falls back on 127.0.0.1, so for 2011 I wouldn’t have to bother with this).
  3. Still can’t start Softimage. Disable firewall to quickly test whether ports are being blocked (telnet not installed on Windows 7 by default, so it’s quicker to just disable the firewall temporarily).
  4. Still cannot start, but it doesn’t appear to be a network connectivity issue. So check SoftimageLicense.log: it says “cannot connect to server”. So, server is probably not running.
  5. Start LMTOOLS and do a Perform Status Enquiry. Yup, server not running.
  6. Start Server, click Perform Status Enquiry to double-check
  7. Start Softimage. It works!
  8. Check that Start Server at Power Up is enabled. It’s not. Neither is “Run as Service”. Very strange. The server shouldn’t have started!!! Oh well. Select both check boxes.
  9. All done, except for the paperwork (case notes, final email, …)

ICE: Looping over group members and setting data


You can get data from the members of a group, and even loop over that data, but you cannot set data on individual group members. I’ve seen this question come up on several forums, mailing lists, and beta lists. You can’t store a reference in an attribute (so you can get it later and plug it into Set Data). You can store a string (eg the object name) in a string, but you cannot convert a string into a reference. And you can’t plug your Get Group into a Set Data.

Things like references and execute ports are part of the pre-evaluation stage. They must be resolved before the ICE tree is evaluated. Everything else in the ICE tree is the stuff that has to be constantly re-evaluated. So driving a reference port with another ICE node doesn’t really fit into the way ICE was designed to work.

For something like (resolving connections), you’re better off using a script to set up your ICE trees.

PS – Looping itself doesn’t seem that hard to figure out.

Lagoa & the Autodesk Subscription Advantage Pack for Softimage 2011


I see that Mark Schoennagel has let the cat out of the bag about Lagoa and the upcoming Advantage Pack release.

So, what’s an Advantage Pack ? It’s basically a collection of product enhancements and new features (like Lagoa) that are available exclusively to Subscription customers. The idea is to increase the [perceived] value of Subscription to customers.

There’s more to the Advantage Pack than Lagoa, but [unlike Mark] I can’t pre-announce stuff ;-) I’ve got to wait for the official announcements.