Japanese
Leave Your Message

Rapid3D Loader for Three.js

High-Performance BIM & CAD Model Loader — Load 10GB+ Models in Seconds

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.

npm install opt-rapid3d-loader

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.

1

CAD Software

Revit, Bentley, Tekla, Navisworks, SolidWorks, Inventor — export via free plugin

Free
→
2

Rapid3D Converter

Local conversion & lightweighting → outputs .opt geometry + .db data

Licensed
→
3

Rapid3D Loader

This npm package — loads & renders in Three.js with 7 APIs

Free Forever

Open 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.

3×
Faster Than Native
Model loading is more than 3× faster than loading the original format with stock Three.js loaders.
<10s
8.7 GB Revit Model
A full 8.7 GB Revit project converts once, then loads in the browser in under 10 seconds — rendering at 55–60 FPS.
380
Draw Calls (from 12,000)
Chunk-based rendering and GPU instancing collapse 12,000 draw calls down to ~380 — smooth on ordinary office hardware.

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/O
🧵

Chunk-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 control
👥

Instanced 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 efficiency
👁

Frustum + 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 pixels
⏱

On-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 budget
🗺

Distance-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 smoothness
Macro to micro, without compromise: whether the camera is flying across an entire campus or zoomed onto a single screw, the LOD scheduler streams exactly the right level of detail — fast loading and a fluid frame rate at every scale.

Why 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.

→ Conversion details, format version tables, and plugin downloads live on the Rapid3D Converter page and the 3D/BIM Export Plugins page.  This page covers the loading & rendering side only.

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.

npmjs.com/package/opt-rapid3d-loader
🌐

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_Read
🛠

Demo: 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_Extension
📄

Data Dictionary of the .db File

Complete schema documentation for the SQLite attribute database — query it from your own backend, no lock-in.

Download PDF

FAQ

Is the Loader really free? Even for commercial products?
Yes. The npm package is free to download, use, and distribute for educational, evaluation, and commercial projects — including shipping it inside your own product to your end users. This is the classic "free reader / paid writer" model: only the Rapid3D Converter that produces .opt + .db files requires a license.
How do I get models into .opt format?
Convert them with Rapid3D Converter. For Revit, Bentley, Tekla, Navisworks, SolidWorks, and Inventor files, install the free export plugin inside the CAD software and export a .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?
The loader is maintained against current Three.js releases and tracks the migration guide. Check the npm README for the exact version compatibility matrix of the latest release. If you are pinned to an older Three.js version, contact us — compatibility ranges are documented per release.
Can I extend the loaded models with my own Three.js code?
Yes — loaded models are standard Three.js scene objects. Add custom meshes, shaders, animations, or post-processing on top. The Mesh Extension demo shows exactly how.
Where does my attribute data live?
In a SQLite .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?
Production models up to 10 GB have been converted and loaded — a full 8.7 GB Revit project loads in the browser in under 10 seconds and renders at 25–30 FPS. That is the combined effect of Draco compression, the multi-worker download queue, distance-based LOD swapping, chunk-based rendering with instancing, and frustum/dynamic culling (see Under the Hood). Practical limits come from conversion-time (Converter side), not from loading or rendering.

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