Collegium XR

Ośrodek badawczy nad VR, AR i XR Uniwersytetu Komisji Edukacji Narodowej w Krakowie

Dziennik prac do projektu Xrometr

Dziennik prac do projektu Xrometr

czyli uniwersalnego zestawu do korzystania z mieszanej rzeczywistości
Dziennik prac pokazuje proces tworzenia Xrometru, ale i wartości dodane projektu takie jak nabycie wiedzy o technologii skanu 3D oraz innych działań digitalizujących kulturę.

7.07.2022 - 10.05.2023

Finalizacja projektu!

Mamy to! Miniaturowy, wielofunkcyjny czujnik do sterowania wyświetlaczami, prowadzenia haptycznych
telekonferencji i jednoczesnej obsługi interfejsów VR i AR. Urządzenie będzie posiadać moduł łączności bezprzewodowej oraz oprogramowanie pozwalające na sterowanie smartfonem, goglami VR lub ekranem telewizora dzięki ruchom dłoni oraz lokalizacji w danej przestrzeni.
Wykonanie projektu zakłada symultaniczną pracę zarówno nad urządzeniem jak i nad z tzw. helpdeskiem i społecznością deweloperską. Dzięki takiemu kompleksowemu rozwiązaniu, wykorzystaniu wieloletniego know-how w tworzeniu narzędzi/urządzeń multimedialnych z użyciem technik proceduralnych animacji 3d i 2d oraz databendingu powstanie pierwsze wielofunkcyjne, wielosystemowe urządzenie do sterowania zarówno wyświetlanymi treściami na każdym rodzaju wyświetlacza, ale i pozwalającym na zastąpienie pilotów sterujących w goglach VR

           

6.05.2022

W wyniku badań czujników stereoskopowych po testach dokonanych na czujniku Oak-D potrzebna jest zmiana optyki urządzenia. W celu zwiększenia uniwersalności urządzenia pod kątem pracy z laserowymi skanami 3D niezbędna jest zmiana obiektywu z obiektywy 40 stopni na szerokokątny (typ W). Owy obiektyw będzie dostępny dopiero od końca kwietnia 2022 – https://shop.luxonis.com/collections/beta-store/products/oak-d-w

26.04.2022

Panda3d-Artoolkit-test

Prosty przykład jak użyć Panda 3D module w kontekście bibliotek open CV.
Link do repozytorium GitHub Instytutu –  — > https://github.com/InstytutXR/Panda3d-Artoolkit-sample

09.02.2022

Oprócz badań nad chmurami punktów 3D, próbujemy nowych technologii składania meshy tj. – fotogrametria.

Poniżej pokazujemy przykład skanowania pluszowej zabawki za pomocą 3D Live Scanner
(aplikację można pobrać na Google Play Store)

07.02.2022

Skan 3D Galerii Podbrzezie zoptymalizowany do potrzeb używania w przeglądarce www na smartfonie oraz oczywiście na laptopie / komputerze. (waży 18 MB)
Model bazuje na 3 osiowym pomiarze laserowym, więc wszelkie proporcje i wymiary są zgodne z rzeczywistością.
Model ulegnie jeszcze niewielkim plastycznym modyfikacjom (niebieskie prześwity warstwy alfa), jednak niektóre elementy cyfrowego błędu  powstałe podczas transponowania chmury punktów na płaszczyzny modelu 3D pozostawiłbym jako rzeźbiarskie artefakty:)
Używając powyższego linka można prowadzić wernisaże do 50 aktywnych zwiedzających i 200 słuchaczy. Oczywiście Model można będzie modyfikować, dokładać obiekty będące na fizycznej wystawie lub inne materiały dotyczące ekspozycji. Można także tworzyć zapisy wystaw w formie kolejnych wersji ekspozycji. Idea metaverse jest teraz w rozkwicie, więc odbiorców nie zabraknie. Opcji jest wiele 🙂

01.02.2022

31.01.2022

Zmiana strategii promocyjnej oraz produkcyjnej urządzenia XRometr.

Podczas  prototypowania urządzenia nastąpiły wielkie rynkowe zmiany.
Jedna to pandemia – która podwyższyła ceny surowców oraz długość produkcji podzespołów elektronicznych
Powyższy fakt nakłada się z popularyzacją pojęcia metaverse za pośrednictwem zmiany koncernu Facebook na Meta. Pojęcie to zakłada wykorzystania urządzeń skanujących, rejestrujących i przekazujących sygnał wirtualnego świata pozwalającego na bardziej zaawansowane formy kontaktu niż telefon czy wideokonferencja.
Zespół projektowy XRometr w celu zwiększenia zasięgu projektu o rynek architektoniczny oraz gospodarnego prowadzenia projektu postanowił przystosować nasze urządzenie do pracy z plikami chmury punktów pochodzącymi z branży architektonicznej / geodezyjnej i tak zoptymalizować owe chmury punktów, aby stały się dodatkowym źródłem informacji dla XRometru. Wpłynie to na automatyzację użycia (urządzenie samo będzie rozpoznawało gdzie wyświetlać dane treści metaverse) oraz na możliwość pokazywania treści z branży na urządzeniach mobilnych (smartfony i tablety za pomocą przeglądarki web będą mogły pokazywać wizualizacje 3D w formie interaktywnych gier z swobodą poruszania).
Aby tego dokonać należy:
  • wykonać testowe stanowisko do skanów i prezentacji studium przypadku na targach dostosowane do skany 3D i technologi LiDAR (tutaj zwiększenie wydatku stoisko)
  • Testy terenowe na zaawansowanych znacznikach AR i QR pokrywających przedmioty i przestrzenie w celu nauki naszego urządzenia dostosowywana zapisu chmur punktów do realnej przestrzeni oraz ułatwianie skanu (zwiększenie wydatku drukarka specjalistyczna)
  • Wytworzenie systemu optymalizacji rozbudowanych i ciężkich skanów 3D na potrzeby sztucznej inteligencji w naszym urządzeniu (usługa programistyczna nr 1) oraz możliwość wyświetlania efektów w standardzie XR czyli na goglach VR lub na smartfonie.
Finalnie, pozwoli to na wytworzenie UNIWERSALNEGO skanera przestrzeni dostosowanego do standardu metaverse.

25.01.2022

Kolejny etap prac nad renderowaniem obrazu oraz drugi prototyp obudowy XRometr!
Testowanie glsl 120 Shader oraz rozwiązań wykorzystujących język phyton do niwelowania dystorsji beczkowatej.

19.01.2022

Zapraszamy od odwiedzenia wirtualnie postępów naszej pracy:

https://hubs.mozilla.com/dpNQMhi/whirlwind-notable-congregation

18.01.2022

1. Plik nieskompresowany pozwala się otworzyć w cloudcompare, ale niestety jakakolwiek opcja nie wchodzi w grę – jest to tylko plik do podglądu (komputer obliczeniowo nie wydala)

2. Plik skompresowany 10 mm – wychodzi dużo lepiej pod kątem tekstury, ale model nadal wydaje się być mocno bułowaty

3. Plik skompresowany 20 mm – wychodzi kanciato i w teksturze i w modelu

Obrazki z modelu 10mm i 20 mm, bez redukcji punktów.

10 mm

10 mm

20 mm

20 mm

14.01.2022

Dzisiaj zaczynamy fazę testów laboratoryjnych stereoskopowego czujnika z koprocesorem o nazwie roboczej XRometr. Pozwoli on na w pełni edytowalną funkcję „pass-thru” na różnego typu urządzeniach takich jak gogle VR czy tablety. Zaczynamy!

12.01.2022

Na spotkaniu ze specjalistą z firmy Capnor Polska dyskutowaliśmy o sposobach wizualizacji chmur punktów.
Branża projektowa, architektoniczna jak i podwykonawcy końcowych prac bardzo poszukują narzędzi interaktywnych,
Pozwalających na wyświetlanie w czasie rzeczywistym obrazów cyfrowych nakładających (augmented reality),
Ale posiadających takie parametry jak osadzenie w stosunku do innych fizycznych przedmiotów w otoczeniu czy okluzja.

31.12.2021

e57

Próby uzyskania modelu z trzech skanów wykonanych na wysokości podłogi:

29.12.2021

Używając biblioteki pythonowej opencv oraz depthai udało się stworzyć skrypt który generuje stereoskopowy obraz z dwóch kamer czarnobiałych z sensora oakd. Do wytworzenia została wykorzystana metoda hstack układająca automatycznie oba obrazy obok siebie tak aby łatwiej je było oglądać za pośrednictwem gogli VR. Dodatkowo używając metody addWeighted i streamu z kolorowej kamery znajdującej się idealnie po środku sensora okazało się że można koloryzować obraz stereoskopowy i uzyskać bardziej żywy passthrough niż ten z gogli oculus Quest. Następny etap przewiduje testy na urządzeniu Raspberry pi4 oraz podłączonym do niego małym ekranie 4:3 aby zdeterminować możliwość używania małych ekraników bezpośrednio w goglach typu smartphone VR.

27-29.12.2021

Prace nad chmurami punktów – pliki e57 oraz panoramami

Ostatnie dni pracy poświęcamy pracy nad uzyskaniem jak najlepszej tekstury, aby model jakim będziemy operować był odzwierciedleniem świata realnego.

Okazuje się, że już bardzo dobre efekty możemy uzyskać dzięki zapisowi punktów kolorystycznych z samej chmury:

 

 

 

 

 

 

 

 

 

 

 

 

Próby uzyskania tekstury przez „projekcję sferyczną” – niestety na razie nie dają rezultatów (układ map UV nie jest na tyle zgodny, by móc dopasować panoramę do modelu):

15-16.12.2021

Prace nad chmurami punktów – pliki e57

14.12.2021

Prace nad opracowaniem jak najlepszej tekstury z chmury punktów bez panoram

Logo – Skakun

Design by Maciej Gniady

13.12.2021

W trakcie testów nad bibliotekami OpenCV i depthai w środowisku pythona zostały przetestowane funkcje wykrywania punktów kluczowych (feature detection) w urządzeniu OAK-d. Zostały wygenerowane dwa źródła wideo pochodzące z monochromatycznych kamer stereo. Lewe i prawe źródło zostało przeanalizowane algorytmami Shi-Tomasi i Harris feature tracker w celu znalezienia odpowiednich punktów do śledzenia. W dalszych próbach zdobyte doświadczenie zostanie wykorzystane do śledzenia przemieszczenia pomiędzy kolejno zarejestrowanymi klatkami obrazu wideo.

10.12.2021

Zapraszamy do wirtualnego zwiedzenia naszego modelu:

https://hubs.mozilla.com/P5ohYWo/tasty-likable-gathering

lub też do obejrzenia nagrania z przechadzki:

09.12.2021

Przeprowadzone testy na chmurach punktów oddalonych od siebie o 20mm, 50 mm oraz 100mm pokazały, iż performance obliczeniowy sprzętów lepiej sprawuje się przy paradoksalnie większej liczbie punktów.

Model oddalonych od siebie punktów o 20 mm, przez wzgląd na wagę samego pliku obliczał się chwilkę dłużej, ale pokazał dość dokładny model oraz dało się nałożyć na niego teksturę w rozmiarze 4096×4096, która powstała z kolorystycznej chmury punktów.

Model 20 mm

Model 20 mm

 

Model oddalonych od siebie punktów o 50 mm, obliczał się dość szybko i tak jak we wcześniejszej próbie dał troszkę mniej dokładny model, acz po nałożeniu na niego tekstury obliczonej z punktów kolorystycznych pokazuje dokładnie miejsce.

 Model 50 mm

 Model 50 mm

Natomiast model oddalonych od siebie punktów o 100 mm, nie nadaje się do obróbki meshowej tak, aby uzyskać teksturę z chmury punktów.

 Model 100 mm

 Model 100 mm

Nasze badania przeprowadzane są dzięki  oprogramowaniom OpenSourcowym – dzięki temu, że twórcy programu Blender.org cały czas pracują nad rozwojem oprogramowania daje nam to większe możliwości obliczeniowe – w wersji 3.0 została usprawniona prędkość ładowania oraz paradoksalnie im więcej elementów na scenie tym lepszy efekt uzyskamy zachęcamy do obejrzenia, krótkiego filmiku opisującego nowe funkcje programu – Cycles X

08.12.2021

Rozmieszczone skanery podczas dokładnego pomiaru laserowego pomieszczenia

Rozmieszczone skanery podczas dokładnego pomiaru laserowego pomieszczenia

 

Chmura punktów 100 mm

Chmura punktów 100 mm

Chmura punktów 100 mm

Model z chmury punktów 100 mm

Model z chmury punktów 100 mm

Model z chmury punktów 100 mm

 

Chmura punktów 20 mm

Chmura punktów 20 mm

Chmura punktów 20 mm

Model z chmury punktów 20 mm

Model z chmury punktów 20 mm

Model z chmury punktów 20 mm

07.12.2021

06.12.2021

Testy w przestrzeni wirtualnej:

https://hubs.mozilla.com/ho5eidU/granular-adept-outing/

UP – Galeria

UP – Galeria

UP – Galeria

 

03.12.2021

Dzień okazał się owocny, ponieważ udało nam się spisać Workflow do przetworzenia chmury punktów ze skanu 3D za pomocą OpenSourcow’ych rozwiązań!

Potrzebne programy:

  1. CloudCompare → https://www.danielgm.net/cc/
  2. Meshlab → https://www.meshlab.net/#download
  3. Blender → https://www.blender.org/download/
  4. + wtyczka do Blendera → https://www.uv-packer.com/blender/?fbclid=IwAR0XiIeVQbmEQa0R8f0GhgYrybCa8LvVWjHhA3okpw80L78vvHieZ8-afBQ
Krok 1 – Cloudcompare – Point Cloud to a Mesh
  1. Zaimportowanie pliku .pts do programu Cloudcompare
  2. Kliknij Edit → Normals → Compute
  3. Kliknij Plugins → PoissonRecon
  4. Ustaw opcje Octree depth → 10 oraz zaznacz opcję output density as SF
  5. W Properties→ Color Scale ustaw Current → Blue>Green>Yellow>Red
  6. W SF display params za pomocą wykresu usuń punkty, które są zbędne
  7. Kliknij  Edit → Scalar fields → Filter by value → Export
  8. Wyeksportuj powstały plik jako .ply (Stanford) BINARY
  9. Wyeksportuj chmurę punktów z Normals jako .ply (Stanford) BINARY
Krok 2 

Blender – UV Packer – intalacja

  1. Edit → Preferences → Add-ons
  2. Wybierz przycisk instaluj i dodaj plik .zip
  3. Zaznacz kwadracik przy paginie, aby go aktywować
  4. Znajdź folder Blendera na komputerze
  5. Scripts → Addons → UV-Packer
  6. Wypakuj pliki z .zip i skopiuj je do folderu UV-Packer


Blender – Automatic UV Mapping

  1. Zaimportuj plik .ply 
  2. Podziel ekran na dwa
  3. W lewym oknie pozostań w Object Mode w prawym oknie wybierz opcję UV Edytor
  4. Wybierz swój model i zmień na Edit Mode
  5. Naciśnij klawisz F3 → smart UV → Smart UV Project
  6. Island Margin musi być na 0.03, zaznacz Correct Aspect oraz Scale to Bounds
  7. (opcjonalnie) W prawym oknie kliknij UV → Export UV Layout i zapisz jako .png


Blender – UV Packer

  1. Wejdź w zakładkę UV Editing
  2. Po prawej stronie wybierz zakładkę UV-Packer i naciśnij Pack
  3. W prawym oknie kliknij UV → Export UV Layout i zapisz jako .png


Blender – Bake Vertex Color Map

  1. Przejdź na zakładkę Shading
  2. Dodaj nowy materiał
  3. Dodaj → Vertex Color i wybierz vertex color z dostępnych
  4. Połącz Vertex Color → Base Color
  5. Przejdź do zakładki Render
  6. Zmień render na Cycles
  7. Zamień Device → GPU Device
  8. Przejdź do opcji Bake
  9. Bake Type → Diffuse
  10. W zakładce Influence zaznacz tylko Color
  11. W zakładce Output → Image Texture, Margin 0
  12. W nodach dodaj Image Texture
  13. Wybierz nową (nazwa dowolna)
  14. Wybierz rozdzielczość na jakiej Ci zależy (4k = 4096×4096)
  15. Kliknij Bake
  16. Przejdź do zakładki Texture Paint, wyłącz Wireframe
  17. Kliknij Image → Save As
  18. Wyeksportuj plik .ply (Stanford)
Krok 2 – Meshlab
  1. Zaimportuj chmurę punktów z Normals jako .ply (Stanford) BINARY (zapisany z cloudcompare)
  2. Zaimportuj plik .ply (Stanford) (zapisany plik z blendera)
  3. Zaznacz zaimportowany plik z blendera
  4. Kliknij Filters → Texture → Convert PerVertex UV into PerWedge UV
  5. Kliknij Filters → Texture → Transfer: Vertex Attribute to Texture
  6. Jako źródło (source) wybierz zaimportowany plik z cloudcompare, a jako Target Mesh plik z blendera
  7. Wyeksportuj plik .ply (Stanford)

 

02.12.2021

Dzisiaj powstało logo do projektu XRometr:

Xrometr #1

XRometr #2

15.10.2021

Stworzyłem spersonalizowany shader który interpretuje dane z sensora głębi intel realsense w formie palety czystych odcieni (ang Hue). Algorytm traktuje paletę odcieni w taki sposób jakby była skodyfikowana miarką od 0 do 1529. Do każdego koloru, czyli trójwymiarowego wektora którego wartości przyjmują od 0 do 255, jest przypisana inna wartość odległości od kamery. Wartości nasycenia kolorów sumowane są w ten sposób dając sześciokrotnie większą rozdzielczość głębi niż czarno biały gradient .

5-6.10.2021

W ramach pracy nad dodaniem możliwości percepcji głębi i poszerzenie aplikacji wirtualnej rzeczywistości o algorytmy opencv rozpocząłem testy urządzeń Intel Realsense które ze względu na markę producenta oraz powszechne użycie w robotyce stanowiły swego rodzaju standard urządzeń rejestrujących głębię w czasie rzeczywistym. Dodatkowo Intel obiecywał pełne wsparcie bibliotek librealsense dla urządzeń mobilnych w tym na platformie Android, co pokrywało się z moimi potrzebami . Oculus Quest w praktyce jest urządzeniem, które bardzo wiele cech ma wspólnych z telefonami z systemem android włącznie. Udało mi się skompilować bibliotekę realsense (librealsense) na platformę android według wytycznych na nieoficjalnym Githubie który zawierał niezbędne informacje w jaki sposób uniknąć błędów które mogłyby uniemożliwić uruchomienie aplikacji na goglach Quest. W wersji podstawowej użyłem gotowego prefabrykatu zawierającego algorytm rekonstrukcji chmury punków który posłużył jako sposób sprawdzania czy sensor działa i komunikuje się z urządzeniem. Pierwsze testy przebiegły pomyślnie