Visiting the Creator portal gave me some interesting knowledge about the Magic Leap One headset and about development using the Lumin SDK.
Immersive and Landscape Apps
Two type of app class experiences: Immersive Apps and Landscape apps. Immersive apps run as standalone apps, compared to Landscape apps that can run along with other Landscape apps at the same time. Landscape apps can have different interactions with other Landscape apps. Immersive Apps are therefore best use for spatialized and resource-heavy experiences. Magic Leap gave the game Dr. Grordbort’s as an example of an Immersive app.
When you launch an immersive app, all the Landscape apps are suspended and not visible to the user. This frees up resources and visible clutter and allows the Immersive App to take great use of the available computing resources and have a “clean” workable canvas to start with. Furthermore, the user won’t be distracted by other virtual content and has its 100% concentration and engagement with that single app.
Landscape apps are better for multitasking and creating shared experiences. They can be shared among other Magic Leap One users, so all users can see the same exact content although they experience it using different devices. For example, you can have a TV app opened on the wall and a social chat app opened right in front of you. Users can then interact with several opened apps without needing to close any other apps. Many business and enterprise apps will fall into this category, especially where persistency between session to session is required or when a user wants to run the same app in multiple instances.
PRISM
According to the documentation “Prisms are a standard and consistent way for users to manage and interact with content. “.
Unlike in current Augmented Reality apps, in Lumin OS, content is placed in one of more Prisms. These are containers that help reduce visual clutter, complexity and manages system resources effectively.
When using Landscape apps, users can scale and reposition the apps one the virtual mesh based on its Prism. When you run AR apps, they behave more like Immersive Apps, you can a single app at a time.
Developers can assign maximum, minimum and default size to prisms and the apps will work within those restricted size bounds. Prisms can also have a hierarchy, so a developer can create a child Prism or Prisms that are stacked relative to the parent Prism. This is called “Hierarchial Prisms”.
This is why one of the recommendations is to make sure you minimize the empty space in Prisms to have more accurate collision detection and placement in the real world space. This allows users to find an appropriate place to place that app, knowing that it will match a certain place and work effectively there, without part of it being obscured by any other physical object.
Prisms can be created dynamically by the developer based on user interaction. Magic Leap recommend spawning new Prisms close to the master Prism, so users can be aware of their existence. If you dynamically spawn a Prism behind the user below a desk, the user won’t be aware of it. Of course, there will be some apps where this will be needed, like if you deliberately want to place a certain virtual object on your desk, and give this command while looking at a direction opposite to where your desk is located.
So in general, having Prisms allow more accurate, predictable and manageable way to position apps and app’s content on the polygonal mesh in the physical environment. By the way, developers can enable snapping, which is useful for apps that have modular geometry and want to allow users to be able to easily connect different app Prisms together, interesting!
It’s interesting learning about the “Prism” concept, it’s obviously needed for Landscape app organization and interaction.
Auto-arrange Feature for Prisms
This is a big topic, but I wanted to talk about a thought I had in mind. Having the option to persist virtual content means that the next time you launch the app, you can see the content at the same place you left it. For example, if you put a TV app on the wall in front of your bad, the next time you run it, that virtual TV will appear at the same exact location.
This help keeps things organized. Today I thought about how amazing it will be to have an “Auto-arrange” feature. You know, like the one on Windows Desktop, but much smarter, one that uses computer vision algorithm and of course being aware of the current mesh of your room to suggest proper placement for certain apps that require multiple prisms or arranging multiple apps.
Let imagine that I open up a modular app that has several Prisms by default. Instead of finding a place to position it, I just let that auto-suggest feature to try to find a location and point me to see how it looks. You can press it several times, and the app will try to find the best place for it base on the Prism and virtual object size and other properties. For example, if I use a TV app, it will recognize the front wall in front of my bed as the best place to put the virtual TV Prism and then the controls near where I see on my bed.
Well,I am still on my journey in learning more about the Magic Leap One and all its amazing features. There is a lot to learn and I will try to share some interesting stuff as a I read, so you can learn more about this amazing new tech.