Skip to content

mayaMatchMoveSolver-v0.4.0

Compare
Choose a tag to compare
@david-cattermole david-cattermole released this 06 Nov 09:51
· 445 commits to master since this release

The v0.4.0 release provides a lot of new tools and features, with
better stability more fixes.

Maya 2019 to Maya 2023 is supported on Windows and Linux, with both
Python 2.7 and 3.x support.

Biggest features introduced are:

  • Layered Lens distortion nodes.
  • (2D) Lines, used to solve lens distortion attributes and visualise straight-lines.
  • MM ImagePlane node used to preview Lens distortion.
  • A 'Camera Solver' to solve Cameras "from scratch" with no known 3D positions.
  • Performance improvements (between 2 to 20 times faster!) using a new internal MM Scene Graph mode.
  • Markers and Bundles now use custom shapes for an easier display in Maya.
  • and a lot more...

NOTE: It is not recommended to mix this release with v0.3.x. It is recommended to use v0.4.0 only on new projects as there may be some incompatibility opening Maya Scenes created with v0.3.x using v0.4.x - if this is an acceptable problem, feel free to mix and match as needed.


What's New?

Fixes / Changes:

  • General UI
    • Re-arrange menus and shelf icons.
    • Improve Marker, Bundle and Line tool icons with letter to indicate the type of tools.
  • Solver UI
    • Improve spacing of Solver tab widgets.
    • Add Solve Focal Length toggle.
    • Add Solve Lens Distortion toggle.
    • Hide Per-Frame from the Input Objects panel.
    • First found Collection is treated as active Collection.
    • Add button adds Lines when Camera is selected.
    • Do not add the current frame list to the Root/User Frame List in the Solver UI.
  • Bundle Tools
  • Add Z-Depth Tools
  • General Tools
    • Fix un-parenting of objects when the object has no keyframes (mmSolver > General Tools > Unparent to World tool).
    • Add new node types to 'Remove Solver Nodes' tool.
  • Attribute Tools
  • Camera Calibration tool.
    • Now uses mmImagePlane (not Maya image plane) by default.
    • Improved visual display (with new Line nodes).
    • Can use more than 2 Markers to define lines, with lens distortion. Use the Subdivide Line tool to add more Markers.
  • 3DEqualizer "Copy/Export 2D Tracks" tools updated to remove use of 'First Frame is Frame' value.
  • Core Solver Features and Performance:
    • (#106) Solve Lens Distortion
    • (#114) MM Scene Graph - Use In-Memory Representations of Bundles and Cameras.
    • (#144) Add OpenMVG.
    • (#174) Add Ceres Solver.
    • Solver now uses "Cauchy" loss robustness mode to reduce the effect of (very) bad data in a solve. Bad data has less of an effect on the final solve.
    • Add evaluations per-second ("evals/secs") at the end of each solve in the Output Window.
    • Terminal/Output Window text is now easier to read and not so verbose by default.
      • You can turn on "Verbose" logging in the Solver UI to get output similar to the default in previous releases.
    • MM Scene Graph
      • Parity of solve results with both MM Scene Graph and Maya DAG.
        • Multi-frame static/animated attribute solving
        • Lens distortion
        • Markers enabling/disabling during frame range in single solve.
    • MM Scene Graph evaluation performance significantly improved between 2 and 20 times faster.
    • Display Marker and Attribute Count to the solver output (in the Output Window/Terminal).
  • Selection Tools
    • (#241) Fix 'Unlink bundle from Marker' when run more than once.

Deprecated features:

  • Removed 'Smoothness/Stiffness' from the solver.
    • The feature was not working well anyway, so it was removed to avoid confusion.
  • Solver UI
    • Removed "Legacy" solver tab.
    • Removed "Solver Validation" features and check boxes.
    • "Evaluate Object Relationships" feature has been removed.
    • Removed unneeded menus, and/or legacy features.

Developer (low-level) changes:

  • Overall
    • Move a lot of the extra directories at the project root into a "./share" directory.
    • The src/mmSolver/adjust/* file have been split into smaller files (avoiding very high line count), and a README file added.
    • Add best practices to the ./DEVELOPER.md file.
    • Add README.md to the ./python directory to explain parts of the code and the structure.
  • Build System:
    • Build support for Maya 2023 with C++14 and Python 3.x.
    • Better concurrent build support from the same source directory:
      • Build scripts generate .ui -> .py files out of the source directory
      • Build scripts generate .rcc files of the source directory.
    • The build setup does not use "in-source-building".
      • however for documentation generation it currently still does need to (PRs welcome).
    • Windows build scripts updated to exit as soon as a failure is detected.
    • Changed default CMake generator to Ninja (on Windows)
    • (#243) By default all third-party dependencies will be auto-downloaded and compiled.
    • (#150) Refactor CMake Build System
    • (#167) Update to C++11 Standard
    • (#149) Remove Qt from Build Dependency
    • (#172) Add Lens Distortion Plug-in Kit (LDPK)
    • (#174) Add Google Ceres Solver.
    • (#144) OpenMVG library is now included inside mmSolver
    • CMinpack is now compiled and linked as static library.
    • Add use of Rust Programming Language and Rust Package Manager Cargo Crates.
      • CXX is used for C++ compatiblity layer.
      • Rust is not a required runtime dependency.
  • CI/CD
    • Use Clang Tidy to reformat C++.
    • Use Black to reformat Python code.
    • Set up GitHub Actions to automatically check and enforce C++ and Python format.
  • Python API
    • Add Camera Solver to the Python API (mmSolver.api.SolverCamera()), and Solver UI integration.
    • Add mmSolver.api.filter_image_plane_nodes() function.
    • Add mmSolver.utils.imageseq module to evaluate image sequences.
    • Add mmSolver.api.Line() API object
    • Change mmSolver.utils.nodeaffects module supports mmLensModel nodes.
  • (#114) Use In-Memory Representations of Bundles and Cameras with MM Scene Graph
  • Add Commands
    • Add mmSolverSceneGraph to detect an invalid scene graph with the use of mmSceneGraph.
    • Add mmLensEvaluate.
    • Add mmConvertImage to convert image files to Maya IFF files.
    • Add mmCameraRelativePose.
    • Add mmCameraPoseFromPoints.
  • Add Nodes
    • Add mmBestFitLine node.
    • Add mmLinePointIntersect node.
    • Add mmReadImage to query image resolution.
  • Miscellaneous
    • Marker are now assumed to always be under a camera with the translate X/Y values representing the position on the image plane in the range -0.5 to +0.5.
    • Printing the same messages to the viewport is reduced to avoid spamming the user and slowing down the Maya refresh-rate.
  • (#231) Viewport Renderer for MatchMove is added, but disabled because it is feature incomplete.

Known Problems

  • Markers are not distorted by Lens Distortion in Maya 2023.0, and 2023.1.
    • Please upgrade to Maya 2023.2.
  • Solving Lens Distortion does not act correctly in some cases - this is being actively developed and improved - please report bugs.
  • There are lens distortion update issues in the Maya viewport with Markers and Lines node types.
  • The Solver acts strangely and doesn't solve correctly when the camera's "Film Fit" is set to anything other than "Horizontal".
  • Compatibility with Maya scenes with mmSolver v0.3.x nodes may not work as expected - please report issues.
  • The mmImagePlaneShape does not work the same as Maya native image planes with the useBackground/hold out options in Viewport 2.0.

Please report any bugs or suggestions you find in this release here and clearly state the version of mmSolver you are testing.