Aanbevolen instellingen voor Unity

Unity biedt een set standaardopties die over het algemeen het gemiddelde geval zijn voor alle platforms. Unity biedt echter een aantal gedragingen die specifiek zijn voor mixed reality die kunnen worden omgewisseld via projectinstellingen.

Instellen van een performante omgeving

Instellingen van lage kwaliteit

Het is belangrijk om de unity-kwaliteitsinstellingen te wijzigen in Zeer laag , zodat uw toepassing wordt uitgevoerd en goed presteert met de juiste framesnelheid, met name voor HoloLens-ontwikkeling. Voor ontwikkeling op immersive headsets, afhankelijk van de specificaties van de desktop die de VR-ervaring mogelijk maken, kan men nog steeds framerate bereiken zonder de parameters van de laagste kwaliteit.

In Unity 2019 LTS+ kunt u het kwaliteitsniveau van het project instellen door naarProjectinstellingen>kwaliteit bewerken> te gaan en standaard in te stellen door op de pijl-omlaag te klikken op het kwaliteitsniveau **Zeer laag.

Verlichtingsinstellingen

Net als bij scène-instellingen voor kwaliteit is het belangrijk om optimale belichtingsinstellingen in te stellen voor uw Mixed Reality-toepassing. In Unity is de instelling Belichting die meestal de grootste invloed heeft op de prestaties van uw scène Realtime Global Lighting. U kunt Globale verlichting uitschakelen door naar Instellingen voor vensterweergaveverlichting>>>realtime globale verlichting te gaan.

Er is nog een andere verlichtingsinstelling, Baked Global Lighting. Deze instelling kan krachtige en visueel opvallende resultaten bieden op immersive headsets, maar is niet van toepassing op HoloLens-ontwikkeling. Gebakken globale verlichting wordt alleen berekend voor statische GameObjects, die niet worden gevonden in HoloLens-scènes vanwege de aard van een onbekende en veranderende omgeving.

Lees Global Illumination van Unity voor meer informatie.

Notitie

Realtime Global Illumination wordt per scène ingesteld en daarom moeten ontwikkelaars deze eigenschap opslaan voor elke Unity-scène in hun project.

Renderingpad voor eenmalige instancing

In Mixed Reality toepassingen wordt de scène twee keer weergegeven: één keer voor elk oog. Vergeleken met traditionele 3D-ontwikkeling verdubbelt dit de hoeveelheid werk die moet worden berekend. Het is belangrijk om het meest efficiënte renderingpad in Unity te selecteren om zowel CPU- als GPU-tijd te besparen. Single Pass Instanced Rendering optimaliseert de Unity-renderingpijplijn voor mixed reality-apps; We raden u aan deze instelling standaard in te schakelen voor elk project.

Deze functie inschakelen in uw Unity-project

  1. Open OpenXR-instellingen (ga naarProjectinstellingen>bewerken>XR-invoegtoepassingsbeheer>OpenXR).
  2. Selecteer Single Pass Instanced in de vervolgkeuzelijst Render Mode .

Lees de volgende artikelen van Unity voor meer informatie over deze weergavemethode.

Notitie

Een veelvoorkomend probleem met Single Pass Instanced Rendering treedt op als ontwikkelaars al bestaande aangepaste shaders hebben die niet zijn geschreven voor instancing. Nadat deze functie is ingeschakeld, zien ontwikkelaars mogelijk dat sommige GameObjects slechts met één oog worden weergegeven. Dit komt doordat de bijbehorende aangepaste shaders niet de juiste eigenschappen voor instancing hebben.

Zie Single Pass Stereo Rendering voor HoloLens van Unity voor het oplossen van dit probleem

Dieptebuffer delen inschakelen

Als u een betere stabiliteit van hologrammen wilt bereiken vanuit de perceptie van de gebruiker, wordt aanbevolen om de eigenschap Depth Buffer Sharing in Unity in te schakelen. Als u dit inschakelt, deelt Unity de dieptekaart die door uw toepassing wordt geproduceerd met het Windows Mixed Reality-platform. Het platform kan vervolgens de stabiliteit van hologrammen beter optimaliseren voor uw scène voor elk frame dat door uw toepassing wordt weergegeven.

Deze functie inschakelen in uw Unity-project

  1. Open OpenXR-instellingen (ga naarProjectinstellingen>bewerken>XR-invoegtoepassingsbeheer>OpenXR).
  2. Selecteer Diepte 16-bits in de vervolgkeuzelijst Diepteverzendingsmodus .

De instelling voor de 16-bits dieptebuffer wordt met name aanbevolen voor HoloLens-ontwikkeling. Als u 16-bits selecteert in vergelijking met 24-bits, worden de bandbreedtevereisten aanzienlijk verminderd, omdat er minder gegevens hoeven te worden verplaatst/verwerkt. Dat gezegd hebbende, de optimalisatie brengt bepaalde kosten met zich mee. Zorg ervoor dat u de implicaties begrijpt die worden vermeld in de onderstaande vakken Belangrijk .

Om ervoor te zorgen dat het Windows Mixed Reality platform de stabiliteit van hologrammen kan optimaliseren, is het afhankelijk van de dieptebuffer om nauwkeurig te zijn en overeen te komen met alle weergegeven hologrammen op het scherm. Als dieptebuffer delen is ingeschakeld, is het dus belangrijk om bij het weergeven van kleur ook diepte weer te geven. In Unity geven de meeste ondoorzichtige of TransparentCutout-materialen standaard diepte weer, maar transparant en tekstobjecten geven geen diepte weer, hoewel dit afhankelijk is van shaders en andere factoren.

Als u de Mixed Reality Toolkit Standard-arcering gebruikt, gaat u als volgt te werk om diepte voor transparante objecten weer te geven:

  1. Selecteer het transparante materiaal dat gebruikmaakt van de MRTK Standard-arcering en open het venster Inspector-editor
  2. Selecteer de knop Nu oplossen in de waarschuwing voor het delen van dieptebuffers. Dit kan ook handmatig worden uitgevoerd door de renderingmodus in te stellen op Aangepast; stel vervolgens Modus in op Transparant en stel ten slotte Diepte schrijven in op Aan

Belangrijk

Ontwikkelaars moeten oppassen voor Z-fighting bij het wijzigen van deze waarden samen met de instellingen van het bijna/verre vlak van de camera. Z-Fighting treedt op wanneer twee gameobjecten proberen te renderen naar dezelfde pixel en vanwege beperkingen in de betrouwbaarheid van de dieptebuffer (z-diepte) kan Unity niet onderscheiden welk object zich voor de andere bevindt. Ontwikkelaars zien een flikkering tussen twee gameobjecten terwijl ze vechten om dezelfde z-dieptewaarde. Dit kan worden opgelost door over te schakelen naar de 24-bits diepte-indeling, omdat er een groter bereik van waarden is voor elk object om op te berekenen voor hun z-diepte van de camera.

Het wordt echter aanbevolen, met name voor holoLens-ontwikkeling, om de nabije en verre vlakken van de camera in plaats daarvan te wijzigen in een kleiner bereik en de 16-bits diepteindeling te behouden. De z-diepte wordt niet lineair toegewezen aan het bereik van waarden langs de nabije en verre cameravlakken. Dit kan worden gewijzigd door de hoofdcamera in uw scène te selecteren en onder Inspector de waarden voor het vlak van de near & far Clipping Plane te wijzigen om het bereik te verkleinen (d.w.z. van 1000m tot 100 m of een andere x-waarde, enz.)

Belangrijk

Unity maakt geen stencilbuffer wanneer u een 16-bits diepteindeling gebruikt. Sommige Unity UI-effecten en andere vereiste effecten voor stencils werken dus niet, tenzij de 24-bits diepte-indeling is geselecteerd, waardoor een 8-bits stencilbuffer wordt gemaakt.

Bouwen voor IL2CPP

Unity heeft de ondersteuning voor de back-end voor .NET-scripts afgeschaft en raadt ontwikkelaars daarom aan IL2CPP te gebruiken voor hun UWP Visual Studio-builds. Hoewel dit verschillende voordelen met zich meebrengt, kan het bouwen van uw Visual Studio-oplossing vanuit Unity voor IL2CPP langzamer gaan dan de oude .NET-methode. Daarom wordt het ten zeerste aanbevolen om best practices te volgen voor het bouwen van IL2CPP om tijd te besparen op de iteratietijd van de ontwikkeling.

  1. Maak gebruik van incrementeel bouwen door uw project elke keer in dezelfde map te bouwen, waarbij u de vooraf gemaakte bestanden daar opnieuw gebruikt
  2. Antimalwaresoftwarescans uitschakelen voor uw project & buildmappen
    • Open Virus & Threat Protection onder de app voor Windows 10-instellingen
    • Selecteer Instellingen beheren onder Virus & instellingen voor beveiliging tegen bedreigingen
    • Selecteer Uitsluitingen toevoegen of verwijderen in de sectie Uitsluitingen
    • Selecteer Een uitsluiting toevoegen en selecteer de map met uw Unity-projectcode en build-uitvoer
  3. Een SSD gebruiken voor het bouwen

Lees Buildtijden optimaliseren voor IL2CPP voor meer informatie.

Notitie

Bovendien kan het handig zijn om een cacheserver in te stellen, met name voor Unity-projecten met een grote hoeveelheid assets (met uitzondering van scriptbestanden) of voortdurend veranderende scènes/assets. Bij het openen van een project slaat Unity in aanmerking komende assets op in een interne cacheindeling op de ontwikkelcomputer. Items moeten opnieuw worden geïmporteerd en dus opnieuw worden verwerkt wanneer ze worden gewijzigd. Dit proces kan eenmaal worden uitgevoerd en worden opgeslagen in een cacheserver en vervolgens worden gedeeld met andere ontwikkelaars om tijd te besparen, in plaats van dat elke ontwikkelaar het opnieuw importeren van nieuwe wijzigingen lokaal verwerkt.

Publicatie-eigenschappen

Holografisch welkomstscherm

HoloLens heeft een CPU en GPU van mobiele klasse, wat betekent dat het laden van apps iets langer kan duren. Terwijl de app wordt geladen, zien gebruikers alleen zwart en vragen ze zich misschien af wat er aan de hand is. Om ze gerust te stellen tijdens het laden, kunt u een holografisch welkomstscherm toevoegen.

Het holografische welkomstscherm in- of uitschakelen:

  1. Ga naar de paginaProjectinstellingen>bewerken>Player
  2. Selecteer het tabblad Windows Store en open de sectie Splash Image
  3. Pas uw afbeelding toe onder de eigenschap Windows Holographic > Holographic Splash Image .
    • Als u de optie Welkomstscherm van Unity weergeven inschakelt of uitschakelt, wordt het welkomstscherm van unity in- of uitgeschakeld. Als u geen Unity Pro-licentie hebt, wordt het welkomstscherm van unity altijd weergegeven.
    • Als een Holoographic Splash Image wordt toegepast, wordt deze altijd weergegeven, ongeacht of het selectievakje Welkomstscherm van Unity weergeven is ingeschakeld of uitgeschakeld. Het opgeven van een aangepaste holografische splash-afbeelding is alleen beschikbaar voor ontwikkelaars met een Unity Pro-licentie.
Welkomstscherm van Unity weergeven Holografische splash-afbeelding Gedrag
Uit Geen Standaard welkomstscherm van Unity weergeven gedurende 5 seconden of totdat de app is geladen, afhankelijk van wat langer is.
Uit Aangepast telefoonnummer Aangepast welkomstscherm weergeven gedurende 5 seconden of totdat de app is geladen, afhankelijk van wat langer is.
Aan Geen Doorzichtig zwart (niets) weergeven totdat de app is geladen.
Aan Aangepast telefoonnummer Aangepast welkomstscherm weergeven gedurende 5 seconden of totdat de app is geladen, afhankelijk van wat langer is.

Lees de documentatie over het welkomstscherm van Unity voor meer informatie.

Verlies bijhouden

Een mixed reality-headset is afhankelijk van het zien van de omgeving eromheen om wereldwijd vergrendelde coördinaatsystemen te bouwen, waardoor hologrammen in positie kunnen blijven. Wanneer de headset zichzelf niet in de wereld kan vinden, wordt gezegd dat de headset het traceren is kwijtgeraakt. In deze gevallen werkt functionaliteit die afhankelijk is van wereld-vergrendelde coördinatensystemen, zoals ruimtelijke fasen, ruimtelijke ankers en ruimtelijke toewijzing, niet.

Als het traceren verloren gaat, is het standaardgedrag van Unity om te stoppen met het weergeven van hologrammen, de gamelus te onderbreken en een melding over verloren tracering weer te geven die comfortabel de blik van de gebruikers volgt. Aangepaste meldingen kunnen ook worden opgegeven in de vorm van een afbeelding voor het bijhouden van verlies. Voor apps die afhankelijk zijn van tracering voor hun hele ervaring, is het voldoende om Unity dit volledig te laten afhandelen totdat het bijhouden is hersteld. Ontwikkelaars kunnen een aangepaste afbeelding leveren die moet worden weergegeven tijdens het bijhouden van verlies.

Ga als volgt te werk om de verloren traceringsafbeelding aan te passen:

  1. Ga naar de paginaProjectinstellingen>bewerken>Player
  2. Selecteer op het tabblad Windows Store en open de sectie Splash Image
  3. Pas uw afbeelding toe onder de eigenschap Windows Holographic > Tracking Loss Image .

Afmelden voor automatische onderbreking

Sommige apps vereisen mogelijk geen tracering (bijvoorbeeld alleen afdrukstand-apps , zoals 360-graden videoviewers) of moeten ononderbroken worden verwerkt terwijl het bijhouden verloren gaat. U kunt zich afmelden voor het standaardgedrag voor traceringsverlies, maar u bent verantwoordelijk voor het verbergen/uitschakelen van objecten, die niet goed zouden worden weergegeven in een scenario met traceringsverlies. In de meeste gevallen is de enige inhoud die in dat geval wordt aanbevolen om te worden weergegeven inhoud die is vergrendeld met het lichaam, gecentreerd rond de hoofdcamera.

Ga als volgende te werk om u af te melden voor automatisch onderbreken:

  1. Ga naar de paginaProjectinstellingen>bewerken>Player
  2. Selecteer het tabblad Windows Store en open de sectie Splash Image
  3. Wijzig het selectievakje Windows Holographic > On Tracking Loss Pause and Show Image .

Verlies bijhouden van gebeurtenissen

Als u aangepast gedrag wilt definiëren wanneer het bijhouden verloren gaat, moet u de globale traceringsverliesgebeurtenissen afhandelen.

Functies

Een app kan alleen profiteren van bepaalde functionaliteit als deze de juiste mogelijkheden in het manifest declareert. De manifestdeclaraties kunnen worden gemaakt in Unity, zodat ze worden opgenomen in elke toekomstige projectexport.

Mogelijkheden kunnen worden ingeschakeld voor een Mixed Reality-toepassing door:

  1. Ga naar de paginaProjectinstellingen>bewerken>Player
  2. Selecteer het tabblad Windows Store, open de sectie Publicatie-instellingen en zoek naar de lijst Mogelijkheden

De toepasselijke mogelijkheden voor het inschakelen van de veelgebruikte API's voor Holographic-apps zijn:

Mogelijkheid API's waarvoor mogelijkheden zijn vereist
SpatialPerception SurfaceObserver
Webcam PhotoCapture en VideoCapture
PicturesLibrary / VideosLibrary Respectievelijk PhotoCapture of VideoCapture (bij het opslaan van de vastgelegde inhoud)
Microfoon VideoCapture (bij het vastleggen van audio), DictationRecognizer, GrammarRecognizer en KeywordRecognizer
InternetClient DicterenRecognizer (en om de Unity Profiler te gebruiken)

Zie ook