ObjReader Community
ObjReader & 3D Collection => Get ObjReader & Documentation => Topic started by: Patrice Terrier on October 12, 2026, 06:12:02 pm
-
ObjReader 5.00 - sneak preview
Skeletal animation comes to OR
Until now, OR animated meshes with its own .mtl directives (#rotate, #pulse, #inflate, #move...).
Version 5.00 adds true bone / skin animation, the same kind you see on Sketchfab,
fully computed on the GPU, while keeping the Wavefront spirit of OR.
How it works
- orbtool converts an animated .glb into the usual .orb + .mtl, and when the GLB has a skin, it also writes a small sidecar: <model>.mtls (material skin)
- The .mtls holds the skeleton, the vertex weights and all the animation clips, LZNT1 compressed
- The .mtls file is the switch: when it sits beside the .orb, the model comes alive; remove it and you are back to the static model
- It never interferes with the existing directives nor with the Animation checkbox
Animation > Skeletal Animation
- The first clip starts automatically, as on Sketchfab
- The submenu lists every clip found in the file (Mixamo Walk, Idle, Running... for the astronaut)
- Pause holds the current pose
- New global directive to choose the starting clip:
#skeletal 2
Works everywhere in OR
- All render modes: Blinn, normal map, inspection, Minnaert, Gooch, Toon, X-ray, fancy texture modes, wireframe overlay
- Audio sync, .shc and .fs backgrounds
- Export .ORB to .MTL/.OBJ now keeps the animation: the exported .obj and the .orb rebuilt from it walk exactly like the original
- Reload model works as expected
Shader backgrounds: save the view
- New File > Save shader pose to mtl file (enabled only while a .shc background is running)
- The shader orientation (iMouse) is stored in the .mtl, independent of the window size:
#wallpaper @73tGzB.shc
#shaderpose 0.2315 0.3860- It is restored at load, with or without MouseON
Still OR
- Native C/C++, Win32 SDK
- The whole skeletal animation engine (CPU bone evaluation + GPU skinning + menu) adds about 10 KB to the binary: OR 5.00 weighs 335 KB
- Totally optional: models without a .mtls behave exactly as before
Test lab: the Mixamo astronaut (538,589 vertices, 72 bones, 3 clips), walking in front of an audio-synced .shc sky.
Download the Sneak preview (https://www.zapsolution.com/FreeBasic/OR_5.00.zip)
Unzip, then use RunMe.bat
-
ObjReader 5.00 - What's new
(https://www.zapsolution.com/FreeBasic/HELMET.ORB.png)
SKELETAL ANIMATION (new)
- Bone / skin animation for Wavefront-based .orb models, computed on the GPU (works like Sketchfab).
- New sidecar file <model>.mtls ("material skin"): skeleton, vertex weights and animation clips, LZNT1 compressed.
- The .mtls file is the switch: present = animated, absent = static model.
- Totally optional: models without a .mtls behave exactly as before; never interferes with the existing .mtl directives (#rotate, #pulse, #inflate, #move) nor with the Animation checkbox.
- Animation > Skeletal Animation menu: one line per clip found in the file, plus Pause. The first clip starts automatically.
- New global .mtl directive:
#skeletal n (1..n, clip to play first)- Works in every render mode: Blinn, normal map, inspection, Minnaert, Gooch, Toon, X-ray, fancy texture modes, and the wireframe overlay (skinned lines).
- The whole engine adds about 10 KB to the binary.
(https://www.zapsolution.com/FreeBasic/ASTRONAUT.ORB.png)
ORBTOOL (GLB -> ORB converter)
- Reads skins and animations from .glb files (joints, weights, inverse bind matrices, clips).
- Writes <model>.mtls automatically whenever the .glb has a skin (no command-line switch).
EXPORT .ORB TO .MTL/.OBJ
- The export now keeps the skeletal animation: <target>.mtls is written beside the .obj.
- Loading the exported .obj animates it; the .orb that OR then builds from it gets its own .mtls, so Reload works too.
SHADER BACKGROUNDS (.shc)
- New native SHC renderer, synchronized with the same audio as the 3D model.
- Old .fs animated backgrounds are converted to .shc on the fly: existing projects keep working.
- Drag and drop of .shc files and of any audio file, on the fly.
- New File > Save shader pose to mtl file (enabled only while a .shc background runs).
- New .mtl directive:
#shaderpose x y (shader orientation, kept in any window size or full screen)Restored at load, with or without MouseON.
- Fix: no freeze when switching shaders while a video shader (WebView2) is playing.
COMPATIBILITY / FIXES
- Intel GPUs: model shaders no longer fail to compile.
- No more silent crash on exit (0xC015000F), fixed in WinLIFT64.dll. Also fixes every other WinLIFT-based application.
- Double-click on an .orb file in Explorer loads the model again.
- Cleaner exit: OpenGL resources released while the windows still exist.
- Sync timer no longer spins a CPU core when idle.
- ListViews: last row no longer truncated, no more horizontal scrollbar.
SIZE (byte hunting)
- CRT and STL removed from ObjReader.
- Binary from 536 KB down to about 335 KB, skeletal animation included.
Special thanks to UEZ for testing on Intel hardware and for spotting the silent crash on exit.