Rapid3D Loader for Three.js
Load and render large-scale BIM/CAD models in any browser with Three.js — 7 simple APIs, LOD streaming, and full geometry-to-data correspondence. Free to download and distribute for commercial projects.
The Free "Consumer" in the Rapid3D Pipeline
The Loader reads .opt + .db files produced by the Rapid3D Converter. It is free to download, use, and redistribute — you only pay for the Converter license.
CAD Software
Revit, Bentley, Tekla, Navisworks, SolidWorks, Inventor — export via free plugin
FreeRapid3D Converter
Local conversion & lightweighting → outputs .opt geometry + .db data
Rapid3D Loader
This npm package — loads & renders in Three.js with 7 APIs
Free ForeverOpen formats (IFC, FBX, glTF, STEP, STL, DAE, OBJ…) are opened directly by the Converter — see the Rapid3D Converter page for the full format list.
Performance That Changes What You Can Build
Numbers from real projects — not lab micro-benchmarks on toy models.
Under the Hood: How the Engine Gets There
Six core technologies working together — squeezing every drop of performance out of the network and the GPU.
Multi-Worker Download Queue
Parallel Web Workers fetch and decode model segments concurrently, saturating the network instead of trickling through a single sequential stream. Server-to-browser download time for large models drops dramatically.
Faster network I/OChunk-Based Rendering
The massive scene graph is decomposed into manageable rendering units. Each chunk is submitted as a batch, collapsing draw call overhead even on models with hundreds of thousands of components.
Draw call controlInstanced Rendering
Repeated components — doors, windows, bolts, panels — are rendered once per draw call via GPU instancing. Rendering efficiency for duplicated elements is pushed to the limit.
GPU efficiencyFrustum + Dynamic Culling
The browser never wastes a single pixel rendering objects outside the camera's view — frustum culling removes them before submission. Dynamic culling goes further, discarding objects hidden or irrelevant at runtime.
Zero wasted pixelsOn-Demand Rendering & Draw Caching
Frames are rendered only when something actually changes — a static scene costs almost nothing. Cached drawing reuses previous results for unchanged content, so idle CPU/GPU time goes to your application, not to re-rendering.
Smart frame budgetDistance-Based LOD Swapping
Hierarchical loading with coarse-to-fine model substitution: the engine judges camera distance and dynamically schedules which precision level to stream in and swap. Campus-scale roaming and screw-level inspection both stay silky smooth.
10 GB-scale smoothnessWhy Developers Pick Rapid3D Loader
Everything you need to build a professional BIM/CAD web application — and nothing you don't.
7 APIs. That's the Whole Surface.
Load, navigate, query, clip, measure — the entire loader is exposed through 7 documented API calls. No sprawling API surface to learn, no week-long integration project. Most developers have a model running in the browser within half a day.
Free to Use and Redistribute Commercial OK
The npm package is free for educational, evaluation, and commercial projects — including redistribution inside your own product to your end users. The "reader" is free; only the Converter (the "writer") is licensed.
Geometry-Data 1:1 Correspondence
Every mesh component in the .opt file maps 1:1 to a record in the .db data file. Click a component in the browser → retrieve its full BIM attribute set. The .db is SQLite with a fully documented schema — query it directly from your own backend.
True Three.js Integration
The loader is a Three.js citizen, not a black box. Loaded models are standard Three.js scene objects — extend them with custom meshes, shaders, or post-processing. See the Mesh Extension demo.
LOD Streaming
The Converter pre-builds a coarse-to-fine hierarchy into the .opt file. The loader streams only the LOD level matching camera distance and swaps coarse for fine as you zoom — smooth navigation on gigabyte-scale models without loading everything first. How it works →
Zero Vendor Lock-In on Data
Your attribute data lives in a documented SQLite .db file — not in a proprietary cloud. If you ever stop using Rapid3D, your data remains readable forever. Your application owns the data model, not us.
What Models Can You Load?
The loader reads .opt + .db pairs produced by the Rapid3D Converter. Where the models come from:
6 CAD Platforms via Free Plugins
Revit, Bentley MicroStationCE, Tekla Structures, Navisworks (incl. SP3D & PDMS models), SolidWorks, Inventor. Extracted losslessly via each vendor's official API.
8 Open Formats Directly+.Skp
IFC, FBX, STEP, STL, 3DXML, IGES, DAE, DXF — opened directly by the Converter, no plugin needed.
Your Existing Assets
Anything the Converter supports can become .opt + .db — then it loads here. One conversion, unlimited loads forever.
Downloads & Resources
Everything you need to evaluate — no registration, no sales call required.
npm Package
opt-rapid3d-loader — the loader itself. Free to use and redistribute.
Demo: 7 Basic API Calls & Model Data Read
Runnable example with full source code — the fastest way to see the whole API surface in action.
github.com/opt3ds/Demo7_Basic_API_Calls-Model_Data_ReadDemo: Three.js Mesh Extension
Extend loaded models with custom Three.js meshes and effects — proof that it's a real Three.js citizen.
github.com/opt3ds/Demo_Three.js_Mesh_ExtensionData Dictionary of the .db File
Complete schema documentation for the SQLite attribute database — query it from your own backend, no lock-in.
Download PDFFAQ
Is the Loader really free? Even for commercial products?
.opt + .db files requires a license.
How do I get models into .opt format?
.glzip file; for open formats (IFC, FBX, glTF, STEP, STL, DAE, OBJ, SKP, DXF, 3DXML, IGES) the Converter opens them directly. The free desktop app handles models up to 100 MB — enough to evaluate the entire pipeline end-to-end.
Which Three.js versions are supported?
Can I extend the loaded models with my own Three.js code?
Where does my attribute data live?
.db file with a fully documented schema (data dictionary PDF). The loader queries it locally in the browser via the picking APIs — and you can also query the same file from your own backend. No cloud service in the middle, no proprietary data lock-in.
How big can the models get?
Put a 10 GB Model in Your Browser
Install the loader, grab a demo, and be rendering in 30 minutes — free for commercial use.
Free for commercial use · 7 APIs · Runs entirely in your browser
