Aanbevolen instellingen voor Unity
Unity biedt een set standaardopties die over het algemeen het gemiddelde geval zijn voor alle platforms. Unity biedt echter bepaalde gedragingen die specifiek zijn voor mixed reality die kunnen worden omgewisseld via projectinstellingen.
Set-up van performante omgeving
Instellingen voor lage kwaliteit
Het is belangrijk om de Unity Quality-instellingen te wijzigen in Zeer laag , zodat uw toepassing wordt uitgevoerd en goed presteert op de juiste framerate, met name voor HoloLens-ontwikkeling. Voor ontwikkeling op insluitende headsets, afhankelijk van de specificaties van de desktop die de VR-ervaring aandrijven, kan men nog steeds framerate bereiken zonder de laagste kwaliteitsparameters.
In Unity 2019 LTS+ kunt u het kwaliteitsniveau van het project instellen door naar Project bewerken>Instellingen> Kwaliteit te gaan en de standaardinstelling in te stellen door op de pijl-omlaag te klikken op het niveau **Zeer lage kwaliteit.
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 verlichtingsinstelling die meestal de grootste invloed op de prestaties op uw scène heeft, Realtime Global Lighting. U kunt Global Lighting uitschakelen door naar Window>Rendering>Lighting Instellingen> Realtime Global Lighting te gaan.
Er is nog een verlichtingsinstelling, Baked Global Lighting. Deze instelling kan krachtige en visueel opvallende resultaten bieden op insluitende headsets, maar is niet van toepassing op HoloLens-ontwikkeling. Baked Global Illumination 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 is ingesteld per scène en ontwikkelaars moeten deze eigenschap dus opslaan voor elke Unity-scène in hun project.
Weergavepad voor eenmalige pass-instancing
In Mixed Reality-toepassingen wordt de scène twee keer weergegeven: eenmaal 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 te besparen op zowel CPU- als GPU-tijd. Met Single Pass Instanced Rendering wordt de Unity-renderingpijplijn geoptimaliseerd voor mixed reality-apps; U wordt aangeraden deze instelling standaard in te schakelen voor elk project.
Deze functie inschakelen in uw Unity-project
- OpenXR-Instellingen (ga naar Project bewerken>Instellingen> XR Plugin Management>OpenXR).
- Selecteer Single Pass Instanced in de vervolgkeuzelijst Render Mode .
Lees de volgende artikelen uit Unity voor meer informatie met deze renderingbenadering.
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, kunnen ontwikkelaars merken dat sommige GameObjects slechts in één oog worden weergegeven. Dit komt doordat de bijbehorende aangepaste shaders niet over de juiste eigenschappen beschikken voor instancing.
Dieptebuffer delen inschakelen
Om een betere hologramstabiliteit te bereiken vanuit de perceptie van de gebruiker, is het raadzaam om de eigenschap Depth Buffer Sharing in Unity in te schakelen. Door dit in te schakelen, deelt Unity de dieptekaart die door uw toepassing wordt geproduceerd met het Windows Mixed Reality-platform. Het platform kan de stabiliteit van hologrammen vervolgens beter optimaliseren voor uw scène voor elk frame dat door uw toepassing wordt weergegeven.
Deze functie inschakelen in uw Unity-project
- OpenXR-Instellingen (ga naar Project bewerken>Instellingen> XR Plugin Management>OpenXR).
- Selecteer Diepte 16-bits in het vervolgkeuzemenu Diepteverzendingsmodus .
De 16-bits dieptebufferinstelling wordt vooral aanbevolen voor holoLens-ontwikkeling. Als u 16-bits selecteert in vergelijking met 24-bits, vermindert u de bandbreedtevereisten aanzienlijk, omdat er minder gegevens moeten worden verplaatst/verwerkt. Dat gezegd hebbende, de optimalisatie wordt geleverd met bepaalde kosten. Zorg ervoor dat u de implicaties begrijpt die worden vermeld in de onderstaande vakken Belangrijk .
Om het Windows Mixed Reality-platform de stabiliteit van hologrammen te optimaliseren, is het afhankelijk van de dieptebuffer die nauwkeurig is en overeenkomt met alle gerenderde hologrammen op het scherm. Dus, met dieptebuffer delen ingeschakeld, is het belangrijk wanneer u kleur weergeeft om ook diepte weer te geven. In Unity worden de meeste ondoorzichtige of TransparentCutout-materialen standaard diepte weergegeven, maar transparante en tekstobjecten worden geen diepte weergegeven, hoewel dit afhankelijk is van shaders en andere factoren.
Als u de Mixed Reality Toolkit Standard-shader gebruikt om diepte weer te geven voor transparante objecten:
- Selecteer het transparante materiaal dat gebruikmaakt van de MRTK Standard-shader en open het venster Inspector-editor
- Selecteer de knop Nu herstellen in de waarschuwing voor het delen van de dieptebuffer. Dit kan ook handmatig worden uitgevoerd door de renderingmodus in te stellen op Aangepast. Stel vervolgens de modusin op Transparant en stel ten slotte Diepte schrijven in op Aan
Belangrijk
Ontwikkelaars moeten oppassen voor Z-gevechten bij het wijzigen van deze waarden, samen met de instellingen van de camera in de buurt/ver van de camera. Z-Fighting treedt op wanneer twee gameobjecten proberen te renderen tot dezelfde pixel en als gevolg van beperkingen in betrouwbaarheid van de dieptebuffer (dat wil gezegd z diepte), Unity niet kan onderscheiden welk object zich voor de andere bevindt. Ontwikkelaars zien een flikkering tussen twee gameobjecten terwijl ze vechten voor dezelfde z-dieptewaarde. Dit kan worden opgelost door over te schakelen naar de 24-bits diepte-indeling, omdat er voor elk object een groter bereik van waarden is waarop moet worden berekend voor de z-diepte van de camera.
Het wordt echter aanbevolen om, met name voor holoLens-ontwikkeling, de near- en farvlakken van de camera te wijzigen in een kleiner bereik en de 16-bits diepteindeling te behouden. De z-diepte is niet-lineair toegewezen aan het bereik van waarden langs de nabij- en verre cameravlakken. Dit kan worden gewijzigd door de hoofdcamera in uw scène te selecteren en onder Inspector de waarden van het vlak voor near & far clipping te wijzigen om hun bereik te beperken (bijvoorbeeld van 1000m tot 100m of een andere x-waarde, enz.)
Belangrijk
Unity maakt geen stencilbuffer wanneer u een 16-bits diepteindeling gebruikt. Sommige Unity UI-effecten en andere stencil-vereiste effecten werken dus niet, tenzij de 24-bits diepteindeling is geselecteerd waarmee een 8-bits stencilbuffer wordt gemaakt.
Bouwen voor IL2CPP
Unity heeft ondersteuning voor de back-end voor .NET-scripts afgeschaft 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 van Unity voor IL2CPP langzamer zijn dan de oude .NET-methode. Daarom wordt het ten zeerste aanbevolen om aanbevolen procedures te volgen voor het bouwen van IL2CPP om te besparen op de tijd van de ontwikkelingsiteratie.
- Gebruik incrementeel bouwen door uw project elke keer in dezelfde map te bouwen, waarbij de vooraf gebouwde bestanden daar opnieuw worden gebruikt
- Antimalwaresoftwarescans uitschakelen voor uw project- en buildmappen
- Open Virus & Threat Protection onder uw Windows 10-instellingen-app
- Selecteer Instellingen beheren onder Instellingen voor virus- en bedreigingsbeveiliging
- Selecteer Uitsluitingen toevoegen of verwijderen onder de sectie Uitsluitingen
- Selecteer Een uitsluiting toevoegen en selecteer de map met uw Unity-projectcode en build-uitvoer
- Een SSD gebruiken voor het bouwen
Lees 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 ontwikkelcomputer. 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 daarom worden gedeeld met andere ontwikkelaars om tijd te besparen, in plaats van elke ontwikkelaar die het opnieuw importeren van nieuwe wijzigingen lokaal verwerkt.
Publicatie-eigenschappen
Holographic splash screen
HoloLens heeft een CPU en GPU van mobiele klassen, 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 ze geruststellen tijdens het laden door een holografische welkomstscherm toe te voegen.
Het holografische welkomstscherm in- of uitschakelen:
- Ga naar de pagina Project Instellingen> Player bewerken>
- Selecteer het tabblad Windows Store en open de sectie Splash Image
- Pas uw afbeelding toe onder de eigenschap Windows Holographic Holographic > Splash Image .
- Als u de optie Splash Screen weergeven van Unity inschakelt of uitschakelt, wordt het welkomstscherm van Unity ingeschakeld of uitgeschakeld. Als u geen Unity Pro-licentie hebt, wordt het welkomstscherm van unity altijd weergegeven.
- Als een Holographic Splash Image wordt toegepast, wordt deze altijd weergegeven of het selectievakje Splash Screen weergeven is ingeschakeld of uitgeschakeld. Het opgeven van een aangepaste holografische splash-installatiekopieën is alleen beschikbaar voor ontwikkelaars met een Unity Pro-licentie.
Welkomstscherm van Unity weergeven | Holographic Splash Image | Gedrag |
---|---|---|
Uit | Geen | Standaardscherm van Unity gedurende 5 seconden weergeven of totdat de app is geladen, afhankelijk van wat langer is. |
Uit | Aanpassen | Toon aangepast welkomstscherm gedurende 5 seconden of totdat de app is geladen, afhankelijk van wat langer is. |
Uit | Geen | Doorzichtig zwart (niets) weergeven totdat de app is geladen. |
Uit | Aanpassen | Toon aangepast welkomstscherm gedurende 5 seconden of totdat de app is geladen, afhankelijk van wat langer is. |
Lees de welkomstschermdocumentatie van Unity voor meer informatie.
Bijhouden van verlies
Een Mixed reality-headset is afhankelijk van het zien van de omgeving eromheen om wereldwijd vergrendelde coördinaatsystemen te maken, waardoor hologrammen in positie kunnen blijven. Wanneer de headset zich niet in de wereld kan vinden, wordt gezegd dat de headset verloren is gegaan. In dergelijke gevallen werkt functionaliteit die afhankelijk is van systemen voor vergrendelde wereldcoördinaten, zoals ruimtelijke fasen, ruimtelijke ankers en ruimtelijke toewijzing, niet.
Als er een verlies van tracering optreedt, is het standaardgedrag van Unity om te stoppen met het weergeven van hologrammen, de gamelus te onderbreken en een melding weer te geven die verloren traceringsmeldingen weergeeft die de gebruikers comfortabel volgen. Aangepaste meldingen kunnen ook worden opgegeven in de vorm van een beeld van het bijhouden van verlies. Voor apps die afhankelijk zijn van het bijhouden van hun hele ervaring, is het voldoende om Unity dit volledig te laten verwerken totdat het bijhouden opnieuw wordt uitgevoerd. Ontwikkelaars kunnen een aangepaste afbeelding opgeven die moet worden weergegeven tijdens het bijhouden van verlies.
Ga als volgt te werk om de verloren afbeelding bijhouden aan te passen:
- Ga naar de pagina Project Instellingen> Player bewerken>
- Selecteer op het tabblad Windows Store en open de sectie Splash Image
- Pas uw afbeelding toe onder de eigenschap Windows Holographic > Tracking Loss Image .
Afmelden voor automatische pauze
Sommige apps vereisen mogelijk geen tracering (bijvoorbeeld alleen afdrukstands-apps zoals videoviewers van 360 graden) of moeten mogelijk ononderbroken worden verwerkt terwijl het bijhouden verloren gaat. U kunt zich afmelden voor het standaardverlies van het traceringsgedrag, maar u bent verantwoordelijk voor het verbergen/uitschakelen van objecten, die niet goed zouden worden weergegeven in een scenario voor traceringsverlies. In de meeste gevallen is de enige inhoud die wordt aanbevolen om weer te geven in dat geval vergrendelde inhoud, gecentreerd rond de hoofdcamera.
Automatische onderbrekingsgedrag uitschakelen:
- Ga naar de pagina Project bewerken>Instellingen Player>
- Selecteer het tabblad Windows Store en open de sectie Splash Image
- Wijzig het selectievakje Windows Holographic > On Tracking Loss Pause and Show Image .
Gebeurtenissen voor het bijhouden van verlies
Als u aangepast gedrag wilt definiëren wanneer het bijhouden verloren gaat, verwerkt u de algemene traceringsverliesgebeurtenissen.
Functies
Een app kan alleen profiteren van bepaalde functionaliteit als deze de juiste mogelijkheden in het manifest declareert. De manifestdeclaraties kunnen in Unity worden gemaakt, zodat ze worden opgenomen in elke toekomstige projectexport.
Mogelijkheden kunnen worden ingeschakeld voor een Mixed Reality-toepassing door:
- Ga naar de pagina Project Instellingen> Player bewerken>
- Selecteer het tabblad Windows Store, open de sectie Publiceren Instellingen en zoek naar de lijst Met mogelijkheden
De toepasselijke mogelijkheden voor het inschakelen van de veelgebruikte API's voor Holographic-apps zijn:
Mogelijkheid | API's waarvoor capaciteit is vereist |
---|---|
SpatialPerception | SurfaceObserver |
Webcam | PhotoCapture en VideoCapture |
PicturesLibrary /VideosLibrary | PhotoCapture of VideoCapture (bij het opslaan van de vastgelegde inhoud) |
Microfoon | VideoCapture (bij het vastleggen van audio), DictationRecognizer, GrammarRecognizer en KeywordRecognizer |
InternetClient | DictationRecognizer (en de Unity Profiler gebruiken) |