SoftImage Tips and Tricks

gregw@wdi.disney.com
updated 2/26/2002

The following document contains certain advice for getting models and animations through the
soft2egg converter in one piece. Some of these restraints are due to differences between Panda
and SoftImage and some are workarounds for SoftImage idiosyncrasies. The first section is advice
for set-up, modelling, and animation. The second section describes some frequently seen problems
after conversion attempts. If you have any questions please don't hesitate to ask.

Section I - Set-up

Hierarchy naming:

The converter needs to ignore most of the constraint hierarchies and they are not always
flagged invisible so the code will ignore any nodes (and anything below them) with the
following strings in their names:

con-
con_
fing-
eyes-
faces-
head-
camRIG
bars

If you don't do this, the converter will make geometry for the sliders and the camera. I freely
admit there is some kruft in this keyword list.

Model naming:

Try to make the models have consistent names through the revision process. SoftImage is
terrible about appending version numbers onto everything in the scene file (null12_1_1, etc.)
Each time a model name changes it's highly likely that a makefile or the show code will break.
While it is possible to "fix" this with wildcards (null12*) it is undesirable as this is no longer
unique and can cause other problems.

NURBS Textures:

Textures applied to closed NURBS surfaces in Soft will have problems in Panda. This is because
Soft uses phantom vertices in their NURBS representation and this seems to affect where they
start and stop applying the texture. This can be fixed by shifting the NURBS parameterization.
You can do this on the surface in question through the Soft GUI, or you can do for all surfaces
in the scene upon conversion with the "-x" option to soft2egg.

Model scale:

It seems the general convention here in the VR Studio has been for the animators to scale the
character models up by a factor of four while animating. I believe this is because Soft has limited
precision. Thus models should be scaled by a factor of one fourth to look right in Panda.

Non-uniform scaling of joints:

A non-uniform scale is one that is not the same in all three axes (ie x=1, y=1, z=0.5). If an
animation puts a non-uniform scale on any joint then you must place the key word "scale-" in
the name of the joint that does that scale.

Face shape trickiness:

Currently SAAPHIRE (the SoftImage API) is broken when it comes to reading expressions
which determine shape weights. Because of this you MUST put the expressions in strict order
of the shape numbers they affect (ie the expression for shape 0 must be before 1, etc.)

Animating Nulls:

When constructing a skeleton for the player the converter looks at the skeleton nodes in Soft.
If you are animating a null directly through some relationship you need to make the converter
aware of that by flagging the null with the prefix "joint-" in its name. Alternatively, you can
do a "GroupAsSkeleton" on the null in question to make it actually part of the skeleton. It will
then have a tiny "Skel" above the node in the Soft's schematic view.

The Minus One Frame:

Our animation system works by computing offsets from a neutral pose in the -1 frame of the
scene file. If the character is not in the "jesus pose" at frame "-1" all bets are off. Animation
should not start on anything in the scene until frame "1".

Section II - Known Pathologies

Part not where it should be:

Frequently Soft does not update the position of parts that are moved and skinned. It will look
right in Soft until you cut it out of the hierarchy. If the geometry stays where it is after cutting
it is fine. If it pops to a different position it will be problematic. We never did find a way to make
Soft update its position but we did find a fix: do a "duplicate immediate" on the geometry while
it is in the correct position; cut out the old geometry and delete it; skin up the new copy you just
made.

Part stretched out while animating:

If you put a non-uniform scale on a joint and don't tag it as described above it will most likely
be extremely stretched out and creepy looking on playback (like Edward Scissorhands). There are
other things that can cause this too (like scaling an egg model and not the egg anim channel and
vice versa). But when in doubt, throw in the "scale-" flag.