All Projects → retroplasma → Earth Reverse Engineering

retroplasma / Earth Reverse Engineering

Reversing Google's 3D satellite mode

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
javascript
184084 projects - #8 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to Earth Reverse Engineering

Flyover Reverse Engineering
Reversing Apple's 3D satellite mode
Stars: ✭ 485 (-76.72%)
Mutual labels:  extract, 3d-models, gis, reverse-engineering
Dyld cache extract
A macOS utility to extract dynamic libraries from the dyld_shared_cache of macOS and iOS.
Stars: ✭ 180 (-91.36%)
Mutual labels:  extract, reverse-engineering
DEMto3D-QGIS-Plugin
Extensión GIS para impresión 3D de MDE
Stars: ✭ 33 (-98.42%)
Mutual labels:  gis, 3d-models
go-kml
Package kml provides convenience methods for creating and writing KML documents.
Stars: ✭ 67 (-96.78%)
Mutual labels:  gis, google-earth
Leaflet Geoman
🍂🗺️ The most powerful leaflet plugin for drawing and editing geometry layers
Stars: ✭ 1,088 (-47.77%)
Mutual labels:  gis, google-maps
google-maps-at-88-mph
Google Maps keeps old satellite imagery around for a while – this tool collects what's available for a user-specified region in the form of a GIF.
Stars: ✭ 93 (-95.54%)
Mutual labels:  google-maps, gis
Blacksmith
Blacksmith is a tool for viewing, extracting, and converting textures, 3D models, and sounds from Assassin's Creed: Odyssey/Origins/Valhalla and Steep.
Stars: ✭ 104 (-95.01%)
Mutual labels:  extract, 3d-models
Drv3 Tools
(Not actively maintained, use DRV3-Sharp) Tools for extracting and re-injecting files for Danganronpa V3 for PC.
Stars: ✭ 13 (-99.38%)
Mutual labels:  extract, reverse-engineering
3d Tiles
Specification for streaming massive heterogeneous 3D geospatial datasets 🌎
Stars: ✭ 1,054 (-49.4%)
Mutual labels:  3d-models, gis
Aerialbot
A simple yet highly configurable bot that tweets geotagged aerial imagery of a random location in the world.
Stars: ✭ 157 (-92.46%)
Mutual labels:  gis, google-maps
Bt
BitTorrent library and client with DHT, magnet links, encryption and more
Stars: ✭ 2,011 (-3.46%)
Mutual labels:  client
Objcmongodb
Mac OS and iOS library for MongoDB and BSON
Stars: ✭ 166 (-92.03%)
Mutual labels:  client
Nibo
Android Place picker dependent on Google places, made a custom version so I could style it anyway I wanted for my current project, WIP
Stars: ✭ 170 (-91.84%)
Mutual labels:  google-maps
Google Maps
Google Maps Web Services API wrapper for .NET
Stars: ✭ 171 (-91.79%)
Mutual labels:  google-maps
Load Google Maps Api
🌏 A lightweight Promise-returning helper for loading the Google Maps JavaScript API
Stars: ✭ 166 (-92.03%)
Mutual labels:  google-maps
Whitebox Geospatial Analysis Tools
An open-source GIS and remote sensing package
Stars: ✭ 169 (-91.89%)
Mutual labels:  gis
Me Tools
Tools for working with Intel ME
Stars: ✭ 165 (-92.08%)
Mutual labels:  extract
Open Semantic Etl
Python based Open Source ETL tools for file crawling, document processing (text extraction, OCR), content analysis (Entity Extraction & Named Entity Recognition) & data enrichment (annotation) pipelines & ingestor to Solr or Elastic search index & linked data graph database
Stars: ✭ 165 (-92.08%)
Mutual labels:  extract
Angular Google Maps
Angular 2+ Google Maps Components
Stars: ✭ 1,982 (-4.85%)
Mutual labels:  google-maps
Agstoshapefile
Convert ArcGIS Server Dynamic Map Service to GeoJSON and Shapefile
Stars: ✭ 172 (-91.74%)
Mutual labels:  gis

header

Reverse-engineering undocumented parts of Google Earth. Similar work is done for Apple Maps here.

Status

The focus has been on the 3D satellite mode, which required digging into:

  • URL structures
  • octrees and conversion from geo coordinates
  • Protobuf formats of assets and metadata
  • postprocessing steps (e.g. unpacking of meshes and textures)

Code was written and tested with various regions and cities:

Info

URL structure:

"https://kh.google.com/rt/🅐/🅑"
 - 🅐: planet
       - "earth"
       - "mars"
       - ...
 - 🅑: resource
       - "PlanetoidMetadata"
       - "BulkMetadata/pb=!1m2!1s❶!2u❷"
          - ❶: octant path
          - ❷: epoch
       - "NodeData/pb=!1m2!1s❸!2u❹!2e❺(!3u❻)!4b0"
          - ❸: octant path
          - ❹: epoch
          - ❺: texture format
          - ❻: imagery epoch (sometimes)

Misc:

General info:
 - Everything is stored in an octree.

Roles of resources:
 - PlanetoidMetadata points to first BulkMetaData.
 - BulkMetaData points to other BulkMetaData and to NodeData.
 - NodeData contains actual meshes and textures.

Versioning:
 - BulkMetaData and NodeData are versioned using epoch numbers.
 - PlanetoidMetadata provides epoch of first BulkMetaData.
 - BulkMetaData provides epochs of underlying resources.
 - Current version of a resource can be determined recursively.

NodeData:
 - Mesh: packed XYZ, UV, octant mask, normals
 - Texture: JPG, CRN-DXT1
 - Raw format: see rocktree.proto and rocktree_decoder.h
 - Other optimizations: BVH
BulkMetaData:
 - Oriented Bounding Box
    - Dump OBB to obj: https://gist.github.com/retroplasma/5698808bfaa63ffd03f751a84fa6ce14
    - Latlong to octant using OBB (unstable): https://github.com/retroplasma/earth-reverse-engineering/blob/443a3622ce9cb12cd4460cc6dc7999cc703ae67f/experimental_latlong_to_octant.js

Related ideas: Racing game , Minimal client. WebGL + CORS should work (test).

Important

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].