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

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.


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