Skip to content

v3.4.1

Latest

Choose a tag to compare

@mwestphal mwestphal released this 08 Jan 11:36
· 30 commits to master since this release
7b221b2

Image

🗣 Join our community:

F3D Community is welcoming to users and developers alike!
Ask questions, gets involved and starts contributing in a beginner-friendly environment.
Discord

❤️ 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!

Image

🇨 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_frame command (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+Y and Ctrl+Z and 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 none CLI 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-mode in favor of simply --anti-aliasing
  • Deprecated --point-sprites-type in 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_color to control the color of the axis widget and grid (thanks @snoyer @vincenzonetti !)
  • Added a interactor::requestStop API for asynchronous loop stopping (thanks @snoyer !)
  • Added a log API 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_C CMake 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