Skip to content

secretshardul/golem-photogrammetry

Repository files navigation

Photogrammetry (3D scanning) on Golem

An online IDE which lets you run Micmac photogrammetry workloads on Golem. Photogrammetry jobs are resource intensive and can run into hours. Golem is ideal for such batch workloads.

Features

  • Run Micmac builds online any local setup.
  • Fully programmable. Look here for the entire list of commands.
  • Run intense workloads on Golem cloud, without consuming local resources.
  • Build results notified on email.

Project demo

http://65.0.59.23/

Note: Ping @the.godfather on Golem Discord server or raise an issue if facing issues. Yagna daemon is unstable on EC2.

Demo video

1 golem-youtube

Photogrammetry for gaming

Chernobolyte is a sci-fi game based on 3D-Scanned Chernobyl. This game is also the inspiration for this project.

6-chernobolyte

https://80.lv/articles/chernobolyte-game-based-on-3d-scanned-chernobyl/

Screenshots

Web app

2-app-top

3-app-bottom

Email results

4-success-email

Viewing generated .ply files in Meshlab

5-results

Instructions to run locally

  • Install node modules using npm install
  • Create a .env file containing environment variables. This contains Sendgrid and Yagna provider keys. Copy from .env-template for reference.
  • Start golem locally using yagna service run
  • Open a new terminal and run yagna payment init --sender. Then start Node server using npm run start:dev
  • Follow the instructions on localhost:3000

Testing other photogrammetry workloads

  • Download a sample dataset from https://micmac.ensg.eu/data/
  • Extract the zip file and find the runner shell script
  • The raw images and hyperparameters will be sent to a folder /golem/resource/extracted/ on Golem. Accordingly modify the paths in the shell script.

datasets

Tech stack

  • Golem requester and Golem Node.js SDK
  • Typescript
  • Express.js
  • Sendgrid email service

Limitations

  • Micmac is a low-level programming framework. There is no GUI, but rather developers need to supply a shell script program and hyperparameters.
  • There's no generic script for multiple scanning workloads. Developers are expected to provide the orientation data and processing instructions.

References