Create a nex SkyRealVR extension
Since version 1.16, Skyreal VR VR can load extensions made in blueprint at runtime. Below, you will find information on how to create an deploy extensions containing business code and integrat it to Skyreal VR.
Definition and usages
With the Skyreal VR extension system also called "Open4Service", users can deploy native extension containing new commands, new content or new behaviour to Skyreal VR VR. Every use case will be explaind in details in separate documentation page referenced bellow. This page focus on how to create and deploy brand new business extension.
Create an extension step by step
To create a new extensions, an installed version of Unreal editor compatible with Skyreal VR VR is required. You will first need to create a new Unreal project with Skyreal VR rendering options and Skyreal VR plugins (SkrSdk, SkrUtility, SkrDatamodel, ...). It possible to either start from a dataprep map created by SkyPrep or by creating from scratch a new project and download all the plugins of the release.
- Once the project is created, open it and go into the "Edit->Plugins" menu.
- Then click on "Add" button at the top left of the newly opened tab.
- Then fill information of the plugin creation windows by selecting "Content Only" an fill the plugin name.
- A new folder now appears in the "Plugins" section of the content browser (if not, check that the option "Show plugin content" is checked in the "Settings" menu of the content browser). Then, you can create a new dorectory called "RegistrableAssets" where every extension asset should be saved.
Package the extension step by step
To use extensions inside Skyreal VR, it should first be packaged using the following procedure.
- First, cook the project using the menu "Plateforms->Windows->Cook Content".
- A pop up will be display, ending with another pop-up that confirm the success of the operation (If failed, look athe the logs and solve blueprint issues)
- Open windows file explorer in your project directory. Copy the "{PluginName}.uplugin" file in the sub-directory "{YourUnrealProject}/Plugins/ {PluginName}" (At the left side of the picture bellow)
- Go back to the project directory and then paste the file in the cook folder: "{YourUnrealProject}\Saved\Cooked\Windows\ {YourUnrealProject}\Plugins\ {PluginName}"
- Optional: At this step, plugin can work outside of the project. It's possible to exctract it into another directory of the computer by copying directory {YourUnrealProject}\Saved\Cooked\Windows\ {YourUnrealProject}\Plugins\ {PluginName} to output location
Reference packaged extension into Skyreal VR
To import an extension inside Skyreal VR, there are three differents options
Option 1: Standard SkrExtensions.json file
The first way of importing extension inside Skyreal VR is to edit the SkrExtensions.json located in the "Skyreal VR" directory. Extensions are referenced in the plugins json array field and ca be referenced either as a full path or a local path.
The extensions will then be loaded at Skyreal VR startup.
Option 2: SkrExtensions.json file as command line
The second way of importing extensions inside Skyreal VR is similar as the first one. An SkrExtensions.json with the same structure as before is somehere on the disk and at the SkyRealVR startup, a command line arguement is added to reference the file:
-extensions="c:/{YourPath}/{filename}.json"
The extensions will then be loaded at Skyreal VR startup.
Option 3: Import at runtime via command
The third way of importing extensions inside Skyreal VR is different as the precedent one because it will be loaded dynamically at runtime instead of at startup. To do so, add the command 'Load extensions' in the desktop menu. When user will click on it, a file picker will be displayed to pick at the {PluginName}.uplugin file.
The plugin will dynamically be loaded when file is picked.
Option 4: Import at runtime via blueprint
The fourth way of importing extensions inside Skyreal VR is similar as the third one, but instead of loading the extension from the Skyreal VR command, it will call a blueprint function called "TryLoadExtensionsFromFile" inside the SkrExtensionsSubSystem.
The plugin will dynamically be loaded after calling the function.
How to add behaviour in the extension
The extension plugin can be used to create a lot of differents things, bellow link to documentation page explaining deeper use cases: