Thank you for your interest in contributing to OpenMoBu!
We welcome improvements in performance, stability, documentation, and new MotionBuilder-related features.
This document explains how to propose changes, follow the code style, and participate in development.
- Reporting Issues
- Requesting Features
- Forking & Branching Model
- Code Style Guidelines
- Commit Message Conventions
- Pull Request Guidelines
- Testing & Validation
- Licensing
- Code of Conduct
If you encounter a bug, please open a GitHub Issue and include:
- Clear title
- Steps to reproduce
- Expected vs actual behaviour
- MotionBuilder version (e.g., 2022 / 2023 / 2024)
- OS & GPU info (Windows, NVIDIA driver version, etc.)
- Logs or screenshots (if relevant)
Before submitting, please search existing issues to avoid duplicates.
Feature requests are welcome. When creating a feature request:
- Clearly describe the need or workflow improvement
- Provide examples (videos, screenshots, use cases)
- Add technical context where possible (API limits, MB SDK details)
- Suggest a potential implementation direction (optional)
Large features should be discussed before implementation.
OpenMoBu uses a simple branching workflow:
- master → stable, production-ready
- feature/* → for new features
- bugfix/* → for bug fixes
- docs/* → documentation updates
- Fork the repository
- Create a feature branch
git checkout -b feature/<short-description>
- Commit your changes
- Push to your fork
- Open a Pull Request against
master
- Use modern C++17/20 features when appropriate
- Keep functions small and readable
- Avoid unnecessary dynamic allocations in real-time code
.cpp,.h,.inl- PascalCase for classes and methods
- camelCase for class members and variables
- UPPER_CASE for constants
- 4-space indentation, no tabs
- Use assertions for internal logic assumptions
- Avoid exceptions inside real-time render/evaluation loops
- Prefer status return values for predictable control flow
Use descriptive commit messages. Recommended format:
<type>: <short summary>
[optional longer explanation]
Types:
feat:new featurefix:bug fixperf:performance improvementrefactor:code cleanupdocs:documentation onlybuild:build/CI changestest:tests
Example:
perf: optimize SSAO kernel sampling and reduce texture lookups
Before opening a PR:
- Ensure the code builds on supported MotionBuilder versions
- Verify the plugin loads and runs correctly
- Run performance-sensitive features in a simple scene
- Update documentation if the change affects the workflow (optional)
- Add comments for complex GPU or multithreading logic
Your PR should include:
- Clear summary of changes
- Screenshots or profiler results if relevant
- Notes about compatibility (MB version, SDK differences)
Large PRs may be requested to be split.
OpenMoBu plugins interact closely with MotionBuilder.
Before submitting:
- Rebuild the plugin in Release mode
- Load in MotionBuilder
- Test with a minimal scene
- Verify stability across playback, scrubbing, and evaluation cycles
- Use internal MotionBuilder's profiler tools or RenderDoc, Nsight, or any GPU profiler
- Avoid regressions in real-time passes (post-processing, compute, etc.)
By contributing, you agree that your code will be released under the project’s license.
Ensure you have rights to contribute the code, especially if it originates from an employer.
This project follows the Contributor Covenant.
Be respectful, constructive, and collaborative.