Aanbevolen instellingen voor Unity

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

Goed presterende omgeving instellen

Instellingen van lage kwaliteit

Het is belangrijk om de instellingen voor Unity-kwaliteit te wijzigen in Zeer laag, zodat uw toepassing wordt uitgevoerd en goed presteert met de juiste framesnelheid, met name voor HoloLens ontwikkeling. Afhankelijk van de specificaties van de desktop die de VR-ervaring aanstuurt, kan er nog steeds framesnelheid worden bereikt zonder de parameters van de laagste kwaliteit.

In Unity 2019 LTS+ kunt u het kwaliteitsniveau van het project instellen door naar Edit>Project Instellingen>Quality te gaan en de Standaardinstelling in te stellen door op de pijl omlaag te klikken op het niveau **Very Low-quality.

Belichtingsinstellingen

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 doorgaans de grootste invloed heeft op de prestaties van uw scène Realtime GlobalSen. U kunt Global Infig uitschakelen door naarWindowRenderingLighting>>Instellingen>Realtime Global Opfrealtime te gaan.

Er is nog een andere belichtingsinstelling, De standaardinstelling globals. Deze instelling kan goed presterende en visueel overtuigende resultaten bieden op immersive headsets, maar is niet van toepassing op HoloLens ontwikkeling. Een ingebakken globale wereld wordt alleen berekend voor statische GameObjecten, die niet worden gevonden in HoloLens scènes vanwege de aard van een onbekende en veranderende omgeving.

Lees Global Unity van Unity voor meer informatie.

Notitie

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

Renderingpad met één pass-instancing

In Mixed Reality toepassingen wordt de scène twee keer weergegeven, eenmaal voor elk oog voor de gebruiker. In vergelijking met traditionele 3D-ontwikkeling wordt hiermee de hoeveelheid werk die moet worden berekend, verdubbeld. Het is belangrijk om het meest efficiënte renderingpad in Unity te selecteren om zowel CPU- als GPU-tijd te besparen. Met single pass instanced rendering wordt de Unity-renderingpijplijn geoptimaliseerd voor Mixed Reality-apps. Het wordt aanbevolen deze instelling standaard in te stellen voor elk project.

Deze functie inschakelen in uw Unity-Project

  1. Open Player XR Instellingen (ga naar Edit>Project Instellingen>PlayerXR> Instellingen)
  2. Selecteer Single Pass Instanced in het vervolgkeuzemenu Stereo Rendering Method (het selectievakje Virtual Reality Supported moet zijn ingeschakeld)

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

Notitie

Een veelvoorkomende 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 inschakelen, kunnen ontwikkelaars merken dat sommige GameObjects slechts in één oog worden weergegeven. Dit komt doordat de bijbehorende aangepaste shaders niet de juiste eigenschappen hebben voor het maken van een instancing.

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

Dieptebuffer delen inschakelen

Voor een betere stabiliteit van hologrammen vanuit de waarneming van de gebruiker, is het raadzaam om de eigenschap Dieptebuffer delen in teschakelen in Unity. Door dit in te zetten, deelt Unity de dieptekaart die door uw toepassing is geproduceerd met het Windows Mixed Reality platform. Het platform kan vervolgens beter de stabiliteit van hologrammen optimaliseren, specifiek voor uw scène, voor elk frame dat door uw toepassing wordt weergegeven.

Deze functie inschakelen in uw Unity-Project

  1. Open Player XR Instellingen (ga naar Edit>Project Instellingen>PlayerXR> Instellingen)
  2. Schakel het selectievakje voor Het delen van dieptebuffers inschakelen in onder Virtual Reality SDK's>Windows Mixed Reality uitbreiding (het selectievakje Virtual Reality Supported moet zijn ingeschakeld)

Het is ook raadzaam om 16-bits diepte te selecteren onder de instelling Diepte-indeling in dit deelvenster, met name voor HoloLens Ontwikkeling. Als u 16-bits selecteert in vergelijking met 24-bits, vermindert u de bandbreedtevereisten aanzienlijk, omdat er minder gegevens hoeven te worden verplaatst/verwerkt.

Om ervoor te zorgen dat Windows Mixed Reality-platform de stabiliteit van hologrammen optimaliseert, is het afhankelijk van de dieptebuffer om nauwkeurig te zijn en overeen te komen met alle gerenderde hologrammen op het scherm. Met het delen van dieptebuffers 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 transparante en tekstobjecten geven geen diepte weer, hoewel dit afhankelijk is van shader, enzovoort.

Als u de Mixed Reality Toolkit Standard-shader gebruikt, om diepte weer te geven voor transparante objecten:

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

Belangrijk

Ontwikkelaars moeten zich bewust zijn van Z-problemen bij het wijzigen van deze waarden, samen met de vlakinstellingen van de camera in de buurt of ver. Z-Ing treedt op wanneer twee gameobjecten proberen te renderen naar dezelfde pixel en vanwege beperkingen in de betrouwbaarheid van de dieptebuffer (dat wil zeggen z diepte), kan Unity niet onderscheiden welk object zich vóór het andere object bevinden. Ontwikkelaars zullen een onderscheid zien tussen twee gameobjecten wanneer ze met dezelfde z-depth-waarde knokken. Dit kan worden opgelost door over te schakelen naar een 24-bits diepte-indeling, omdat er voor elk object een groter bereik aan waarden beschikbaar is waarop de z-diepte van de camera kan worden berekend.

Het wordt echter aanbevolen, met name voor HoloLens-ontwikkeling, om de vlak vlakbij en ver van de camera te wijzigen in een kleiner bereik en de 16-bits diepteindeling te behouden. De z-diepte is niet-lineair aan het bereik van waarden langs de cameravlakken in de buurt en ver. Dit kan worden gewijzigd door de hoofdcamera in uw scène te selecteren en onder Inspector& de waarden van het Near Far Clipping Plane te wijzigen om het bereik te verminderen (van 1000 m naar 100m of een andere x-waarde, enzovoort)

Belangrijk

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

Bouwen voor IL2CPP

Unity heeft afgeschafte ondersteuning voor de .NET scripting-back-end en raadt daarom aan dat ontwikkelaars IL2CPP gebruiken voor hun UWP Visual Studio-builds. Hoewel dit verschillende voordelen biedt, kan het bouwen van uw Visual Studio-oplossing vanuit Unity voor IL2CPP langzamer zijn 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 ontwikkel iteratie.

  1. Maak gebruik van incrementeel bouwen door uw project steeds in dezelfde map te bouwen en de vooraf gebouwde bestanden daar opnieuw te gebruiken
  2. Scans van antimalwaresoftware uitschakelen voor de build-mappen & van uw project
    • Open Virus & threat protection onder de app Windows 10 instellingen
    • Selecteer Beheer Instellingen onder Virus threat protection settings (Instellingen voor virusbedreigingenbescherming&)
    • 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 Optimizing Build Times for IL2CPP (Buildtijden optimaliseren voor IL2CPP ) voor meer informatie.

Notitie

Bovendien kan het nuttig 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 cache-indeling op de ontwikkelmachine. Items moeten opnieuw worden geïmporteerd en dus opnieuw worden verwerkt wanneer ze worden gewijzigd. Dit proces kan eenmaal worden uitgevoerd en opgeslagen in een cacheserver en vervolgens worden gedeeld met andere ontwikkelaars om tijd te besparen, in plaats van elke ontwikkelaar die het opnieuw importeren van nieuwe wijzigingen lokaal verwerkt.

Eigenschappen publiceren

Holographic-welkomstscherm

HoloLens heeft een MOBIELE CPU en GPU, wat betekent dat het laden van apps iets langer kan duren. Terwijl de app wordt geladen, zien gebruikers alleen zwart en kunnen ze zich afvragen wat er aan de hand is. U kunt een holografische welkomstscherm toevoegen om ze tijdens het laden gerust te stellen.

Het holografische welkomstscherm in-/uitschakelen:

  1. Ga naar de>pagina Edit Project Instellingen>Player
  2. Selecteer het tabblad Windows Store en open de sectie Welkomstafbeelding
  3. Pas uw afbeelding toe onder de eigenschap Windows Holographic > Holographic Splash Image.
    • Als u de optie Unity-welkomstscherm tonen in- of uitschakelen, wordt het welkomstscherm van Unity in- of uitgeschakeld. Als u geen Licentie voor Unity Pro, wordt het welkomstscherm van Unity altijd weergegeven.
    • Als een Holographic Splash Image wordt toegepast, wordt altijd weergegeven of het selectievakje Unity Splash Screen weergeven is ingeschakeld of uitgeschakeld. Het opgeven van een aangepaste holographic splash-afbeelding is alleen beschikbaar voor ontwikkelaars met een Unity Pro licentie.
Unity Splash Screen tonen Holographic Splash-afbeelding Gedrag
Uit Geen StandaardScherm van Unity-welkomstscherm 5 seconden weergegeven of totdat de app is geladen, wat langer is.
Uit Aangepast telefoonnummer Aangepaste welkomstscherm 5 seconden of totdat de app wordt geladen, wat langer is.
Aan Geen Transparante zwarte (niets) tonen totdat de app wordt geladen.
Aan Aangepast telefoonnummer Aangepaste welkomstscherm 5 seconden of totdat de app wordt geladen, wat langer is.

Lees de Splash Screen-documentatie van Unity voor meer informatie.

Traceringsverlies

Een Mixed Reality-headset is afhankelijk van het zien van de omgeving eromheen om wereldge vergrendelde coördinatensystemen te maken, waardoor hologrammen op hun positie kunnen blijven. Wanneer de headset zich niet kan vinden in de wereld, is de headset het bijhouden kwijtgeraakt. In dergelijke gevallen werkt functionaliteit die afhankelijk is van wereldwijd vergrendelde coördinatensystemen, zoals ruimtelijke fasen, ruimtelijke ankers en ruimtelijke toewijzing, niet.

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

De verloren afbeelding voor het bijhouden aanpassen:

  1. Ga naar de>pagina Edit Project Instellingen>Player
  2. Selecteer op het tabblad Windows Store en open de sectie Welkomstafbeelding
  3. Pas uw afbeelding toe onder de eigenschap Windows Holographic > Tracking Loss Image.

De automatische onderbreking niet meer in gebruik nemen

Voor sommige apps is mogelijk geen tracering vereist (bijvoorbeeld apps die alleen gericht zijn, zoals video's van 360 graden) of moeten ze mogelijk zonder onderbreking worden verwerkt terwijl het bijhouden verloren gaat. U kunt het standaardgedrag voor het verlies van tracering uitschakelen, maar u bent verantwoordelijk voor het verbergen/uitschakelen van objecten, die niet goed worden weergegeven in een scenario voor traceringsverlies. In de meeste gevallen is hoofdinhoud, gecentreerd rond de hoofdcamera, de enige inhoud die wordt aanbevolen om in dat geval te worden weergegeven.

Als u zich wilt af-van-gedrag voor automatisch onderbreken:

  1. Ga naar de pagina Edit>Project Instellingen>Player
  2. Selecteer het tabblad Windows Store en open de sectie Welkomstafbeelding
  3. Wijzig het Windows het selectievakje Holographic > On Tracking Loss Pause en Show Image.

Verliesgebeurtenissen bijhouden

Als u aangepast gedrag wilt definiëren wanneer tracering verloren gaat, moet u de gebeurtenissen van het globale traceringsverlies 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>pagina Edit Project Instellingen>Player
  2. Selecteer het tabblad Windows Store, open de sectie Instellingen publiceren en zoek naar de lijst Mogelijkheden

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

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

Zie ook