The XR+ javascript API let developpers add front-end functionalities that do not exist in XR+, it also allows for a deeper UI / screens customization.
The API is a project module to enable in the studio
The API allows javascript file and CSS files to be loaded in the <body> of the project web document, with the usual <script> and <style> tags.
You must host those files, they are not hosted by XR+.
We provide a simple example – a javascript class – on how we recommend to communicate with the XR+ elements of the experience.
You can register and listen to particular events such as when the experience starts, or when an image marker is found/lost.
You can also setup your own events with the XR+ studio action editor. By doing so you can trigger an action on a composition item to call a function you have defined in your script.
download the javascript API class example
Those libraires are loaded by all projects and ready to use with the API:
considering: var XRAPI = new XRAPI_V1({});
XRAPI.getIsLibraryLoaded(); | check if project library is fully loaded | boolean |
XRAPI.getIsStarted(); | check if experience already started | boolean |
XRAPI.getThreejsScene(); | get threejs scene | threejs scene |
XRAPI.getCompositionItemByName(“my item name”); | get a composition item threejs root object by its name | threejs object |
XRAPI.getCompositionParent(); | get parent off all threejs objects on the scene | threejs object |
XRAPI.getDesktopScreenDomElement(); | get web dom element: desktop screen | dom element |
XRAPI.getLoadingScreenDomElement(); | get web dom element: loading screen | dom element |
XRAPI.getStartScreenDomElement(); | get web dom element: start screen | dom element |
XRAPI.getMainScreenDomElement(); | get web dom element: main screen | dom element |
XRAPI.goToScene(index); | change scene. Use index 1 for the first scene | |
XRAPI.goToState(index); | change state. Use index 1 for the first state | |
XRAPI.goToStateByUid(uid); | change state. Pass state uid as parameter |
the three.js library is currently available at the global scope ( but may only be available as a module import in future updates ).
You can use it directly this way:
const geometry = new THREE.BoxGeometry( 0.2, 0.2, 0.2 ); ...
for questions regarding the API, email us at: contactus@xr.plus