Difference between revisions of "XB PointStream"
(→Parser Interface) |
(→Parser Interface) |
||
Line 92: | Line 92: | ||
*/ | */ | ||
getFileSize() | getFileSize() | ||
+ | |||
+ | |||
+ | /* This example only demonstrates syntax. It hasn't been tested. | ||
+ | */ | ||
+ | |||
+ | function startCallback(parser){ | ||
+ | alert( "Using parser version: " + parser.getVersion(); | ||
+ | } | ||
+ | |||
+ | function parseCallback(parser){ | ||
+ | parser.getProgress(); | ||
+ | parser.getNumParsedPoints(); | ||
+ | parser.getFileSize(); | ||
+ | parser.getNumTotalPoints(); | ||
+ | } | ||
+ | |||
+ | function finishCallback(){ | ||
+ | } | ||
+ | |||
+ | var parser = new ASCParser(); | ||
+ | parser.addEventListener("onstart", startCallback); | ||
+ | parser.addEventListener("onparse", parseCallback); | ||
+ | parser.addEventListener("onfinish", finishCallback); | ||
+ | |||
+ | parser.load(somePath); | ||
+ | |||
</pre> | </pre> | ||
Revision as of 16:05, 23 November 2010
Contents
Releases
A cross-browser JavaScript tool which will emulate Arius3D's PointStream viewer. It will be able to quickly render a large amount of point cloud data to the <canvas> tag using WebGL.
XBPS 0.1
XBPS 0.2
XBPS 0.3
XBPS 0.4
XBPS 0.4.5 [Only Lib | Full]
XB PointStream Dev Links
3D Image Gallery
Blogs
Specifications
LightHouse
Github
Twitter
YouTube Videos
Development Resources
WebGL Specification
WebGL Cheat Sheet
OpenGLES 2.0 man pages
Parser Interface
/* Add an event listener to the parser. Once the event occurs, the parser will call the associated function and pass in a reference to itself. The parser needs to pass itself back to the library since the library could be working with many parsers simultaneously. @param {String} eventName - can be one of the following: "onstart" - must occur exactly once - func(parser) "onparse" - must occur one or many times - func(parser, {"VERTEX":[...], "COLOR":[...], etc...} "onfinish" - must occur exactly once - func(parser) "hook" - ? @param {Function} func - the function to call when the event occurs. */ addEventListener(eventName, func) /* Begins to load the resource @param {String} path - path to resource */ load(path) /* Get the version of this parser. @returns {String} parser version */ getVersion() /* Get the number of points which have been parsed. @returns {Number} the number of points parsed so far by the parser. */ getNumParsedPoints() /* Get the total number of points in the point cloud, including points which have not yet been parsed. @returns {Number} the total number of points in the resource or -1 if unknown. */ getNumTotalPoints() /* Get the progress of the parser, how much it has parsed so far. @returns {Number} value from 0 to 1 or -1 if unknown. */ getProgress() /* The size of the resource in bytes. @returns {Number} the number of bytes in the resource or -1 if unknown. */ getFileSize() /* This example only demonstrates syntax. It hasn't been tested. */ function startCallback(parser){ alert( "Using parser version: " + parser.getVersion(); } function parseCallback(parser){ parser.getProgress(); parser.getNumParsedPoints(); parser.getFileSize(); parser.getNumTotalPoints(); } function finishCallback(){ } var parser = new ASCParser(); parser.addEventListener("onstart", startCallback); parser.addEventListener("onparse", parseCallback); parser.addEventListener("onfinish", finishCallback); parser.load(somePath);
Performance Issue Ideas
- Spatially partition point cloud into Bounding volume hierarchy and do bounding volume frustum culling
- Do static rendering
- Render low LOD when rotating point cloud
- Push as much as we can to CPU and GPU
- Use progressive "mesh" optimization to render objects if they are far from the camera
- Allow user to control LOD
- Stream point cloud, dynamically create and merge bounding volumes
- Pre-create Bounding volume hierarchy