Repository navigation
FreeCAD file with the new scene hierarchy widget and grid reflection effect.
π£ 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 @SofiaSukh @Olliebrown @TheSofox Gregoire Raison Mark Sanderson
π Animation control
cut.mp4
A new animation bar have been added that let you see the key frames and manipulate the time with your mouse.
π€ Android improvements
The Android application have been completely reworked. Many rendering issues have been fixed, and new widgets have been implemented, including animation control.
π₯ Video export
simplescreenrecorder-2026-10-21_08.51.50.mp4
It's now possible to export animation into a video stream. The stream can be sent over the network or just piped into ffmpeg to generate a video file:
f3d animated_file.glb --output-video=- --resolution=600,600 | ffmpeg -i - out.mp4
βοΈ FreeCAD reader
FreeCAD file (.FCStd) can now be opened with F3D. Parts visibility can be toggle in the scene hierarchy widget (press H)
π HTML custom element
Visualizing your asset online is just as easy as adding this to your HTML file:
<f3d-viewer id="viewer" src="https://f3d.app/data/f3d.glb" />Almost no additional javascript code required, see examples
π Complete changelog
For F3D users:
- BREAKING: Major release, deprecated CLI options have been removed, some CLI options and interactions have been reworked: https://f3d.app/docs/user/MIGRATION
- BREAKING: Removed support for
F3D_PLUGINS_PATHenv var in favor of--plugins-pathCLI option (Thanks @CPerry26 !) - BREAKING: Added an advanced animation bar which is shown by default (thanks @exbluesbreaker !)
- BREAKING: Removed all
cycle_*commands in favor of the newcyclelibf3d provided command - BREAKING: Improved the
jump_to_*commands with newjump_to_frame_relativeandjump_to_key_frame_relativecommands - BREAKING: Reworked the coloring interactions
- BREAKING: Reworked many default interactions, removing niche ones and improving current ones
- Added support for loading and saving statefile though dedicated CLI options and interactive binds (Thanks @noclone !)
- Added support for saving statefile to clipboard using
Ctrl+Cbind - Added support for saving and restoring window size and position (Thanks @noclone !)
- Added support for outputting animation to video using
--video-outputCLI option - Added a
--normal-glyphs-scaleCLI option to control the size of normal glyphs (Thanks @Ryon-Tom !) - Added a grid reflection and a
--grid-reflection=<strength>CLI option to control it - Added a
--grid-opacityCLI option to control the opacity of the grid (Thanks @snoyer !) - Added keyframe control for non-full-scene file formats (eg: VTKHDF) (Thanks @CPerry26 !)
- Added a distinction between unsupported extension and unsupported content (Thanks @Prospect138 !)
- Added
--skip-content-checkCLI option to skip the content check when loading a file (Thanks @Prospect138 !) - Added a
--no-cacheCLI option to disable caching - Added FreeCAD format (.FCstd) support in occt plugin (Thanks @noclone !)
- Added
.amfsupport to assimp plugin - Added support for old
.dxffile format in assimp plugin - Added armature support to assimp formats (.fbx and others)
- Added support for displaying multiple animations for assimp formats (Thanks @exbluesbreaker !)
- Added support for selecting animation keyframes in alembic plugin (Thanks @LuTheDog !)
- Added armature support for OpenUSD format
- Added streaming support for OpenUSD format
- Added GPU-based skinning for OpenUSD format
- Added support for points primitive for OpenUSD format (Thanks @kaili-yang !)
- Added a
USD.resources_pathOpenUSD reader option to select a custom usd plugin.info - Added a
USD.subdivision_levelOpenUSD reader option to control subdivision - Added headless rendering support on Windows
- Added headless rendering support on macOS
- Added support for showing
cmdinstead ofCtrlin cheatsheet on macOS (Thanks @CPerry26 !) - Added support for repeated key binds (Thanks @CPerry26 !)
- Added images in the options doc
- Added proper named color documentation
- Added DPI support on all OSes (Thanks @noclone !)
- Added support for 16bits textures
- Added progress bar in terminal (Thanks @KRook0110 !)
- Added support for copying console output to clipboard
- Fixed a critical issue with PDAL's proj.db that prevented installation of .deb binary package
- Fixed a crash with empty OpenUSD files
- Fixed coloring with unlit and sRGB colors
- Fixed coloring with unlit OBJ files (Thanks @exbluesbreaker !)
- Fixed a PBR coloring issue
- Fixed an issue with depth coloring bar label (Thanks @CPerry26 !)
- Fixed an issue with axes grid rendering and animations (Thanks @exbluesbreaker !)
- Fixed an issue with STEP file not opening
- Fixed an issue with VRML not read correctly (Thanks @iommu !)
- Fixed crashes when reading invalid BMP and HDR data (Thanks @iommu !)
- Fixed an OpenGL error displayed when displaying the FPS counter
- Fixed a small issue with rendering backend detection
- Fixed a performance issue with grid axes rendering
- Fixed grid axes rendering when using screen space anti aliasing
- Fixed a RGBA image comparison issue
- Fixed an issue where opacity map was not updated right away when set from a command
- Fixed an issue with the console not scrolling down when it should (Thanks @12alkry45 !)
- Fixed issues with
--camera-*CLI options not being taken into account properly - Fixed issue with textures not being properly rendered
- Fixed a crash when no rendering backend is available
- Fixed a potential crash with ImGUI initialization
- Fixed lighting intensity control when using an HDRI (Thanks @midaksh !)
- Fixed interactive resizing of the scene hierarchy panel (Thanks @AnikethTS !)
- Fixed a PLY gaussian splatting crash when no spherical harmonics are present
- Fixed a thumbnailer issue on Linux with STEP files
- Fixed non-ASCII text rendering issue in UI
- Fixed a scivis coloring issue with degenerate scalar range
- Fixed an issue with lights initialization
- Fixed an issue with temporal anti aliasing accumulating black dots
- Reduced size of binary package by shipping pdal statically
- Improved gaussian splatting performance
- Improved checkerboard rendering
- Improved documentation, testing and code quality ( Thanks @enjeck (!!!) @CPerry26 @RealEdwardS @crocsg @Ni-g-3l @snoyer !)
- Improved startup performance greatly (1.2s -> 0.3s)
- Improved the occt plugin performance (Thanks @kasturirasekar!)
For libf3d users:
- BREAKING: Major release, deprecated API have been removed, some APIs and options have been reworked: https://f3d.app/docs/libf3d/MIGRATION
- BREAKING: Reworked deeply the coloring option logic
- BREAKING: Reworked the interactor::addBinding API (Thanks @CPerry26 !)
- Added a
model.normal_glyphs.scaleoption to control the size of normal glyphs (Thanks @Ryon-Tom) - Added
scene.skip_content_checkoption to skip the content check when loading a file (Thanks @Prospect138 !) - Added
render.grid.reflectionoption to control the grid reflection - Added
render.grid.opacityoption to control the grid opacity (Thanks @snoyer !) - Added a
mesh_viewAPI to load a dataset from memory without any copy (no binding on Java, and limited support on webassembly) - Added a scene hierarchy AP to control visibility of each nodes in the geometry (Thanks @noclone !)
- Added a
scene::getSceneInfoAPI to recover information about the scene (Thanks @noclone !) - Added a
interactor::setEventLoopUserCallbackinstead of specifying callback instartandplayInteraction - Added a way to recover current timestep in
interactorcallback mechanism - Added a concept of domains (range, enum, index) for options, with a dedicated API (Thanks @snoyer @noclone !)
- Added a
options::getTypeAPI to recover the true type of an option - Added a callback to handled notifications manually
- Added a new API to output to video
- Added a
window::setUseHDRICacheAPI to control HDRI cache usage - Added exception catching in C bindings (Thanks @bo-dani !)
- Added exception forwarding in Java bindings (Thanks @midaksh !)
- Added in-situ zero-copy examples
- Added complete WASM bindings of the libf3d
- Added complete WASM examples
- Added skinning support to GLES rendering (WASM)
- Added pdal and webifc plugin to python wheels
- Reworked deeply the WASM integration for easier usage (
<f3d-viewer>element) - Moved all animation related API from
sceneandinteractorto a dedicatedanimationAPI - Fixed many GLES rendering issues (WASM)
- Renamed C bindings to use coherent vocabulary
- Fixed issues with C binding sanity checks (Thanks @SahilSonar-04 !)
- Improved Java bindings quality (Thanks @midaksh !)
For F3D packagers:
- BREAKING: Removed VTK v9.3.0 support
- BREAKING: Changed default location for config files on linux, which is now
/usr/share/f3d/configs - BREAKING: Add many cmake component to
ALL, making default install fully functional - Added support for OCCT 8.0
- Added a new optional dependency: FFmpeg
- Added a new vendored dependency: clip
- Added support for shipping pkg-config files for libf3d and libf3d C bindings (Thanks @AnikethTS !)
For Web viewer users:
- Added support for HDF based formats
- Fixed many rendering issues
For f3d-android users:
- Fixed a crash with Android 16+
- Added more file support (plugins: usd, hdf, vdb)
- Fixed many rendering issues
- Added support for GPU skinning/morphing
- Added an option panel (thanks @noclone!)
- Added a console widget (thanks @noclone!)
- Added animation support (thanks @noclone!)
- Added scene hierarchy and metadata widget (thanks @noclone!)
- Added a donation button
Many thanks to our returning contributors for this release, they are the life of this community!
@exbluesbreaker @Ni-g-3l @noclone @iommu @AoGao-Kedoka @snoyer
Thanks to our contributors for this release!
@CPerry26 @bo-dani @kaili-yang @12alkry45 @SahilSonar-04 @midaksh @AnikethTS @enjeck @Blaze1238 @Prospect138 @LuTheDog @RealEdwardS @KRook0110 @kasturirasekar @Ryon-Tom
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
- Planetary Gearbox by Souhaib Boukra (https://grabcad.com/library/planetary-gearbox-parametric-cad-design-1)
- Bristleback DOTA Fan-Art by Nikolay Tsys (https://sketchfab.com/3d-models/bristleback-dota-fan-art-7b00f231aa82442fbd27ab8c0c234d01)
