Check out what’s coming!
I’m working on some great new features for our 0.5 release of XB PointStream: Parser plug-ins, Shader plug-ins and a much needed matrix stack.
We anticipate many users will use proprietary file formats which contains their point cloud data. We have an .ASC parser, but many other point cloud file formats exist. So we will allow users to register their custom parser with our library, which will then be responsible for feeding in a stream of vertices and vertex attributes into XB PointStream. I’m still working out the final implementation details, but here’s a rough set of functions users will need to write.
Some users may want to render only vertices and colors. Others may want to render with realistic lighting or possibly non-photorealistic effects. To accommodate for these cases I have added some functions which allows users to create program objects and set their uniform values.
Users will be responsible for creating their shaders, which gives them total freedom in how they want the final result to appear. I have simplified the XB PointStream built-in shader and optimized it for speed. If users require anything more than just rendering vertices and colors, they will need to override the default program object.
One issue with this is the library sets the model view and projection matrices. But the user needs to define them in the vertex shader. The easiest solution I came up with is requiring the user to define the basic transformation matrices as “ps_ModelViewMatrix”, “ps_ProjectionMatrix” and “ps_NormalMatrix”, much like OpenGL.
While working on some demos, I found that trying to create object hierarchies was awkward. So I added a few public functions to manipulate the XB PointStream matrix stack. This will allow users to easily create and manage hierarchical transformations. This is demonstrated in the first example above.