Skip to content

Ndgt/Relation-Constraint-Dialog

Repository files navigation

README - 日本語 | DeepWiki

Relation Constraint Dialog

This MotionBuilder plugin provides a convenient search dialog for quickly creating objects in the Relation Constraint.



Platform

  • MotionBuilder: 2022 ~ 2027

    Note: MotionBuilder 2020 is no longer supported since v3.0.

  • OS: Windows


Intended Usage & Limitations

Caution

This plugin is implemented based on the internal specifications of MotionBuilder, which are not officially supported by the MotionBuilder SDK. It has been developed by leveraging the Qt libraries, based on the assumption that the MotionBuilder UI is built on Qt. However, these internal specifications are subject to change without notice in future updates. Please use this plugin at your own risk.

It is not recommended for use in production environments, such as:

  • Live performances or real-time operation

Instead, please use this plugin only for:

  • Offline editing or pre-setup tasks

For safety, please remove installed plugin from the plugins folder in your production environment.


Installation

  1. Download the latest release from the Releases page

  2. Extract the downloaded archive

  3. Identify the product version of your software

    (e.g., use ...-MB2027.dll if you're using MotionBuilder 2027)

  4. Copy the corresponding .dll file into the default plugin folder: MotionBuilder <version>/bin/x64/plugins

    (Note: You may need administrator privileges to copy files to the plugins folder.)


Documentation

See the DeepWiki page for detailed documentation: DeepWiki

You can build the documentation locally using Doxygen if you have it installed. Run doxygen <path/to/docs/Doxygen/Doxyfile>, and refer to the generated index.html in the html folder.


Usage

Dialog Controls

  • Tab – Open search dialog / Toggle "Find Option"

    (Note: This control only works if the mouse pointer is hovering over the relation view.)


  • Up/Down – Navigate the suggest list


  • Enter / Click – Confirm selection and create object


  • Esc / Click outside – Cancel and close dialog


Tip

Press A while hovering over the relation view if the relation object is not created at the expected position (at the mouse cursor).
Since this plugin monitors mouse interaction with the relation view to determine where to create the object, the calculation will result in an incorrect position if the view is "frozen" (i.e., dragged with the mouse but the view was not moved).


Dialog Settings

Since v3.0, settings button ( ... ) has been added to the search dialog, allowing you to customize the behavior of the search dialog and open the online help page.

1. Preferences

Push the settings button and select "Preferences..." to open the preferences dialog.




The LineEdit on the top of the preferences dialog displays the path of the configuration file. Right click the LineEdit will open the context menu, where you can copy the path to clipboard or open the folder containing the configuration file.



In the preferences dialog, you can customize the following settings:

  • Show Hit Operator First (default) / Show Hit Category First

    Whether to search by operator name first or category name first.
    If "Show Hit Category First" is enabled and you type q, the search results will prioritize categories that start with q (e.g., "Quaternion"), while if "Show Hit Operator First" is enabled, the search results will prioritize operators that start with q (e.g., "Converters - Quaternion To Axis Angle").

  • Do not search in namespaces (default: OFF)

    Whether to ignore namespaces when searching for models. If enabled, only the model name will be considered for searching, and the namespace name will be ignored.

  • Model Search Filter (default: All filters enabled)

    You can choose which types of models to include in the search results. For example, if you disable "Skeletons", FBModelSkeleton models will be excluded from the search results.


Note

These settings are saved in the RelationConstraintDialogConfig.ini file generated in the %USERPROFILE%\Documents\MB\<version>\config directory. You can also edit this file manually to change the settings.


2. Online Help

The following online resources are available:

  • Relations Reference: Official Help of relation operators
  • GitHub Repository: This repository



Development

Requirements

  1. Visual Studio Build Tools & "Desktop development with C++" workload

    • MSVC v143 - VS 2022 C++ x64/x86 build tool : MotionBuilder 2024 ~
    • MSVC v142 - VS 2019 C++ x64/x86 build tool : MotionBuilder 2022, 2023

  1. Qt - qtbase(Required), qttools(Optional)

    This plugin depends on qtbase (specifically QtCore, QtGui, and QtWidgets modules), and utilizes the qttools module to design the UI using Qt Widgets Designer.

    • Qt 6.8.3: MotionBuilder 2027
    • Qt 6.5.3: MotionBuilder 2025, 2026
    • Qt 5.15.2: MotionBuilder 2022 ~ 2024


    First, create Qt Account on the Qt Group website, and download the Qt Maintenance Tool, then install the required Qt components (Open Source version) with the Maintenance Tool.


  1. vcpkg

    This project uses vcpkg for project configuration and dependency management. Set up vcpkg with the following command:

    git clone https://github.com/microsoft/vcpkg.git
    cd vcpkg; .\bootstrap-vcpkg.bat
    

Recommended Build Configurations

Click version number to see the official resources.

  • Qt Source

    Qt Version Visual Studio Version
    Qt 6.8.3 Visual Studio 2022
    Qt 6.5.3 Visual Studio 2019 or 2022
    Qt 5.15.2 Visual Studio 2019

  • MotionBuilder Plugin

    MotionBuilder Version Visual Studio Version
    2024, 2025, 2026, 2027 Visual Studio 2022
    2022, 2023 Visual Studio 2019

Customizing UI

You can customize the UI of the search dialog and preferences dialog using the Qt Widgets Designer. Open the .ui files with the designer to edit the UI visually.




After you've finished editing the UI, use uic (User Interface Compiler) to convert the .ui file to the header file .h.

path/to/Qt/bin/uic.exe SearchDialog.ui -o ui_SearchDialog.h

Note

This process is not necessary, as the AUTOUIC CMake property automatically generates the header files from .ui files during the build process. Run this command only if you need it for features like code completion in your IDE.


Building Plugin

  1. Open the terminal as an administrator.

  2. Clone this repository.

    git clone https://github.com/Ndgt/Relation-Constraint-Dialog.git
    cd Relation-Constraint-Dialog/src
    

  1. Edit the user-specific variables in CMakePresets.json according to your environment.

    You might need to change the following variables:

    • generator: The CMake generator to use
    • MOBU_ROOT: The installation path of MotionBuilder
    • QT_SOURCE_SEARCH_PATH: The installation path of the Qt source

    {
      "version": 6,
      "configurePresets": [
        {
          "name": "base",
          "hidden": true,
          "architecture": {
            "strategy": "set",
            "value": "x64"
          },
          "binaryDir": "${sourceDir}/build/${presetName}",
          "generator": "Visual Studio 18 2026",
          "toolset": {
              "strategy": "set"
          },
          "cacheVariables": {
              "CMAKE_AUTOMOC": "ON",
              "CMAKE_AUTOUIC": "ON",
              "CMAKE_CXX_STANDARD": "17",
              "CMAKE_CXX_STANDARD_REQUIRED": "ON",
    
          ...
    
      {
        "name": "MotionBuilder2027",
        "inherits": [
          "base"
        ],
        "toolset": {
          "value": "v143"
        },
        "cacheVariables": {
          "MOBU_ROOT": "C:/Program Files/Autodesk/MotionBuilder 2027",
          "PRODUCT_VERSION": "2027",
          "QT_SOURCE_SEARCH_PATH": "C:/Qt/6.8.3/msvc2022_64"
        }
      },

  1. Build and install plugin

    cmake --preset MotionBuilder2027 --fresh
    cmake --build --preset 2027-RelWithDebInfo --clean-first
    cmake --install build/MotionBuilder2027 --config RelWithDebInfo
    


    The built plugin .dll file will be copied to the default folder MotionBuilder <version>/bin/x64/plugins.


    Note: If you are using Visual Studio Code, you can use Tasks to run these commands. See tasks.json for reference.



Dependencies

  • This project uses the Qt framework (Community Edition) via dynamic linking.

    The Qt components used in this project are licensed under the GNU Lesser General Public License version 3 (LGPLv3). The LGPLv3 license text is included in this repository (LICENSES/Qt/lgpl-3.0.txt). You can also view the original license text on the GNU website here.

    For more information about Qt licensing, visit the Qt Company licensing page.



License

This project is licensed under the BSD 3-Clause License. See the LICENSE file for full details.

Please note that while this project is BSD-licensed, the use of Qt is subject to LGPLv3 and Microsoft Detours is subject to the MIT License. Redistribution of the binary must comply with the terms of these licenses.

About

Quick Object Creator plugin for MotionBuilder Relation Constraints

Resources

License

Stars

Watchers

Forks

Packages