microsoft / mixed-reality-extension-sdk

The Mixed Reality Extension SDK enables developers to build 3D world extensions for AltspaceVR, using Node.JS.
MIT License
142 stars 61 forks source link

Feature Request: UI system #63

Open eanders-ms opened 5 years ago

eanders-ms commented 5 years ago

Develop a declarative UI framework.

Investigate using AdaptiveCards: https://github.com/microsoft/AdaptiveCards

sorenhan commented 4 years ago

Here are my thoughts on what a solid UI system should offer:

Performance and ease of layout are key - many realtime experiences spent way too many CPU cycles (and too much engineering time) on UIs that look very simple, and often the complexities of UIs are underestimated. So this must be designed with this in mind.

This UI control should still be a component on an actor, with all the benefits that comes with it: parent transform for 3d placement and animation, parent visibility and collision, exclusive actors, actor groups, and synchronization

Minimizing latency is key, so therefore all the default input functionality needs to be running locally. This includes behaviors for hover highlighting on controls, and control click down/up state visual hints, text entry, scrollbar movement. The actual changes in state when clicking etc. needs to be synchronized to other clients through regular MRE synchronization methods. It should be possible to register behaviors that can listen to feedback from the UI panel, similar to our button/grab behaviors.

scrollbars should optionally be synchronized - it should be up to the MRE author to decide which scrollbars are synchronized and which are not.

Note that each user may see slightly different views, because of

Rendering optimizations: