3D-s alkalmazásindítók implementációja (UWP-alkalmazások)

Megjegyzés

Ez a funkció a 2017.es Fall Creators Update (RS3) részeként lett hozzáadva a modern headsetek számára, és a HoloLens 2018. áprilisi frissítéssel Windows 10 támogatja. Győződjön meg arról, hogy az alkalmazás a Windows SDK 10.0.16299-es vagy újabb verzióját célozza a modern headsetek és a 10.0.17125-ös HoloLens. A legújabb SDK-Windows itt találja.

A Windows Mixed Reality az a kiindulási pont, ahol a felhasználók az alkalmazások elindítása előtt lemennek. Amikor UWP-alkalmazást hoz létre a Windows Mixed Reality, az alkalmazások alapértelmezés szerint 2D-ként indulnak el az alkalmazás emblémájával. A fejlesztés során Windows Mixed Reality 3D-indító is definiálható, amely felülírja az alkalmazás alapértelmezett 2D-indítóját. Általánosságban elmondható, hogy a 3D-indítókat olyan modern alkalmazások indításához javasoljuk, amelyek kiveszik a Windows Mixed Reality alkalmazást. Az alapértelmezett 2D-indítót akkor előnyben részesíti a rendszer, ha az alkalmazás a helyén van aktiválva. 3D mélyhivatkozást (secondaryTile) is létrehozhat 3D-s indítóként egy 2D UWP-alkalmazásban található tartalomhoz.

3D-s alkalmazásindító létrehozási folyamata

A 3D-s alkalmazásindító létrehozásának három lépése van:

  1. Tervezés és koncepció
  2. Modellezés és exportálás
  3. Integrálás az alkalmazásba (ez a cikk)

Az alkalmazás indítóeszközeiként használható 3D-eszközöket a kompatibilitás biztosítása érdekében a Windows Mixed Reality szerzői irányelvek alapján kell meghozni. A szerzői specifikációnak nem megfelelő eszközök nem jelennek meg a Windows Mixed Reality kezdőlapon.

A 3D-indító konfigurálása

Amikor létrehoz egy új projektet a Visual Studio létrehoz egy egyszerű alapértelmezett csempét, amely megjeleníti az alkalmazás nevét és emblémáját. Ha ezt a 2D-s megjelenítést egyéni 3D-modellre szeretné cserélni, szerkessze az alkalmazás jegyzékfájlját úgy, hogy az alapértelmezett csempedefiníció részeként tartalmazza a "MixedRealityModel" elemet. A 2D indítóra való visszaállításhoz egyszerűen távolítsa el a MixedRealityModel definíciót a jegyzékfájlból.

XML

Először keresse meg az alkalmazáscsomag jegyzékfájlját az aktuális projektben. Alapértelmezés szerint a jegyzékfájl neve Package.appxmanifest lesz. Ha a fájlt Visual Studio, kattintson a jobb gombbal a jegyzékfájlra a megoldásmegjelenítőben, és válassza a Forrás megtekintése lehetőséget az XML szerkesztéshez való megnyitásához.

A jegyzékfájl tetején adja hozzá az uap5 sémát, és adja hozzá figyelmen kívül hagyható névtérként:

<Package xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" 
         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
         xmlns:uap2="http://schemas.microsoft.com/appx/manifest/uap/windows10/2" 
         xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
         IgnorableNamespaces="uap uap2 uap5 mp"
         xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

Ezután adja meg a "MixedRealityModel" értéket az alkalmazás alapértelmezett csempéjén:

<Applications>
    <Application Id="App"
      Executable="$targetnametoken$.exe"
      EntryPoint="ExampleApp.App">
      <uap:VisualElements
        DisplayName="ExampleApp"
        Square150x150Logo="Assets\Logo.png"
        Square44x44Logo="Assets\SmallLogo.png"
        Description="ExampleApp"
        BackgroundColor="#464646">
        <uap:DefaultTile Wide310x150Logo="Assets\WideLogo.png" >
          <uap5:MixedRealityModel Path="Assets\My3DTile.glb" />
        </uap:DefaultTile>
        <uap:SplashScreen Image="Assets\SplashScreen.png" />
      </uap:VisualElements>
    </Application>
</Applications>

A MixedRealityModel elem fájlútvonalat fogad el, amely az alkalmazáscsomagban tárolt 3D-s eszközre mutat. Jelenleg csak a .glb fájlformátummal kézbesített és a Windows Mixed Reality 3D-s adateszköz szerzői utasításai alapján írt 3D modellek támogatottak. Az eszközöket az alkalmazáscsomagban kell tárolni, és az animáció jelenleg nem támogatott. Ha az "Elérési út" paraméter üresen marad Windows a 3D indító helyett a 2D-s beló jelenik meg. Megjegyzés: a .glb-et "Tartalom" jelöléssel kell megjelölni a buildbeállításokban az alkalmazás összeállítása és futtatása előtt.

Válassza ki a .glb-t a megoldáskezelőben, és a properties (tulajdonságok) szakaszban jelölje meg "Tartalomként" a buildbeállításokban
Válassza ki a .glb-t a megoldáskezelőben, és a properties (tulajdonságok) szakaszban jelölje meg "Tartalomként" a buildbeállításokban

Határolókeret

Határolókeret használható további pufferterület hozzáadására az objektum körül. A határolókeret középpont és kiterjedések használatával van megadva, amelyek a határolókeret közepétől az egyes tengelyek mentén található élekig tartó távolságot jelzik. A határolókeret egységei 1 egység = 1 mérőre leképezhetőek. Ha nincs határolókeret megadásával, akkor a rendszer automatikusan illeszt egyet az objektum hálóhoz. Ha a megadott határolókeret kisebb a modellnél, akkor átméretezi a hálóhoz.

A határolókeret attribútum támogatása a Windows RS4-frissítéssel együtt a MixedRealityModel elem tulajdonsága lesz. Ha először egy határolókeretet szeretne definiálni az alkalmazásjegyzék tetején, adja hozzá az uap6 sémát, és vegye fel figyelmen kívül hagyható névterekként:

<Package xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" 
         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
         xmlns:uap2="http://schemas.microsoft.com/appx/manifest/uap/windows10/2" 
         xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
         xmlns:uap6="http://schemas.microsoft.com/appx/manifest/uap/windows10/6"
         IgnorableNamespaces="uap uap2 uap5 uap6 mp"
         xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

Ezután a MixedRealityModel tulajdonságban állítsa be a SpatialBoundingBox tulajdonságot a határolókeret meghatározásához:

        <uap:DefaultTile Wide310x150Logo="Assets\WideLogo.png" >
          <uap5:MixedRealityModel Path="Assets\My3DTile.glb">
              <uap6:SpatialBoundingBox  Center=”1,-2,3” Extents=”1,2,3” />
          </uap5:MixedRealityModel>
        </uap:DefaultTile>

A Unity használata

A Unityvel való munka során a projektet a Visual Studio kell megnyitni az App Manifest szerkesztése előtt.

Megjegyzés

A 3D-indítót újra meg kell definiálni a jegyzékfájlban egy új, Unityből Visual Studio megoldás létrehozása és üzembe helyezésekor.

Megjegyzés

Ez a funkció a 2017-es Fall Creators Update (RS3) részeként lett hozzáadva a modern (VR) headsetek számára, és a 2018. áprilisi frissítés (RS4) részeként a HoloLens. Győződjön meg arról, hogy az alkalmazás a Windows SDK 10.0.16299-es vagy újabb verzióját célozza a modern (VR-) headsetek és a 10.0.17125-ös vagy újabb HoloLens. A legújabb SDK-Windows itt találja.

Fontos

A 3D mélyhivatkozások (secondaryTiles) csak 2D UWP-alkalmazásokkal működnek. Létrehozhat azonban egy 3D-s alkalmazásindítót, amely egy kizárólagos alkalmazást indít el a Windows Mixed Reality kezdőlapján.

A 2D-alkalmazások tovább javíthatóak az Windows Mixed Reality-hoz, ha az alkalmazásból származó 3D modelleket az Windows Mixed Reality kezdőlapon mélyhivatkozásként helyezzük el a 2D-s alkalmazás tartalmaira mutató mélyhivatkozásként, a Windows Start menü. Létrehozhat például 360°-os fényképeket, amelyek közvetlenül egy 360°-os fényképmegjelenítő alkalmazásra hivatkoznak, vagy lehetővé teszi, hogy a felhasználók 3D-s tartalmakat helyezzenek el egy adatgyűjteményből, amely megnyitja a szerző részleteit tartalmazó oldalt. Ez csupán néhány módszer a 2D-alkalmazás 3D-s tartalommal való bővítésére.

3D "secondaryTile" létrehozása

Az alkalmazásból származó 3D-tartalmakat a "secondaryTiles" használatával is el lehet helyezze, ha létrehozáskor meghatároz egy vegyes valóságú modellt. Vegyes valóságú modelleket úgy lehet létrehozni, hogy hivatkozunk egy 3D-s eszközre az alkalmazáscsomagban, és opcionálisan meghatározunk egy határolókeretet.

Megjegyzés

A "secondaryTiles" létrehozása egy kizárólagos nézetből jelenleg nem támogatott.

using Windows.UI.StartScreen;
using Windows.Foundation.Numerics;
using Windows.Perception.Spatial;

// Initialize the tile
SecondaryTile tile = new SecondaryTile("myTileId")
{
    DisplayName = "My Tile",
    Arguments = "myArgs"
};

tile.VisualElements.Square150x150Logo = new Uri("ms-appx:///Assets/MyTile/Square150x150Logo.png");

//Assign 3D model (only ms-appx and ms-appdata are allowed)
TileMixedRealityModel model = tile.VisualElements.MixedRealityModel;
model.Uri = new Uri("ms-appx:///Assets/MyTile/MixedRealityModel.glb");
model.ActivationBehavior = TileMixedRealityModelActivationBehavior.Default;
model.BoundingBox = new SpatialBoundingBox
{
    Center = new Vector3 { X = 1, Y = 0, Z = 0 },
    Extents = new Vector3 { X = 3, Y = 5, Z = 4 }
};

// And place it
await tile.RequestCreateAsync();

Határolókeret

A határolókeretek további pufferterület hozzáadására használhatók az objektum körül. A határolókeret középpont és kiterjedések használatával van megadva, amelyek a határolókeret közepétől az egyes tengelyek mentén található élekig tartó távolságot jelzik. A határolókeret egységei 1 egység = 1 mérőre leképezhetőek. Ha nincs határolókeret megadásával, a rendszer automatikusan illeszt egyet az objektum hálóhoz. Ha a megadott határolókeret kisebb a modellnél, akkor átméretezi a hálóhoz.

Aktiválási viselkedés

Megjegyzés

Ezt a funkciót az RS4-frissítés Windows támogatni fogja. Ha ezt a funkciót tervezi, győződjön meg arról, hogy az alkalmazás a Windows SDK 10.0.17125-ös vagy újabb verzióját célozza meg

Egy 3D secondaryTile aktiválási viselkedésének meghatározásával szabályozhatja, hogyan reagáljon, amikor egy felhasználó kiválasztja. Ezzel 3D-s objektumokat lehet a Mixed Reality, amelyek tisztán informatívak vagy dekoratívak. Az alábbi aktiválási viselkedéstípusok támogatottak:

  1. Alapértelmezett: Amikor egy felhasználó kiválasztja a 3D secondaryTile értéket, az alkalmazás aktiválva lesz
  2. Nincs: Amikor a felhasználó a 3D secondaryTile (3D másodlagos jelszó) lehetőséget választja, semmi sem történik, és az alkalmazás nincs aktiválva.

Meglévő "secondaryTile" beszerzése és frissítése

A fejlesztők lekértheti a meglévő másodlagos csempék listáját, amely tartalmazza a korábban megadott tulajdonságokat. A tulajdonságokat az érték módosításával, majd az UpdateAsync() hívásával is frissítheti.

// Grab the existing secondary tile
SecondaryTile tile = (await SecondaryTile.FindAllAsync()).First();

Uri updatedUri = new Uri("ms-appdata:///local/MixedRealityUpdated.glb");

// See if the model needs updating
if (!tile.VisualElements.MixedRealityModel.Uri.Equals(updatedUri))
{
    // Update it
    tile.VisualElements.MixedRealityModel.Uri = updatedUri;

    // And apply the changes
    await tile.UpdateAsync();
}

Annak ellenőrzése, hogy a felhasználó a Windows Mixed Reality

3D mélyhivatkozások (secondaryTiles) csak akkor jelennek meg, ha a nézet egy Windows Mixed Reality látható. Ha a nézet nem jelenik meg egy Windows Mixed Reality-headsetben, javasoljuk, hogy a belépési pont elrejtésével vagy egy hibaüzenet megjelenítésével elegánsan kezelje ezt a nézetet. Ezt az IsCurrentViewPresentedOnHolographic()lekérdezésével ellenőrizheti.

Csempeértesítések

A csempeértesítések jelenleg nem támogatják a frissítések 3D-s eszközökkel való küldését. Ez azt jelenti, hogy a fejlesztők nem tudnak a következőt tenni:

  • Leküldéses értesítések
  • Rendszeres lekérdezés
  • Ütemezett értesítések

A csempék egyéb funkcióiról és attribútumairól, valamint azok 2D-csempékhez való alkalmazásról az UWP Apps Csempék dokumentációjában talál további információt.

Lásd még