CesiumGS / cesium

An open-source JavaScript library for world-class 3D globes and maps :earth_americas:
https://cesium.com/cesiumjs/
Apache License 2.0
12.38k stars 3.38k forks source link

BIM roadmap #4678

Open pjcozzi opened 7 years ago

pjcozzi commented 7 years ago

Priority 1 - Optimizations / BIM Requirements

Optimizations for large 3D Tiles tilesets

Priority 2 - BIM Requirements

Priority 3 - Classification of mesh + GIS data

Priority 4 - BIM Requirements

Priority TBA

// orthogonalization Cartesian3.cross(camera.direction, camera.up, camera.right); Cartesian3.cross(camera.right, camera.direction, camera.up);

// ensure normalized, cross can give non-unit vectors because of floating-point numbers Cartesian3.normalize(camera.up, camera.up); Cartesian3.normalize(camera.right, camera.right); // normalize camera.direction if view.dir is not a unit vector


- [ ] Merge walk tool into core Cesium
- [ ] High-res printing (multiview port).  Perhaps also save as pdf.
- [ ] **Measurements**
   * Take measurements by, for example, manually selecting points on the roof to define polygons that cover entire roof, show polygons overlaid/intersecting with 3D model
      * Approximation with local plane is OK.
   * Allow multiple polygons to be defined and displayed on the model at the same time
   * Needed measurements include area, pitch, lengths (valley, ridges, hips, eaves, rakes, parapets, etc.)
   * Ability to classify, apply tags, or otherwise group the different measurements to allow total calculations for the roof
   * Given a polygon in a plane, extrude it, and compute the volume.
- [ ] **Collision detection** with avatar, e.g., person going into the sewer.
- [ ] @pjcozzi's suggestions
   - [ ] WebGL 2
   - [x] CPU usage, #1865 

# Done

- [x] Classification WIP, #5234
- [x] Not require file extensions for tiles since they are created on the fly.  #5206
- [x] Viewlet research, #5225
- [x] Update FXAA, #5200
- [x] Investigate issue with breath-first loading, #5128
- [x] Terrain clamping: turn off depth test per entity for labels, billboards, polylines, and polygons, #5160, #5168, (#5159)
- [x] Orthographic frustum in 3D, #5021, #5108, #5107, #5132, #5143
- [x] **Object selection**: Pick translucent objects, #4511, #4979
- [x] Performance improvements and tools: #4872, http://cesiumjs.org/2017/02/02/Tighter-Frustum-Culling-and-Why-You-May-Want-to-Disregard-It/, http://cesiumjs.org/2017/02/17/Hierarchical-Culling-With-Children-Bounding-Volumes/
- [x] Texture compression, #4679, #4758, https://github.com/AnalyticalGraphicsInc/gltf-pipeline/pull/204
- [x] Enable 3D Tiles in Columbus View
- [x] 3D Tiles in 2D, #4884
   - [x] i3dm in 2D, #4996
- [x] 3D Tiles declarative styling: replacement or highlight color (can we do this without using a lot of memory?)
- [x] New Batch Table design and/or Cesium tile load events so that the Batch Table can store more complex data structures with less redundancy, e.g., duplicate model IDs.  Related: https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/66
- [x] **Inside lighting**: default rig with two lights to start
- [x] **Navigation** - @pmconne willing to contribute
  - [x] Option to keep camera "up"
  - [x] Walk tool, including walk through walls/floors, walk at constant rate.  Constrain motion so user doesn't get lost/confused
  - [x] "Turn off camera" - change from perspective to orthographic projection
- [x] **Object selection**
  - [x] Opaque objects of interest.  Make everything else translucent
pmconne commented 7 years ago

Regarding Navigation section: I've ported our view navigation tools to javascript so the first 3 items in that section can probably be considered complete. The code is rather specific to our tool/view framework but if you feel some of it could be usefully integrated into Cesium please let us know.

Regarding 'Object selection > Opaque objects of interest': I reworked the way I manipulate the tileset style and can no longer observe significant performance degradation with transparency applied.

pjcozzi commented 7 years ago

I've ported our view navigation tools to javascript so the first 3 items in that section can probably be considered complete. I reworked the way I manipulate the tileset style and can no longer observe significant performance degradation with transparency applied.

Very nice, updated the above roadmap.

if you feel some of it could be usefully integrated into Cesium please let us know

Thanks for the offer. When you have time, can you send me a demo of the walk mode? It could be generally useful to Cesium.