Tworzenie modeli 3D przez zrobienie wielu zdjęć rzeczywistemu obiektowi? Tak! Fotogrametria wraca i jest łatwiejsza, daje lepsze rezultaty i nadal jest całkowicie darmowa!

Znany Ci jest nasz pierwszy artykuł o fotogrametrii, prawda? Szybkie przypomnienie – możesz sfotografować obiekt dookoła, wrzucić go do specjalnego oprogramowania, które postara się ustalić pozycję aparatu na każdym ujęciu i utworzy chmurę punktów – zbiór trójwymiarowych punktów układających się w obiekt. Aby dostać model gotowy do wydruku, punkty zostaną przekształcone metodą triangulacji. Na końcu czyścimy model, wypełniamy dziury, tniemy i jesteśmy gotowi do jego wydrukowania!

Cóż, brzmi to fajnie i bardzo prosto, ale w rzeczywistości nasz pierwszy tutorial był dość skomplikowany. Na szczęście dla nas trochę się pozmieniało, a do gry wszedł nowy gracz: poznaj Meshroom!

Meshroom/AliceVision

Meshroom jest darmowym, otwartym programem do fotogrametrii ze świetnym interfejsem. Jest oparty na AliceVision, oprogramowaniu stworzonym w wyniku kooperacji wielu uniwersytetów i laboratoriów (Politechniki Czeskiej w Pradze, IMAGINE, INPT, Simula Research Laboratory oraz Quine) we współpracy z Mikros Image – francuską firmą zajmującą się post-produkcją

Interfejs Meshroom

Podstawy pracy z Meshroom są tak proste, jak to tylko możliwe – przeciągnij i upuść zdjęcia, naciśnij START i czekaj na skończony model. Meshroom ma również funkcję zwaną Augmented Reconstruction (tłum. „rekonstrukcja wspomagana”), dzięki której możesz dodać więcej zdjęć do częściowo przetworzonego modelu, jeśli na podglądzie zauważysz, że któryś z obszarów wymaga większej szczegółowości.

A co jeszcze lepsze, Meshroom ma również funkcję Live Reconstruction (tłum. „rekonstrukcja na żywo”). W tym trybie dodajesz do folderu powtarzające się ujęcia, następnie są one automatycznie przetwarzane, a Ty na podstawie podglądu możesz zdecydować, który obszar potrzebuje większej ilości detali. Następnie robisz kolejne zdjęcia obiektu, a cały proces jest powtarzany do czasu, aż sfotografujesz go dookoła.

Możesz pobrać najnowszą wersję Meshroom stąd. Jest dostępny dla Windows, OSX oraz Linux (jednak dla OSX i Linux musisz go skompilować). Zapoznaj się z wiki lub dokumentacją w Google Docs, gdzie znajdziesz instrukcje instalacji. Będziesz potrzebować karty graficznej z rdzeniami CUDA, więc w grę wchodzi tylko NVIDIA.

Zanim jednak zaczniemy zabawę z Meshroom, przejdźmy krótkie szkolenie z fotografowania na potrzeby fotogrametrii.

Jak wykonać zdjęcia pod fotogrametrię

Aparat i ustawienia

Twój aparat w smartfonie powinien wystarczyć, jeśli jednak masz lustrzankę, to nawet lepiej. Jeśli zamierzasz jej użyć, to ustaw przysłonę na wartość co najmniej f/5-6 tak, aby cały model znalazł się w obszarze głębi ostrości.

Warto zapisywać zdjęcia w formacie RAW, jeśli Twój aparat go obsługuje. JPEGi zazwyczaj wystarczą, ale RAW zapewnia zdecydowanie więcej opcji retuszu zdjęć, np. jasności. Jeśli wywołujesz RAWy lub edytujesz JPEGi, upewnij się, że wyłączona jest korekcja optyczna obiektywu i podobne filtry.

Fotografowanie

Potrzebujemy co najmniej 30 zdjęć. Podczas naszych testów wykonywaliśmy po 50, 100, a nawet więcej zdjęć, aby uchwycić każdy szczegół. Nie zajmuje to tak wiele czasu, jak mogłoby się wydawać. Pamiętaj, że niektóre zdjęcia zostaną odrzucone, jeśli program oceni, że nie może ich przypisać na podstawie podobieństwa, lub też będą rozmyte.

  1. Najlepszą metodą jest poruszanie się wokół obiektu. Szczególnie ważne jest, aby nie przemieszczać obiektu pomiędzy ujęciami.
  2. Nakładaj ujęcia na siebie! Każdy element obiektu powinien być uchwycony na co najmniej 2 zdjęciach. Idealnie jest uchwycić 60-80% obszaru poprzedniego zdjęcia na obecnym.
  3. Unikaj ostrych cieni, użyj światła rozproszonego lub fotografuj na zewnątrz przy pochmurnej pogodzie.
  4. Obiekt powinien zajmować znaczną część każdego zdjęcia.
  5. Unikaj błyszczących lub przezroczystych powierzchni.

Pomnik Antonina Dvoraka – link do STL

Możesz używać funkcji zbliżania w aparacie lub nawet mieszać zdjęcia z różnych aparatów – Meshroom radzi sobie z tym na prawdę świetnie. Nie zmieniaj jednak zoomu z ujęcia na ujęcie bez potrzeby. Dobrze jednak jest mieć dużo zdjęć z tego samego aparatu, z tą samą długością ogniskowej, ponieważ zapewnia to stałe warunki techniczne wykonywanych fotografii.

A czy można zamiast tego nakręcić wideo? Tak… ale nie rób tego. Technicznie jest możliwe wyciągnięcie pojedynczych klatek z gotowego filmu, jednak jakość będzie dużo niższa w porównaniu do zdjęć. Oprócz tego brakować będzie metadanych z aparatu (rozmiar matrycy, obiektyw) i wrzucisz do programu setki obrazów, co strasznie wydłuży czas przetwarzania.

A jeśli wykonasz fotografie na jednolitym białym tle obracając model pomiędzy ujęciami? To działa… tak jakby. Efekty są po prostu dużo gorsze od obchodzenia modelu dookoła. Takie ujęcia będą zawierały bardzo mało punktów odniesienia, więc otrzymamy mniej dokładne rezultaty.

Idealne obiekty do fotogrametrii to te, które mają teksturowaną lub porowatą powierzchnię. Uchwycenie błyszczących powierzchni jest trudne i jeśli jest taka opcja, to możesz pokryć je proszkiem takim jak mąka lub taśmą malarską, aby uniknąć odbić światła.

Standardowa rekonstrukcja

Najprawdopodobniej będziesz używać standardowej rekonstrukcji podczas skanowania obiektów na zewnątrz, bez możliwości wykonania dodatkowych ujęć podczas obróbki. Załóżmy, że masz już wszystkie zdjęcia i teraz chcesz przeprowadzić cyfrową rekonstrukcję modelu 3D. Ten proces jest na prawdę prosty:

  1. Skopiuj wszystkie zdjęcia do folderu na dysku komputera
  2. Przeciągnij i upuść folder lub wybrane zdjęcia do okna Meshroom
  3. Zapisz projekt z menu File – Save w wybranej lokalizacji (inaczej rekonstrukcja zostanie zapisana w folderze tymczasowym)
  4. Naciśnij Start lub kliknij prawym przyciskiem na węzeł Structure from motion (SFM), następnie kliknij Compute
    • Użycie węzła SFM do przeliczania jest wygodniejsze, ponieważ szybciej otrzymasz podgląd
  5. Zrób sobie kawę – zajmie to trochę czasu 🙂
    • Węzły na spodzie okna zostaną oznaczone na zielono po ich przetworzeniu
    • W każdym momencie możesz wcisnąć „Stop” i wznowić rekonstrukcję później

Po zakończeniu przetwarzania węzła Structure from motion pojawi się podgląd (jeśli nie stanie się to automatycznie, to kliknij 2 razy na węzeł). Wszystkie zdjęcia, które zostały z powodzeniem ułożone będą oznaczone zieloną ikonką z „ptaszkiem”.

Odrzucone zdjęcia są zaznaczone czerwoną ikonką z minusem

Jeśli zauważysz, że spora część zdjęć została odrzucona, w podglądzie jest tylko kilka ikon z kamerami, to nie ma sensu kontynuować rekonstrukcji. Musisz zrobić lepsze zdjęcia, użyć rekonstrukcji wspomaganej z dodatkowymi ujęciami (omawiamy ją w kolejnej części) lub pobawić się ustawieniami.

Po ukończeniu rekonstrukcji możesz dwukrotnie kliknąć na węzeł Texturing, aby podejrzeć gotowy model.

Możesz kliknąć prawym przyciskiem na którykolwiek z ukończonych węzłów i wybrać Open folder. Otwórz folder Texturing lub MeshFiltering, aby odnaleźć plik wynikowy w popularnym formacie Wavefront .obj.

Prawdziwy pomnik Sfinksa i ukończony wydruk – pobierz model stąd

Pomimo, że plik może być zaimportowany bezpośrednio do PrusaSlicer, to najprawdopodobniej będzie potrzebować chociaż podstawowego czyszczenia modelu przed jego wydrukiem.

Szukasz przykładowych zdjęć, aby móc spróbować fotogrametrii bez zbędnego wysiłku? Twórcy 3DF Zephyr, który jest innym świetnym oprogramowaniem do fotogrametrii mają próbne zdjęcia na swojej stronie.

Rekonstrukcja wspomagana (Augmented Reconstruction)

Teraz załóżmy, że skanujesz coś w domu – małego dinozaura ulepionego przez Twoje dziecko, ulubioną figurkę lub nawet gitarę. Masz ok 60 zdjęć i rekonstrukcja idzie dobrze. Poza tym jednym obszarem, który nie został uchwycony zbyt dokładnie, niektóre zdjęcia zostały odrzucone, a w tej części modelu brakuje teraz jakichś szczegółów.

Z Meshroom możesz po prostu zrobić dodatkowe zdjęcia i dodać je do istniejącej rekonstrukcji! Nie jesteśmy w stanie opisać, jak bardzo przydatna jest ta funkcja – podczas testów zaoszczędziła nam mnóstwa czasu.

Kluczowe jest, aby nie poruszać obiektu pomiędzy kolejnymi seriami zdjęć. Jeśli został poruszony, to niemożliwe będzie użycie rekonstrukcji wspomaganej.

Przy fotografowaniu obszarów, które potrzebują dodatkowego wypełnienia, zalecamy wykonanie 5-10 zdjęć. Możesz również wypełniać kilka obszarów na raz, a nowe zdjęcia zostaną dopasowane do istniejącego już zestawu. To oznacza, że dodanie nowych zdjęć może przyczynić się do zaakceptowania zdjęć, które w poprzedniej serii zostały odrzucone.

Za każdym razem, gdy dodasz nową serię zdjęć do istniejącej rekonstrukcji, w sekcji Graph Editor pojawi się nowa gałąź. Ponownego przetworzenia będzie wymagać jedynie węzeł StructureFromMotion (kliknij prawym przyciskiem na węzeł i wybierz Compute), co zazwyczaj przebiega dość szybko. Gdy węzeł zostanie oznaczony na zielono, kliknij na niego dwukrotnie, aby odświeżyć podgląd.

Jeśli uważasz, że masz już wystarczającą ilość zdjęć do pełnej rekonstrukcji, kliknij prawym przyciskiem na węzeł znajdujący się na dole po prawej (Texturing) i kliknij na Compute. Jest to bardzo czasochłonne, więc warto uruchomić je dopiero po dodaniu wszystkich zdjęć.

Figurka stworzona przy pomocy rekonstrukcji wspomaganej

 

Live Reconstruction

Opcja „Live Reconstruction” dostarcza najwięcej frajdy z pracy z fotogrametrią! Ustawiasz folder, który będzie monitorowany przez Meshroom, a wrzucone do niego zdjęcia zostaną automatycznie przetworzone i dodane do rekonstrukcji. Możesz dodawać nowe zdjęcia w trakcie i obserwować, jak poprawiany jest model. Na końcu możesz przetworzyć ostateczną siatkę modelu.

Pierwsza seria zdjęć powinna zawierać co najmniej 10-20 obrazów i powinna pokazywać ogólny kształt obiektu. Jeśli uchwycisz cały przód, następnie cały tył modelu, to najprawdopodobniej potrzebny będzie łącznik pomiędzy nimi. Możesz to zrobić przez dodanie serii fotografii stopniowo przechodzących z jednego obszaru do drugiego.

Konfiguracja

  1. Wybierz View – Live Reconstruction
  2. Ustaw folder ze zdjęciami i minimalną liczbę zdjęć, która będzie przetworzona przy każdym kroku (nie mniej niż 4)
  3. Naciśnij Start w panelu „Live Reconstruction”
  4. Rozpocznij kopiowanie zdjęć do wybranego folderu

Minimalna liczba zdjęć jest domyślnie ustawiona na 4, ale sugerujemy wykonanie większej ilości ujęć w każdej serii.

Na koniec mały haczyk: musisz stworzyć nowe łącze między
ostatnim węzłem
StructureFromMotion , a PrepareDenseScene .

  1. Kliknij prawym przyciskiem na łącze pomiędzy węzłami StructureFromMotion i PrepareDenseScene
  2. Wybierz Remove
  3. Przeciągnij nowe łącze z wyjścia z najniższego węzła StructureFromMotion do wejścia węzła PrepareDenseScene
  4. Kliknij prawym przyciskiem na Texturing i wybierz Compute

Hydrant – Live reconstruction

Przygotowanie modelu do druku – zamykanie szpar i naprawianie

Prawie wszystkie siatki przygotowane przez skanowanie 3D metodą fotogrametrii będą posiadać otwarty spód. Na szczęście i tak potrzebujemy płaskiej podstawy do położenia na stole, więc sprawdzi się tu proste cięcie płaszczyzną w oprogramowaniu takim, jak Meshmixer, Blender, 3D Builder lub podobnym.

Skala modelu również będzie dość dowolna, więc nie zdziw się, jeśli po zaimportowaniu będzie on bardzo malutki. Po prostu przeskaluj go w górę.

Istnieje technika, która działa szczególnie dobrze w kombinacji z fotogrametrią – jest to rzeźbienie. W przyszłości napiszemy o tym oddzielny artykuł, ale w międzyczasie możesz przejrzeć istniejące tutoriale, jak ten.

Zdecydowanie zalecamy zapoznanie się z wiki Meshrooma. Znajdziesz tam mnóstwo porad dotyczących rozwiązywania problemów i informacji o ustawieniach, z którymi warto pokombinować. A jeśli chcesz dołożyć swoją cegiełkę do jego rozwoju, co szczególnie pochwalamy, wrzuć pull request na GitHuba lub skontaktuj się z developerami mailowo.

Galeria wydruków z fotogrametrii

Podsumowanie

Meshroom sprawił, że fotogrametria jest łatwiejsza niż kiedykolwiek. Wynikowe modele nie są gotowe do druku od razu, ale dzięki drobnym poprawkom możesz osiągnąć niesamowite rezultaty zarówno dla celów druku 3D, jak i animacji oraz gier. Jest on również całkowicie otwarty, możemy więc spodziewać się aktualizacji lub nawet dodatków typowo pod drukowanie. Szczególnie, jeśli my, czyli społeczność, wspomożemy rozwój, chociażby małym wkładem – jak np. zgłaszaniem błędów czy dzieleniem się działającymi ustawieniami.

Czy zdołaliśmy Cię przekonać, że warto dać drugą szansę fotogrametrii? Na co czekasz, idź skanować świat! 🙂