🗣 Join our community:
F3D Community is welcoming to users and developers alike!
Ask questions, gets involved and starts contributing in a beginner-friendly environment.
❤️ Sponsor F3D:
F3D is open source and needs your support!
Many thanks to all our one time sponsors!
Much love to our monthly sponsors for this release ❤️
NGIZeroCore | LambdaTest-Inc | OpenDroneMap
@jgod @exbluesbreaker @parkerlreed @Saijin-Naib @CriticalPoint
⚗️ New Alembic Features!
F3D is now able to read Xform animations and Curves from the alembic format!
🇨 C bindings
The libf3d now have C bindings for complete intercompatibility
with other languages:
https://f3d.app/docs/next/libf3d/LANGUAGE_BINDINGS#c
Here is a quick prototype of Julia binding that uses the libf3d C bindings:
https://github.com/joa-quim/F3D.jl
🔃 Complete examples
We now have libf3d examples for:
- C bindings
- Python bindings
- Java bindings
- C++ bindings with multiple usecase
- FLTK
- Qt6
- QML
See how easy it is to create your own app using the libf3d!
// Load static/native plugins
f3d::engine::autoloadPlugins();
// Create a native-window engine
f3d::engine eng = f3d::engine::create();
// Modify options using the struct API
f3d::options& opt = eng.getOptions();
opt.render.grid.enable = true;
opt.render.show_edges = true;
// UI overlays: axis + some HUD
opt.ui.axis = true;
opt.ui.fps = true;
opt.ui.animation_progress = true;
opt.ui.filename = true;
// FXAA + tone mapping
opt.render.effect.antialiasing.enable = true;
opt.render.effect.antialiasing.mode = "fxaa";
opt.render.effect.tone_mapping = true;
::AddCustomCommands(eng);
::AddCustomBindins(eng);
try
{
// Add a model to the scene
eng.getScene().add(file);
}
catch (const std::exception& e)
{
std::cerr << e.what() << '\n';
}
// Start interaction loop
eng.getInteractor().start();
📝 Complete changelog
For F3D users:
- BEHAVIOR CHANGE: Changed the behavior of gaussian point sprites, it now require the use of
--point-sprites-absolute-size - BEHAVIOR CHANGE: Changed the default configuration for alembic to NOT display scalar by default
- Added a CLI option to control if point sprites should be scaled or not:
--point-sprites-absolute-size - Added HDRI filename display CLI option and interaction (
Shift+N) (thanks @exbluesbreaker !) - Added progress support to QuakeMDL importer (thanks @Hy-LeTuan !)
- Added point sprites modes switch interaction (
O) - Added console auto completion for all libf3d options with a domain and filepath (thanks @skusel !)
- Added support for Alembic XForm animation (thanks @Ni-g-3l !)
- Added an interaction to play animation backward:
Ctrl+Shift+Space(thanks @Ni-g-3l !) - Added a console command to play animation backward:
toggle_animation_backward(thanks @Ni-g-3l !) - Added support for importing Alembic file with curves (thanks @Ni-g-3l !)
- Added a
jump_to_framecommand (thanks @Ni-g-3l !) - Added axes and grid color configuration with a CLI option
--x/y/z-color(thanks @snoyer @vincenzonetti !) - Added proper support for composite data (thanks @noclone !)
- Added an interaction to change the up direction
Ctrl+YandCtrl+Zand dynamic up support (thanks @noclone !) - Improved the documentation on https://f3d.app (thanks @pravvvv @ArchiePayne @Ni-g-3l )
- Improved style of progress and animation bar to fit F3D style (thanks @Ni-g-3l !)
- Improved color logging (thanks @snoyer !)
- Reduced VRAM usage of antialiasing and HDRI rendering
- Fixed an issue where the camera would reset after volume rendering (thanks @exbluesbreaker !)
- Fixed multiple issue with temporal anti-aliasing
- Fixed an issue with parsing
noneCLI options - Fixed small issues with the event loop
- Fixed a blending issue with external rendering context
- Fixed an issue with display of
Ctrl+Shift+bindings (thanks @Ni-g-3l !) - Fixed many memory issues in QuakeMDL reader (thanks @iommu !)
- Fixed an issue with elevation and azimuth options (thanks @snoyer !)
- Fixed a small display issue in the cheatsheet
- Deprecated
--anti-aliasing-modein favor of simply--anti-aliasing - Deprecated
--point-sprites-typein favor of simply--point-sprites - MacOS: Fixed a native window focus issues (thanks @arcticsixxx !)
- MacOS: Added a native file menu (thanks @arcticsixxx !)
For libf3d users:
- Added HDRI filename display option
ui.hdri_filename(thanks @exbluesbreaker !) - Added an option to control if point sprites should be scaled or not
model.point_sprites.absolute_size - Added x/y/z axis color options
ui.x/y/z_colorto control the color of the axis widget and grid (thanks @snoyer @vincenzonetti !) - Added a
interactor::requestStopAPI for asynchronous loop stopping (thanks @snoyer !) - Added a
logAPI to forward log instead of displaying them - Added C bindings (thanks @noclone !)
- Fixed potential crash when using
interactor::trigger*methods (thanks @Samarthi !) - python: Added many libf3d usage examples (thanks @noclone !)
- python: Removed Python 3.9 wheel support
- python: Fixed stubs for better auto completion (thanks @snoyer !)
- python: Fixed multiples tests that were not run (thanks @snoyer !)
- python: Fixed an issue when setting a double option from ints (thanks @snoyer !)
- python: Created a dedicated helper repository: https://github.com/f3d-app/python-f3d-extras (maintained by @snoyer !)
- wasm: Added typescript support
- java: Improved the bindings to cover almost the whole API (thanks @noclone !)
- examples: Completely reworked the examples with new and details examples in C++ (thanks @noclone !)
- examples: Added a complete Qt6 examples (thanks @noclone !)
- examples: Added a complete Qml examples (thanks @noclone !)
- examples: Added a complete Fltk examples (thanks @noclone !)
- examples: Added C example (thanks @noclone !)
- examples: Added Java example (thanks @noclone !)
For F3D packagers:
- Removed compatibility with VTK <= v9.2.6. VTK v9.3.0 is the new minimum version.
- Added
F3D_BINDINGS_CCMake option to build the C bindings, no dependencies
For Web viewer users:
- Added support for gaussian splatting
- Added console support
- Improved color theme
Many thanks to our returning contributors for this release, they are the life of this community!
@exbluesbreaker @skusel @Ni-g-3l @snoyer @ArchiePayne
Thanks to our contributors for this release!
@Hy-LeTuan @vincenzonetti @iommu @arcticsixxx @Samarthi @pravvvv
Thanks to our packagers that help F3D reach a wider audience!
AndnoVember @kylosus @kevinsmia1939 @yurivict @bcdarwin @svenstaro @mzf-guest @papoteur-mga @berolinux @topazus @thierry-FreeBSD @xiota @alerque @chenrui333 daviddavid @kazzarin @StarsbySea @cho-m @adisbladis @Aleksanaa @pbsds @DimStar77 @AngryPenguinPL @strophy @SokolovValy @xiota @UnownPlain @Saijin-Naib
Credits
- Hairy Monkey by @Ni-g-3l
- Cave Wall HDR by Greg Zaal


