Recent Posts

Pages: [1] 2 3 ... 10
1
Get ObjReader & Documentation / Re: ObjReader 4.00 - the .ORB challenge
« Last 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.)



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
  • The embeddable runtime of ObjReader (Win64).
  • Owns the renderer, model loading (.orb, .obj/.mtl), animation timer, and optional audio sync.
  • You supply the top-level window and message loop; the DLL creates and manages its child viewport.

Why v3.10 matters,  native .ORB compatibility
  • Cuts startup time (no text parsing/reindexing).
  • Reduces disk size for large meshes.
  • Simplifies packaging: ship model.orb + textures in the same folder.
Your code can prefer .orb and automatically fall back to .obj when needed.

Typical integration flow
  • Create your main window (CreateWindowExW).
  • Call OR_CreateWindow(...) to create the viewer child HWND.
  • (Optional) OR_SetSwapInterval(TRUE) for V-sync, OR_TimerEnable(TRUE) to animate.
  • Load a file via:
Code: [Select]
OR_ProcessCommandLine(L"path\\to\\model.orb");
  • On WM_SIZE, resize the child window.
  • Populate your UI with getters (OR_Vertices(), OR_Triangles(), …).
  • Offer controls: OR_ViewReset(), OR_Get/SetAudioVolume(), OR_Screen_Shot().
  • On exit, call OR_CloseAll().
API at a glance (what you’ll actually use)
  • Create/host: OR_CreateWindow, OR_CloseAll
  • Open model: OR_ProcessCommandLine (accepts .orb and .obj)
  • Animation & timing: OR_TimerEnable, OR_GetAniTick
  • Display options: OR_SetSwapInterval, OR_ViewReset, OR_Screen_Shot
  • Info for UI:
    • OR_Version, OR_ObjFileName
    • OR_Vertices, OR_Triangles, OR_Indices
    • OR_Meshes, OR_Materials, OR_ObjSize, OR_LoadTime
    • OR_DetectGPU, OR_GPUinfo, OR_GPU, OR_CPU
  • Audio: OR_GetAudioVolume, OR_SetAudioVolume
Attachment
  • ORV_64 Version 3.10, is attached to this post.
2
Get ObjReader & Documentation / ObjReader 4.00 - the .ORB challenge
« Last 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
  • PNG thumbnail — preview of the model (visible in Windows Explorer thumbnail view).
  • Header — a small block storing internal offsets to each data section.
  • Compressed geometry — mesh data matching the source Wavefront OBJ.
  • Compressed MTL trailer — verbatim copy of the original .mtl file, stored at the end.
Compression: to avoid extra dependencies, .orb uses Windows’ built-in LZNT1 (NTDLL, LZ77-based). No external DLL required.

Explorer thumbnail

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:
  • Geometry, materials, and textures actually loaded
  • Camera position and FOV
  • Active lighting preset and background
  • The model’s current pose/orientation
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
  • File association: .orb is registered to launch ObjReader directly from Explorer.
  • ObjReader 4.00 size: the new executable is 14 KB smaller than v3.00+, thanks to aggressive code optimization and compiler settings.
  • ORDLL64 / ORV64: ORV64 and ORDLL64.dll are updated to understand .orb directly; ORV64 can open .orb even if no .mtl is present on disk.
Round-trip compatibility
  • Export from .ORB: ObjReader adds a menu option: File ? Export .ORB to .MTL/.OBJ.
  • Console tool: orbtool.exe provides standalone compile/decompile:
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
  • Smaller files on disk.
  • Faster loads in memory.
  • No extra runtime dependencies (uses Windows’ own LZNT1).
  • Still Wavefront-compatible (verbatim .mtl preserved; lossless geometry).
Overall performance
  • Disk space: ~50% of the original OBJ/MTL size (typical).
  • Loading speed: Up to 10× faster on large models (no text parsing; contiguous, precompiled geometry).
...
Attachments
  • ObjReader Version 4.00, is attached to this post.
  • Orbtool console utility, is attached to this post.
3
Get ObjReader & Documentation / Version 4.00 is around the corner
« Last post by Patrice Terrier on August 12, 2025, 10:16:34 pm »
Version 4.00 is around the corner


New in 4.00: ObjReader now creates and uses the .ORB format.

📦 What is .ORB?
The “B” stands for Binary
.ORB is a compiled, binary version of a Wavefront .OBJ (and its .MTL), built on the fly by ObjReader. 
Reloads are near-instant because text parsing is no longer needed.

✨ Highlights
  • First-ever .ORB support — automatic compile from .OBJ/.MTL to a single binary file.
  • Explorer integration
       
    • .ORB is associated with ObjReader — double-click filename.orb in Explorer to launch ObjReader.exe.
         
    • Embedded PNG thumbnail — Explorer shows a preview thumbnail directly from the .ORB.
         
  • Fast loading — geometry, attributes, and materials are prepackaged for immediate use.
  • Material preservation — original .MTL references are retained and restored.
  • Robustness — safer handling for edge-case OBJ/MTL inputs.
4
Eye Candies / Re: Of The Bay (version 3.00)
« Last post by Patrice Terrier on July 29, 2025, 07:51:22 pm »
OfTheBay (OTB) – A modern FreeBASIC desktop dock bar



"OfTheBay" (OTB) is a lightweight, high-performance dock bar launcher developed in FreeBASIC 64-bit Unicode
It creates a visually appealing Mac-style dock along the bottom of the screen using layered windows and smooth GDI+ rendering.

Key features:
  • Fully skinned dock bar with per-pixel alpha blending (PNG + GDI+)
  • Supports both desktop shortcuts and taskbar-pinned entries
  • Pinned shortcuts are marked with a small overlay icon ("Pin.png") at top-left
  • Shortcuts automatically loaded from:
   - Desktop (Admin + Public)
   - Taskbar pinned folder (%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar)
  • Dynamic sizing and layout based on number of entries
  • Right-click anywhere on the dock to show the contextual popup menu
  • Can optionally hide desktop shortcut icons for a cleaner workspace
  • Automatic icon extraction from ".lnk", ".url", ".exe" targets
  • Fallback to custom icons when extraction fails (e.g. "Unknown.png")
  • Fast runtime execution with no dependencies beyond GDI+ and shell APIs
  • Final EXE size: ~140 KB (without UPX), under 60 KB with TCLib for the C/C++ version

Technical highlights:
  • Written entirely in procedural FreeBASIC (no classes, no external DLLs)
  • Shell integration via IShellLinkW and SHGetPathFromIDList
  • Support for ".lnk", ".url", and ".exe" entries using direct file scanning
  • Optional pin overlay uses "Pin.png" drawn over "UseFrame.png" on pinned entries
  • All rendering uses GDI+ with premultiplied alpha and layered window styles
  • Memory-efficient: dynamically manages all icon resources and bitmap handles
  • Clean startup/shutdown sequence, fully integrated with Windows environment

Usage tips:
  • Hover over icons to see labels and activate zoom animation
  • Click to launch
  • Right-click to open the context menu with OTB commands
  • To clean up your desktop, just enable "Hide Desktop Shortcuts" from the menu

Built and tested on: Windows 10 and Windows 11 (64-bit)

Made with ❤️ using FreeBASIC and native Windows API.

Demo and source code will be shared soon.
5
Eye Candies / Of The Bay (version 4.00)
« Last post by Patrice Terrier on July 25, 2025, 01:57:36 pm »
Andrey,

I have converted OfTheBay to work with VS2022, and TCLib.lib.

And now the binary size is only 47 Kb!
6
64-bit SDK programming / Re: APNG Viewer
« Last post by Patrice Terrier on July 24, 2025, 02:22:51 pm »
The project has been updated to link with TCLib.lib to reduce the size of the binary EXE down to 13 Kb, including the icon!

The FreeBasic 64-bit version is here.
7
64-bit SDK programming / APNG Viewer
« Last post by Patrice Terrier on July 23, 2025, 09:52:27 am »
Reading and Writing APNG (Animated PNG) Made Simple

Handling APNG files — both reading and writing — has always been a challenge.
This clean application provides a streamlined solution for both.

💡 Usage 
Just drag and drop any image onto the window.
The application automatically detects the format and processes it accordingly:

  • Native APNG files
  • GDImage PNG animations
  • Horizontal stride images (multi-frame strip in a single PNG)
The animation is parsed, displayed, and optionally re-encoded using the new internal APNG API.

🛠️ What’s included 
The complete 64-bit Visual Studio 2022 source code is attached to this post.
It demonstrates how to load, display, convert, and rebuild animated PNGs with precision and full control.

Flowchart overview




And a working APNG example






8
WIP / Re: Questions or comments about the PNG Animation format
« Last post by Patrice Terrier on July 22, 2025, 06:49:16 pm »
I have now added full support to the APNG format (reading/writing).
If interrested to check it, then let me know.

Here is an example of APNG produced with this new API:
(Fully supported by most modern browsers.)


9
The concept / Re: WinLIFT 64-bit 7.00 (is attached to this post)
« Last post by Patrice Terrier on June 20, 2025, 02:11:16 pm »
The Release_7.00.7z archive, attached to the first post of this thread, has been updated with a new version of WinLIFT64.dll.

Latest build of Windows 11, has changed its memory management expectations silently in newer OS builds.
— without warning or documentation updates.

The region was not released by DWM, causing a GDI handle leak every time ZI_DwmEnable() was called.

10
The 3D Model Collection / Alpine A480 Le Mans
« Last post by Patrice Terrier on February 26, 2025, 10:02:20 am »
Alpine A480 Le Mans

This work is based on "Alpine A480 Le Mans Hypercar | www.vecarz.com"
The original model can be found here:
https://sketchfab.com/3d-models/alpine-a480-le-mans-hypercar-wwwvecarzcom-159929c503fc4cd1be443c71b92ef533

It has been reworked with C4D R21 to match the OR shader requirements.












Pages: [1] 2 3 ... 10