A Deep Dive into custom reference editor for Maya

1. Limitations of Maya's Built-In Reference Editor

    Maya's native reference editor is a robust tool for managing scene references and performs efficiently in many scenarios. However, its utility diminishes in complex situations, especially when dealing with large environments that include numerous references. In such cases, the process of handling scene references becomes increasingly challenging and convoluted. To illustrate this point, consider the following example:


As a result, from my perspective, the primary shortcomings of Maya's built-in reference editor for artists are:

  • Inefficient User Interface in Complex Scenarios: When dealing with a large number of references, the UI becomes cumbersome, transforming into an unorganized list. This layout makes it difficult to discern nested references, as all references are displayed in a single row, lacking a clear organizational structure.

  • Limited Search Functionality: The search feature is not as robust as one might need. It requires the full reference node name for searches, which is impractical for everyday use, particularly in production environments with extensive and complex scenes.

2. Developing a Custom Reference Editor


On the right, you will find my custom reference editor. We'll examine its user interface in detail. While I developed this tool specifically for our studio and cannot share the source code, I am able to discuss its core concept and functionalities with approval from studio management.

Similar to Maya's default reference editor, CRUD (Create, Read, Update, Delete) operations with references in this custom viewer can be executed in familiar ways - either by clicking on a reference's checkbox or selecting an option from the context menu with a right-click.

A notable enhancement in my version is the streamlined item names. For greater artist usability, our editor, by default, omits namespaces and service tags like 'RN' (Reference Node) or 'PM' (Proxy Manager) from reference node names. In practical scene work, these details can be distracting from the primary tasks. Their omission results in a cleaner, more readable list of node names. However, if needed, you can display the full names by selecting the 'Show full names' option in the right-click context menu:


On the left side, next to the item names, you'll notice tags such as 'Or' and 'Px'. 'Or' stands for 'original', and 'Px' indicates a 'proxy'. These tags signify the active asset version in the scene and whether any alternative versions are loaded alongside the main asset.

Groups

    A significant enhancement over Maya's reference editor is the incorporation of groups. In our custom editor, you can view not only the reference nodes but also the groups under which these reference DAG nodes are placed. This feature is immensely beneficial, particularly in large scenes where references are loaded at the first level, leading to an extensive, unorganized list of references. In contrast, our editor organizes references similar to an outliner, which greatly enhances usability. Beyond mere visibility, these groups are interactive. For instance, you can perform load-unload actions on a group, which will apply to each reference within that group.: 


An important feature to note is the preservation of reference states. This means that when a group is unloaded and subsequently reloaded, only the references that were loaded at the time of the group's unloading will be reactivated. To facilitate this, the names of the currently loaded reference nodes are stored in an attribute prior to unloading the group, and these names are then used to reload the group.

Search

    The search feature in our custom reference editor is both fast and responsive, equipped with a completer that suggests options as you type. This functionality differs significantly from Maya's reference editor. Whereas Maya's editor filters data to display only the found results (or an empty list if none are found), our version allows for partial name searches. It highlights the found reference nodes within the view and automatically scrolls to the first matched result:


The search function operates on the full object names, even when short names are currently displayed in the tree view.

Selection Synchronization


Any selection made within the tree view of our custom reference editor is mirrored in Maya's outliner. For instance, selecting a reference node in the editor will automatically select the corresponding reference node in the outliner. This intuitive functionality extends to groups as well, ensuring a seamless workflow.

Copy Function

    The editor supports the standard Ctrl+C hotkey for copying. This action copies the full node name to the clipboard. Additionally, if multiple items are selected in the tree view, a list of all selected nodes will be copied. This feature enhances efficiency, allowing for quick and easy duplication of node information:


The list copied using the Ctrl+C command can be utilized in various ways by the user, including in the search function. The search feature can process a list of items, with the syntax mirroring that of a Python list represented as a string.

From \ To buttons

    At the top of the editor view, you will find 'From' and 'To' buttons, designed to facilitate easy navigation through the scene for artists. The 'From' button selects in our editor the item currently highlighted in the viewport. Conversely, the 'To' button performs the opposite action, selecting in the viewport the node currently chosen in the tree view of the editor.

Asset representations

    In our studio pipeline, multiple representations or versions of each character exist. Full versions are reserved for rendering due to their complexity, while several proxy versions are used for animation, which are later switched to the main versions pre-rendering. Our editor allows artists to perform all CRUD operations with these representations. A button at the bottom of the main view opens a list of the currently loaded representations for the item selected in the main tree. Here, artists can load or unload specific versions by clicking checkboxes. Note that only one representation of an item can be active at a time; loading a new one automatically unloads the previous one and makes the necessary connections to Maya's Proxy Manager.

Additionally, the context menu, accessible via right-clicking on a version item, allows for the addition, replacement, or removal of representations. Deleting the last representation will remove the reference from the scene entirely. Similarly, unloading an active representation results in its removal from the scene. Below is an example of adding and removing a representation from a scene:


Characters within our system can have multiple representations to suit various needs. However, all other assets are typically limited to either 'Original' or 'Proxy' versions. To facilitate quick management of these, we've integrated a 'Switch' button at the top of the interface, accompanied by a selector to toggle between the 'Original' and 'Proxy' versions. This functionality is also replicated in the context menu, where options to 'Switch to Proxy' or 'Switch to Original' are available. Selecting one of these options activates the chosen reference version. Concurrently, the system ensures all necessary connections to the proxy manager are established, and the inactive reference is unloaded for optimal efficiency.


Additional Functions in the Context Menu

    Right-clicking on any item in our editor will bring up a context menu, offering a variety of helpful actions. One such feature is the 'Focus on Selected Item' action, which can also be activated with the 'F' hotkey. When used, this function selects the first DAG node of the reference and centers the viewport's focus on it, enhancing navigation and efficiency in scene management.:


Another practical feature caters to scenarios where a reference needs to be modified in its source scene. In such cases, you can simply right-click on the relevant item to access additional options. This context menu allows you to either open the folder containing the reference file or launch the reference directly in a separate Maya window. These options streamline the workflow, making it more efficient to manage and update references directly from the scene:


Additionally, there's a feature tailored specifically for technical artists - the 'Asset Info' button. Clicking on this button reveals a detailed table containing key asset data, such as file size, creation date, and date of last modification, among others. This comprehensive overview aids in asset management and tracking. Moreover, for added convenience, you can access the folder where the asset is stored directly from this table with a simple right-click. This functionality enhances the ease of accessing and managing asset files, streamlining the workflow for technical artists.:


Concluding our overview of features is the 'Selection Inversion' tool. This tool provides the ability to invert the selection of the current item in two distinct ways. Firstly, it can globally invert the selection, where all items except the parent of the selected item become selected. Secondly, there's an option for inverting the selection within the specific group where the item resides. This functionality allows for more flexible and efficient selection management, especially in scenarios involving complex scenes or numerous assets.

11 Jan 2022
Switch Theme