Maya to Xsi Cheat Sheet
These are notes from a job we worked on from Jan to Mar 2007. Xsi seemed nice, but not amazing. Definitely not enough to make me want to switch apps. My current fling is houdini (oct 2007), we'll see how long this romance lasts...
Enyhoo, these are just quick notes I made when trying to make the leap from maya to xsi, they might be useful to others.
- The maya emulation mode is pretty thorough. Often my muscle memory will kick in and I'll try a shortcut and its mapped, but if I think about it I'd say 'no way that'll work'. Things like ctrl-f7 ctlrl-f8 ctrl-f9 to alter current selection to closest verts/edges/faces, b to change brush radius, minus and plus to change gizmo size... quite slick!
- http://www.edharriss.com/tutorials/Maya_2_XSI_Quickstart.htm - a good initial guide, but with the new maya emulation mode a lot of it is made redundant. Still, always hand to have multiple pieces of info.
- I had a vague memory of not being able to run xsi in 1024x768. Thats no longer the case, there's a layout preset made for this. Not ideal of course, but handy in a pinch if you have to run it on a laptop.
- The u-turn icon on the property thing (attribute editor) resets all values, handy
- The bracketing tool is very cool! You choose a bunch of attributes for say lighting, give it a range and a number of variations, i'll create you a web page of thumbnails of those ranges, click the one you like, it'll update xsi with those values. Not just lighting, any parameter at all.
- Pageup/pagedown set subdiv level
- The virtual slider stuff is kinda weird; hit f4 to enable it. Can also do quantel style circles to increase/decrease, but it's a bit silly really
- For colour picking, easiest to click on the colour, you get a photoshop style picker. Otherwise, ctrl will move all 3 sliders together.
- Ooh, clicking the '…' button in the colour picker brings up a really slick colour chooser. Not 'live' though, which is a shame.
- The plug icon is the connection button. Duh.
- Handy default layouts hide in view->layout. Easiset way to bring up the comping UI.
- Click the purple bold title of each viewport to bring up the 'panel' menu. Change view, bring up a explorer etc
- Click the eye icon to change visibility options (grid, curves, nulls etc)
- In explorer the subscript H is the visibilty setting (hidden, duh)
- Right-click on the maximize icon to let you max just vertically or horizontally
- Main menu->view->blah to have floating panels
- You can window-shade a floating menu by double clicking its title
- Hmm… ordering in the explorer/outliner is by creation order by default, and can't be altered immediately. In the explorer choose view->parameter sort->none, then to re-order pick the reorder tool immediately beneath. Then escape/another tool to quit. Why aren't these combined?
- Looking for a channel-box construction history list? The biggish button labelled 'selection' button on the right is kinda like a cross between the channel box history, and a mini outliner for the selected object, displaying all its properties.
- In fact, those 4 buttons bring up a handy quick-outliner for what you want (scene, or explore-then type, or clusters)
- In schematic, A=animation, D=deformer, C=constraint etc
- Schematic->View->show icons handy
- Schematic->edit->pick and move is the usual hypershade behavior.
- Xsi explorer - dual outliner and (other panel), 2nd panel switches to always show selection in outliner. Can be schematic, or a local isolate select camera view, or shaders, or…. Etc
- Selection filters is tiny triangle down-and-left to big selection arrow. Brings up menu of all object types, can set filters that way.
- The 'group' button is for selecting sets, or members of sets. Probably use the explorer instead I'd say. With it active, selecting an object that’s a member of a set(xsi=group), will select the set.
- Groups are basically maya layers without the gui. But Xsi has layers too, which I'd wager under the hood are really groups. In maya layers are sets plus gui, so there's a strong similarity there.
Construction history, properties, misc..
- Ah, xsi has proper instance vs clone! Something I missed from max; instances where changes to the original object affect all the instances, but you can do further operations to an instance, and it only affects that one shape. Yes, you can fake this behavior in maya with inMesh->outMesh connections, but this is actually clearly defined in xsi, as it should be.
- Get->property->annotate is like the text area in maya, but moreso, also allowing for keywords for searches.
- Presets are like maya presets (in the attribute editor), but are designed to be saved and shared at whatever level you want; user, scene, project, workgroup.
- Overrides are similar to render-pass attribute overrides. Choose the level it'll be in (object, group, parent), get->property->override. Open the override in the property editor, and the 'add parameters' button will open an explorer where you choose values.
- It seems on the surface that xsi has better support for linking deformers and whatnot to textures, both using textures and 'paint weights', called, cunningly, texture maps and weight maps. they hide under get->property->weight map. The map itself is stored under the object or cluster.
- Clusters… crossover between maya clusters and sets. It’s primarily a selection set, but also funtions as a container for shader assignment (SG node), for deformers (deformer set), and for direct manipulation (cluster+deformer set). Can also do set-like boolean logic, like exlusive sets, remove overlap etc.
- By default the cluster pivot is dyanmic, not like maya where its created then fixed (until you alter it with insert). This means you can use clusters as a rivet very easily, rather than do all the rivet/follicle nonsense you do in maya. And yes, you can created maya style fixed pivot clusters too, with the edit->create cluster with center.
Matts Remapped keys
- ` (backtick) render region tool
- F3 'open attachments', synoptic view, ie the web based character interface thingy.
Very handy default hotkeys
Kept hearing about how wonderful xsi poly modelling tools are, finally found why! In the maya interaction mode, the important keys are:
- d - select loop/edge
- m - tweak tool
- j - enable slide inside tweak
- b - set brush size inside tweak
- \ - split poly tool
'd' is the edge loop/ring hotkey, select an edge, tap d, then middle click an adjacent loop-edge to pick the loop, or an adjacent ring-edge to pick the ring. If its not behaving, set your select mode to raycast (click select at the top of the right-toolbar, tools->raycast)
the tweak tool
Its so good it deserves its own title!
'm' is the tweak tool. Hit it, and you'll get 3 icons on screen. By default you can quickly pull single verts/edges/faces around, which is nice. Click the magnet icon (hotkey=j), and you tweak in a skin-slide style mode. Enable prop mode (clicking the 'prop' button on the right-toolbar), and you get a lovely falloff. Adjust brush size as in maya (hold down b).
To see this in action, get a mid density poly sphere. Enter tweak mode (m), enable prop mode, enable the slide mode (j), set your brush size (b). Click and drag, and bask in the gooey skin slidey action. Ooo-er.
But there's more! Hit w/e/r to get into translate/rotate/scale, and you do a lovely slidey version of each tool.
The point weld feature in tweak is nice too; click the last button in the viewport, and click-drag verts onto other verts to weld them. Very quick and easy.
The split poly tool works just like maya's, but seems a bit faster and smoother somehow...
- Explorer = outliner
- Schematic = hypergraph
- Synoptic = webview/custom GUI
- Render tree = hypershade
- Fx tree = shake!
- Group = set/selection set
When you setup a parent-child relationship in maya, the child inherits the transforms and visibility of its parent. Ever wonder why it doesn't inherit other properties, like shaders, or subdiv level, or tesselation? No? Me either. I expect it in python, in flash, in most other apps, but never occured to me to question maya.
do property inheritence. And not just parent-child. Say you have an object, and it needs a shader. In order of importance, it can get the shader from:
- The scene (like the 'lambert1' default material in maya)
- Its top level parent in a heirachy
- Its immediate parent
- Itself (ie, assigning at an object level, what you'd normally do)
- A cluster (like doing per-face shader assignment in maya, but more explicit)
- A group (like sets or shading sets)
- A layer
- A partition (render-pass layer basically)
- An override
This propegation is clearly displayed in the explorer. Inherited properties are in italics, with the source shown afterwards in brackets. If there's nothing in brackets, then its inherited from the scene defaults. This made 2 things a bit clearer for me. One, I always thought the explorer was really messy compared to the outliner, showing every object's attributes, with lots of repeated values. This is by design, as you need to see what is inheriting from what. Two, I kept looking for a SG style connection between shapes and shaders. There's no such thing in xsi; objects have their own material property, or inherit it from a parent/layer/whatever. Kinda wierd for a maya user, but it makes sense when you think about it. If anything, maya's behavior starts to look more weird over time! Oh, and keep in mind that inheritence isn't just shaders, its any shared attribute between parent-child, layers, groups, blah.
Example: Inherited subdiv property via layers
In maya layers are for scene organisation only. By default xsi is the same, however you can add what are essentially maya custom attributes, and if they match to a known attribute, any object in that layer will then inherit that attribute value. In xsi these are created as overrides (very similar to setting renderpass overrides in maya). So you could make a layer called 'subdivLayer'. Assign an override (via get->property->override), then in the property editor, click 'get property', and from the popup explorer, dive into any object and find its OGL subdiv level property. Click outside the explorer when you're done, you'll see that override in the property editor now. Set it to 2. Now create a poly cube, and assign it to the layer. It'll be smoothed to 2 subdiv levels. Take it out again, it'll return to normal. You can do this for any property, and do it with clusters, groups, parents… whatever. Very powerful!
Here's my limited take on why maya and xsi handle this differently. In maya, an object is a shape beneath a transform. Heirachies only occur transform->transform, and so the inheritance is only for transform related attributes (basically position/rotation/scale, visiblity). Xsi merges the shape and transform into one thing. An object is a self-contained unit, and it contains properties that are transform, shape, visibility, shader etc. That means heirachies can occur object->object. That means while maya will only inherit transform properties (position and visibility), xsi can inherit anything.
Making (simple) volumetric lights
Xsi volumetrics are of much
better quality than maya's by default. Yay I say.
Select your light and from the render menu choose get->property->volumic
(about halfway down). Make sure you turn on shadows in the light shader. For some reason sometimes the soft_light properties don't appear in the property editor, easiest way I found to display it via the explorer; make sure your seeing 'all except animatable params', and keep expanding under the spotlight until you see the soft_light. Select it, and bring up the property editor.
The quality of the volumetrics is also defined by a attribute beneath the spotlight, expand it and you'll see a 'volumic' entry. Reflectance is how dense the volumetric is, map size defines accuracy perpendicular to the light (shadow map basically), and under the scene root you'll find another 'volumic properties' node, the step size here controls the ray-marching. Lower values = higher quality.
Note that this won't work with textures in the light, solution is further below.
Adding a file texture into a light (projected light or 'gobo')
Simplest way is to replace the default soft_light shader with one designed for this. Select your light, and open its shader in a rendertree window. You'll see the soft_light connected to its shader. In the rendertree menu, choose nodes->lights->fast light effects
. Disconnect the soft_light from your shader, and connect the fast_light instead. Update the file-texture with your image of choice.
Again, note that if you have simple volumics, they now won't work. Read on...
Getting volumetrics with a projected light
Tricker than I thought! If you use standard volumics, adding a texture into the light disables the volumics. Remove the texure, volumetrics come back. Hmm.
Instead, you need 2 things, a fast_light_shader on your light, and a fast_volume_effects applied to your scene. Here's how.
- Remove the volumic property on your light if you have one.
- Ensure your light has a fast_light_shader applied, with volume shadows enabled in its properties.
- From the main menu's, choose render->[pass] edit->edit current pass
- Go to the volume shaders tab
- Click 'add', choose a fast _volume_effects, hit 'inspect'
- In the light list, hit 'add', select your light, then click outside the dialog to confirm'
- Render, you should now have your volumetric textured light
Assigning a light-shader to multiple lights
To assign a material to multiple objects is easy; open 2 explorers, one displaying your scene, the other displaying materials. You can then drag and drop materials onto object.
There doesn't seem to be an equivalent for light shaders. There's no easy way to see a list of light shaders in your scene, and even if you can see them (using the trick from the previous section), you can't drag and drop onto other lights.
However, adrian at fluid gave me a trick. You have to make your light group, then assign a new light-shader as an override onto that group. Unfortunately I can't work out how to assign an exisiting light shader, but this'll do for now:
- Select your lights, group them
- from the main menu, view->toolbars->shaders
- choose the 'lights' section
- drag any of those light shaders from the toolbar onto your group in an explorer window
- you can now select the override and open an fxtree, and rebuild your shader.
you can copy and paste from your old shader to the new one, but this isn't ideal. This is still confusing me slightly, hopefully there's a more intuitive method.
Also, i've found that when I tried to repeat the above method, I couldn't get it to work. I had to explicity assign a light-shader override for it to work, done thus:
- after creating your group, from the render menu choose render->[get] property->override
- open the override's property editor
- click add parameters..., expand a light, then the light itself, and select the light shader folder. click anywhere outside the list to confirm this. note that you need to can't click the property editor itself, this will close the chooser, but won't confirmthe selection.
- now with the override still selected, open a rendertree, you should see the override in the center. expand the list (click on the small triangle), and you'll see the light-shader port. you can now connect a new soft_light/fast_light_effect etc. into this port.
Colour correcting a light with a gobo (projected light)
Tip via kim aldis...
I had a sib_slide_proj connected directly to a soft_light colour attribute. Trying to insert any colour correction node between them didn't work. Turns out if I replaced the slib_slide_proj with a fast_light_effects node, it fixed it. Still getting a handle on the /Right Way/ to do things...
Using procedural textures on lights (gobo, projected light)
I tend to use procedurals for lights in maya more than file textures, but this isn't intuitive in xsi. Seems that there's no implied uv's for the light, so you have to set them up manually. André Adam was kind enough to show me how this is done:
Been driving us insane until we found a preference setting... by default autokey will key anything and everything you touch, including objects that have no exisiting keys, and duplicating shapes. Infuriating. In the prefs though are options to make it more maya like, main one being 'autokey only on existing curves'. Ahh, anger falling... falling...
- 09 Feb 2007