The odd case of Maya Help opening in Chrome instead of the default browser


The other day, I noticed that the Maya Help was using Chrome instead of my default browser (currently IE). I didn’t see anything in the docs about specifying a specific browser, so I figured it must be something about my system.

So, like I often do, I fired up Process Monitor to see if I could figure out why. And it was pretty simple.

I found that

HKEY_CURRENT_USER\Software\Classes\.htm

was set to

ChromeHTML

even though my default browser was IE.

So I changed it back to htmlfile, and voila, Maya 2012 opened the online help in IE again. There are other, similar keys, but I didn’t touch them:

HKEY_CURRENT_USER\Software\Classes\.html
HKEY_CURRENT_USER\Software\Classes\.html
HKEY_CURRENT_USER\Software\Classes\.shtml
HKEY_CURRENT_USER\Software\Classes\.xht
HKEY_CURRENT_USER\Software\Classes\.xhtml
HKEY_CLASSES_ROOT\.html

Here’s a video walk through that shows how Process Monitor can be used to diagnose and troubleshoot this kind of problem.
http://vimeo.com/31272761

Friday Flashback #41


Back in 1994, the Softimage|3D product was known as “Creative Environment”.
Here’s something from a Creative Environment marketing brochure that was based on the phrase “Creating the 3D World”. Note the big Softimage/little Microsoft logo.

Click the image to get a more legible version…

Using animated nulls with Syflex Mimic Null


In the Mimicking the Constraining Object Using Nulls section of the docs, it says that you can

…use a null’s size, shape, and location (animated or not) to determine the area of the cloth’s or curve’s vertices that are constrained. All the vertices that are within the null object’s space are used for mimicking the constraining object, which can be deforming. You could then animate the location or size of the null to create different constraint effects.

That sounds easy enough, but the other day a customer reported that he couldn’t get this to work. It seemed that Syflex Mimic Null was using only the vertices within the null at the start of the simulation.

He sent along a nice test scene for us to work with, so we were able to get him an answer pretty quickly: you need to go into the Syflex Mimic Null compound and select the Reset checkbox on the syflexIMimic node.

Do that, and you’ll get this kind of effect, where as the null position and scaling change, different vertices are constrained to the object being mimicked.

Quick peek under the covers: Send To functionality


Send To isn’t really something you can implement yourself. It’s a combination of application code, plugins, and an inter-application hub.

OneClick plugins take care of the Send To commands. In Softimage, you can use the Plug-in Manager to check out the OneClick plugin (it’s under the Factory location):

In Maya, there’s also a OneClick plugin. It’s not set to auto-load, so if you have problems connecting to Maya, try going into the Maya Plugin Manager and loading OneClick.mll.

The inter-application hub that handles things like finding running instances of an application, starting applications, and passing messages between applications. The inter-application hub uses a set of XML configuration files to describe the applications available on the local system.

You can find these .syncfg files in %PROGRAMDATA%\Autodesk\Synergy.

For supported inter-application workflows, these .syncfg files determine what Send To menu commands are available. For example, Softimage will check for .syncfg files for Maya, 3ds Max, and Mudbox, and if it finds the right versions, add the Send To commands to the File menu.

The .syncfg files are created and destroyed as you install and remove Autodesk applications.

On older versions of Windows where the location of the .syncfg file contains non-ascii characters, you may need to set the SYNHUB_CONFIG_PATH environment variable to specify the location.

IMO, you shouldn’t be messing about with the .syncfg files themselves, despite what this KB article says. For example, you can’t get Mudbox 2012 to send to Softimage 2011 by hacking the .syncfg files…Softimage 2011 just doesn’t support the Mudbox workflow, that was introduced later.

Getting equidistant points on a curve revisited


I had posted something on this before, but I used a Repeat node because Get Curve Distance from Curve Location doesn’t take an array of Distance Values.

Recently, Gray posted another approach on the XSI mailing list. While using Curve Distance to Curve Location will give you greater accuracy, this approach has the advantage of simplicity and no Repeat node:

The other day it occurred to me that maybe I could get rid of my Repeat node by using a point cloud:

  • Use a per-point attribute to hold the different curve distance values.
  • Then feed that per-point data set into the Distance Value port of the Curve Distance to Curve Location node

Here’s my ICE tree (which is on the point cloud, not the curve):

It looks like it should work, but it doesn’t. Something goes wrong when I do the Set Point Position…all the odd-numbered points end up positioned at the end of the curve.

If I disconnect the Set Point Position node, and debug the tree, it looks like I’m getting all the right locations and points. So, for now, I’m stuck thinking I’m doing something wrong, but I haven’t figured it out yet…

Interpolating between array elements


On the XSI mailing list last week, there was a question about “resizing an array using interpolation”.
The goal was to resize an array by interpolating between the elements of the original array.
For example, given this array:

[0, 5, 10]

how to you get this array ?

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Alan Fregtman suggested bezier interpolation with the Fit Bezier Curve compound. I gave it a try, and here’s a screenshot. I added a branch to go back to a scalar array from the vector array.

Tip: Selecting objects from inside an ICE Tree view


ICE tree views are typically locked, so that they don’t constantly update while you’re working with a scene and selecting different objects. But what do you do if you want to select an object referenced in the ICE tree? Do you have to hunt down the object in the explorer?

Nope. As of 2011.5, you can right-click a Get Data node to select the referenced object.

This works with the self, this_model and this_parent tokens too.

It also works on an Get Data inside a compound, if the Get Data In Name is connected to a valid reference. So, you don’t need to exit a compound just to select an input object.

hat tip: Guillaume Laforge

Friday Flashback #40



Thanks to Hirazi Blue for suggesting this flashback.

The initial goal of project MoonDust was to develop a new particle simulation system for XSI. The existing particle system, which had been in XSI since v1.0, had reached its limits. It was a monolithic system that wasn’t flexible or customizable enough (eg available events and attributes hard coded into the system).

I never had to learn the old particle system. There weren’t that many support cases about it, and MoonDust was always just around the corner. I just remember the old particles as a jumbled forest of PPGs and parameters. See for yourself…here’s some screenshots of the old particle system:

It’s interesting to compare how things worked before:

and after:

However, the scope of the project eventually grew into the development of a procedural graph system.