
W GOGLACH NIE MA DOM-U
Zakładasz gogle, a przeglądarka przekazuje kontrolę nad ekranem do sesji immersyjnej. Strona wciąż działa – utrzymuje swój stan, zdarzenia i arkusze stylów – jednak jej elementy przestają być renderowane w klasyczny sposób. Każde menu i etykieta muszą od tej pory istnieć jako geometria przestrzenna: generowana niezależnie dla każdego oka, od 72 do 120 razy na sekundę. Dema na tej stronie powstały właśnie w odpowiedzi na ten problem.

KTO ODPOWIADA ZA UKŁAD STRONY?
Można zbudować całą warstwę interfejsu od nowa wewnątrz sceny 3D: stworzyć własny box model, mechanizm łamania wierszy i renderowania tekstu. Oznaczałoby to jednak lata pracy tylko po to, by ostatecznie i tak pozostać w tyle za standardowymi przeglądarkami. Alternatywne podejście zostawia to zadanie tam, gdzie jego miejsce: interfejs trafia do ukrytego kontenera, przeglądarka renderuje go jak każdą inną stronę, a scena trójwymiarowa po prostu odzwierciedla jej wynik. Jeden obiekt 3D na węzeł DOM, glify generowane na podstawie rzeczywistych wymiarów tekstu, a promień kontrolera mapowany na DOM jako standardowe zdarzenie myszy – dzięki temu o wygląd podświetlonego przycisku wciąż może dbać CSS.

TRZY MAŁE BIBLIOTEKI
Podejście z „lustrzanym odbiciem” ma sens tylko wtedy, gdy zmiana wymaga dokładnie tylu operacji (mutacji), ile faktycznie z niej wynika – bez konieczności kosztownego porównywania całych drzew DOM (tzw. Virtual DOM) po drodze. Dlatego zamiast rozbudowanego frameworka stworzyłem trzy małe biblioteki. „signal” opiera się na reaktywności z RxJS, dzięki czemu dane pobrane z sieci i wartości z pól formularza są traktowane w ten sam sposób. „justdom” wiąże je bezpośrednio z DOM, a „freedom” ze sceną w three.js. Wszystkie przykłady w zakładce Demo opierają się na tym rozwiązaniu.
Biblioteki te są sukcesywnie publikowane na GitHubie, gdy tylko osiągną poziom pozwalający na udostępnienie ich szerszemu gronu: github.com/apendua

W sieci posługuję się nickiem @apendua
Piętnaście lat doświadczenia w tworzeniu aplikacji webowych i systemów rozproszonych, doktorat z geometrii algebraicznej oraz dema technologiczne realizowane po godzinach. Bądźmy w kontakcie.