Realizar ingeniería inversa en partes no documentadas de Google Earth. Aquí se realiza un trabajo similar para Apple Maps.
La atención se ha centrado en el modo satélite 3D, lo que requirió profundizar en:
El código fue escrito y probado en varias regiones y ciudades:
Estructura de URL:
"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)
Varios:
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
Ideas relacionadas: Juego de carreras, Cliente mínimo. WebGL + CORS debería funcionar (prueba).
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITADO A, LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGÚN RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, AGRAVIO O DE OTRA MANERA, QUE SURJA DE, FUERA DE O EN RELACIÓN CON EL SOFTWARE O EL USO U OTRAS NEGOCIOS EN EL SOFTWARE.