mayaMatchMoveSolver-v0.4.0
·
919 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?
- New MM Solver Objects
- (#175 #21) Custom node for Markers
- (#175 #67) Custom node for Bundles
- (#173) MM ImagePlane
- (#120) 2D Lines
- MM Lines can be subdivided to any level of detail and subdivision uses the user's Marker selection for selective refinement.
- Solving Lens attributes using 2D Lines.
- (#216) Sky Dome visualization.
- Display Tools
- Toggle Object Motion Path tool.
- Set Object Colour tool
- Set wireframe colours of objects quickly and easily.
- Camera Tools
- File Input/Output
- Add Save Lens File tool to save Lens nodes in Maya as .nk files.
- Add Load Lens tool to load lens distortion values from a Nuke .nk file.
- Add Copy Marker tool.
- Add Save Marker tool.
- Add Z-Depth Tools
- Add Camera/Object Scale Adjust tool (by @bpatchasaheb)
- Add Create World Controllers tool - no-UI version of "Create Controllers" tool.
- Solver UI
- User and Root frames
calculation has been enhanced to provide better solve stability by default without as much user input. - Detects when the mmSceneGraph cannot be used and errors before a solve can start.
- Camera Solver tab
- User and Root frames
- Compatibility:
- (#217) Python 2.7 and 3.x and Maya 2022+ Support
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
- Improve accuracy of Triangulate Bundle tool.
- Add Z-Depth Tools
- Improve Screen-Space Rig Bake tool (by @bpatchasaheb).
- 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.
- Fix un-parenting of objects when the object has no keyframes (
- Attribute Tools
- Smooth Keyframes - Remove up/down arrows from "Width" widget.
- 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.
- Also available on 3DEqualizer ScriptDB.
- 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.
- Parity of solve results with both MM Scene Graph and Maya DAG.
- 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.
- Use
- 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.
- Add
- (#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
- Add Nodes
- Add
mmBestFitLine
node. - Add
mmLinePointIntersect
node. - Add
mmReadImage
to query image resolution.
- Add
- 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.