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 aanstuurt, kan men nog steeds framesnelheid 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 presterende 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
- Open OpenXR-instellingen (ga naarProjectinstellingen>bewerken>XR-invoegtoepassingsbeheer>OpenXR).
- 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
Voor een betere stabiliteit van hologrammen 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
- Open OpenXR-instellingen (ga naarProjectinstellingen>bewerken>XR-invoegtoepassingsbeheer>OpenXR).
- 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:
- Selecteer het transparante materiaal dat gebruikmaakt van de MRTK Standard-arcering en open het venster Inspector-editor
- 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 het & bijna-ver-knipvlak te wijzigen om het bereik te verkleinen (bijvoorbeeld van 1000m tot 100 m of een andere x-waarde, enzovoort)
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.
- Maak gebruik van incrementeel bouwen door uw project elke keer in dezelfde map te bouwen, waarbij u de vooraf gemaakte bestanden daar opnieuw gebruikt
- Antimalwaresoftwarescans uitschakelen voor uw projectbuildmappen &
- Open Virus & threat protection onder de app Windows 10-instellingen
- Selecteer Instellingen beheren onder Instellingen voor virusbeveiliging &
- Selecteer Uitsluitingen toevoegen of verwijderen in 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 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:
- Ga naar de paginaProjectinstellingen>bewerken>Player
- 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 Welkomstscherm van Unity weergeven inschakelt of uitschakelt, wordt het welkomstscherm van het merk Unity in- of uitgeschakeld. Als u geen Unity Pro-licentie hebt, wordt altijd het welkomstscherm van unity weergegeven.
- Als een holografische welkomstafbeelding is 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 voor 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 zich niet in de wereld kan vinden, wordt gezegd dat de headset de tracering is kwijtgeraakt. In deze gevallen werkt functionaliteit die afhankelijk is van coördinatensystemen met wereldvergrendeling, zoals ruimtelijke fasen, ruimtelijke ankers en ruimtelijke toewijzing, niet.
Als er geen tracering meer optreedt, 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 verstrekt 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 de tracering 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 afbeelding aan te passen:
- Ga naar de paginaProjectinstellingen>bewerken>Player
- 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 onderbreking
Sommige apps vereisen mogelijk geen tracering (bijvoorbeeld alleen afdrukstandsapps zoals 360-graden videoviewers) of moeten mogelijk 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, wat niet correct zou 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 de body, gecentreerd rond de hoofdcamera.
Als u zich wilt afmelden voor automatisch onderbreken, gaat u als volgende te werk:
- Ga naar de paginaProjectinstellingen>bewerken>Player
- Selecteer het tabblad Windows Store en open de sectie Splash Image
- Wijzig het selectievakje Windows Holographic > On Tracking Loss Pause and Show Image .
Verlies gebeurtenissen bijhouden
Als u aangepast gedrag wilt definiëren wanneer het bijhouden verloren gaat, verwerkt u de algemene traceringsverliesgebeurtenissen.
Functies
Een app kan alleen van bepaalde functionaliteit profiteren 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:
- Ga naar de paginaProjectinstellingen>bewerken>Player
- 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 |
Foto'sBibliotheek / Video'sBibliotheek | 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) |