01One vocabulary, not six
Bounding boxes, coordinates, transport and octree maths are defined once, in `@voxelkloud/core`, and every other package reads those same definitions. Nothing has to translate between packages, so nothing gets lost translating.
02Point at a URL
`@voxelkloud/loader` works out the format from the address and hands back the same shape whatever it found. Your code has no branch in it for COPC versus EPT versus Potree.
03The scene stays yours
`@voxelkloud/view` drives the GPU, but `view.camera` and `view.scene` are ordinary three.js objects. Add a mesh, move the camera, run your own frame loop — the renderer is a participant in your scene, not the owner of it.
04React and Vue are wrappers, not forks
They handle mounting and unmounting, and nothing else. A feature reaches them the day it lands in the renderer, because there is no second copy of it to update.
05You can see why a frame looks the way it does
Set a target error and a point budget, then read back what actually bound. `stats.limitedBy` says whether it was quality or the budget — so tuning is reading a number, not guessing.
06You ship the formats you read
COPC, EPT, Potree v2, 3D Tiles and the no-index tier are separate installs. Read one format and your bundle carries one reader.
07Click a point, get the point
`pickPoint` turns a screen position into real survey coordinates at full precision, not a rounded guess. `heightAt` answers ground height straight away, with no round trip to a server.
08Two surveys, one scene
Clouds captured in different coordinate systems line up, because `@voxelkloud/wasm-proj` converts between them. Place a whole cloud at once, or convert every point.
09There is a command line too
`voxelkloud` inspects a cloud, tells you whether your server is delivering it properly, converts a file that arrived with no index, and renders a thumbnail without opening a browser.