Skip to content

mayaMatchMoveSolver-v0.3.0

Compare
Choose a tag to compare
@david-cattermole david-cattermole released this 06 Oct 20:05
· 3235 commits to master since this release

This release v0.3.0 adds many more features, offers a number of new utilities for developers writing tools, offers performance improvements and increased configuration options.

Download the archive file for your operating system and Maya version, and follow the INSTALL.md instructions.


Below is a list of some of the new features, changes and bugs that are fixed in v0.3.0.

Solver UI - New features

  • Added detailed counts for Object, Attribute and Solver sections of the Solver UI.
  • Added "Validate" button to test if the Solver can be run, and number of Deviation, Parameters and Frames can be used. Use the Solver UI > Edit > Auto-Update Solver Validation toggle to trigger the validation automatically (off by default).
  • Automatically set Marker and Bundle outliner icons (when the Solver UI loads), for Marker/Bundle locator nodes.
  • #18 - Updated UI to increase performance when adding new objects to the Solver UI
  • #87 - Added ANM, STC and LCK buttons to the Attributes in the Solver UI.
  • #57 - Added Basic, Standard and Legacy Solver Settings, with Root frames, and check boxes for solver options.
  • #56 - Changed Solver UI to update the Progress Bar and status line while a solve is in progress.
  • Removed "Tools" menu from Solver UI (replaced with Maya "mmSolver" menu)
  • Window size is stored and remembered for all UIs in mmSolver. The files are saved into ~/.mmSolver/*.ui.

Tools - New features

  • Added re-parenting tools ("Parent under Node" and "Unparent to World") similar to Maya's standard Parent and Unparent tools, except these tools will maintain the world-space position while changing parents. The transform values are computed only on keyframed frames (sparse), not baked each frame.
  • Added Create/Remove Controller tool, used to create a new locator from a character rig control and solve with it (combined with the re-parenting tools, this is a very powerful tool).
  • Added "Triangulate Bundle" tool to automatically calculate the 3D position of a bundle using a Marker and an animated camera.
  • Added "Deform Marker" tool, a simple way to add a Maya Animation Layer, modify the Marker's position, then bake the offset down and remove the Maya Animation Layer.
  • #14 - Added 'Attach Bundle to Curve' tool, to solve a single attribute and move the bundle along a NURBS curve.
  • #103 - Added 'Navigate Root Frames' tool, for stepping between root frames.
  • #75 - Added tool to move selected Markers to a screen position.
  • #107 - Added 'Screen Space Transform Bake' tool, to allow solving transforms in screen space.
  • #45 - Added Undo/Redo Scene (with UI disabled); Solver UI > Edit > Undo (without UI update)
  • #12 - Added Marker "Show/Hide Deviation Curves" tool, to display the Deviation on each Marker, from the last solve. Added Deviation to Marker transform node (visible in the Maya Channel Box).
  • #10 - Added UI for setting Smooth Keyframes options, options are saved with the Maya scene.
  • #99 - Changed the Load Marker tool to only create keyframes when an enable or weight value changes.
  • #16 - Added a 'mmSolver' menu (displayed by default) to the Maya window.
  • Added an alternate 'Minimal Shelf' configuration file, ideal for embedding into an existing script that creates Maya Shelves.
  • #115 - Added Pop-Up menus for Maya Shelf buttons (controlled with a configuration file).
  • Added "System Information" and "About" to Solver UI, to display information about mmSolver and the current Maya environment (for debugging).

Tools - Bug fixes

  • #117 - Bug fix: Center 2D on Selected fixed when no nodes are selected.
  • #109 - Bug fix: Marker-Bundle selection toggle fixed.
  • #108 - Bug fix: Rename Marker/Bundles fixed.
  • Bug fix: The Marker Group 'overscan' attribute made Markers move away from image centre, this behavour has been reversed for newly created Marker Group nodes, the 'overscan' attribute now scales the Markers toward the image centre.
  • Changed the default Marker Group depth to 10.0 units, to reduce the possibility of Markers being hidden by the near-clip plane of a camera.

Solving - New features

  • #95 - Added check-boxes for showing Polygons or ImagePlanes in the viewport while solving; Solver UI > View > Display Image Planes and Solver UI > View > Display Meshes.
  • #54 and #116 - Bug fix: Added automatic value offset for all rotation attribute types.
  • #102 - Set only the objects that are being changed to be 'dgdirty'ed.
  • #66 - Added ability to use a "Robust Loss Function", using maya.cmds.mmSolver command (it is currently disabled by default). Options include "trivial" (no change), 'soft L1' and 'cauchy'.
  • #64 - Added Min/Max values for each attribute being solved ('Box Constraints')
  • #73 - Added maya.cmds.mmSolver flag to compile and return details without triggering a solve.

Solver - Bug fixes

  • Bug fix; Solver deviation calculation has been improved, resulting in accurate deviation calculations.
  • Bug fix; (internal) Solver settings have been tweaked for improved performance and quality, resulting in lower deviation without needing to press "Solve" multiple times (in example scenes).
  • Turned off "Isolate Objects" by default, because it took too long an didn't seem to improve the Solve speed or quality.

API Changes

  • #123 - Bug Fix: Camera transforms are now allowed to be custom plug-ins.
  • #20 - mmSolver.api.Marker and mmSolver.api.Bundle classes now use consistent keyword arguments. (backwards compatibility is maintained, but the older usage is deprecated)
  • #72 - Added parallel 'Validation' compiling (using #73). New many functions and objects to allow executing. This is NOT 100% backwards compatible.
  • Added ExecuteOptions object, for all options for Executing a solve.
  • Deprecated mmSolver.tools.selection functions, and moved them into various mmSolver.utils modules.

Plug-in / Utilities - New features

  • Added many utilities to the mmSolver.utils sub-package, many moved from the mmSolver.api.
  • #17 - Added configuration utility module.
  • #74 - Added plug-in command perform 3D-to-2D reprojections.
  • #71 - Added License information to each file header in the project.
  • #113 - Added mmSolver.utils.transform utility module, to allow batch querying of transform node matrices (used for baking tools).

Build system

Backwards Compatibility

An effort has been made to make mmSolver backwards compatible with the v0.2.x series, however 100% compatibility has not been tested.

If you have used the API or specific tool functions, you will likely need to change your code a little to be compatible with v0.3.0. If you are a user

For users, the biggest backwards incompatible change is the Marker Group 'overscan' attribute is now inversed. In previous versions, for an iamge overscan of 1.1, a value of 0.91 was required. In v0.3.0+, the value should be set correctly at 1.1.

Known Issues

  • Solver engine can become slow with many attributes.
  • New v0.3.0 default values will not be used until a new Collection is created. Delete your previous Collection and create a new Collection using the Solver UI > File > New Collection menu item.
  • The Maya viewport is refreshed during solving to force Maya to evaluate all nodes in the solve. This causes slower performance (e.g. 6 seconds verses 30 seconds), but ensures accurate solver results. Users may wish to turn this feature off in the Solver UI > Edit > Refresh Viewport check box.
  • The test suite fails on 3 different solver tests, due to a deviation that is too high, this is intentional.
  • The test suite fails to run on Maya 2018 with mayapy, the cause is unknown.
  • The mmSolverType command raises an error with certain flags on Maya 2016 for an unknown reason. This problem is specific to Maya 2016, the same command works on Maya 2017+.