Advanced Sculptie Exporter From Maya

From Second Life Wiki
Revision as of 14:07, 7 February 2011 by Chosen Few (talk | contribs) (→‎Maya Scripts)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Qlab ant.jpg

(this is bare bones template for communal work - please, PLEASE, feel free to rewrite every word here. in fact, the first person to do a major clean-up becomes my new best buddy. an original copy of the tutorial (complete with graphics and witty banter) is available at qLab ALSO - if you feel so inclined, feel free to improve upon the codebase.) --Qarl Linden 09:53, 21 June 2007 (PDT)


Qlab maya.jpg

The idea here is to take an entire Maya scene, modeled with NURBS, and import it directly into Second Life complete with surface textures, baked lighting and all position/scale/rotation information. It builds upon the maya exporter we released with the initial sculptie launch.

First-up in an example Maya scene: here we have a generous contribution from Bret St. Clair, his ant:

Maya Scripts

Qlab sculpt.jpg

With the maya scene open, now execute this mel script: sculpt.mel

The option to "Bake surface textures" will do just that - create one surface texture per prim, to be applied later. Unfortunately, our Maya ant has no interesting textures (he's white) but we do capture his lighting (and shadows). You also want to click "Generate Primscript," which creates a file describing the scene.

In-world Scripts

The next bit is tedious. First, create a prim called "qDynaPrim". Into this, place all the textures above together with the following scripts:

(These scripts were generated with the qLab assembler - which may explain why they look a bit funny.)

Now create another prim and call it "ant maker" (this name isn't terribly important) and put the "qDynaPrim" into it (THIS name is important). Put the prim script into it, also. Be sure the 'Running' box is checked, otherwise it didn't compile correctly which means that it wasn't copied and pasted correctly.

This "primscript" will read your primscript file - rez copies of the "qDynaPrim" - and send them commands to control their shape/position/appearance.

Now you need only to invoke the primscript command (which listens on channel 500). Create a notecard (any name) containing the Maya-generated primscript, get its UUID, and say:

/500 primscript -script 32fad6a2-630e-aaf0-2659-817ea00b1052

Of course, you'll want to replace that UUID with your own - especially if you want to make something OTHER than ants.

Hope you enjoy.

Qlab bad ant.jpg

(There appears to be a problem with the checkbox for "Generate primscript" on Maya 8.5 on Win32. One solution is to set $generate_primscript to 1 manually in the script.)

Setting "-scrollable 1;" to 0 in the script will show the checkbox for Generate Primscript for Maya 8.5 on Win32. Tanner Devonshire 08:48, 16 July 2007 (PDT) (If you are having trouble locating your scripts, "drive letter"/Program Files/Autodesk/Maya Bonus Tools/Scripts seems to be the default folder for the primscripts)

For Maya 2008 I found the primscript at [drive letter]\Program Files\Autodesk\Maya2008\bin

Automated Import To Second Life

Using the Importprimscript program you can automatically import the exported folder from Maya including lossless sculpt maps, compressed textures, and a linked full-mod model of the scene rezzed. You will need .NET 2.0 runtime libraries or Mono to run the program.

Maya for Linux Dialog Formatting Bug

Unfortunately there's a bug in the MEL implementation in Maya for Linux such that widget control group boxes do not necessarily automatically size themselves to fit the widgets they contain as the Windows version does, unless they've been explicitly told to do this. The script sculpt.mel available at the link above will have to be hand-modified to account for this difference, so that it works on Linux installations of Maya. This bug has been present in Maya since version 6.

In the MEL script, in the global procedure llSculptEditor(), replace this line:


with this one:

scrollLayout -childResizable 1 -defineTemplate DefaultTemplate;

and all will be well.