XSI Tab Menu
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.
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.
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)
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.
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.
- 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.
- 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.
- Type the letter ‘t’. Now the suggestion has changed to “Get Angle Between”.
- 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.
- 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.
- Press <Backspace> to take back the ‘o’ you just typed. The suggestion should have returned to “Get Particle Age’
- 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.
- 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”.
- 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.Preset", "%TREE%", "")