earth reverse engineering
1.0.0
对 Google 地球中未记录的部分进行逆向工程。 Apple 地图也做了类似的工作。
重点是 3D 卫星模式,需要深入研究:
代码是在不同地区和城市编写和测试的:
网址结构:
"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)
杂项:
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
相关想法:赛车游戏,最小客户端。 WebGL + CORS 应该可以工作(测试)。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有者均不对因本软件或本软件的使用或其他交易而引起的或与之相关的任何索赔、损害或其他责任负责,无论是合同、侵权还是其他行为。软件。