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

Models Roadmap #927

Open
31 of 72 tasks
pjcozzi opened this issue Jul 5, 2013 · 1 comment
Open
31 of 72 tasks

Models Roadmap #927

pjcozzi opened this issue Jul 5, 2013 · 1 comment

Comments

@pjcozzi
Copy link
Contributor

pjcozzi commented Jul 5, 2013

Soonish

  • glTF schema and spec updates
  • When repeating an animation, check for parameter[count -1] === parameter[0].
  • Embedded shaders, textures, and buffers.
  • Render in and morph to/from Columbus view. Adjust model scale relative to projection?
  • Render in and morph to/from 2D.
  • Remove computeWorldBoundingSphere?
  • Consistently name id and name in Cesium API to match glTF spec.
  • Add ById versions of functions like getNode?
  • How will users know the names of nodes/meshes/materials/parameters? Through the glTF property or easier to navigate properties?

Later

glTF Features

  • Compression
  • Cube maps
  • Cameras

glTF Extensions

  • Collision volumes
  • Binary JSON

Animation

  • Morphing - #164
  • Material animation, including splines with control points of any type.
  • Consider skinning with dual quaternions.
  • Animation blending, e.g., walk to run cycle. Section 11.6 in Game Engine Architecture
  • Bezier spline

Animation Performance

  • Only update the joint matrices if the nodes were targeted by an animation that frame, instead of updating the joint matrices for all skinned nodes.
  • Don't animation when culled. Will still need the right bounding volume: perhaps we can compute it or the user can provide a maximum radius percentage increase.
  • updateNodeHierarchyModelMatrix performance ideas with parent pointers. See @pjcozzi's notes.

Loading Performance

  • Fine-grained dependency requests, e.g., compile shader program once required shaders are fetched, not once all shaders are fetched. See functions called from createResources.
  • In general, what can be done on a web worker?

Rendering Performance

  • Auto instance when multiple nodes have the same mesh. This will require copy-on-write if the material for one instance changes, e.g., because it is no longer an instance.
  • Compute tighter bounding sphere than using the bounding box's corner points. Do this as a preprocess in an extra property and fallback to client-side.
  • Minimize frustum overlap (SAH-like split) - @bagnell
  • Material-aware draw commands, #797 - @bagnell
    • Cull entire model with a single bounding volumes?
  • Pack uniforms. Optimize setting uniforms #649
  • Coarse front-to-back sort for early-z.
  • Investigate DXT-compressing textures in a web worker with Crunch using Emscripten. This could be useful throughout Cesium.
  • Optimize 2D with render-to-texture within a given zoom interval for non-animated/skinned models.
  • When allowPicking is false, we should still render depth.

Cesium-Specific Features

  • Add helpers to ModelNode to, for example, easily change the scale transform and interop with TRS animations.
  • Expose glTF animations with higher-level objects than glTF, e.g., cleanly expose time[0] and the duration.
  • Expose targetable materials. Extend ModelMesh.
  • Support models in KML.
  • Reuse texture and vertex buffers when loading multiple models. Probably separate model and instances.
  • Attach points. Need access to node's transform (to root) by name. The transform can change over time due to animation, user interaction, etc.
    • Attach vapor trails to the back of a launch vehicle.
    • Attach a sensor to the front of a UAV.
  • Pointing. Need semantics for sun, other objects, etc. to control direction and up vectors.
    • Point satellite solar panels to the sun.
    • Point sensor on aircraft to a ground station.
    • Point communication dish to satellite.
    • Point a quad toward the camera, e.g., foliage, explosion, Rudolph's nose, etc. Need to animate when camera moves, not just when time changes.
    • Need to limit degrees of freedom, e.g., one rotation for solar panels and two rotations for communication dish.
  • Shadows
  • Interop with the Cesium material system?
  • Ability to change states. More IE 11 fixes #1843

CZML

  • Schedule animations via CZML, i.e., CZML for calling model.activeAnimations.add.
  • Drive model pointing.
  • Embed glTF as a CZML extension? Package together as zip?

Model caching

  • Reference counting the animation cache so it is also automatically deleted.
  • Ability to invalidate the whole cache or the cache for one url/cache-key
  • Avoid potential ping-ponging by delaying actually removing from the cache when the count reaches zero for several frames/seconds. This may also move all the GL delete functions into the render loop, which would be better for requestAnimationFrame timing (however, perhaps not noticeable).
  • Zero out the embedded resources in the glTF to save even more memory?

Viewer

  • Drag and drop convert COLLADA to glTF via Rest3D web services?

Ecosystem

  • glTF tutorial series
  • Make gltfStatistics a separate library

Potential Ideas

  • maximumSizeInPixels so the min/max could be the same and used as a billboard
  • For performance, render to texture with depth map when pixel size is constant and there are no animation/light changes (billboarding)

Older

b26

General

  • Unit tests
  • Sandcastle example with sample models
  • Tutorial

Animation

  • Add offset (in seconds) to ModelAnimation to allow starting an animation "in progress?"
  • Skinning - #100

Animation - Cesium Splines - @bagnell

  • Change math in splines to use result parameters
  • Change splines from AOS to SOA to share time array and for less cache pollution
  • Optimize splines for decreasing time
  • Spline for piecewise linear interpolation
  • Spline for quaternion interpolation with SQUAD

Animation Performance

  • Fast slerp - @bagnell
  • Optimize Matrix4.fromTranslationQuaternionRotationScale - @bagnell

Rendering Performance

Cesium Cleanup

  • Rename attributeIndices to attributeLocations throughout.
  • Syncup names in UniformDatatype to WebGL.
  • Replace enum with constants to avoid conversion: IndexDatatype, TextureWrap, TextureMinificationFilter, TextureMagnificationFilter, and PrimitiveType.
@ViachaslauBohdan
Copy link

@pjcozzi Hi
Is it possible to change the color of a separate model nodes in a cesium latest version v1.113 ?

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

3 participants