LumiDB: The Simplest Possible API for Reality Capture Data
We’re releasing our minimal-yet-powerful runtime API. Whether you’re visualizing in Three.js or exporting data to 3rd party tools, LumiDB is built to make managing reality capture data easy and efficient.
Published on
Do not index
Do not index
We’ve been busy laying the foundations of LumiDB - a database system for reality capture data, such as 3D point clouds - because reality capture data is exploding, and we need modern tools to handle it. We’ve now released the first minimal version of our JavaScript (*) runtime API. You can check it out here. When I say minimal, I really do mean absolutely-barebones-no-frills minimal. After all, if you’re not even a bit embarrassed to release your MVP, you’re shipping too late, right? Still, after working on it full-time for a while, it feels like a major milestone.
So, what did we release? There’s essentially a single API call, creatively dubbed
query()
, which does most of the heavy lifting for you. You provide the spatial boundaries of your area of interest, along with any possible additional filters such as metadata, point class, and so on, and voilà—you get points back. Depending on the specified output format, you can either visualize the points conveniently in Three.js or request a LAZ file for export to any third-party tool. For a correspondingly minimalistic example, you can check out our example Three.js viewer, currently running at a whopping 76 lines of code.Even this simplistic API enables some powerful metadata filtering capabilities. At import, you can specify arbitrary metadata for your input capture files. LumiDB makes this metadata available at runtime, in addition to mapping each point unambiguously to the source file from which it was imported. This allows you to build some powerful capabilities into your application. For example, if you know the capture time of each file, you can ask LumiDB for the IDs of files within a specified time span. Then, you can use this list of source file IDs as a filter in
query()
, and LumiDB will naturally return only the points scanned within that time span. While trivial for a database, this could be really slow or cumbersome when working with individual files.Let me give you another example: dynamic point density. With LumiDB, you can store high-resolution scans in the database and determine the density at runtime using a single parameter in the API. This lets you export the data with the density you need or ensure the resolution for visualization is always correctly balanced between performance and quality.
Here’s yours truly demonstrating some of these concepts using our demo viewer app:
Needless to say, the API is still in its infancy, but we have big plans for creating a tool that makes it easy to harness the full power of reality capture data and turning File Chaos into a relic of the past. If you’d like to ensure our API will work for you, get in touch! We’re building LumiDB together with industry leaders.
(*) Well, TypeScript, really.