World Locked Physics Sample.

Het Physics Beam Sample biedt een aantal virtuele fysica-ervaringen die mogelijk worden gemaakt door het world locked coördinaatsysteem van World Locking Tools.

Achtergrondverhaal

Op HoloLens kan de relatie tussen een ruimtelijk anker en het hoofd of andere ruimtelijke ankers op elk moment veranderen, vanwege binnenkomende sensorgegevens of zelfs het opnieuw verwerken van bestaande gegevens.

De ruimtelijke ankers van Unity reageren op wijzigingen in de houding van het onderliggende ruimtelijke anker door het gekoppelde GameObject mee te slepen. Deze beweging veroorzaakt problemen voor natuurkundesimulatie:

  • Omdat de ruimtelijke verankerde GameObject-pose expliciet wordt ingesteld door het ruimtelijke anker elk frame, kan deze niet worden ingesteld door simulatie (bijvoorbeeld momentum).
  • Omdat het ruimtelijke anker regelmatig de houding van het GameObject bijwerkt, lijkt het niet in rust te zijn ten opzichte van andere nog rigidbodies.
  • Vanwege impliciete verschuivingen van het coördinatensysteem van Unity, omdat ruimtelijke ankers de coördinaten van statische Hologrammen aanpassen om ze vast te houden ten opzichte van de echte wereld, worden fysicaberekeningen zoals routes en trajecten uitgeschakeld. Een projectiel dat perfect op een Hologram is gericht, mist bijvoorbeeld nog steeds als het Hologram wordt verplaatst door het ruimtelijke anker tussen de berekening van het traject en het bereiken van het doel.

Wanneer de relaties tussen gemeten ruimtelijke ankers en de zichtbare virtuele objecten die eraan zijn vergrendeld inconsistent worden, past World Locking Tools de hoofdtransformatie aan om waargenomen artefacten van deze inconsistenties te minimaliseren in plaats van de virtuele objecten aan te passen zoals de ruimtelijke ankers van Unity doen. Hierdoor kunnen de virtuele objecten consistent lijken in een stabiele coördinaatruimte, waardoor de bovenstaande problemen worden geëlimineerd.

Het voorbeeld bouwen

Voor het voorbeeld is de mogelijkheid SpatialPerception vereist. De microfoonfunctie is ook vereist voor spraakopdrachten.

Voor dit voorbeeld moeten de volgende lagen worden toegevoegd aan tags & lagen van het project:

  • Zuilen
  • SpatialMapping

De demo uitvoeren

De HUD van besturingselementen

Deze eenvoudige HUD is niet specifiek voor dit Physics Beam Sample, maar biedt alleen runtime-controle over het gedrag van World Locking Tools om de mogelijkheden ervan te verkennen. Het is beschikbaar als een drop-in voor ontwikkeling op elke toepassing met behulp van World Locking Tools, zoals beschreven in De eerste installatie van World Locking Tools.

Schermopname van de HUD van de voorbeelden

Diagnostische statistieken worden standaard weergegeven, maar kunnen worden uitgeschakeld via de BESTURINGS-HUD.

De keuzerondjes voor modi

Het voorbeeld kan op elk gewenst moment een van de volgende modi hebben:

  • Niet-actief: het fysicavoorbeeld verwerkt momenteel geen invoer. De HUD en het keuzerondje menu natuurlijk doorgaan met het verwerken van invoer.

  • Throw Dart - Een traject wordt berekend, gebaseerd op elementaire natuurkundewetten en weergegeven. De weergegeven boog toont het pad dat een projectiel dat (via een select-beweging) wordt geactiveerd, volgt. De gegooide pijl volgt een ballistisch traject, stuiterend van eventuele botsingsoppervlakken, met inbegrip van spatial reconstruction (SR) meshes, die het raakt.

    Deze darts zijn "verwisselbaar", zoals hieronder beschreven.

  • Pillars toevoegen - Bij een selectiegebaar wordt een straal in de aangegeven richting in de wereld geworpen. Als er een botsbaar oppervlak wordt gevonden, wordt daar een verticale pilaar aan de scène toegevoegd.

    Elke toegevoegde pijler is botsbaar en kan dienen als een balkondersteuning, zoals hieronder wordt beschreven. Er zijn echter twee varianten van Pillars toegevoegd:

    • Als de pilaar op een 'verwijderbaar' oppervlak is ingesteld, wordt de pilaar fysiek gesimuleerd (kan bijvoorbeeld worden omgeslagen).
    • Anders kan de pilaar botsen, maar statisch.

    In feite betekent deze regel dat als er een pilaar wordt toegevoegd aan de SR-mesh, deze statisch is, maar anders dynamisch is.

    Zuilen zijn "uitneembaar".

  • Beam toevoegen: bij de eerste selectie wordt er een straal in de scène geworpen om het eerste eindpunt van de straal te vinden. Als de selectiestraal vervolgens door de scène wordt verplaatst, wordt er een lijn getrokken van het eerste eindpunt naar het huidige eindpunt. Met de tweede selectiebeweging wordt een balk gemaakt die zich uitstrekt tussen het eerste en huidige eindpunt.

    Voor het balanceren van de balk met eindpunten op pillars is duidelijk een ruimte vereist waarin de eindpuntpijlers ten opzichte van elkaar vast blijven staan.

    Balken zijn "verwijderbaar".

  • Objecten verwijderen: als het ray cast-object 'verwisselbaar' is bij selectie, wordt het uit de scène verwijderd. Alle objecten die worden ondersteund door het verwijderde object vallen dan.