Known Bugs

  • updatePriorities() is bottleneck for very large models. Need to profile it.

Roadmap: plans for the future


Finish support for point clouds

Needs only debugging and a decent clustering algorithm

More efficient quadric simplification

Current quadric simplification algorith is not that fast, and moreover require converting back and forth from VCG mesh format. A native simplification algorithm could do faster and without conversions.

Other fast simplification algorithms: vertex clustering

For low quality but much faster processing of data.


Projective textures: missing image equalization end patch optimization


Point cloud using Gael algorithm

should be really easy... question is do we want to use a unifor (per patch) radius, or a per vertex one... should be an option probably... support for compression?...

Streaming with local disk cache

At the moment http streaming keeps data in RAM. we might want a permanent storage in disk...

There are some problem though, we need to know which patches has been downloaded and which not.... it is not worth to reorder the patches.... we also need some lock to syncornize reading cache with downloading cache,

Make also the index multiresolution

For very large models this might be worthwhile, or especially if we plan to load multiple very large models (a museum exibition with many statues for example....). Needs to be investigated. The difficult part would be the dag loading....

Streamline reading from http or disk and decompression adding another cache stage

At the moment downloading or reading from disk stalls when decompressing data. adding another cache level would solve the problem. Need to split loadPatch into load and decompress.

allows multiple cache transfers

This would be useful for streaming from multiple sites, or discs!) semaphore to keep track of number of active transfers....

Profile and further optimize mesh decompression

Mesh decompression needs to be faster. find out what are the bottlenecks

Collision detection

We already have a bounding sphere hierarchy, the effort should be minimal...

Occlusion culling

Partially implemented using hardware occlusion queries. We plan to implement the Graphics Gem (can't remeber name of the chapter). version, using temoral coherence and hierarchy of spheres.

Changelog: history of the past


Create projective texture multiresolution atlases: i.e. do it :)

We did it :)

Miscellanous stuff

Prioritize does not need to run every frame... and could be run on a different thread... prioritizer should also extend the traversal by a % of the size of the visible, not a fixed number.

Add callback for patch rendering...

Prioritize has been merged with the rendering traversal for greater good.

Make streaming more efficient

Building the Kd-tree requires multiple pass:

  • first pass: compute the bounding box
  • read 1 every 2^k triangles
  • read 1 every 2^k-1 triangles, skipping those already readed
  • ...
  • read 1 every 2 triangles

We could od it in 2 passes instead: 1) compute bounding box and create a spatial occupancy grid based on power of 2 spatial hashing. We can use the size of the triangle to determine the lowest level of the grid. And use the grid to guide the subdivision of the nodes (instead of the triangles met so far).

While we are at it we could add skip(n) to the triangle stream...

An intermediate stream representation is build using buckets. See source code MEshStream for details