Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BIM roadmap #4678

Open
30 of 53 tasks
pjcozzi opened this issue Nov 23, 2016 · 2 comments
Open
30 of 53 tasks

BIM roadmap #4678

pjcozzi opened this issue Nov 23, 2016 · 2 comments

Comments

@pjcozzi
Copy link
Contributor

pjcozzi commented Nov 23, 2016

Priority 1 - Optimizations / BIM Requirements

Optimizations for large 3D Tiles tilesets

  • Viewlets - 2D schematics in separate window. Click in a schematic to highlight/zoom in BIM view. Also text list-view of objects, click to highlight/zoom in BIM view. 2D schematic vs. water pipes on a neighborhood, e.g., drape line under street. Multiple Viewports #5214
    • Rasterize on server with pick IDs or send vector data to client (requires custom fonts). @pjcozzi suggests the former
  • Analyze latest reality model (RM) and design model (DM) tilesets
    • Do RMs have too many levels? Looking into coarser levels for DM tilesets
  • Long list of optimizations in 3D Tiles Roadmap #3241 until things are smooth enough (on iPad in particular)
    • Better memory management on mobile in general
  • Try adding a request volume to a BIM model so it is not loaded until the viewer enters the volume

Priority 2 - BIM Requirements

  • Navigation
    • Indoor mode - adjust far/near to avoid z-fighting, render environment to texture given know area of interest

Priority 3 - Classification of mesh + GIS data

Priority 4 - BIM Requirements

  • Object selection: Post-processed animated silhouettes for objects of interest
  • Polyline shader (if support is needed)

Priority TBA

  • Separate into multiple modules, Cesium 2 #2524
  • Type script definitions? Let us slowly move to Typescript. (instructions inside) #4434
  • Per-tileset AA for tilesets with thin lines?
  • Do not request terrain tiles under tileset (or maybe tileset tiles under tilesets)
    • Blend terrain with tileset for sparse areas of a tileset
  • Diffing/blending BIM vs. Reality Model. Focus on one or the other. Review http://pellacini.di.uniroma1.it/
  • Possibility once performance optimizations reach a reasonable point
    • Draco compression Draco mesh/point compression extension for glTF #5120
    • Underground - railways with signals along track, subway tunnels (pick on assets underground), utilities (pipes, service tunnels), geotechnics: (e.g., 3-4 floors of basement for 40-50 story building)
  • Integrate with other WebGL engines, also useful for 2D, Integrate with other WebGL engines #648
  • Runtime batching, perhaps scoped just for point clouds
  • Polygon clamping in ortho (for classification)? GroundPrimitives are broken in orthographic projection #5110
  • Full lighting system when appropriate. IBL/PBR from glTF
  • Time-dynamic: 4 or 5 reality models each with a time stamp. Blending
  • Site planning - viewsheds. When foggy, what is the visibility in a corridor? Smoke sim, what is the path to replace a pump?
  • Fix for camera workaround for to looking directly toward / away from the globe:
Cartesian3.clone(modelDest, camera.position);
Cartesian3.clone(view.dir, camera.direction);
Cartesian3.clone(view.up, camera.up);

// 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

Done

@pmconne
Copy link
Contributor

pmconne commented Nov 23, 2016

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
Copy link
Contributor Author

pjcozzi commented Nov 23, 2016

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants