All Projects → timlehr → hyperdrive

timlehr / hyperdrive

Licence: other
🚀 Pose-based rig caching plugin for Maya

Programming Languages

python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language
CMake
9771 projects
AMPL
153 projects

Projects that are alternatives of or similar to hyperdrive

xformArrayNodes
Maya plugin with nodes designed to operate on transform components.
Stars: ✭ 27 (-47.06%)
Mutual labels:  rigging, maya-plugin
Mayanomicon
Custom nodes and introspection with the maya API
Stars: ✭ 28 (-45.1%)
Mutual labels:  rigging, maya-plugin
weights editor
A Maya tool to edit skin weights
Stars: ✭ 52 (+1.96%)
Mutual labels:  rigging
cameraLattice
Maya camera lattice
Stars: ✭ 35 (-31.37%)
Mutual labels:  maya-plugin
Iyan3d
Iyan 3D Professional Edition - 3D animation app for iOS
Stars: ✭ 27 (-47.06%)
Mutual labels:  3d-animation
polySymmetry
Maya tool for finding the symmetry of a polygon mesh based on the topology.
Stars: ✭ 51 (+0%)
Mutual labels:  rigging
polyReorder
Maya plugin with tools to reorder the vertices on a mesh to match the order of another.
Stars: ✭ 21 (-58.82%)
Mutual labels:  rigging
motion trace colab
colab版MMD自動トレース
Stars: ✭ 32 (-37.25%)
Mutual labels:  3d-animation
kinefx tools
Collection of rigging tools and utils for Houdini Kinefx
Stars: ✭ 64 (+25.49%)
Mutual labels:  rigging
MoPlugs
MotionBuilder Extensions Pack
Stars: ✭ 27 (-47.06%)
Mutual labels:  rigging
motionPath
Toolchefs Motion Path
Stars: ✭ 31 (-39.22%)
Mutual labels:  maya-plugin
skinner
Skin export / import tools for Autodesk Maya
Stars: ✭ 68 (+33.33%)
Mutual labels:  rigging
cmdc
Maya Python API 3.0
Stars: ✭ 98 (+92.16%)
Mutual labels:  rigging
playblastOIIO-maya
Implements a new 'playblast' command that uses OpenImageIO (OIIO) to process and write image data.
Stars: ✭ 29 (-43.14%)
Mutual labels:  maya-plugin
MayaPartioTools
MayaPartioTools is an open-source plugin to visualize and import particle data in Maya.
Stars: ✭ 20 (-60.78%)
Mutual labels:  maya-plugin
motion trace bulk
MMDモーショントレース自動化一括処理バッチ
Stars: ✭ 36 (-29.41%)
Mutual labels:  3d-animation
maya-glTF
glTF 2.0 exporter for Autodesk Maya
Stars: ✭ 121 (+137.25%)
Mutual labels:  maya-plugin
MayaToolbox
Comprehensive intro to Maya Python.
Stars: ✭ 16 (-68.63%)
Mutual labels:  rigging
3d-pose-baseline-vmd
Openposeの2D人間骨格データから3D関節データを生成し、その関節データを出力します。
Stars: ✭ 80 (+56.86%)
Mutual labels:  3d-animation
gt-tools
GT Tools is a free collection of scripts for Autodesk Maya
Stars: ✭ 44 (-13.73%)
Mutual labels:  rigging

Hyperdrive

Pose based rig caching for Maya

Hyperdrive Header

📺 Watch a demo of Hyperdrive on Youtube


🔨 Experimental: This is a personal research project and not yet production ready


Overview

Hyperdrive is a Pose-based character rig caching solution for Autodesk Maya 2017 / 2018.

It's heavily inspired by the pose-based rig caching solution developed and presented by Disney Animation at Siggraph 2015: "Achieving Real-Time Playback with Production Rigs"

Unlike common caching approaches available in DCC applications, this approach doesn't rely on time-based geometry caching. Instead it is utulizing the character rig animation values to calculate a unique pose ID, which points to a certain set of deformed character meshes stored in the cache. These poses are frame independent and can be re-used across different frame-ranges and even animation scenes.

For further details on my different approaches to solve to pose-based caching in Maya, please check out my Hyperdrive blog post.

Build / Installation

Requirements

  • CentOS 7 / Fedora 26+ (Windows currently untested)
  • Autodesk Maya 2017 / 2018 with SDK installed
  • Git
  • CMake - Version 3.9.1 or newer

Build

Hyperdrive comes with a CMake script that makes building the plugin fairly simple.

I recommend using CMake GUI if you are not familiar with the CMake command line interface.

Using CMake GUI

  1. Clone the repository using Git to a directory of your choice.

  2. Open CMake GUI and choose the cloned directory as your source code root.

  3. Press Configure. The output widget should show you which Maya SDK versions were found.

  4. Press Generate. This will generate the make script.

  5. Navigate to the repository root in your favorite shell and execute the make install command to build the plugin. Make sure to change the -j argument to the available CPU core count on your machine.:

    make install -j8

Using CMake command line

  1. Clone the repository using Git to a directory of your choice.

  2. Run the CMake command to generate the make script. The console output will show, which Maya SDK versions were found.

    cmake /path/to/hyperdrive/repo

  3. Execute the make install command to build the plugin. Make sure to change the -j argument to the available CPU core count on your machine.:

    make install -j8

Installation

After successfully building the plugin, all you need to do is to point Maya to the Hyperdrive module.

export MAYA_MODULE_PATH=/path/to/hyperdrive/repo:&

Usage

Launch Maya. After Maya has finished loading, you should see a Hyperdrive menu in the main window. If you are missing this menu for some reason, please make sure that the plugin is available to Maya and loaded. You can do this via Windows - Setting/Preferences - Plug-in Manager.

To launch the Hyperdrive GUI, click Hyperdrive - Manager in the main menu. This will open the Manger UI, which is your central hub to use Hyperdrive.

Rig Setup

  1. Open Hyperdrive Manager and click Add Rig. Enter a unique Rig Tag for your setup. Ideally this is the character name AND a version number. You need to update your Rig Tag everytime your Rig changes.
  2. Select your character meshes and click Add Mesh in the Caches Tab. This will create a HdCacheNode for each mesh and connect them to your HdPoseNode.
  3. Select your animation controls and click Add Control Attrs. in Controls. Hyperdrive connects your animation controls to the pose node of the rig and you are good to go.
  4. Optional: Use the Blacklist / Whitelist tabs to add nodes to be explicitly evaluated all the time / never.

To temporarily bypass the cache after the setup, go to Settings and check Bypass.

Hyperdrive Manager 1

Build Developer Documentation

Required Python packages

Sphinx Docs Build

  1. Install the necessary Python packages.

    $ pip install sphinx sphinx-rtd-theme exhale recommonmark
    
  2. Navigate to path\to\hyperdrive\repository\docs and execute the make command.

    $ make html
    
  3. The built documentation is in path\to\hyperdrive\repository\docs\_build\html.

Known Issues & Limitations

  • Meshes sometimes lose material on scrubbing.
  • For some complex rigs, animation edits of already cached regions might lead to inaccurate re-caching.
  • Sometimes pose node to cache node connections are not being stored properly (in file), even though they appear correctly in the node editor.
  • Sometimes Cache setups created via GUI do not trigger Maya to update the cacheId. The cache node needs to be disconnected and reconnected to fix this.
  • The evaluator sometimes fails to update it's internal state when the scene changes.
  • Meshes attached via follicle or constraints may result in incorrect cache geometry.
  • M3dView currently breaks build on Linux so support for status text in viewport is not possible.
  • The current prototype works best when being used with a bunch of smaller meshes instead of one big mesh (this is a Maya drawing limitation).
  • Using a lot of cached meshes results in less and less performance gain.

Possible future extensions

  • Whitelisting / Blacklisting nodetype instead of specific nodes
  • Log to file
  • Cache to file
  • Draw caches with OpenGL directly
  • Draw Hyperdrive state text in viewport

References

Attributions

This project is relying on some awesome open source code to work.

License

MIT License

Written by Tim Lehr

Copyright (c) 2019 Animationsinstitut of Filmakademie Baden-Wuerttemberg

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].