Plugins
Plugins extend Oden with custom entities, global background logic, capture sources, controls, and project-specific GUI. Load plugin files from trusted project or application paths, then add the registered plugin entity or configure the global instance.
Load a project plugin
Use a project plugin when the plugin belongs to one .vproj and should travel with that project.
-
Put the plugin dynamic library and its runtime dependencies in a project folder, for example
bin. The plugin file normally ends in.dllon Windows and.soon Linux. -
Open the project in Oden.
-
Open
Plugins. -
Open
Plugin Paths. -
Select
Add. -
Set
Plugin Pathto the plugin folder. Use a relative path when the project and plugin folder should move together. The path may contain%HOME%for the user’s home directory. Hover the field in the GUI to inspect the expanded path when diagnosing loading problems. -
Save and reopen the project so Oden scans the path.
-
Open
Pluginsagain and confirm that the library appears underProject Plugins. -
Add the plugin entity from the normal entity
Add Childmenu when the plugin registers an entity. -
Configure the entity options exposed by the plugin, then save the project.
If the plugin is in the same folder as the project file, Oden scans that folder even when no explicit plugin path is set.
Configure global plugin instances
Use a global plugin when the plugin should run without being added to the scene graph.
Global plugin instances appear under Plugins > Global Plugin Instances.
-
Install the plugin where the application scans program plugins, or set the application-level additional plugin path.
-
Restart Oden.
-
Open
Plugins. -
Open
Global Plugin Instances. -
Expand the plugin name.
-
Configure the plugin-provided controls.
-
Disable the instance only when the project must load without that global behavior.
Global plugin availability depends on the application startup paths, so restart Oden after changing those paths.
Pass plugin parameters on startup
Use --plugin-param for values that should be supplied by launch scripts or deployment tooling instead of the project file.
oden-streamer --plugin-param tcp_port 4000 --plugin-param mode production
Plugins read these key/value pairs through the plugin settings API. The supported keys are plugin-specific.
Use plugin video capture
Some plugins register a video capture backend. Use it from a video entity when the source is not a built-in camera, file, or network input.
-
Load the plugin and reopen the project.
-
Open the video entity.
-
Open
Input. -
Set
TypetoPlugin video capture. -
Select or confirm the plugin-provided capture type.
-
Configure the plugin-defined options.
-
Start the input and check the texture preview.
For the surrounding video input workflow, see Camera Inputs.
Troubleshoot plugin loading
-
Confirm the plugin path is visible in
Plugins>Plugin Paths. -
Reopen the project after changing
Plugin Path; reopen Oden after changing application plugin paths. -
Confirm the plugin file matches the operating system and Oden build architecture.
-
Check that all dynamic-library dependencies are available. Use Dependencies GUI on Windows, or run
ldd -r -d ./plugin.soon Linux. -
Confirm the plugin registers a unique entity ID.
-
Check
Project Pluginsfor the library and expand it to see registered plugin entities. -
If
Hot Reloadingis enabled, restart Oden before production testing.
Hot Reloading is intended for development.
Do not rely on it for deployed systems.
|
Project-file names
Project plugin folders are stored in plugin_dll_paths.
The older single plugin_dll_path field is deprecated and is patched into plugin_dll_paths when old projects load.
plugin_dll_paths : [ "bin" ];
scene_manager : {
scenes : ( {
root_entity : {
children : ( {
type : "plugin_entity";
plugin_entity : {
type_id : "0b424e19-5f78-4a43-9c75-bd38cb1258b0";
type_name : "Inference Plugin";
options : ( );
};
} );
};
} );
};
Plugin-defined options are stored with the plugin entity or plugin capture settings. Prefer changing them through the plugin GUI unless the plugin author documents the project-file fields.