.. toctree:: ******************** Pipeline Tools ******************** --------- Overview and Concepts ======================= We're starting to have more users wanting to make actual game content and we wanted to help facilitate that. Our main project tools is are ProjectManager and Scene. They both handle slightly different functions though they share the same data config file. Why would you want to use these tools? * Manage project structure and animations * Export single or batch rigs and anim files * Fast scene building * Customizable structure -------- Setting up assets ------------------- This is a very important section. This dictates how our data structures will be built and can be annoying to change once we get in to production so it deserves some thought. An Asset Type is the first structural point. What's that mean? We'll talk about a ``characters`` asset type with the following subTypes: * anim * geo * rig * template If I add a new character named ``Bob`` I'll get a structure of: * [ContentDir] * characters * Bob * anim * geo * rig * template There's a couple of flags to pay attention to on subtypes. * ``sub`` | This is when you want sub instances to this subType. * ``variant`` | This is when you want sub variants to the sub. For example, if sub is on on anim and you add an animation ``anim/run/bob_run_01`` With variant: ``anim/run/fwd/bob_run_fwd_01`` OR ``anim/run/01/bob_run_01_01`` With export this changes a little. Looking at * [ExportDir] * characters * Bob * anim * Bob_run_fwd * Bob_run_01 * [cutscene]_Bob | if you have a cutscene, those anims are split to sub folders -------- Exporting Rigs ------------------- # Reference rig into empty scene. # Select ``master`` # ``Export Rig`` .. note:: If you're using maya.py you must save this to a location to open. --------- Project ============= We're actively using MRS for production. These are some of the tools we use to do that.These docs might get split out into separate docs in time but as we're working through them this is easier. .. image:: _static/img/project/ui_073120.png :align: right Last Updated: 07.30.2020 * Switching projects also changes the maya project path * Quickly change projects in maya with many more options that standard project switching * Connects to other tools to aid a multiple project workflow * Data stored to a config object python setup .. note:: Not all features complete. If it's not covered here, it's not done. **Contributers** * David Bokser * Josh Burton * Benn Garnish -------- Top Menu --------- -------- Setup ^^^^^^^^ .. image:: _static/img/project/menu_setup_01142020.PNG :align: right * ``Recent`` | Submenu of previous projects to quickly jump between them * ``New`` | Setup a new project * ``Load`` | Load an existing project * ``Save`` | Save the project * ``Save As`` | Save existing as another project name * ``Reset`` | Reset to default? data * ``Fill`` | Fill the fields from stored data * ``Revert`` | Revert to saved data * ``Clear`` | Clear fields -------- Projects ^^^^^^^^^ List of projects stored so that you can quickly switch between projects. * ``Edit Path List`` | Opens window remove paths if you desire -------- Utils ^^^^^^^^ * ``Scene`` | Opens the Scene tool with the path settings from the tool * ``Push nameStyle`` | Not implemented * ``Get Project Paths from Local`` | Dev call * ``inTangent`` | Change defeault in tangent * ``outTangent`` | .... out tanger * ``both`` | change both * ``World Match`` | Push world settings of the project to the current scene * ``Anim Match`` | Push anim settings of the project to the current scene * ``World Match`` | Push both settings of the project to the current scene * ``Query`` | Simply check the current file -------- General --------- .. image:: _static/img/project/ui_general.png :align: center General project settings. * ``Name`` | Text field to set the project name * ``Type`` | Set the project type. (Unity,Unreal,Commercial) * ``NameStyle`` | NOT IMPLEMENTED * ``MayaVersion`` | Set the maya version. Just a reminder when you have lots of projects rolling. * ``Lock`` | Locks some settings. Mainly for using subs you don't want messing with stuff -------- Asset Types ------------- .. image:: _static/img/project/ui_assetTypes.png :align: center Vital concept to understand. Please see the top of this page to get a better overview. ------ Asset Row ^^^^^^^^^^^ This is where we edit our asset types and add new ones. * ```` | Drop down of existing assetTypes. * ``Edit`` | Edit the name of the current type * ``Add`` | Add a new type via a dialog window * ``Dup`` | Duplicate this asset with a new name * ``Remove`` | Remove this type ------ Subtype ^^^^^^^^^^^ * ``[+]`` | Add a new subType * ``[int]`` | Index of the subType * ``[]`` | Text field to change the subType name * ``[ ]`` | Sub | Whether this subType has subdirectories or not * ``[ ]`` | Variant | Whether this subType has variants or not * ``[x]`` | Remove this subType For example, if sub is on on anim and you add an animation ``anim/run/bob_run_01`` With variant: ``anim/run/fwd/bob_run_fwd_01`` OR ``anim/run/01/bob_run_01_01`` -------- Paths --------- .. image:: _static/img/project/ui_paths.png :align: center Directory/File paths for the project to know where things are. Paths are where you want stuff stored. We have two kinds of paths: * ``Project`` | This is where the project controller has put stuff * ``Local`` | This accounts for users having different drive setups. When set, a users local settings are stored to the config file .. note:: Broken paths will be set as red. If you are intially setting up a project you can fill the local from project via ``setup>fill`` * ``Root`` | The root file path for the project. * ``Content`` | This is where our maya stuff will go. Maya's project path is set to this path. * ``Export`` | This is where we want our render/game engine exports to go. We typically have this go to a dropbox, github repos or svn/perforce location * ``Image`` | Path for the top image for this project in this ui and scene's. There's a psd template in the toolbox: ``cgm.images`` -------- Maya Settings -------------- This is an early pass on this. You can verify these maya settings to a current file via the Utils menu at the top. Currently these don't have a huge affect. ------ World ^^^^^^^^^^^ * ``worldUp`` | * ``linear`` | * ``angular`` | ------ Anim ^^^^^^^^^^^ * ``frameRate`` | * ``defaultInTangent`` | * ``defaultOutTangent`` | * ``weightedTangents`` | ------ Export Options ^^^^^^^^^^^^^^^^^ .. warning:: Not implemented yet * ``removeNameSpace`` | -------- Content/Export ---------------- Iterating on our directory browsing setup we're using in a few tools. * Browse directories * Search bar * Right click menu for extra functions * ``Refresh`` | Rewalk structure to pick up external changes * ``Add`` | Add directory to root * ``Verify Dir`` | Use the structure list to check directory structure * ``Query`` | Search for weird files in the structure. Currently looking only for ones from dropbox * ``Clean`` | Remove files found during query .. note:: Query/Clean only on Content for now **Right Click Menu** .. image:: _static/img/project/menu_dirList_rightClick_01142020.PNG :align: right * ``Open Dir`` | Open os browswer of the directory * ``Open Maya File`` | Maya file open browser to this directory * ``Save Maya Here`` | Save current to this directory with ui * ``Add Sub dir`` | Add a new sub directory here * ``Delete Dir`` | Delete this directory. WARNING - includes files and sub directories * ``Log Dat`` | Dev thing to see what data is stored to this python object **Add Asset Dirs** Uses the structure settings to add a new directory with subdirectories from the comma sep list. * ``Character`` * ``Prop`` * ``Environment`` * ``Sub project`` **Data** The data is is listed in a particular way to make it most useful for us. .. note:: bob \\bob.character (5) * ``Character`` * ``Prop`` * ``Environment`` * ``Sub project`` ------------ Scene ============= Last Updated: 08.04.2020 .. image:: _static/img/scene/ui_08032020.png :align: center * Managing animation sequences * Exporting animation and rigs to game engines * Exporting honors shot split data. See shot tool. This ui is divided into a few parts: * ``Top Menu`` | The section on the top of the ui * ``Header`` | Header image and path display (if chosen - not shown in example) * ``Asset Navigation`` | Asset browsing, structure editing, meta data display * ``Export Queue`` | Manage exporting multiple files -------- Top Menu --------- -------- Projects ^^^^^^^^^ * List of projects in memory. * ``Project`` | open Project -------- Options ^^^^^^^^ .. image:: _static/img/scene/ui_options.png :align: right * ``Show all files`` | Toggle between listing all files in the version directory or only the ones that are named according to how Scene saves new versions * ``Remove namespace upon export`` | Mainly for use with Unity at this point. Strips the ref prefix from export items. Unity takes in the namespace that it's exported as so if you want to use the same avatar in unity for all of your animations you want to use the remove namespace option. Unreal the namespace is automatically removed so it doesn't matter. * ``Zero Root Upon Export`` | Unity there is no method to snap the root to zero, so if you're doing root motion away from the origin, you'll want to use the zero root option. Unreal has various options to allow you to snap the root to origin in your animation properties so it's not needed * ``Use Mayapy`` | Similar to Builder, this used maya stand alone to export files. Much better to use when possible. * ``Show Directories`` | Whether to show the path fields at the top of the ui .. warning:: Maya Stand Alone setup NOT currently mac compatible. -------- Tools ^^^^^^^^ .. image:: _static/img/scene/ui_tools.png :align: right * ``Set Export Sets`` | Brings up a dialog to setup the object sets for export,bake and delete. * ``Update Selected Rigs`` | Check the selected master's rig dir for a higher rig version to replace the reference with * ``Remap Unlinked Textures`` | Attempts to find missing textures in the project tree * ``Verify Asset Dirs`` | Same as project, makes sure that content directories exist for assets **Export Sets** These sets are object sets we use to identifiy set we put in our rigs to aid in export. There are three sets we're looking for per asset. * ``bake`` | Items in this heirarchy list will be baked for export * ``delete`` | Items in this heirarchy list will be deleted before export * ``export`` | Items in this heirarchy will be export MRS built rigs have these sets created by default. If you have additional items you want exported, deleted or baked, they should be added to those object sets. .. note:: If not export sets are found, everything in the selected heirarchy will be exported and baked . Sometimes a new user might find that everything is being exported instead of just what they want. Depending on how old their version of the tools are the default variables for this might be wrong. We have some option variables setup for this functionality. You can check them via this... .. code-block:: python for n in 'bake','delete','export': print mc.optionVar(q='cgm_{0}_set'.format(n)) And set them to MRS preferred with : .. code-block:: python for n in 'bake','delete','export': mc.optionVar(sv=('cgm_{0}_set'.format(n), '{0}_tdSet'.format(n))) -------- Header --------- -------- Image ^^^^^^^^ The project header image path is set in Project and shared between muliple uis. -------- Paths ^^^^^^^^ Optional display controlled vis the option menu. There are a couple of imporant paths for this tool. * ``Directory`` | Content directory * ``Export Dir`` | Where exports go .. note:: If you load this tool from Project these paths are set on launch. -------- Asset Nav ----------- The meat of the ui here. This is where we manage, load, select and queue our files for processing opening. -------- Columns ^^^^^^^^ This section is navigating the assets we set up in our project settings. The first column is the asset column. The other three columns are for animation, variations and versions. **Category Column** * Clicking it lets you change between categories which looks in the content directory for data to load. * There is a scroll list which you can pick from the options which then loads other columns **Right Click** * ``Open in Explorer`` | Open os browser * ``Open Rig`` | Open the rig file * ``Import Rig`` | Import this referenced rig to your scene **Column Buttons** * ``New Asset`` | ... * ``New Animation`` | ... * ``New variation`` | ... * ``Save New Version`` | Iterate open scene as the next version in sequence -------- Meta Data ^^^^^^^^^^ -------- Buttons ^^^^^^^^^^ .. note:: Not done * ``Export`` | Export * ``Bake without Export`` | .... * ``Export Rig`` | ... * ``Export Cutscene`` | ... * ``Add to Export Queuen`` | ... * ``Load Animation`` | Load selected version above -------- Export Queue ------------- -------- Troubleshooting ---------------- -------- Exporting everything? ^^^^^^^^^^^^^^^^^^^^^^^ Sometimes a new user might find that everything is being exported instead of just what they want. Depending on how old their version of the tools are the default variables for this might be wrong. We have some option variables setup for this functionality. You can check them via this... .. code-block:: python for n in 'bake','delete','export': print mc.optionVar(q='cgm_{0}_set'.format(n)) And set them to MRS preferred with : .. code-block:: python for n in 'bake','delete','export': mc.optionVar(sv=('cgm_{0}_set'.format(n), '{0}_tdSet'.format(n))) ------------- Shots ============= Last Updated: 01.13.2020 This is a tool for setting shot data for export. When the fbx's are exported they will be split into shots for use in the game engine. You can also change your timeline from the shot framing via the ui. The data is stored as json data on a transform in scene. .. image:: _static/img/shots/ui_01132020.PNG :align: center ----------- Top Menu --------- * ``Auto Adjust Frames`` | Change shot lengths to keep frame lengths of other shots when you change a shot. ----------- Shot List --------- The main part of the UI is the shot list which will grow as you add shots. * ``Name`` | Text field to change the name of the shot * ``Start`` | Start frame for the shot * ``End`` | End frame for the shot * ``Frames`` | REport of how many frames the shot covers * ``Frame`` | Button to frame your slider to this shot * ``Remove`` | Remove this shot ----------- Add ------ .. image:: _static/img/shots/add_01132020.PNG :align: center * ``Shot Name`` | Text field for the shot name * ``Range`` | Start and end * ``OK`` | Add it ---------- Updates ======== We try to keep this updated with big feature adds to see how it's changed over time. 2020 ------ July ^^^^^^^ * **Project** | ... * **Data rework** | Complete rewrote how the structure system works and implemented the new asset data type * **Scene** | ... * **User experience** | Default sets use MRS to make that default experience better. Loads fbx plugin if not June ^^^^^^^ * **Project** | ... * **Data rework** | Complete rewrote how the structure system works and implemented the new asset data type April ^^^^^^^ * **Project** | ... * **Color management** | Color data framework. Project color setup. Headers now colored to project color * **Scene** | ... * **Maya Py** | Stand alone support for exporting scene data * **Utilities** | Rename, delete, open maya file to right click menu * **Send to Project** | Send assets to other projects * **Connected to project dat** | Scene now using project data framework for consistency between apps * **Relink textures** | Utility to find March ^^^^^^^ * **Scene** | ... * **project.data** | Scene now using project data framework for consistency Feb ^^^^^^^ * **Docs** | First pass --------- Engines ======================= ----------- Unity --------- ----------- Deformation ^^^^^^^^^^^^^ Generally speaking we cap our ----------- Unreal --------- ----------- Deformation ^^^^^^^^^^^^