Replikacja rzeczywistości

Przeprowadzony zostanie proces zreplikowania fizycznego obiektu używając kamery, oprogramowania nerfstudio, drukarki 3d oraz pomocniczych programów do eksportu grafiki 3d. Na cel wyznaczona zostaje figurka z gliny o kształcie aniołka.

Pierwszym etapem jest nakręcenie filmu na którym widnieje obiekt, który chcemy sklonować z jak najdokładniejszym pokryciem.

Film wykonano kamerą wbudowaną w Smartfon Realme GT Neo2 z użyciem ultra stabilizacji w rozdzielczości Full HD z filtrem polaryzacyjnym.

Przed trenowaniem modelu film musi zostać rozbity na poszczególne klatki a następnie należy znaleźć pozycje kamery w danych klatkach/ujęciach oraz parametry kamery. W nerfstudio służy do tego wstępne przetwarzanie z użyciem aplikacji COLMAP poleceniem:

ns-process-data video --data nerfstudio/data/aniol/aniol.mp4 --output-dir nerfstudio/data/aniol --matching-method exhaustive

Jest to niezbędne przygotowanie danych do trenowania modelu za pomocą metody nerfacto. Następnie można przystąpić do wytrenowania modelu z uwzględnieniem map normalnych za pomocą polecenia:

ns-train nerfacto --pipeline.model.predict-normals True --data nerfstudio/data/aniol --output-dir nerfstudio/outputs
Widok modelu oraz mapy normalnych

Po wytrenowaniu modelu, model należy wyeksportować jako siatkę (mesh) w formacie .obj (plik geometrii modelu 3d) za pomocą polecenia:

ns-export poisson --load-config nerfstudio/outputs/aniol/nerfacto/2023-12-16_171400/config.yml --output-dir exports/mesh/ --target-num-faces 200000 --num-pixels-per-side 256 --normal-method model_output --normal-output-name normals --num-points 4000000 --remove-outliers True --use-bounding-box True --bounding-box-min -1 -1 -1 --bounding-box-max 1 1 1

Zwiększono liczbę poligonów i liczbę punktów chmury z domyślnej wartości i zmniejszono rozdzielczość tekstury z racji tego, iż interesuje nas tylko geometria modelu.

Następnie należy wyeksportować mesh jako plik stl. Siatka wielokątów w modelu stl po przekonwertowaniu nabiera ostrych kształtów przy małej liczbie poligonów.

Model 3d w formacie stl (Stereolitografia) jest następnie konwertowany przez slicer (Ultimaker Cura) do postaci GCODE, kodu rozumianego min. przez maszyny CNC.

Widok 3d modelu po procesie „sliceowania”, widoczne wygenerowane pomocnicze rusztowania
plik GCODE

Dla przykładu parametr G1 oznacza ruch liniowy, X i Y to pozycja głowicy a E przesunięcie filamentu w ekstruderze. Drukarka 3d drukuje następnie model zgodnie z otrzymanym kodem.

Model 3d wydrukowano za pomocą drukarki 3d Creality Ender-3 używając filamentu PLA imitującego kamień.

Wnioski:
Niewystarczające pokrycie obiektu podczas filmowania poskutkowało słabym jakościowo wygenerowanym modelem 3d, widoczne „wżery” w powierzchni i niska szczegółowość, która spowodowana jest również małą ilością wygenerowanych poligonów w modelu 3d. Należy również odpowiednio dobrać skalę obiektu 3d aby wydrukować obiekt w odpowiedniej wielkości.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *