From f9384f8b81e2405b8f6ecb88511c31f1b0ee1eb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20Song=C3=BCr?= Date: Tue, 9 Jul 2019 17:26:29 +0200 Subject: [PATCH] Various updates to the documentation (#131) * Quick update to the documentation, removing unused files and adding content for the galactic center * Updated audio system readme and some general cleanup --- Documentation/AudioSystem.md | 4 +- Documentation/BuildingGalaxyExplorer.md | 13 +- Documentation/ForceGrabInteraction.md | 2 +- Documentation/GalacticCenter.md | 10 +- Documentation/Galaxy.md | 4 +- Documentation/Images/3Dasset_include_VS.png | Bin 17048 -> 0 bytes Documentation/IntroFlow.md | 2 +- Documentation/MenuSystem.md | 2 +- Documentation/PointsOfInterest.md | 4 +- Documentation/SolarSystem.md | 2 + Documentation/_TODO-Topics-to-include | 367 -------------------- License.txt | 2 +- README.md | 3 +- 13 files changed, 28 insertions(+), 387 deletions(-) delete mode 100644 Documentation/Images/3Dasset_include_VS.png delete mode 100644 Documentation/_TODO-Topics-to-include diff --git a/Documentation/AudioSystem.md b/Documentation/AudioSystem.md index c303f248..5c33d092 100644 --- a/Documentation/AudioSystem.md +++ b/Documentation/AudioSystem.md @@ -6,8 +6,6 @@ The audio system is implemented as an [IMixedRealityExtensionService](https://mi ## Audio Service -### Code - The AudioService is surfaced via a generic interface `IAudioService\` where `EnumType` is an enum. This generic interface allows users to define their own enums for audio ids. The generic interface is then extended to a concrete interface `IAudioService`. This allows for users to define their own ids but not have to redefine the concrete type at every usage. This also allows for additional interfaces to be added to the API surface such as the `IAudioMixer`. ### Using the AudioService @@ -18,6 +16,6 @@ The audio service can be used by following the **service locator pattern** curre To add a new sound simply extend the `AudioId` enum found in the audio profile, and then map that enum to an audio file in the audio profile. The profile is found under *scriptable_objects/AudioServiceProfile*. Background music can be added by adding a new audio source in the core systems scene under *Managers/MusicAudioSources*. A transition can be applied using the audio mixer found in *audio/audio_mixers/music_audio_mixer*. -# See also +## See also - [MRTK v2 documentation: IMixedRealityExtensionService](https://microsoft.github.io/MixedRealityToolkit-Unity/api/Microsoft.MixedReality.Toolkit.IMixedRealityExtensionService.html) \ No newline at end of file diff --git a/Documentation/BuildingGalaxyExplorer.md b/Documentation/BuildingGalaxyExplorer.md index eaa5e589..3d443985 100644 --- a/Documentation/BuildingGalaxyExplorer.md +++ b/Documentation/BuildingGalaxyExplorer.md @@ -4,7 +4,9 @@ ## Running in Unity -Note that by default when you download / clone this repository and open it in Unity, it will open a new scene. Navigate to the *Assets/scenes* folder and double-click main_scene to set up the editor properly. After that, you can hit the play button to succesfully start the experience. To enable the Diagnostics system, select the MixedRealityToolkit GameObject in the core_systems_scene and check the box "Enable Diagnostics System". +Note that by default when you download / clone this repository and open it in Unity, it will open a new scene. Navigate to the *Assets/scenes* folder and double-click main_scene to set up the editor properly. After that, you can hit the play button to succesfully start the experience. + +To enable the [MRTK diagnostics system](https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/Diagnostics/DiagnosticsSystemGettingStarted.html), select the MixedRealityToolkit GameObject in the core_systems_scene and check the box "Enable Diagnostics System". ## Building Galaxy Explorer @@ -22,7 +24,7 @@ In Visual Studio, set the configuration to *Release* for faster builds (doesn't In *File > Build Settings*: -Architecture should be set to **x86**. +Architecture should be set to **x86**. The target device should be **HoloLens**. ### Building for HoloLens 2 @@ -40,7 +42,7 @@ Architecture should be set to **x64**. In *File > Build Settings*: -Architecture should be set to **x64** or **x86**. +Architecture should be set to **x64** or **x86**. The target device should be **PC**. It's now possible to deploy to the emulator, a remote device, or create a Microsoft Store package to deploy at a later time. @@ -80,8 +82,7 @@ Next specify the "MixedRealityModel" as shown below. Note that the 3D galaxy mod ``` -# See also +## See also - [Unity Manual: Universal Windows Platform](https://docs.unity3d.com/Manual/windowsstore-il2cpp.html) -- For general instructions on implementing 3D launcher icons, also refer to the [Mixed Reality online documentation](https://docs.microsoft.com/en-us/windows/mixed-reality/implementing-3d-app-launchers) - +- For general instructions on implementing 3D launcher icons, also refer to the [Mixed Reality online documentation](https://docs.microsoft.com/en-us/windows/mixed-reality/implementing-3d-app-launchers) \ No newline at end of file diff --git a/Documentation/ForceGrabInteraction.md b/Documentation/ForceGrabInteraction.md index 8bc1f18c..ab81b5f0 100644 --- a/Documentation/ForceGrabInteraction.md +++ b/Documentation/ForceGrabInteraction.md @@ -50,7 +50,7 @@ Each object in the solar system has an assigned `UIPreviewTarget` component that Note that some planets have moons, for example Earth, Mars and Jupiter. The moons are not visible when the planets are orbiting the sun. The `PlanetForceSolver` component shows them when a planet is in focus mode and hides them again when the planet loses focus. -# See also +## See also - [MRTK v2 documentation: Solvers](https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_Solver.html) - [MRTK v2 documentation: ManipulationHandler](https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_ManipulationHandler.html) - [Concepting and prototyping the force grab](https://docs.microsoft.com/windows/mixed-reality/galaxy-explorer-update) \ No newline at end of file diff --git a/Documentation/GalacticCenter.md b/Documentation/GalacticCenter.md index 105bd71f..996dc399 100644 --- a/Documentation/GalacticCenter.md +++ b/Documentation/GalacticCenter.md @@ -1,3 +1,11 @@ # Galactic center -![Galactic center](Images/ge_vis_galactic_center.png) \ No newline at end of file +![Galactic center](Images/ge_vis_galactic_center.png) + +The galactic center is similar to the [solar system](SolarSystem.md) as it is one chapter below the galaxy view. Essentially it is a galaxy POI that is an interactive scene. The scene is located in (*Assets/scenes/view_scenes/galactic_center_view_scene.unity*). + +It is also similar as it uses the same orbital trails and object interaction as in the solar system. Hence please see the respective documentation for details on the basic interactions. + +## See also + +- [Solar System Documentation](SolarSystem.md) \ No newline at end of file diff --git a/Documentation/Galaxy.md b/Documentation/Galaxy.md index 108342a7..41e016e9 100644 --- a/Documentation/Galaxy.md +++ b/Documentation/Galaxy.md @@ -18,6 +18,6 @@ The galaxy is the result of the following 3 layers: The galaxy itself is rendered through Unity's `DrawProcedural` via the `OnPostRender` method. `OnPostRender` is being called by the scripts attached to the camera and is used via a `RenderProxy` script to trigger the rendering process. -# See also +## See also -- [Microsoft Docs: Case Study - Creating a galaxy in mixed reality](https://docs.microsoft.com/en-us/windows/mixed-reality/case-study-creating-a-galaxy-in-mixed-reality) +- [Microsoft Docs: Case Study - Creating a galaxy in mixed reality](https://docs.microsoft.com/en-us/windows/mixed-reality/case-study-creating-a-galaxy-in-mixed-reality) \ No newline at end of file diff --git a/Documentation/Images/3Dasset_include_VS.png b/Documentation/Images/3Dasset_include_VS.png deleted file mode 100644 index cea15df0940c699e54767302adc1433ffa8a7e03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17048 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

-MRJ2(l@1P&OGUKN z3p}0xVp77kRjVO%_C|U}GNf_`TsmkI{EUk`@lu)*|Hn&51o$z-9NyG{XasLGM?azB#_%8aL}2> z9UbjBr_;idBkcXoXxpYe!awZ*M9Xk!an%Bfgn17W{-rnBX=^Wi5aAhd62qcFiS~Z*3PY3g9Qo) zDc7#5CiTUdJL8|kYYCP{m4nR8;*&pU^Yfw6QK!y?+?*UzHF*eow-q!`Q{h{?0sQ^S zLP4IM(wCHMHtLX1DpEm1y`o$Qf<1CEXz+Jv*}VssCXq^T_1Fe%K6DxpM|NY@niB{K z3r4-hEg@HBp;YDC2&(T7JF$oe8EdwG^YEa~Ps7>M#}IMq6n3om5uXg5h8}~*!Q06J zO&V9m>=9q$e7jW#r0YsKztzzphw-bLY?F z=S8bei1Oog0CmU+5b#fD0zw+|(ISXDcm*MV(lZd<%15-hTWBl!Tt?)A08EGh2qb|z1 zJ?poSn~{#vz5%G}ZHKfJEowCihJRoP#7U9(W$OW)kBmV@{|2aD&h3Tgn^C8NnrDxC zb!yp^lm|QQ18h8}Kt>LD`rsz+rI9DADG7V_ok6D|Q_%gL%20Y#Llrv>R;^fv zvlk;FE$xeXwR~WExHA4^3c}0qctYf+J;K#%*Kjj35{Y^V22GrS_Q6%T{d^lVg>&jX ztUquZ_tWw)V*C^Yc{`(wUogt+ld*2+0o+c@MsVZCXxcawiPsO{*o7#R4Qhb8m8v5s zv<`H+S+Mh}48KaHNgc_Dn(v54bpuEpF(ETUjViV4qE_vOu*IKj%*2@p^(2;M%Gk$T|>BGZj%(x@)j2%~=nfBT_1E5Gi8=u(|9 zdsusJJ#z0)SaeW}l|KyU)){{dY-kSSuYhkbm^d-|JWB3)Vhrfr+LlPn zdXo`qmCClpU@-nm@Zys)Eu~!Te$&FD&`1rx$94Qu&}3onp%bXy@Lg1Nf7YOzm!5#Q zG$Z_~m$#)b{tC=y`WBc}ptn^Y7z_fBh!ksbWH1>20D%7i0g1x`<$yLq00000NkvXX Hu0mjf5)aVI diff --git a/Documentation/IntroFlow.md b/Documentation/IntroFlow.md index 10245d29..3e5ba98d 100644 --- a/Documentation/IntroFlow.md +++ b/Documentation/IntroFlow.md @@ -90,4 +90,4 @@ A Flowstage defines a discrete phase of the app flow. The code for this can be f ## DelayedEvents -A wrapped UnityEvent that can trigger after a delay. The code for this can also be found in *FlowStage.cs*. +A wrapped UnityEvent that can trigger after a delay. The code for this can also be found in *FlowStage.cs*. \ No newline at end of file diff --git a/Documentation/MenuSystem.md b/Documentation/MenuSystem.md index a1ae0247..268e2bd6 100644 --- a/Documentation/MenuSystem.md +++ b/Documentation/MenuSystem.md @@ -54,7 +54,7 @@ Contextual buttons only show when certain conditions are met. For desktop and gg The global button positions remain the same. The contextual buttons have their positions dynamically changed according to how many other contextual buttons are shown at any given moment. For the desktop and HoloLens(1st gen) + VR menus, the code for this resides in the managers belonging to the specific menu types. For the hand menu, this is done in the `HandMenu` component. -# See also +## See also - [MRTK v2 documentation: Hand tracking](https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/InputSystem/HandTracking.html) - [MRTK v2 documentation: Solvers](https://github.com/Microsoft/MixedRealityToolkit-Unity/blob/mrtk_development/Documentation/README_Solver.md) diff --git a/Documentation/PointsOfInterest.md b/Documentation/PointsOfInterest.md index aba6f4d2..e32e7706 100644 --- a/Documentation/PointsOfInterest.md +++ b/Documentation/PointsOfInterest.md @@ -1,6 +1,6 @@ # Points of interest -![Points of interest](Images/ge_app_poi.PNG) +![Points of interest](Images/ge_app_poi.png) Points of interest (POI) enable the user to navigate to deeper levels of information within the application. @@ -75,7 +75,7 @@ For the large POIs, you will need to create a new scene to transition to and lin ![](Images/ge_poi_adding_prefab_large_2.png) -# See also +## See also - [MRTK v2 documentation: Pressable button](https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/README_Button.html) - [MRTK v2 documentation: Pointers](https://github.com/Microsoft/MixedRealityToolkit-Unity/blob/mrtk_development/Documentation/README_Pointers.md) \ No newline at end of file diff --git a/Documentation/SolarSystem.md b/Documentation/SolarSystem.md index 16636b10..d0c5555e 100644 --- a/Documentation/SolarSystem.md +++ b/Documentation/SolarSystem.md @@ -2,6 +2,8 @@ ![Solar system](Images/ge_app_solar_system.png) +The solar system is one chapter below the galaxy view. Essentially it is a galaxy POI that is an interactive scene. + This document describes objects and interactions in the solar system scene (*Assets/scenes/view_scenes/solar_system_view_scene.unity*). ## Planets diff --git a/Documentation/_TODO-Topics-to-include b/Documentation/_TODO-Topics-to-include deleted file mode 100644 index 4682b886..00000000 --- a/Documentation/_TODO-Topics-to-include +++ /dev/null @@ -1,367 +0,0 @@ - -# CoreSystems - -CoreSystems is a scene that we load that has most of our global game objects. -Things like our audio rig (which has our background music and VOManager) and -things like our Input stack. CoreSystems is loaded into any scene via -Layers so that developers and artists can run any scene (e.g. -SunView.unity) independent from running the MainScene. - -# ViewLoader - -The ViewLoader manages the loading of scenes used throughout the app. -The Viewloader lives inside CoreSystems scene. -It is responsible to load and unload scenes. -Scenes are loaded asynchronously -TransitionManager calls Viewloader in order to load and unload scenes. -All the rest of the script just hook up on ViewLoader's callbacks in order -to know when a new scene is about to be loaded and when that has been completed. - -ViewLoader keeps the trail of scenes in a stack in order to know in which scene to go back. -Scenes during Introduction flow should not go in this stack as user never goes back to introduction flow. - -# GalaxyExplorerManager - -Its the main component of the app. -It decides in which platform the app is running. -It holds references in many other managers of the scene in order for other components -to access them through GalaxyExplorerManager -It also holds properties that are different per platform that other components in the -app use. - -# IntroductionFlow - -Flow of introduction is managed by FlowManager and IntroFlow.cs -IntroFlow.cs lives in MainScene. In that way, in order for introduction to play, -user need to run the main scene and it doesnt run when running any other scene. - -IntroFlow.cs activates FlowManager in CoreSystems scene. -FlowManager has all the dinstict stages of the introduction flow, from Logo appearance until -the first scene that user can interact with, the galaxy view. - -* Logo -* Sfx -* VO -* Earth pin -* Solar System view -* Galaxy view - -The IntroFlow.cs just helps out FlowManager in functionality that cant be just hooked up in editor in FloManager - -When the GalaxyView scene is loaded which is the first scene that user can interact with, then thats the end of introduction. - -# Tools - -The Tools are contained in a ToolPanel, which manages the visibility of the -Back, Grab, Reset, About, and Controls UI elements. -The ToolPanel.cs has the functionality to move the tools and implements is as the tag-along functionality. - -In the ToolPanel, there are Buttons (Back, Grab, Reset, About, and Controls). -The buttons perform an action on selection, and tools enter a toggle state. -The ToolPanel can be raised or lowered through the manager. - -The ToolManager handles the Button settings that can be called from anywhere in script. - -All UI Buttons are in UI physics layer, in order to be able to have sfx from Audui - -The tools appear in HoloLens and MR platfroms. -In Desktop, there are unity buttons on the right corner of the screen. -The buttons are Reset and About. - -# PointOfInterest - -PointOfInterests (POIs) are markers in scene. -They are represented in the application by a line and an indicator on the top. - -Parts of a PointOfInterest: - -* BillboardLine - the line that connects the interest point to interact with to an indicator at the top of the line. The line is always vertical and scales with distance as a UI element. It does not rescale with content and will always start at a target point. -* Indicator - the card that is shown above the BillboardLine. -* Card Description - a text card that appears when user focuses on the poi. - -POIs have different size in different platforms. -PoiResizer.cs is the script that updates the scale of the poi elements depending on platform. - -## OrbitScalePointOfInterest - -Is a toggle that converts between Realistic and Simplified orbit and size views -in the solar system. - -## CardPOI - -Is used in the galaxy to inspect images through a magic window. Parallax for -the window and settings are incorporated in the POI_Porthole shader, and the -window depth is hidden with the POI_Occlusion shader. -The magic window lives under the POI in the hierarchy. The CardPOI.cs is responsible -to place the magic window at the desired position and rotation. - -The font used in the PointOfInterest cards is called "Orbitron" and it can be found -[here](https://www.theleagueofmoveabletype.com/orbitron). As this font is released -under the [SIL Open Font License](http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL_web), -developers who are interested in creating or modifying PointOfInterest cards should -treat it like any other third-party dependency and install the font on their own -development system rather than committing it directly into the git repository. - -## PlanetPOI - -Is used in solar system and galactic center. -Its the poi that when selected, it results in entering in a new scene. -The scene that it loads is set in PlanetPOI in editor. -The planet object lives along the poi under the same parent. -There is a reference to the planet from the poi. -The planets have a collider wich is around the mesh which is needed to be exactly as the mesh -as these colliders are used during transitions to new scenes. -Planets have an extra wider collider which is arond the planet and its much larger than the planet. -Its purpose is to be able for the planet to be selected, as the collider that its exactly around its mesh, -might be small, a larger collider, gives the ability to select the planet easier. - -## GE_POIMaker Tool - -The GE_POIMaker tool can be used to help create new point of interest billboard -image files quickly and easily. This tool is located as a seperate project -within the solution. It can create one-off POI billboard .png files or batch -create all POI files when necessary. The current POI files included within -GalaxyExplorer were generated with this tool's default settings. - -The GE_POIMaker can also be used to experiment with colors, font sizes and other -effects by clicking the "Show advanced controls" checkbox. Please consult the -tooltips on each control for help on that specific control. - -The GE_POIMaker tool references the Orbitron font, but will use a default font -if Orbitron is not installed on the development system. - -# TransformSource - -Every scene that is spawned need to be at the same place as the previous one. -In order to keep consecutive scenes in same position, rotation, scale, -we use TransformSource and TransformHanlde. -There is only one TransformSource in CoreSystems with an ID. -Every scene needs to have a TransformHandle with the matching id of TransformSource. -TransformSource position, rotation and scale are synched with the transform in TransformHandle. -In this way, all scenes, have the same transform values. - -# SceneTransition - -Every scene needs to have a SceneTransition component on the top entity of the scene. -All other gameobjects need to live under this entity. - -This is necessary for the transitions from an old scene to the new one. -This component is aware of the size of the scene as it has a reference -to a collider named EntireSceneCollider and its aware of the focus collider -of this scene. The focus collider is useful in the transition from one scene into the other. -It also has a reference to SceneObject which is the entity that its transform is updated -during transitions. This is the child of the SceneTransition object and needs to have an -identity transform. All gameobjects of the scene need to be under this or they wont be moved -along during transition. -Its important to set the IsSinglePlanet bool property to true if the scene is a single planet. -This is also used during transition to a new scene. - -# TransitionManager - -Each view (galaxy, solar system, each planet, and the sun) is a scene in Unity. -The ViewLoader handles loading these scenes and the TransitionManager manages -how flow moves from an old scene to a new scene through callbacks from the -ViewLoader. This system handles the animations that are run between scenes to -easily flow between scenes. - -First, components that arent needed are disabled, like the OrbitUpdater, POIRotation animation, -PointOfInterests, Touchscript. All these, are components that move the gameobjects in the scene and during -transition to a new scene, nothing should move the objects except the transition code. - -Next we need to scale the new scene to fill the given percentage of the global volume. -The global volume is the one set in the transform of TransformSource. -Its scene fills a percentage of this. The percentage is set in editor in SceneTransition component. - -Next is initialization of zoom in out functionality. -At this step the properties for start and end position, rotation, scale are set and after this -position, rotation and scale of the scene objects should not change from other functionality other -than zoom in out code. - -Next all colliders of old and new scene needs to be deactivated so user cant interact with them during transition. - -Next, the pois of previous scene fades out, and when that is done, the whole previous scene starts fading out. -The audio transition plays. -The new scene's pois alpha is set to zero so there arent visible -The new scene fades in except its pois -Then, the zoom in out transition starts. -When that is over, the previous scene unloads, -the new scene's pois fade in and its colliders are being active again. - -The transition code is in ZoomInOut.cs - -Scenes have focus colliders. For example, solar system scene has as focus collider the sun planet collider. -A single planet scene, will have that collider as focus collider. -The idea is, that the previous and new scene's focus colliders are being transitioned from one into the other. - -For example, going from solar system into earth view. The new scene, earth view, will initially be scaled, positioned and rotated -in a way so its focus collider will match exactly the transform of the earth focus collider in solar system view. -The transition code will update both scenes in that way so both focus colliders have matching transforms at any point until -the end of the transition. At the end of the transition, the new scene will have the transform values that it had when it was spawned. -So, the old and new scenes, are being modified, to transition from the previous scene's focus collider transform into the -next scene's focus collider transform. - -ZoomInOut.cs implements the above transition. -Need to take into account any rotation between top parent scene entity and focus collider and any translation. -Need to rotate the scenes around the focus objects as pivots. -Need to scale the scenes around the focus objects as pivots. -So, it takes these into consideration during rotation and scale. - -# Fader - -Faders control the transition alpha for any materials that use shaders -supporting _TransitionAlpha. Each Fader is responsible for changing the blend -settings of material shaders for alpha blending and returning them to their -original states when fading completes. - -GEFadeManager has all required functionality for fading. - -There are few differents faders, all inherit from the base Fader. - -## MaterialsFader - -Has all of its materials defined in the UnityEditor instead of trying to figure -out which materials to fade through renderers. You can use this for batch -rendering or to fade a group of objects together without needing to collect a -list of faders for better performance. -This is used in Tools in order to fade in/out all the materials related to Tools menu. -Its also used in solar system and galactic center to have a list of materials that are used in the scene -as orbit trail material. - -## POIMaterialFader - -Its a list of materials specifically for pois, in order to fade in/out all together. -There is a separate fade script for pois in order to be able to fade just that fader - -## SpiralGalaxyFader - -Its a fader specifically for the milky way in Galaxy view. - -## SunLensFlareSetter - -Specifies a single material in the UnityEditor to integrate _TransitionAlpha -settings with other shader-dependent values for lens flare. - -# VOManager - -VOManager is used to control how voice over clips are played and stopped. The -voice over content is broken up based on where we are in the flow of the -experience and requires a central control to ensure that it flows as desired. - -Playing a voice over clip will enter that clip into a queue to be played in a -first in, first out order. Individual clips can have their own delay from: when -they're queued up to play, to when they actually play. By default, clips will -only be played once, even if Play is called with that specific clip again. -However, each clip has the option to play more than once which is exposed -publicly. - -Stopping the playing audio will fade out what's currently playing over a user -tweakable fadeout time. Stopping also has the option to clear the queue of all -clips if the user wants to start a new sequence of voice audio. - -Lastly, voice over audio can be disabled and enabled globally by setting the VO -state to false, fading out any audio currently playing and clearing the queue -of clips waiting to be played. - -VOManager works best when it exists in a persistent system. -Its only requirement is that an AudioSource is placed on the same object. -Fade out time can me tweaked in editor. - -# MusicManager - -Musicmanager lives in CoreSystems. -Its responsible for background music in its scene. - -# Audui - -Sfx are being handled through Audui. -So, sfx in pois, magic windows and tools menu buttons are handled with AuduiCustomSound. -AuduiEventWrangler has the default sound events. -Its entity that wants to override these sounds need to have along its collider a AuduiCustomSound component. -Note that Audui workd with entities in UI physics layer only. - -# WorldAnchorHandler - -WorldAnchors are Unity components that create Windows Volumetric Spatial -Anchors at a defined real world transform in space. The WorldAnchorHandler -class wraps up all of the calls to create and maintain the WorldAnchor that -defines the position where the galaxy is placed as part of the introduction -process. - -# Touchscript - -Its a unity free asset that handles user touches on screen and interpretes them -into translation, rotation, scale. - -# Input - -There are multiple user inputs. -Input in HoloLens and MR is handled by MRTK. -In desktop there is GEMouseInputSource, GEKeyboardInputSource and GETouchScreenInputSource -Each one of these inherit from MRTK's BaseInputSource. -They override InputManager. Instance. OverrideFocusedObject when necessary as InputManager of MRTK -has as focused object the one focused by the cursor. -In mouse, keyboard and touch case those thats not valid. - -# Shaders - -## Galaxy - -The galaxy is using a geometry shader to expend a particle system into screen -aligned quads. - -## Magic Window - POI_Porthole - -Because the Galaxy renders in several passes, we didn't want to have other -passes for the background and have to manually clip them. Instead, we have a -texture for the background and we tweak the UV depending on the direction to -the camera to create a parallax effect. Essentially, we do an intersection test -between the ray to the camera to the plane where we want the virtual image to -be at, and shift the UV coordinates based on that. - -## Solar System Orbits - OrbitalTrail - -The orbits lines are screen space lines expanded with a geometry shader. Each -vertex have 2 positions: one for the real scale view and one for the schematic -view. The vertex shader then interpolates between those 2 positions to compute -the final position according the a reality scale that moves between 0 and 1 and -then pass it to a geometry shader that generates correctly triangulated lines -in screen space. This makes the orbits have a fixed width on screen no matter -what scale the solar system is being viewed at. - -## Earth - PlanetShaderEarth - -Like all the planets, most parameters are evaluated in the vertex shader as we -have a high poly version of each planet. The light is computed with a N. L -contribution that we gamma correct in order to have a realistic looking light -transition from the dark side to the light side. We also have in the alpha -channel of the Albedo texture a map of the night lights from NASA photographs -that we use to illuminate the dark side of the planet. You might notice that -there are lights in the middle of Australia … which are actually wildfires -that can be seen from space. - -## Saturn - PlanetShaderSaturn - -In the experience we don't have dynamic shadows enabled - as they are mostly -irrelevant for our scene - except for Saturn. The rings shadow pattern always -plays a big part of the aesthetic look of the planet, so we spent some time -making analytic shadows for it. The logic behind is to project a sphere on a -plane perpendicular to the direction to the light (the sun is approximated as -a directional light) and checking if the resulting pixel is inside of the -shadow or not. For the shadow of the planet on the rings, the world space -position of the pixel on the ring is compared to the radius of the planet -when projected on the plane that contains the pixel. For the shadow of the -rings of the planet, we project the world space position of the pixel on the -planet into the rings plane, and we compare its distance to the center of the -planet to the distance to the inner ring radius and outer ring radius. The -result gives a value in [0-1] which is used to sample a shadow texture. - -## Performance Investigation - -During the development process, we used various tools to investigate possible -performance optimization in our rendering tasks. - -* Unity Profiler - Integrated with Unity, it gives a good overview where time is spent on the CPU and how many elements are being drawn on the screen. -* Unity's shader "compile and show code" - It shows the shader assembly and gives an idea on how expensive the shaders will be once being executed on device. A rule of thumb is that lower instructions count especially in the pixel/fragment shader is better. -* Visual Studio Graphics Debugger - Very powerful tool that gives timing on both the CPU and GPU side, can analyze shader performance and reveal hot code path on the CPU -* GPU View (Integrated with Visual Studio Graphics Debugger) - Gives precise timing on the GPU and CPU workload on device. Best used to determine if the experience is GPU bound or CPU bound. - diff --git a/License.txt b/License.txt index 1577ee99..4decfb97 100644 --- a/License.txt +++ b/License.txt @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2016 Microsoft Corporation +Copyright (c) 2016-2019 Microsoft Corporation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 400b5b9a..05fb74f4 100644 --- a/README.md +++ b/README.md @@ -38,5 +38,4 @@ Download all of the developer tools from the [Microsoft Developer Website](https | [![Galaxy](Documentation/Images/ge_app_galaxy.png)](Documentation/Galaxy.md) [Galaxy](Documentation/Galaxy.md)| [![Solar system](Documentation/Images/ge_app_solar_system.png)](Documentation/SolarSystem.md) [Solar system](Documentation/SolarSystem.md) | [![Galactic center](Documentation/Images/ge_vis_galactic_center.png)](Documentation/GalacticCenter.md) [Galactic center](Documentation/GalacticCenter.md) | | Explains how the galaxy is created and rendered. | How the solar system is created and how the elements work. | Explains the center of the galaxy scene and its elements. | | [![Force pull interaction](Documentation/Images/ge_app_force_grab.png)](Documentation/ForceGrabInteraction.md) [Force grab interaction](Documentation/ForceGrabInteraction.md)| [![Points of Interest](Documentation/Images/ge_app_poi.png)](Documentation/PointsOfInterest.md) [Points of Interest](Documentation/PointsOfInterest.md) | [![Menu system](Documentation/Images/ge_capture_hand_menu.png)](Documentation/MenuSystem.md) [Menu system](Documentation/MenuSystem.md) | -| Details on the "force grab" interaction, how it works and how it applies to elements. | How the points of interest work - the labels as well as the "content cards". | More information about the menu system, its elements and functionality. | - +| Details on the "force grab" interaction, how it works and how it applies to elements. | How the points of interest work - the labels as well as the "content cards". | More information about the menu system, its elements and functionality. | \ No newline at end of file