Body přílohy
Nástroje World Lock Tools především poskytují stabilní souřadnicový systém uzamčený světem: svět uzamčený prostor. Tento prostor zůstává co nejtěsnější vzhledem k fyzickému světu. A objekty ve světě uzamčeného prostoru mohou využívat funkce vyžadující takový stabilní rámec odkazu, jako je udržování relativního umístění k jiným virtuálním objektům, simulace přírodních fyzikálních zákonů, kinematic a dalších animačních technik.
Ve skutečnosti může v závislosti na potřebách aplikace stačit svět uzamčené místo pro určitý nebo veškerý obsah scény.
Zatímco uzamčené místo na světě zůstane optimálně v souladu s fyzickým prostorem, existují situace, které je třeba popsat později, kdy není možné, aby více bodů ve světě uzamčených prostorů zůstalo pevně ve společném souřadnicovém prostoru a pevné vzhledem k referenčním bodům ve fyzickém světě.
U triviálního, ale osvětleného příkladu předpokládejme, že senzor mapuje jednu kotvu na pozici (3,0,0) a druhou na pozici (-3,0,0). Později při zpracování upřesnění snímačů je zjištěno, že dvě souřadnice by měly být (3,0,0) a (-2,0,0). Na kameru, která transformuje šestimetrovou vzdálenost mezi těmito dvěma kotvami na pětimetrový posun, jasně neexistuje žádná rotace a posun.
Pomocí systému prostorových ukotvení Unity by se tyto dvě kotvy jednoduše tiše přesunuly do nově naskenovaných pozic.
World Lock Tools ale zaručuje, že ve světě uzamčené místo, nesouvací objekty se "většinou" nikdy nepřesouvají. A ve skutečnosti je jakýkoli pohyb až do vlastnící aplikace.
Dalším běžným "neobvyklým" stavem je ztráta sledování. Když se sledování ztratí v jednom prostředí (například v místnosti) a znovu se vrátí do jiného prostředí, pak v první řadě nejsou žádné informace, které by propojily obě mezery. Souřadnice v jednom prostoru jsou bezvýznamné vzhledem ke souřadnicům v druhém prostoru. Paradigma bodu přílohy umožňuje aplikaci elegantně zpracovat počáteční fázi, když prostorové informace o starém prostoru jsou neznámé (například skrytím objektů v tomto starém prostoru) a obnovením, když se prostorový vztah mezi těmito dvěma mezerami stane známým.
Další diskuzi najdete o těchto zvláštních podmínkách a operacích přizpůsobení, které WLT provádí za účelem jejich zpracování. Tato diskuze se zaměřuje na kontrakt mezi WLT a aplikací na hladké řešení takových podmínek.
Body přílohy jsou kodifikací této smlouvy mezi nástroji World Locking Tools a aplikací. Aplikace vytváří a umístí body příloh pomocí rozhraní API nástroje World Locking Tools. Pokud je oprava v pozici bodu přílohy určena operací přizpůsobení, aplikace je upozorněna prostřednictvím zpětného volání nové pozice ve světě uzamčeného prostoru, který zachová bod přílohy na své staré pozici ve fyzickém prostoru.
Některé scénáře, ve kterých můžou být body příloh nástroje World Locking Tools:
- Je důležitější zůstat pevně relativní vzhledem k funkcím ve fyzickém světě než vzhledem k jiným virtuálním objektům.
- Objekty jsou umístěny ve světě za běhu, nikoli v Unity v době návrhu, a může být důležité odsouhlasit relativní pozice oddělené přerušením sledování (viz diskuze o fragmentech).
- Je důležité spravovat viditelnost objektu na základě platnosti umístění fyzického prostoru.
Použití bodů přílohy
Použití bodů přílohy je poměrně jednoduché.
Odpovědnosti klienta
Pro každý požadovaný bod přílohy musí klient:
- Požádejte o body přílohy ze systému. Viz CreateAttachmentPoint
- Odstraňte body přílohy, které už nepotřebujete. Viz ReleaseAttachmentPoint
- Zřetězení systému počáteční pozice a pohybu bodu přílohy. Viz CreateAttachmentPoint, MoveAttachmentPoint a TeleportAttachmentPoint
- Zpracování událostí operace opětovného přizpůsobení Viz níže.
Odpovědnosti nástroje world locking tools
Nástroje world locking tools upozorní aplikaci, pro každý ovlivněný bod přílohy, pokud dojde k některé z následujících akcí:
- Platnost fyzického světa bodu přílohy sleduje změny.
- Jeho souřadnice ve světě uzamčeného prostoru se mění kvůli operaci přizpůsobení, což může být buď fragment sloučení , nebo uvolnění.
Tato oznámení jsou vysílány prostřednictvím delegátů, které aplikace předává worldlockingmanager při vytváření bodu přílohy.
Jak tato oznámení nejlépe zpracovat, zůstane v aplikaci, protože každá z nich bude mít své vlastní aspekty. K dispozici jsou ukázkové obslužné rutiny, které se používají interně a mohou se použít jako výchozí bod pro vlastní implementace.
Ukázkové implementace
Pro bod přílohy, který má zůstat pevně v fyzickém světě a který by měl skrýt jeho obsah, pokud jeho sledování není platné, AdjusterFixed implementuje AdjustStateDelegate s jeho HandleAdjustState člen a AdjustLocationDelegate s jeho HandleAdjustLocation člen. Podobná komponenta pro přesouvání objektů je v AdjusterMovingu.
Je třeba poznamenat, že poskytování obou těchto delegátů je volitelné a ve skutečnosti reakce na změny stavu a polohy mohou být implementovány na základě dotazování místo událostí. Pokud ale jejich použití není možné kvůli specifikám aplikace, vytvoří systém založený na událostech, který používá delegáty, mnohem efektivnější implementaci.
Doporučujeme začít s komponentou AdjusterFixed (nebo velmi podobným adjusterMoving) a upravit obslužné rutiny HandleAdjustLocation a HandleAdjustState tak, aby vyhovovaly potřebám vašich aplikací.