[ ] 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.
[x] 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.
[x] Shadows
[ ] Interop with the Cesium material system?
[ ] Ability to change states. #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
[x] Drag and drop convert COLLADA to glTF via Rest3D web services?
Ecosystem
[x] 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
[x] Unit tests
[x] Sandcastle example with sample models
[x] Tutorial
Animation
[x] Add offset (in seconds) to ModelAnimation to allow starting an animation "in progress?"
[x] Preprocess out DeveloperError, #1240 - @bagnell
[x] Use world-space bounding volume in DrawCommand - @bagnell
Cesium Cleanup
[x] Rename attributeIndices to attributeLocations throughout.
[x] Syncup names in UniformDatatype to WebGL.
[x] Replace enum with constants to avoid conversion: IndexDatatype, TextureWrap, TextureMinificationFilter, TextureMagnificationFilter, and PrimitiveType.
Soonish
parameter[count -1] === parameter[0]
.computeWorldBoundingSphere
?id
andname
in Cesium API to match glTF spec.ById
versions of functions likegetNode
?Later
glTF Features
glTF Extensions
Animation
Animation Performance
updateNodeHierarchyModelMatrix
performance ideas with parent pointers. See @pjcozzi's notes.Loading Performance
createResources
.Rendering Performance
extra
property and fallback to client-side.allowPicking
isfalse
, we should still render depth.Cesium-Specific Features
ModelNode
to, for example, easily change the scale transform and interop with TRS animations.time[0]
and the duration.ModelMesh
.CZML
model.activeAnimations.add
.Model caching
delete
functions into the render loop, which would be better forrequestAnimationFrame
timing (however, perhaps not noticeable).Viewer
Ecosystem
gltfStatistics
a separate libraryPotential Ideas
maximumSizeInPixels
so the min/max could be the same and used as a billboardOlder
b26
General
Animation
offset
(in seconds) toModelAnimation
to allow starting an animation "in progress?"Animation - Cesium Splines - @bagnell
result
parametersAOS
toSOA
to share time array and for less cache pollutionAnimation Performance
Matrix4.fromTranslationQuaternionRotationScale
- @bagnellRendering Performance
DeveloperError
, #1240 - @bagnellDrawCommand
- @bagnellCesium Cleanup
attributeIndices
toattributeLocations
throughout.UniformDatatype
to WebGL.IndexDatatype
,TextureWrap
,TextureMinificationFilter
,TextureMagnificationFilter
, andPrimitiveType
.