simplephotogrammetrygui

Gebruik

Linux-gebruikers: Alle afhankelijkheden zijn verpakt in de .AppImage, dus deze stap is niet van toepassing.

Stappenplan:

  1. Klik op "Select Image Folder" om de map te selecteren die de afbeeldingen bevat.
  2. Klik vervolgens op "Select Output Folder" om de map te selecteren waar het resultaat moet worden opgeslagen (zorg voor voldoende schijfruimte op de locatie van de outputmap).
  3. Klik tot slot op "start".

Het uiteindelijke resultaat zal in de outputmap staan met de naam: textured.obj.

Bouwen

Windows

Voer de volgende commando's uit:

git clone https://github.com/edin45/simple_photogrammetry_gui.git
cd simple_photogrammetry_gui
flutter clean
flutter pub get
flutter build windows --release

Plaats vervolgens, naast het bestand simplephotogrammetrygui.exe (in de map build/windows/runner/Release), je gewenste (gecompileerde!) versie van OpenMVS als een zip-bestand genaamd openmvs.zip. Let op: zip de inhoud van de map, niet de map zelf, anders zal het niet werken.

Voeg daarnaast zip-bestanden toe van:

  • decimateMesh.exe (gecompileerd uit python/decimateMesh.py met het commando: pyinstaller --onefile decimateMesh.py --collect-all pymeshlab)
  • resizeImages.exe (gecompileerd uit python/resizeImages.py met het commando: pyinstaller --onefile resizeImages.py)
  • texrecon.exe (te vinden in de map mvs-texturing)

Linux (Ubuntu 22.04 Docker)

Let op: Dit is experimenteel en kan problemen bevatten.

Indien het werkt, zouden alle afhankelijkheden gecompileerd, verzameld en geconfigureerd moeten worden, om alles vervolgens te verpakken in een .AppImage. Dit zou op vrijwel alle Linux-distributies moeten werken, aangezien er een Ubuntu 22.04 Docker-container wordt aangemaakt waarin de compilatie plaatsvindt.

git clone https://github.com/edin45/simple_photogrammetry_gui.git
cd simple_photogrammetry_gui/linux_compilation_scripts_wip
docker build -t simple_photogrammetry_gui_box .
docker run -it -v $(pwd)/..:/workspace/simple_photogrammetry_gui simple_photogrammetry_gui_box /bin/bash
cd /workspace
cp simple_photogrammetry_gui/linux_compilation_scripts_wip/compile_dependecies.sh .
cp simple_photogrammetry_gui/linux_compilation_scripts_wip/build_appimage.sh .
./compile_dependecies.sh
./build_appimage.sh
cp *.AppImage simple_photogrammetry_gui/

Nix

De Nix-build ondersteunt x86-64 Linux en biedt twee varianten. Beide bevatten de command-line programma's die worden gebruikt door de reconstructie-pipeline.

VariantUitvoeren in één commandoNative afhankelijkhedenSysteemvereiste
CUDAnix run .#cudaCUDA-ondersteunde COLMAP en OpenMVSEen NVIDIA-driver compatibel met CUDA 12.9
CPUnix run .#cpuCPU-only COLMAP en OpenMVSGeen NVIDIA-driver

Installeer een actuele versie van Nix en run de variant die past bij de computer. De keuze voor CPU heeft betrekking op de fotogrammetrie-pipeline. Gaussian splatting maakt gebruik van Brush en heeft eigen hardwarevereisten voor de grafische kaart.

Om een resultaatlink te behouden in plaats van de applicatie direct te starten, bouw je een variant en start je de launcher:

nix build .#cuda
./result/bin/simple_photogrammetry_gui

Vervang cuda door cpu voor het CPU-pakket. De standaard nix run en nix build commando's selecteren momenteel standaard CUDA.

Om aan de Flutter-broncode te werken, open je een tijdelijke shell die Flutter en de CUDA-buildbibliotheken bevat. Stel dezelfde applicatiemodus in als die wordt gebruikt door het CUDA-pakket bij het starten van de unwrapped applicatie:

nix develop
SIMPLE_PHOTOGRAMMETRY_GPU_TYPE=cuda flutter run -d linux

Om de development shell automatisch te laden, installeer je direnv, voeg je de hook toe aan je shell, bekijk je .envrc en keur je deze eenmalig goed:

direnv allow

.envrc bevat alleen use flake, waardoor dezelfde vastgepinde tools worden geladen als bij nix develop. Direnv vereist goedkeuring omdat .envrc shell-code is uit de checkout.

Voor uitleg over de Nix-bestanden, dependency pinning, CI-checks en lokale validatie, zie Maintaining the Nix build.

Gebaseerd op

  • OpenMVS: https://github.com/cdcseacave/openMVS
  • Colmap: https://colmap.github.io/
  • mvs-texturing: https://github.com/nmoehrle/mvs-texturing
  • PoissonRecon: https://github.com/mkazhdan/PoissonRecon
  • Brush: https://github.com/ArthurBrussee/brush