Home » 3D, Download, Featured, XSI

XSI Tab Menu

22 February 2010 34,390 views 25 Comments


The XSI Tab Menu tool lets you accelerate your workflow by allowing easy access to run common commands and add nodes to your ICE tree and Render tree. It does this using a pop up window (accessed by hitting <Tab>) which temporarilly captures keyboard input to determine what to do. You’ll probably recognise that this is a similar functionality to that found in Houdini and Nuke.


The plugin is provided as an XSI Add-On file, and you can simply drag and drop the download link into XSI to install it. Alternatively, download the file, and then drag and drop the file into XSI, or use the File -> Add-On -> Install menu option.

Download... XSI Tab Menu V1.3 (32Kb)


1.0: Initial release
1.1: Fixed issue with using Tab Menu in alternative layouts
1.2: Tab menu now always appears in new window (avoids problem with property pages embedded in the viewport). Fixed keyboard conflict with PickObject() command. Now allows closing of menu by hitting escape.
1.3: Fixed conflict with ‘B’ key Bounding Box Manipulator tool.

Getting Started

Once you’ve installed the add-on, pressing <Tab> should make the Tab Menu appear. Pressing <Tab> again will close it. If the window does not appear, try refreshing your plugins or restarting XSI.

Take a look at this video to give yourself some idea of how you can speed up your workflow. (It might help to go full screen so you can read the text on the Tab Menu a bit easier)

Video not available

Give it a go yourself by following the instructions below.

Note that if you ever need to close the Tab Menu, just press <Tab> and the window will disappear. If you close the window with the mouse, then the menu will still be capturing the keyboard input, and you’ll need to press <Tab> again to resume using the normal XSI keyboard shortcuts.

Try typing the following:

<Tab> g <Enter>

That should have created a new Grid polymesh in your scene. Now type:

<Tab> e <Enter>

That will have just created a new point cloud and got it emitting particles from your grid. Try this:

<Tab> i <Enter>

You should see the ICE tree editor appear in the lower part of the XSI layout. (This is assuming you’re using the default 4-view layout of XSI). Check that the point cloud is still selected and refresh the ICE tree editor to view it’s tree.

This bit is important. Click inside the ICE tree editor. This tells the Tab Menu to change context to the ICE tree, and means that you are now in ICE node creation mode. To check this works, type:

<Tab> setpc <Enter>

That should have created a Set Particle Color node in your ICE tree.


The XSI Tab Menu has 3 different contexts: Main, ICE Tree, and Render Tree. You can see which context you’re currently in by looking at the top of the Tab Menu window. This tells you if you’re going to be running commands in the main workspace, or if you are going to be adding nodes to your currently viewed ICE or Render tree.

XSI Tab Menu
Tab Menu layout (click to enlarge)

How does it work?

So you’re probably wondering how do you figure out what to type? It’s actually quite simple. The easiest way to understand it is to follow it step by step:

Note: If you make a mistake, you can either press <Backspace> to undo the last key press, or press <Tab> to cancel entirely and start again.

  1. Click in the ICE tree editor (in case it’s lost focus), press <Tab> and then type the letter ‘g’. The Tab Menu window will offer the suggestion “Generate 3D Point Grid”. This is the first option available to you (alphabetically) based on the first letter.
  2. Now type the letter ‘e’. The suggestion remains the same as it is still consistent with the letters you’ve typed so far. Note that at any stage you can press <Enter> to create the node indicated by the current suggestion, or you can hit <Tab> to cancel.
  3. Type the letter ‘t’. Now the suggestion has changed to “Get Angle Between”.
  4. Type the letter ‘p’. The suggestion reads “Get Particle Age”, although the text above it just reads “Get P”. This is because there are two possible letters that can go after ‘p’ according to the nodes available.
  5. Now type ‘o’. The suggestion reads “Get Point ID” and so does the text above it. This means that there are no more options available. It doesn’t matter what you type, the suggestion will never change.
  6. Press <Backspace> to take back the ‘o’ you just typed. The suggestion should have returned to “Get Particle Age’
  7. Here’s where it gets interesting. Press ‘a’. You’ll notice that the upper text just jumped to read “Get Particle”. This means that the Tab Menu has auto-completed the rest of the word “Particle” for you as there are no other options within that word that are available. The next letter you type will dictate what comes after the word “Particle” so there is no need to type “rticle” to finish the word.
  8. Pressing ‘c’ will cause another bit of auto-completion. This time it suggests “Get Particle Collision Location”, with the upper text reading “Get Particle Col”.
  9. Pressing ‘o’ again will show the final suggestion of “Get Particle Color”. Pressing <Enter> will create this node. Alternatively you can press <Backspace> to go back and try some other key presses to see how they take you between choices.

The approach I take when using this tool is to watch the upper text when typing. You’ll notice when auto-completion occurs and then you can continue typing the rest of the command/node after. It doesn’t take long to get extremely fast and efficient at remembering the sequences, and you’ll make a few jaws drop around you if you can get good at it.


There are three fairly trivial limitiations you need to know about. Firstly, the context sensitivity for detecting if we’re in the ICE tree editor, the render tree, or the main viewport is reliant on embedded windows (i.e. in one of the A, B, C, or D viewports). In other words, if you press ‘7’ to create a floating render tree window, the Tab Menu will be unable to figure out that context.

Secondly, the <Tab> key by default is used by XSI to “Show Next Manipulator”. This usually means that pressing <Tab>will cause XSI to cycle between translation, rotation and scale manipulators. The Tab Menu overrides this functionality, so if you use it a lot, you’ll need to remap it to another key.

The final limitation is to do with the fact that the Tab Menu relies on three configuration files to specify the commands and nodes available. This means that if you create and register your own ICE tree or render tree compounds, then they won’t be available as a Tab Menu shortcut until you manually add them to the configuration files. The reason it was done like this was to give minimal delay to you when loading the Tab Menu plugin. If it had to scan (as XSI has to) then there would potentially be a few seconds extra delay when starting up or reloading plugins.

Adding your own command shortcuts

The good news is that it’s very easy to add your own commands to this system. There are three text files located in the same directory as the plugin called:


From the names, you can see that each text file describes each different context that the Tab Menu supports. If you open the “Main_TabDefinitions.txt” file, you’ll see that each command is contained on it’s own line and is of the form:

<command shortcut>,<python script line to execute>

So if you look at the first line, you’ll see the shortcut used to create a cone:

Cone,Application.CreatePrim("Cone", "MeshSurface", "", "")

Adding your own ICE and Render tree node shortcuts

For defining shortcuts for the ICE and Render tree, the command that adds nodes needs to be told which tree to add them to. This is done using the symbol %TREE% in the text. This is automatically replaced at runtime with the correct tree that is being currently viewed.

So for example, the shortcut to add a Phong node is as follows (without the line break):

Phong, Application.CreateShaderFromPreset("$XSI_DSPRESETS\\Shaders\\Material\\
Phong.Preset", "%TREE%", "")

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)


  • benp said:

    Andy, this is fantastic! Thank you for sharing.

  • robert said:

    very nice addon. too sad, i’m using a property-editor docked into my custom layout. i can’t use your tab so flawlessly without locking my docked ppg-window before pressing the TAB key. is it possible to query the interface if there’s already a ppg open and open another ppg for the tab-menu? any ideas?

    thank you.

  • AndyN (author) said:

    @benp Thanks!

    Yes, that’s not something I thought about, I can see why it’s causing you problems. I don’t know if it’s going to be possible to fix that as the XSI SDK isn’t as complete as it could be for doing these sorts of GUI manipulations. I’ll take a look for you and post back here when I figure out what the situation is.


  • robert said:

    thanks. looking forward to see this tool develop.

  • Robert Illes said:

    Many thanks for your great tools!!!
    I always use get point position and set point position in ICE tree, but I can not really find it in the TAB menu. Am I so stupid? πŸ™‚
    Where it is, how can i bring them up in the TAB menu?

  • AndyN (author) said:

    Hi Robert,

    By default they’re not in there because they’re synonymous with Get/Set Particle Position, so I didn’t think to include them.

    The good news is that it’s easy to add them though. Just add these two lines to the “ICE_TabDefinitions.txt” file in the addon plugins folder.

    Get Point Position, Application.AddICECompoundNode(“Get Point Position”, “%TREE%”)
    Set Point Position, Application.AddICECompoundNode(“Set Point Position”, “%TREE%”)

    Reload your plugins and you should be good to go.


  • Robert Illes said:

    I added the lines to the ICE_TabDefinitions.txt (E:\preferences\Autodesk\Softimage_2010_SP1\Addons\fxnut_TabMenu\Application\Plugins\ICE_TabDefinitions.txt )
    but it do not want to do it.
    The same happens as before adding the two lines.

    Thanks anyway!!

  • AndyN (author) said:

    I just tried it and it definitely works, but a couple of things to watch out for.

    Firstly, if you copied and pasted the text from my original reply, the double quote characters (“) seem to be different. Delete all 8 of them and replace them by hand. I think it’s a WordPress thing with it trying to be too clever for it’s own good. It seems to be using special characters for them.

    Secondly, to be ultra sure that it’s updated, restart XSI after you’ve edited the text file.

    You should just have to type:

    [tab] getpop [enter]

    to get it to create the “Get Particle Position” node.

  • AndyN (author) said:

    Okay guys, got some updates on this.

    @Robert Illes
    I’ve updated the ICE definitions text file for you, so if you couldn’t get it to work, you can just download the new version.

    The Tab Menu is now forced to open in a new window so you won’t have any of the problems you mentioned.

  • robert said:

    andy! this is so cool!

    so much better now and i see a very bright future for this addon!

    thank you!

  • Robert Illes said:

    Thanks Andy,
    it works fine!

  • Helge Mathee said:

    Hey Andy,

    this is a fantastic addon. Just wanted to share my pleasure.

    Cheers mate!


  • AndyN (author) said:

    Thanks Helge!

  • robert said:

    hi andy, one more thing:
    controls for the lights, eg: lightbox or spotlight (activate with B) are switched with the TABkey and interfere with you TABmenu.



  • AndyN (author) said:

    Thanks Rob (aka, XSITabMenu master beta tester)

    I should be able to work around that by checking XSIApplication.ActiveToolName

    I’ll try to get an update uploaded soon.



  • robert said:

    sweet! πŸ˜‰

  • AndyN (author) said:

    Yep, that worked. Use the link at the top to download the latest version.

  • robert said:

    dear andy, your latest release is working fine.

    thanks for your effort!

  • Patrick said:

    Thank you for this great addon.

  • AndyN (author) said:

    Thanks Patrick πŸ™‚

  • SvenK said:

    Simply amazing.. thanks for sharing Andy πŸ™‚

  • Martin said:

    Thanks for uploading your scripts. It seems very useful but I haven’t had luck with the installation. I’ve dragged the link into the viewport, apparently the installation was successful because I can browse the files in the user-addon folder but still, when I press [TAB] nothing happens.
    I’ve tried reinstalling, and deleting the default [TAB]hotkey command before installing but nothing happens.

    Is there anyway to manually assign the command to a hotkey ([TAB] or maybe a different key)?.

    Am I missing something?

    Windows 7 32bits / Softimage 2010 (Build

    Thanks in advance

  • AndyN (author) said:

    Hi Martin,
    It’s very hard for me to figure out what’s wrong without digging around on your machine. Some things to try though…

    1) deleting your user prefs and Autodesk registry
    2) changing interaction models (XSI/Maya)
    3) uninstalling all other workgroups and plugins
    4) adding some print() or logmessage() statements to the plugin, around where it checks for the tab key press to see how far it gets in the routine. It should give you a clue as to what’s going on.

    Those are all the things I’d be doing anyway.

    Hope that helps. Let me know how you get on.


  • Martin said:

    I found the problem!

    I’ve tried a lot of things and I was starting to think the problem was the language (this PC is japanese) but the problem was pretty simple.

    Phyton wasn’t installed in this PC.

    But to be honest, I didn’t know it was a python based addon until I browse in and saw the .py file. Maybe you should add a “Python required” note or something.

    Anyway, I’ve installed Python 2.6 and pywin32 212 and now it works like a charm!


  • AndyN (author) said:

    Cool, yep, that’d explain it πŸ™‚

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.