README.md 4.3 KB
Newer Older
Nathan Chambron's avatar
Nathan Chambron committed
*This repository is part of the outcomes of the Specialist Task Force 620 focusing on the authoring of a World Representation as part of the ETSI ISG Augmented Reality Framework architecture (https://www.etsi.org/deliver/etsi_gs/ARF/001_099/003/01.01.01_60/gs_ARF003v010101p.pdf).*
*The set of the World Representation authoring components includes:*

*•	The C++ and C# source code for servers and clients  generated from OpenAPI available here (https://forge.etsi.org/rep/arf/arf005)*

*•	A Unity plugin and a Unity editor for authoring and accessing a World Representation hosted on a World Storage server.*

*All these components are available under the ETSI Labs group “World Storage API Helpers”: https://labs.etsi.org/rep/arf/world-storage-api-helpers*

Nathan Chambron's avatar
Nathan Chambron committed
*If you wish to contribute to this project or any other projects in the context of the [ETSI ISG Augmented Reality Framework architecture](https://www.etsi.org/committee/1420-arf), please refer to the ["How to get involved in an ISG" section on the ETSI website](https://www.etsi.org/how-to-get-involved-in-an-isg)*

Sylvain Renault's avatar
Sylvain Renault committed
# Setting RESTful package

Sylvain Renault's avatar
Sylvain Renault committed
Please set up first the path in the Unity manifest.json for the 'Unity World Storage Package' correctly!
Sylvain Renault's avatar
Sylvain Renault committed

Nathan Chambron's avatar
Nathan Chambron committed
This repo contains submodules corresponding to REST libraries used in the Unity project.

Once the git repo is cloned, you need to init and update the submodules through git commands:
Nathan Chambron's avatar
Nathan Chambron committed

    git submodule init
    git submodule update

or clone the repo updating the submodules directly:

    git clone --recurse-submodules https://labs.etsi.org/rep/arf/world-storage-api-helpers/unity-world-storage-editor.git

Once it's done, you can open your project from the Unity Hub, the project was coded in Unity 2021.3.0 and 
Sylvain Renault's avatar
Sylvain Renault committed

Sylvain Renault's avatar
Sylvain Renault committed
This repo is used to demonstrate and to show the usage of the World Storage API in relation to GUI functionalities given by the Unity editor. The project uses for this the inspector and graph window techniques.
Sylvain Renault's avatar
Sylvain Renault committed
The Unity project can be found here:
Sylvain Renault's avatar
Sylvain Renault committed
   .\Assets\ETSI.ARF\ARF World Storage API\Scenes\WorldStorageSample.unity
Sylvain Renault's avatar
Sylvain Renault committed
The project uses the 'Museum' scenario wit a statue as described in the GS 005 documentation. In the figure below, a statue would be augmented with some AR contents (e.g. a nose label). For this, some World Trackables, Anchors and Links are created (left picture in the figure) and are placed in the Unity scene onto the correct position (right picture). The statue serves as a digital twin and won't be visible in a final application. 

<img src="Images/ValidationScene.png"  width=80% height=80%>
Sylvain Renault's avatar
Sylvain Renault committed
# Description of UI / editor functions
Nathan Chambron's avatar
Nathan Chambron committed
This Unity Editor module allows the user to author the World Storage through various ways. To interact with a server hosting an implementation of the World Storage, the user first must create an Unity object "World Storage Server" via the contextual menu (Create -> ARF World Storage -> Create Server) and then fill the corresponding informations (name, URL, port...).
Sylvain Renault's avatar
Sylvain Renault committed
<img src="Images/WorldStorageObject.png"  width=30% height=30%>
Nathan Chambron's avatar
Nathan Chambron committed

## World Storage Window

Through the Unity inspector of the World Storage Server, the user can click on the `Open World Storage Window...` button. This opens the authoring tool for the corresponding World Storage. 

Sylvain Renault's avatar
Sylvain Renault committed
<img src="Images/UnityEditor.png"  width=80% height=80%>
Sylvain Renault's avatar
Sylvain Renault committed
The main window (left picture in the figure) manage the server's data and list of World Elements. From this window, the user can access to specific windows to edit the parameters of elements (right picture, e.g. parameters of a trackable).
Sylvain Renault's avatar
Sylvain Renault committed

Nathan Chambron's avatar
Nathan Chambron committed
## World Graph Window
Nathan Chambron's avatar
Nathan Chambron committed
<img src="Images/GraphEditor.png"  width=60% height=60%>

The second tool of this repo is the World Graph Window. From the top toolbar the user has access to the `ARFWolrdStorage` option, from which he can click on the `Edit Graph...` option. This will open the Graph Editor Window. The user can then select the desired World Storage server to interact with. 

After fetching all elements, The user can move them around in the graph, create new ones, modify or delete them. 
Sylvain Renault's avatar
Sylvain Renault committed

Nathan Chambron's avatar
Nathan Chambron committed
All changes are done locally, in order to push the modifications to the server, the user has the option to save all elements in the contextual menu or save specific elements in their custom inspectors. Each element type has its custom inspector from which you can modify their attributes and discard or save local changes.