Difference between revisions of "Integrating a module to 3d scan a house within the MapMint4ME android application"

From OSGeo
Jump to navigation Jump to search
m
 
(5 intermediate revisions by the same user not shown)
Line 9: Line 9:
  
 
=== Abstract ===
 
=== Abstract ===
This project allows a minimalist 3D scan (taking multiple pictures, recording camera position, using opendrone map to rebuild the 3D scene) with the house faces (accessible/visible faces) then load it as georeferenced data with the database and being able to export the data back on MapMint for 3D viewing.
+
This project allows a minimalist 3D scan (taking multiple pictures, recording camera position, using opendrone map to rebuild the 3D scene) with the house faces (accessible/visible faces) then load it as georeferenced data and finally export the data back on MapMint for 3D viewing.
  
 
'''[https://github.com/ayoubft/MapMint4ME Link to Github repository]'''
 
'''[https://github.com/ayoubft/MapMint4ME Link to Github repository]'''
Line 75: Line 75:
 
** Connect the android MapMint4ME app to MapMint.
 
** Connect the android MapMint4ME app to MapMint.
  
=== Week Four: 28th - 4th July ===
+
=== Week Four: 28th June - 4th July ===
  
 
*'''What have I done this week:'''
 
*'''What have I done this week:'''
Line 141: Line 141:
 
** I am not blocked on anything.
 
** I am not blocked on anything.
  
 +
=== Week Nine: 2nd - 8th August ===
  
 +
*'''What have I done this week:'''
 +
** Finished the final draft for my UI (to render 3D models)
 +
** Created a drop list to allow the user to choose what model (from the existing ones) to view
 +
** Loaded successfully multiple sample models (**Tajjin** / **Rock** / **GerrardHall_Building**) all processed by me usig odm . [https://drive.google.com/file/d/150PgaYOqNWTER8W0CTFqRQ4JDvy9SpLA/view?usp=sharing [See here.]]
  
 +
*'''My plans for next week:'''
 +
** Refactor & clean up the code for loading the 3D models
 +
** Connect the android MapMint4ME app to MapMint.
  
 +
*'''Am I blocked on anything:'''
 +
** I am not blocked on anything.
 +
 +
=== Week Ten: 9th - 15th August ===
 +
 +
*'''What have I done this week:'''
 +
** Fixed the apt-key [https://github.com/ayoubft/ZOO-Project/commit/38b5af2420fffe5b7b2864f665565f86581f0072 issue]
 +
** Clean up the code used to view the 3D models
 +
** Working on documenting the numerous parts of my project
 +
 +
*'''Am I blocked on anything:'''
 +
** I am not blocked on anything.
  
 
== GSoC 2021 Final Report ==
 
== GSoC 2021 Final Report ==
  
 +
=== Abstract: ===
 +
 +
This project allows a minimalist 3D scan (taking multiple pictures, recording camera position, using opendrone map to rebuild the 3D scene) with the house faces (accessible/visible faces) then load it as 3D model and export the data back on MapMint for 3D viewing.
 +
 +
=== The state of the art BEFORE GSoC: ===
 +
 +
Have you ever wished that you could easily transfer a real object into a digital file? The technology is here, but most of us simply do not have access to high-end 3D scanners that can reconstruct the digital geometry of a physical model.
 +
 +
=== The added value: ===
 +
 +
Now it is possible to take multiple pictures using MapMint4ME, then visualize the 3D model issued from the taken pictures in MapMint.
 +
 +
=== Future Work: ===
 +
 +
* One challenging part of my project, not yet done, is to get to link the MapMint4ME with a MapMint instance.
 +
* I did not get enough time to automate the step of creating the model using openDroneMap, here is [https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/ what i was thinking to do].
 +
 +
=== Permanent links & documentation: ===
 +
 +
==== Code Repositories: ====
 +
 +
* [https://github.com/ayoubft/ZOO-Project/tree/docker-gsoc21 ZOO-Project]
 +
* [https://github.com/ayoubft/MapMint4ME MapMint4ME]
 +
 +
==== Videos: ====
 +
 +
* [https://drive.google.com/file/d/150PgaYOqNWTER8W0CTFqRQ4JDvy9SpLA/view?usp=sharing Loading Models]
 +
 +
==== Other Important Links: ====
 +
 +
* [https://github.com/ayoubft/Journey-GSoC-21/wiki Wiki on GitHub]
 +
* [https://wiki.osgeo.org/wiki/Integrating_a_module_to_3d_scan_a_house_within_the_MapMint4ME_android_application Project on OSGeo Wiki]
 +
 +
==== Documentation ====
 +
 +
My work consist of three parts:
 +
 +
* One graphical image describing my project:
 +
 +
[[File:129237773-f636dcfb-c737-49f8-a23e-78fa3392d6d0.png|1000px|Caption text]]
 +
 +
==== Part One: Get the pictures using MapMint4ME ====
 +
 +
'''[https://github.com/ayoubft/MapMint4ME/commits/gsoc-21 Here] are the commits for this part.'''
 +
 +
* Created a [https://github.com/ayoubft/MapMint4ME/commit/ec347c0e5161395c31c04a7cee5a8af2bdca3c38 button] that direct you to the [https://github.com/ayoubft/MapMint4ME/commit/abee7d7faad96fa1ff984a517f86b543cc02f25a this layout].
 +
* I have created a form that can be filled with a fixed number of images taken from the mobile MapMint4ME app, and will be transfered to MapMint, here is [https://github.com/ayoubft/Journey-GSoC-21/wiki/Create-a-FORM-in-MapMint-to-save-images-from-MapMint4ME-needed-for-3D-constructing-a-model how to do it].
 +
* I have some issues regarding linking MapMint to MapMint4ME, so I did get the datasets for buildings from [https://colmap.github.io/datasets.html here], and I have taken the tajjin pictures by myself.
 +
 +
==== Part Two: Create the 3D model using ODM ====
  
 +
* I have created a 3D model from pictures, here is the [https://github.com/ayoubft/Journey-GSoC-21/wiki/Create-3D-scene-using-ODM tutorial].
  
 +
==== Part Three: Visualize the 3D model in MapMint ====
  
 +
'''[https://github.com/ayoubft/ZOO-Project/commits/docker-gsoc21 Here] are the commits for this part.'''
  
 +
* Got MapMint working on virtual machine [https://github.com/ayoubft/Journey-GSoC-21/wiki/Setup-MapMint tutorial here], then I finished up with configuring it on Docker [https://github.com/ayoubft/Journey-GSoC-21/wiki/Setup-MapMint-with-Docker tutorial here].
 +
* Added 3D models to the volume [https://github.com/ayoubft/ZOO-Project/commit/1640b4464d1a37f747a807140f8006c121190b6f see here].
 +
* Used docker [https://github.com/ayoubft/ZOO-Project/blob/docker-gsoc21/docker-compose.yml#L17-L18 volumes] to get access to the 3D models to be visualized.
 +
* Using [https://threejs.org/ threeJS], I was able to render the 3D models in MapMint, using a [https://github.com/ayoubft/ZOO-Project/commit/8062585d9ec95af0a622c2f8c3ce92964621448c template].
  
 
== Mentors ==
 
== Mentors ==

Latest revision as of 09:11, 8 January 2022

Introduction

Introduction of MapMint

MapMint4ME is an Android application to record your data on the field. MapMint4ME is an Android application for MapMint web-mapping services. MapMint4ME gives the users capability to store data without using the internet locally. The data can be a file stored in alpha-numeric format, an audio file, a video file or readings obtained from a Sensor Observation Service (SOS). When the user returns back to a place with network connectivity, the recorded data can be uploaded back to the server.

MapMint4ME is an android application for MapMint web-service. MapMint is an internet-based Geographic Information System(GIS), designed to facilitate the deployment of Spatial Data Infrastructure(SDI). In an SDI, geographic data, metadata, tools, and the users are connected in an interactive manner in a framework so as to use the spatial information in an efficient and flexible way.

Project proposal

My proposal for GSoC 2021.

Abstract

This project allows a minimalist 3D scan (taking multiple pictures, recording camera position, using opendrone map to rebuild the 3D scene) with the house faces (accessible/visible faces) then load it as georeferenced data and finally export the data back on MapMint for 3D viewing.

Link to Github repository


Timeline

17th May - 7th June (Community bonding period)

Week One: 7th - 13th June

  • What have I done this week:
    • Gone through some of the code of the app with mentor
    • Solved the soft link problem in Windows
    • Added a button for 3D scene in the home page
    • Started the layout for the 3D scene page
    • Gone through some documentation regarding javascript in WebView in Android
  • Am I blocked on anything:
    • How to make the binding between javascript and java
    • How the whole app is working, and how everything is linked to everything
  • My plans for next week:
    • Working harder on my blockings
    • Begin implementing the pictures taking within the app

Week Two: 14th - 20th June

  • What have I done this week:
    • Worked on UI elements on the android app
    • Discussed with mentor some issues of the SQL queries in the newly set up online MapMint live instance
  • Am I blocked on anything:
    • I am not blocked on anything.
  • My plans for next week:
    • Debug online MapMint instance
    • Collect images from phone, experiment with creating a form

Week Three: 21th - 27th June

  • Am I blocked on anything:
    • I am not blocked on anything.
  • My plans for next week:
    • Connect the android MapMint4ME app to MapMint.

Week Four: 28th June - 4th July

  • Am I blocked on anything:
    • I am not blocked on anything.
  • My plans for next week:
    • Make zoo-service to get data from odm

Week Five: 5th - 11th July

  • My plans for next week:
    • Continue working on getting the zoo service up and running
  • Am I blocked on anything:
    • I am not blocked on anything.

Week Six: 12th - 18th July

  • What have I done this week:
    • Had a meeting with mentor, which was highly productive, and resulted in the other accomplishments of this week.
    • Removed a symbolic link to make sure the service will be running well see in my GitHub wiki
    • Added a template that will be generated by the service code here
    • Tried getting the template working
  • My plans for next week:
    • Continue working on getting the zoo service up and running
  • Am I blocked on anything:
    • I am not blocked on anything.

Week Seven: 19th - 25th July

  • What have I done this week:
    • Added a volume to the zoo-kernel container to get access to the templates
    • Added a volume to the zoo-kernel container to get access to 3D models
    • Visualized a 3D model (.gltf) whitin cesium
  • My plans for next week:
    • Continue working on getting the zoo service up and running
  • Am I blocked on anything:
    • I am not blocked on anything.

Week Eight: 26th July - 1st August

  • What have I done this week:
    • - Switched from Cesium to threeJS as viewer of the 3D data
    • Added odm 3D results to 3dModels volume
    • Created a simple user interface to view the 3D model
    • Working on creating a drop list using cheetah template to allow the user to choose what model (from the existing ones) to view
  • My plans for next week:
    • Continue working on UI
  • Am I blocked on anything:
    • I am not blocked on anything.

Week Nine: 2nd - 8th August

  • What have I done this week:
    • Finished the final draft for my UI (to render 3D models)
    • Created a drop list to allow the user to choose what model (from the existing ones) to view
    • Loaded successfully multiple sample models (**Tajjin** / **Rock** / **GerrardHall_Building**) all processed by me usig odm . [See here.]
  • My plans for next week:
    • Refactor & clean up the code for loading the 3D models
    • Connect the android MapMint4ME app to MapMint.
  • Am I blocked on anything:
    • I am not blocked on anything.

Week Ten: 9th - 15th August

  • What have I done this week:
    • Fixed the apt-key issue
    • Clean up the code used to view the 3D models
    • Working on documenting the numerous parts of my project
  • Am I blocked on anything:
    • I am not blocked on anything.

GSoC 2021 Final Report

Abstract:

This project allows a minimalist 3D scan (taking multiple pictures, recording camera position, using opendrone map to rebuild the 3D scene) with the house faces (accessible/visible faces) then load it as 3D model and export the data back on MapMint for 3D viewing.

The state of the art BEFORE GSoC:

Have you ever wished that you could easily transfer a real object into a digital file? The technology is here, but most of us simply do not have access to high-end 3D scanners that can reconstruct the digital geometry of a physical model.

The added value:

Now it is possible to take multiple pictures using MapMint4ME, then visualize the 3D model issued from the taken pictures in MapMint.

Future Work:

  • One challenging part of my project, not yet done, is to get to link the MapMint4ME with a MapMint instance.
  • I did not get enough time to automate the step of creating the model using openDroneMap, here is what i was thinking to do.

Permanent links & documentation:

Code Repositories:

Videos:

Other Important Links:

Documentation

My work consist of three parts:

  • One graphical image describing my project:

Caption text

Part One: Get the pictures using MapMint4ME

Here are the commits for this part.

  • Created a button that direct you to the this layout.
  • I have created a form that can be filled with a fixed number of images taken from the mobile MapMint4ME app, and will be transfered to MapMint, here is how to do it.
  • I have some issues regarding linking MapMint to MapMint4ME, so I did get the datasets for buildings from here, and I have taken the tajjin pictures by myself.

Part Two: Create the 3D model using ODM

  • I have created a 3D model from pictures, here is the tutorial.

Part Three: Visualize the 3D model in MapMint

Here are the commits for this part.

  • Got MapMint working on virtual machine tutorial here, then I finished up with configuring it on Docker tutorial here.
  • Added 3D models to the volume see here.
  • Used docker volumes to get access to the 3D models to be visualized.
  • Using threeJS, I was able to render the 3D models in MapMint, using a template.

Mentors