Upgrade to Pro — share decks privately, control downloads, hide ads and more …

StereoKit: The Open Source SDK for VR/MR

StereoKit: The Open Source SDK for VR/MR

Fbe54abf4094d19f1548783d072a7fa7?s=128

Nenne (Adora) Nwodo

February 25, 2021
Tweet

Transcript

  1. StereoKit: The Open Source SDK for VR/MR

  2. @adoranwodo

  3. Hi, I’m Adora! Software Engineer, Microsoft Mixed Reality Tech Content

    Creator, AdoraHack Advisory Board, VRARA Nigeria Co-Founder, unStack Twitter @adoranwodo
  4. @adoranwodo

  5. StereoKit is designed to solve issues that occur when using

    a game engine to create a Mixed Reality application or tool. Game engines are one of the few places you can currently go to get rendering functionality out of the box, but they lack features that would really streamline MR application development. @adoranwodo
  6. StereoKit uses an immediate mode UI system. Since very little

    state is stored, you can add, remove and update your UI elements by writing code. You get to keep track of your data yourself. YOU’RE IN CONTROL . @adoranwodo
  7. STEREOKIT FEATURES @adoranwodo

  8. STEREOKIT FEATURES: • Platforms: HoloLens 2, Windows Mixed Reality, Oculus

    Desktop, SteamVR, eventually everywhere OpenXR is! • Builds your application in seconds, not minutes • Input: articulated hands, pointers, keyboard/mouse • Easy and powerful UI and interactions • Model formats: .gltf, .glb, .fbx(partial), .obj, .stl, procedural • Texture formats: .jpg, .png, .tga, .bmp, .psd, .gif, .hdr, .pic, equirectangular cubemap, procedural • Runtime asset loading • Physics • Performance-by-default render pipeline • Flexible shader/material system @adoranwodo
  9. STEREOKIT FEATURES: • Platforms: HoloLens 2, Windows Mixed Reality, Oculus

    Desktop, SteamVR, eventually everywhere OpenXR is! • Builds your application in seconds, not minutes • Input: articulated hands, pointers, keyboard/mouse • Easy and powerful UI and interactions • Model formats: .gltf, .glb, .fbx(partial), .obj, .stl, procedural • Texture formats: .jpg, .png, .tga, .bmp, .psd, .gif, .hdr, .pic, equirectangular cubemap, procedural • Runtime asset loading • Physics • Performance-by-default render pipeline • Flexible shader/material system @adoranwodo
  10. STEREOKIT FEATURES: • Platforms: HoloLens 2, Windows Mixed Reality, Oculus

    Desktop, SteamVR, eventually everywhere OpenXR is! • Builds your application in seconds, not minutes • Input: articulated hands, pointers, keyboard/mouse • Easy and powerful UI and interactions • Model formats: .gltf, .glb, .fbx(partial), .obj, .stl, procedural • Texture formats: .jpg, .png, .tga, .bmp, .psd, .gif, .hdr, .pic, equirectangular cubemap, procedural • Runtime asset loading • Physics • Performance-by-default render pipeline • Flexible shader/material system @adoranwodo
  11. STEREOKIT FEATURES: • Platforms: HoloLens 2, Windows Mixed Reality, Oculus

    Desktop, SteamVR, eventually everywhere OpenXR is! • Builds your application in seconds, not minutes • Input: articulated hands, pointers, keyboard/mouse • Easy and powerful UI and interactions • Model formats: .gltf, .glb, .fbx(partial), .obj, .stl, procedural • Texture formats: .jpg, .png, .tga, .bmp, .psd, .gif, .hdr, .pic, equirectangular cubemap, procedural • Runtime asset loading • Physics • Performance-by-default render pipeline • Flexible shader/material system @adoranwodo
  12. STEREOKIT FEATURES: • Platforms: HoloLens 2, Windows Mixed Reality, Oculus

    Desktop, SteamVR, eventually everywhere OpenXR is! • Builds your application in seconds, not minutes • Input: articulated hands, pointers, keyboard/mouse • Easy and powerful UI and interactions • Model formats: .gltf, .glb, .fbx(partial), .obj, .stl, procedural • Texture formats: .jpg, .png, .tga, .bmp, .psd, .gif, .hdr, .pic, equirectangular cubemap, procedural • Runtime asset loading • Physics • Performance-by-default render pipeline • Flexible shader/material system @adoranwodo
  13. STEREOKIT FEATURES: • Platforms: HoloLens 2, Windows Mixed Reality, Oculus

    Desktop, SteamVR, eventually everywhere OpenXR is! • Builds your application in seconds, not minutes • Input: articulated hands, pointers, keyboard/mouse • Easy and powerful UI and interactions • Model formats: .gltf, .glb, .fbx(partial), .obj, .stl, procedural • Texture formats: .jpg, .png, .tga, .bmp, .psd, .gif, .hdr, .pic, equirectangular cubemap, procedural • Runtime asset loading • Physics • Performance-by-default render pipeline • Flexible shader/material system @adoranwodo
  14. STEREOKIT FEATURES: • Platforms: HoloLens 2, Windows Mixed Reality, Oculus

    Desktop, SteamVR, eventually everywhere OpenXR is! • Builds your application in seconds, not minutes • Input: articulated hands, pointers, keyboard/mouse • Easy and powerful UI and interactions • Model formats: .gltf, .glb, .fbx(partial), .obj, .stl, procedural • Texture formats: .jpg, .png, .tga, .bmp, .psd, .gif, .hdr, .pic, equirectangular cubemap, procedural • Runtime asset loading • Physics • Performance-by-default render pipeline • Flexible shader/material system @adoranwodo
  15. STEREOKIT FEATURES: • Platforms: HoloLens 2, Windows Mixed Reality, Oculus

    Desktop, SteamVR, eventually everywhere OpenXR is! • Builds your application in seconds, not minutes • Input: articulated hands, pointers, keyboard/mouse • Easy and powerful UI and interactions • Model formats: .gltf, .glb, .fbx(partial), .obj, .stl, procedural • Texture formats: .jpg, .png, .tga, .bmp, .psd, .gif, .hdr, .pic, equirectangular cubemap, procedural • Runtime asset loading • Physics • Performance-by-default render pipeline • Flexible shader/material system @adoranwodo
  16. STEREOKIT FEATURES: • Platforms: HoloLens 2, Windows Mixed Reality, Oculus

    Desktop, SteamVR, eventually everywhere OpenXR is! • Builds your application in seconds, not minutes • Input: articulated hands, pointers, keyboard/mouse • Easy and powerful UI and interactions • Model formats: .gltf, .glb, .fbx(partial), .obj, .stl, procedural • Texture formats: .jpg, .png, .tga, .bmp, .psd, .gif, .hdr, .pic, equirectangular cubemap, procedural • Runtime asset loading • Physics • Performance-by-default render pipeline • Flexible shader/material system @adoranwodo
  17. STEREOKIT FEATURES: • Platforms: HoloLens 2, Windows Mixed Reality, Oculus

    Desktop, SteamVR, eventually everywhere OpenXR is! • Builds your application in seconds, not minutes • Input: articulated hands, pointers, keyboard/mouse • Easy and powerful UI and interactions • Model formats: .gltf, .glb, .fbx(partial), .obj, .stl, procedural • Texture formats: .jpg, .png, .tga, .bmp, .psd, .gif, .hdr, .pic, equirectangular cubemap, procedural • Runtime asset loading • Physics • Performance-by-default render pipeline • Flexible shader/material system @adoranwodo
  18. GETTING STARTED @adoranwodo

  19. THINGS YOU NEED. • Visual Studio 2019 • An OpenXR

    runtime • StereoKit Visual Studio Template (or NuGet Package). • Enable developer mode for UWP/HoloLens builds @adoranwodo
  20. @adoranwodo

  21. TEMPLATE CODE: using StereoKit; class Program { static void Main(string[]

    args) { StereoKitApp.Initialize("StereoKitMinimum"); while (StereoKitApp.Step(() => { Default.MeshSphere.Draw(Default.Material, Matrix.Identity); })); StereoKitApp.Shutdown(); } } @adoranwodo
  22. MAKING A UI WINDOW @adoranwodo

  23. Pose windowPose = new Pose(-.4f, 0, 0, Quat.LookDir(1,0,1)); bool showHeader

    = true; float slider = 0.5f; Sprite powerSprite = Sprite.FromFile("power.png", SpriteType.Single); @adoranwodo
  24. REST OF THE UI CODE. // Begin Window UI.WindowBegin("Window", ref

    windowPose, new Vec2(20, 0) * U.cm, showHeader?UIWin.Normal:UIWin.Body); @adoranwodo
  25. REST OF THE UI CODE. // Begin Window UI.WindowBegin("Window", ref

    windowPose, new Vec2(20, 0) * U.cm, showHeader?UIWin.Normal:UIWin.Body); // Toggle Button UI.Toggle("Show Header", ref showHeader); @adoranwodo
  26. REST OF THE UI CODE. // Begin Window UI.WindowBegin("Window", ref

    windowPose, new Vec2(20, 0) * U.cm, showHeader?UIWin.Normal:UIWin.Body); // Toggle Button UI.Toggle("Show Header", ref showHeader); // Slider UI.Label("Slide"); UI.SameLine(); UI.HSlider("slider", ref slider, 0, 1, 0.2f, 72 * U.mm); @adoranwodo
  27. REST OF THE UI CODE. // Begin Window UI.WindowBegin("Window", ref

    windowPose, new Vec2(20, 0) * U.cm, showHeader?UIWin.Normal:UIWin.Body); // Toggle Button UI.Toggle("Show Header", ref showHeader); // Slider UI.Label("Slide"); UI.SameLine(); UI.HSlider("slider", ref slider, 0, 1, 0.2f, 72 * U.mm); // Button if (UI.ButtonRound("Exit", powerSprite)) StereoKitApp.Quit(); @adoranwodo
  28. REST OF THE UI CODE. // Begin Window UI.WindowBegin("Window", ref

    windowPose, new Vec2(20, 0) * U.cm, showHeader?UIWin.Normal:UIWin.Body); // Toggle Button UI.Toggle("Show Header", ref showHeader); // Slider UI.Label("Slide"); UI.SameLine(); UI.HSlider("slider", ref slider, 0, 1, 0.2f, 72 * U.mm); // Button if (UI.ButtonRound("Exit", powerSprite)) StereoKitApp.Quit(); // End Window UI.WindowEnd(); @adoranwodo
  29. LEARN MORE ABOUT STEREOKIT @adoranwodo

  30. https://github.com/maluoi/StereoKit-BingMaps https://github.com/maluoi/StereoKit-PaintTutorial @adoranwodo

  31. OTHER LINKS: • StereoKit Official Website https://stereokit.net/ • StereoKit Official

    Source Code https://github.com/maluoi/StereoKit/ • Sample Demos https://github.com/maluoi/StereoKit/tree/master/Examples/StereoKitTest/Demos @adoranwodo
  32. MR <3 Open Source CAN WE DO MORE? @adoranwodo

  33. Thank you! www.adoranwodo.com @adoranwodo