Friday Flashback #272


Action Synthèse drops Max for Softimage on The Magic Roundabout

action_synthese.png

Softimage Spins Magic Roundabout Movie
Ryan Ball Feb 5th, 2003 Animation Magazine

In creating animation for the upcoming CG feature version of the 1960s cult European TV series The Magic Roundabout, French animation studio Action Synthèse has chosen to use Softimage’s 3D software, SOFTIMAGE|XSI.

Scheduled for release in France and the U.K. in 2004, Action France and Pathé U.K.’s The Magic Roundabout will feature all original characters and two all-new additions. Australian pop star Kylie Minogue will lend her voice to cartoon character Florence. Fellow singer Robbie Williams will provide the voice for Dougal, the world-weary, shaggy dog and Absolutely Fabulous star Joanna Lumley will be Ermintrude, the whimsical cow.

Two years into the project, Action Synthèse decided to switch from Discreet’s 3ds max to SOFTIMAGE|XSI, using the 3ds max to XSI converter tool to bring existing content into the restructured 3D pipeline.

The production, underway at Action Synthèse’s recently expanded facilities in Marseilles, in the South of France, is employing more than 50 HP workstations running the SOFTIMAGE|XSI and 40 licenses of SOFTIMAGE|XSI Batch, Softimage’s batch processing & rendering solution.

According to the studio, the hair and fur tools of SOFTIMAGE|XSI have been instrumental in creating Dougal the dog’s signature long-haired coat.

A significant portion of the movie takes place in a winter land, featuring snow, glaciers, and even an ice castle. To re-create the unique feel of winter light and ice reflections while keeping rendering times under control, the team at Action Synthèse is relying on the interactive renderer within SOFTIMAGE|XSI. The new image-based lighting pass in version 3.0 allows the digital artists to generate entire lighting environments based on images or sequences.

The case of the missing entry point


In this case, a Softimage user running Composite 2013 was getting the following error when he started Composite:

---------------------------
composite.exe - Entry Point Not Found
---------------------------
The procedure entry point 
?Initialize@CMLFacade@@SAXPEAVCMLWaypoint@@PEB_W11HI_J2_N1@Z 
could not be located in the dynamic link library MC3.dll. 
---------------------------
OK   
---------------------------

The short story is that 3ds Max 2010 was causing this problem with Composite 2013. Here’s the long story…

A “procedure entry point” is basically a function (or method) defined in the DLL. In this case, Composite is trying to call a certain Initialize function in MC3.dll, but that Initialize function isn’t there.

More specifically, Composite is trying to call the Initialize member function of a CMLFacade object. All the other stuff (@@SAXPEAVCMLWaypoint@@PEB_W11HI_J2_N1@Z) that you see in the error message is part of the decorated name generated by the C++ compiler. Different versions of a DLL will have different decorated names for entry points, so it’s reasonable to assume that this error probably means that Composite is loading the wrong version of MC3.dll.

Using Dependency Walker, I verified that the MC3.DLL that ships with Composite 2013 does not include the entry point specified in the error message. You can see that the 2013 version of MC3.dll has a different entry point name for Initialize:

However, I got a Process Monitor log from the customer, and it showed that Composite 2013 was loading right version of MC3.dll.

So, right DLL but wrong entry point. Using Dependency Walker again on older versions of MC3.dll, I found that the Composite was looking for an entry point that was in an older version of MC3.dll. But why???

I spent an hour or two looking over the Process Monitor logs, but everything looked normal…except for one thing: Composite 2013 was loading lots of 3ds Max 2010 files. So I renamed the 3ds Max install folder (so Composite wouldn’t find it) and the entry point error went away. My guess is that one of those older Max DLLs was bringing in a reference to the old MC3 entry point, and that was what was causing the problem in Composite.

Renaming the 3ds Max 2010 install folder just to run Composite is pretty hacky, so I tried to find another way. The best I came up with was this:

  1. In the registry editor, find the key HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\UPI
  2. Under that key, there is a value for 3ds Max 2010. This value holds the install path for 3ds Max 2010. Edit the value and change it, for example, like this:
     
    Value Name: C:\Program Files\Autodesk\3ds Max 2010\UPI\upiconfig.xml
    Value Data: C:\Program Files\Autodesk\3ds Max 2010xxx\UPI\UPI.dll
    

After I did that, I didn’t get the entry point error in Composite, and 3ds Max 2010 still ran ok (well, it started ok, I didn’t really exercise Max after that).