ObjReader Community

ObjReader & 3D Collection => Get ObjReader & Documentation => Topic started by: Patrice Terrier on August 25, 2025, 12:18:51 pm

Title: ObjReader 4.00 - the .ORB challenge
Post by: Patrice Terrier on August 25, 2025, 12:18:51 pm
ObjReader 4.00 - the .ORB challenge

TL;DR: A compact binary format for Wavefront models that loads faster, takes less disk space, needs no extra DLLs, and stays fully compatible with OBJ/MTL.

What is .ORB?
.ORB = ObjReader Binary. It’s a compound file format for ObjReader that preserves Wavefront OBJ/MTL compatibility while dramatically reducing size and load time.

File layout
Compression: to avoid extra dependencies, .orb uses Windows’ built-in LZNT1 (NTDLL, LZ77-based). No external DLL required.

Explorer thumbnail
(http://www.objreader.com/download/images/ORB_thumbnail.png)
The thumbnail embedded in a [.orb] file is created the first time you open the model in ObjReader.
ObjReader renders the current viewport with its OpenGL pipeline (gl_DrawScene) and stores that live capture as the file’s preview.

What it reflects:
Why it matters: it lets you recognize models at a glance in Explorer and file pickers. The thumbnail is only a preview—it does not affect the model data.

Integration
Round-trip compatibility
Compile  (OBJ ? ORB): orbtool -c <input.obj> -o <output.orb>
Decompile(ORB ? OBJ): orbtool -x <input.orb> -o <outputBase>
     (produces <outputBase>.obj and <outputBase>.mtl)


Why this is good
Overall performance
...
Attachments
Title: Re: ObjReader 4.00 - the .ORB challenge
Post by: Patrice Terrier on August 26, 2025, 12:23:06 pm
About ORV_64 v3.10
(sample app for embedding ObjReader via ORDLL64.dll.)

(http://www.objreader.com/download/images/ORV64.png)

What it is
ORV_64 is a complete C/C++ (VS2022, x64) example that hosts the ObjReader engine through ORDLL64.dll.
The DLL exposes a focused C API, just enough to create a viewer window, load a model, animate it, and query stats.
So you can render ObjReader content inside your own application UI.

What ORDLL64.dll is

Why v3.10 matters,  native .ORB compatibility
Your code can prefer .orb and automatically fall back to .obj when needed.

Typical integration flow
Code: [Select]
OR_ProcessCommandLine(L"path\\to\\model.orb");API at a glance (what you’ll actually use)
Attachment