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

New in version 4.00:

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
...
New in version 4.01:

New in version 4.02:

...
Attachments
Title: ORV_64 Version 3.20 - the .ORB challenge
Post by: Patrice Terrier on August 26, 2025, 12:23:06 pm
About ORV_64 v3.20
(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
Title: About OR Version 4.02
Post by: Patrice Terrier on September 24, 2025, 03:39:47 pm
ObjReader v4.02 released

New material directives, improved navigation, and multiple refinements to both the UI and the .orb workflow.
Make sure to use "File" -> "Load model..." and select the demo project to see the new features in context.

New in version 4.02:

See on top of this thread for new attachments.
Title: Re: ObjReader 4.00+ - the .ORB challenge
Post by: Patrice Terrier on February 18, 2026, 06:31:15 pm
ObjReader / orbtool — New GLB Import Feature

I am pleased to introduce a new capability recently added to orbtool:

Direct .GLB → .ORB conversion

This allows modern asset pipelines (Blender, Maya, etc.) to feed ObjReader without relying on the legacy OBJ stage.

------------------------------------------------------------

Why GLB?

GLB is the binary form of glTF and provides several practical advantages:

• compact binary structure 
• faster parsing 
• embedded geometry, materials, and textures 
• fewer ambiguities than text-based formats 

That said, GLB is NOT intended to become a runtime format inside ObjReader.

ORB remains the native, optimized container designed for fast loading and deterministic behavior.

The workflow is intentionally simple:

Code: [Select]
DCC Tool → GLB → orbtool → ORB → ObjReader

GLB acts as an asset source, while ORB stays the final runtime format.

------------------------------------------------------------

Architecture Notes

• GLB parsing is strictly isolated inside orbtool 
• No glTF code is introduced into the runtime engine 
• ORDLL remains lightweight and rendering-focused 
• CRT-free discipline is preserved 

This separation ensures the viewer stays fast and avoids dependency creep.

------------------------------------------------------------

Early Results

Initial integration shows:

• controlled binary growth 
• stable conversion 
• preserved materials 
• clean mesh extraction 

Further optimizations will follow as the pipeline matures.

------------------------------------------------------------

What This Means

This addition quietly moves ObjReader toward a more modern asset workflow while keeping the engine philosophy intact:

✔ preprocess offline 
✔ load fast 
✔ render immediately 

Exactly what a runtime should do.

------------------------------------------------------------

The latest orbtool version is attached to this post, with its full VS2022 C/C++ source code.
The release folder is provided with a ferrari.glb 3D model for test purpose.

Syntax to convert a .glb into a .orb
orbtool -c ferrari.glb -o ferrari.orb