Releases: f3d-app/f3d
Nightly
v3.5.0
🗣 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
🤖 Created an Android version!
You can now use F3D on your android phone and tablet!
Just download the .apk and start viewing datasets!
🏡 Added IFC support
F3D now support .ifc format thanks to web-ifc library!
With thumbnails too of course.
🚰 Stream and pipe support
Integrate f3d in your complex scripting workflows seamlessly.
The libf3d is also able to read files from streams.
import sys
from build123d import Box, Cylinder, export_brep, export_step
from OCP.BRepTools import BRepTools
obj = Box(2, 2, 1) - Cylinder(0.5, 2)
BRepTools.Write_s(obj.wrapped, sys.stdout.buffer)
python script.py | f3d - --output=- | display
☁️ Added support for many point cloud formats
View your point clouds easily easilly, .las, .laz and many more.
🪟 UI improvements
Notifications on each change: ✅
Scene hierarchy UI to select the part you want to show: ✅
Searchbar on top of the cheatsheet: ✅
📝 Complete changelog
For F3D users:
- Created an Android version
- Moved macOS binary package to macOS 14 framework.
- Added support for writing multiple images when using
--outputwith a file containing animations (thanks @noclone @snoyer !) - Added a
--display-depthoption to display the depth image (thanks @AoGao-Kedoka !) - Added a
--checkerboardoption to display a checkerboard texture to check UVs (thanks @Ni-g-3l !) - Added a
--scene-hierarchyoption and interactive bind (Shift+H) to show a hierarchy widget that let enabling/disabling actor visibility (thanks @Medyan-Naser @snoyer !) - Added a
--normal-glyphsoption to show normals as arrow glyphs (thanks @ArchiePayne !) - Added a
--notificationsoption and interactive bind (Ctrl+K) to enable/disable notifications, which shows a widget whenever an interactive bind is pressed (thanks for the prototype @davidwuluetang !) - Added a
--dpi-awareoption to rescale font automatically on HiDPI screens (Windows only) (thanks @davidwuluetang !) - Added a
webifcplugin to add support for .ifc files (thanks @noclone !) - Added a
pdalplugin to add support for many point cloud formats, including .las and .laz (thanks for the prototypes @Husamm @RealEdwardS !) - Added support for jumping to keyframes using
jump_to_keyframecommand (thanks @Ni-g-3l @CLBRITTON2 !) - Added support for CPU sorting for gaussian splat (
--blending=sort_cpu), which enable gaussian splats on macOS - Added support for images formats (.png, .jpg, .hdr, .exr, ...) (thanks @noclone !)
- Added a 2D interaction mode (
--interaction-style=2d), used by default for images (thanks @noclone !) - Added a
--font-coloroption to set the font color (thanks @JaimeNA !) - Added a
print_config_infocommand to print info about the current config file in use (thanks @atharvRsharma @NaniNoni !) - Added new arguments to
set_cameracommand:back,bottom, andleft(thanks @v999dka !) - Added stream and pipe support, eg:
cat file.glb | f3d - - Added more point sprites types, eg:
cross,circle, and more - Added support for rendering non-PBR format as PBR
- Added a searchbar on the cheatsheet (thanks @noclone !)
- Added support for f3d colors in options (eg:
f3d_white) (thanks @Prospect138 !) - Improved temporal anti aliasing performance and correctness (thanks @AoGao-Kedoka !)
- Improved shell completions by reworking the whole CLI option system (thanks @skusel !)
- Improved alembic animation performance (thanks @vincenzonetti !)
- Fixed documentation issues (thanks @skusel @snoyer @ColtonLeighton @ferdnyc !)
- Fixed a potential segfault when parsing colors in options
- Fixed a crash with certain .vrml files (thanks @iommu !)
- Fixed an issue with axes grid not properly centered on data (thanks @cuongdv-20 !)
- Deprecated
--interaction-trackballin favor of--interaction-style=trackball
For libf3d users:
- Reworked the Qt/QML example from scratch in order to make it work properly (thanks @InikOfDoom !)
- Reworked java and python binding for the
sceneaddandaddBufferAPI - Added missing interaction modifiers in examples (thanks @noclone !)
- Added an API to recover animation keyframes (thanks @Ni-g-3l !)
- Added an API to recover animation names (thanks @iommu !)
- Added (partial) exception support to the C bindings (thanks @AoGao-Kedoka !)
- Added webp support to our npm package
- Added
ui.font_coloroption to set the font color (thanks @JaimeNA !) - Added
render.effect.display_depthoption to display the depth image (thanks @AoGao-Kedoka !) - Added
model.checkerboard.enableoption to display a checkerboard texture to check UVs (thanks @Ni-g-3l !) - Added a
ui.scene_hierarchyoption to show a hierarchy widget that let enabling/disabling actor visibility (thanks @Medyan-Naser @snoyer !) - Added a
model.normal_glyphs.enableoption to show normals as arrow glyphs (thanks @ArchiePayne !) - Added a
ui.font_coloroption to set the font color (thanks @JaimeNA !) - Added a
interactor.styleoption to control interaction style, including2dmode (thanks @noclone !) - Added a
ui.notifications.enableandui.notifications.show_bindingsoptions to enable/disable notifications and bindings, which shows a widget whenever an interactive bind is pressed - Added a
ui.dpi_awareoption to rescale font automatically on HiDPI screens (Windows only) (thanks @davidwuluetang !) - Deprecated
interactor.trackballoption in favor ofinteractor.style(thanks @noclone !)
For F3D packagers:
- Updated all vendored dependencies
- Updated all external depencencies in CI and shipping system
- Added a new optional dependency:
clip, to enable withF3D_MODULE_CLIPCMake option, no effect for now - Added a new optional dependency:
web-ifc, to enable withF3D_PLUGIN_BUILD_WEBIFCCMake option, add thewebifcplugin - Added a new optional dependency:
pdal, through VTK IOPDAL module, to enable withF3D_PLUGIN_BUILD_PDALCMake option, add thepdalplugin - Fixed an issue on FreeBSD with the logic to detect exectuble using sysproc (thanks @bapt !)
For Web viewer users:
- Used the stream feature from the libf3d for drastic performance improvements
- Removed support for non-stream supporting formats
- Added .3mf and .dxf support
- Added .ifc support
Many thanks to our returning contributors for this release, they are the life of this community!
@AoGao-Kedoka @snoyer @Ni-g-3l @Medyan-Naser @ArchiePayne @skusel
Thanks to our contributors for this release!
@noclone @davidwuluetang @Husamm @RealEdwardS @CLBRITTON2 @JaimeNA @atharvRsharma @NaniNoni @v999dka @Prospect138 @vincenzonetti @ferdnyc @ColtonLeighton @InikOfDoom @bapt @iommu @cuongdv-20
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 @Saijin-Naib @bapt @UnownPlain
@UnownPlain
Credits
- ifcSampleFiles
- Table Mountain 1 HDRI by Greg Zaal and Rico Cilliers
- red-rocks_flats BSD-3-Clause : Copyright (c) 2025, Hobu, Inc.
v3.5.0-RC3
v3.5.0-RC3
v3.5.0-RC2
v3.5.0-RC2
v3.5.0-RC1
v3.5.0-RC1
v3.4.1
🗣 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
v3.4.1-RC1
v3.4.1-RC1
v3.4.0
v3.4.0-RC2
v3.4.0-RC2
v3.4.0-RC1
v3.4.0-RC1
