Releases: j20001970/GDMP
v0.4
It may be late, but it is never absent. GDMP v0.4, now available on Godot 4!
With Godot 4 major release, and GDNative superseded by GDExtension, GDMP has also completed the porting process to GDExtension. From now on, the master
branch will track the development of GDMP for Godot 4.x, while 3.x
branch keeps the original GDNative version, receiving feature backports where applicable. This release also completes most MediaPipe vision tasks that replace legacy pbtxt-based solutions.
What's changed in this release
General
- godot-cpp update to v4.2.2
- MediaPipe update to v0.10.13
- Setup process is now more streamlined (Thank @you-win for helping on windows-specific parts)
build.py
is now more configurable.- CI build workflow is created to help delivering pre-built libraries and testing more rapidly (Thank @Malcolmnixon for initial bringing up)
MediaPipeCameraHelper::set_graph
is removed, instead aMediaPipeImage
object is generated for each camera frame, connectnew_frame
signal to receive camera frames instead.- GDMP now register a custom resource provider to MediaPipe upon library initialization. That means when any calculators calling
mediapipe::GetResourceContents
to load resource such as models or assets, Godot's filesystem will be searched first, then fallback to platform-specific methods.
New classes
- The following vision tasks have been added:
MediaPipeFaceDetector
MediaPipeFaceLandmarker
MediaPipeGestureRecognizer
MediaPipeHandLandmarker
MediaPipeImageClassifier
MediaPipeImageEmbedder
MediaPipeImageSegmenter
MediaPipeObjectDetector
MediaPipePoseLandmarker
- MediaPipeImage: an intermediate class between godot::Image and mediapipe::Image (which wraps ImageFrame and GpuBuffer), and is used in vision tasks primarily.
- MediaPipeProto: The number of proto classes to keep up with is too damn high! Therefore we introduced one class to rule them all, and should (probably) works for most cases.
Android
- Dependencies updated to match Godot v4.2.2
- GDMP for Android are now bundled as a Android Archive (aar) with native libraries.
iOS
- Building instruction for iOS have been updated, removing deprecated Tulsi method.
Linux
- Add script to enable Flatpak environment.
Misc
Full Changelog: v0.3...v0.4
v0.3
Behold, GDMP v0.2: Episode One!
This release mainly focus on development QoL changes, a couple of new classes are also added to improve the plugin's overall modularity. Enjoy!
What's changed in this release
General
- Old autoload-based methods have been removed.
- MediaPipe updated to v0.9.3.0
- Introducing Hedron's Bazel Compile Commands Extractor in mediapipe setup patch for generating a more complete
compile_commands.json
. You can runextract_compile_commands.py
to do it. - Setup and build scripts improvements.
- Autoload
GDMP
has been renamed toMediaPipe
in order to approximate usage syntax in future GDExtension releases. - CameraHelper permission signals are now merged into one
permission_result
with a boolean value indicating whether camera permission is granted. - Platform emoji is removed from release notes because it is not funny.
New Classes
-
GraphConfig
: a Godot resource that represents mediapipe::CalculatorGraphConfig.
Graphs on Godot are now initialized with GraphConfig instead of graph config file path. -
GPUResources
: represents mediapipe::GpuResources.
Graph, GPUHelper and CameraHelper on Godot are now required to set GPU resources manually to enable GPU support.
Android
- Gradle and AGP are synced with upstream Godot version.
- godot-lib detection is now more flexible.
- CameraHelper permission is now handled by godot::OS instead PermissionHelper from JNI.
Windows
- Use junction directory to symlink GDMP source to mediapipe workspace.
build.py
will now supplyingPYTHON_BIN_PATH
environment variable to Bazel using current python interpreter, so you don't have to set it manually.
Godot 4 (GDExtension)
- GDMP for Godot 4 is still being worked on, you can try it on
4.0
branch at the time of writing.
In Next Release
As you may already noticed, MediaPipe upstream is deprecating legacy solutions (i.e. the way we load a predefined graph config file to run for model inference pipeline using framework components) in favor of task API. While MediaPipe framework itself is not deprecated by any means, depending on deprecated solutions for real world applications will become more unreliable over time.
Therefore, in the next GDMP v0.2: Episode Two GDMP v0.4 release, the main focus will be bringing up several model task APIs from official MediaPipe solutions while maintain compatibility with existing framework classes, as well as official GDExtension support, GDMP for web platform is also planned. It may take some time, but we will get there.
Full Changelog: v0.2...v0.3
v0.2
GDMP v0.2 has been released. In addition to support for iOS and Windows platform, there are also quite a few minor improvements here and there, it ain't much but it's honest work.
What's changed in this release
General
- MediaPipe updated to v0.8.10.2
- Godot C++ bindings are now built in Bazel.
- Errors are now logged with Godot ERR_* macros for easier debugging.
- Add several methods to Graph for checking graph status.
- Graph config is now kept after graph stopped so that it can be reused.
- Add permission related methods and signals to CameraHelper.
- CameraHelper can mirror video frames on non-mobile platforms.
- GPUHelper now requires manual instantiation and initialization with existing graph instead of calling Graph.get_gpu_helper()
Android 🤖
- The build process of MediaPipe and GDMP aar have been merged.
- GDMP aar is now versioned.
iOS 🍎
- Initial iOS support has been added.
Linux 🐧
- Clangd compilation database has been added for easier development.
Windows 🪟
- Support for Windows has been added with GPU disabled.
For full changelog please refer to: v0.1...v0.2