Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.0.0 Release #1868

Open
5 of 34 tasks
mwestphal opened this issue Jan 3, 2025 · 5 comments
Open
5 of 34 tasks

3.0.0 Release #1868

mwestphal opened this issue Jan 3, 2025 · 5 comments
Milestone

Comments

@mwestphal
Copy link
Contributor

mwestphal commented Jan 3, 2025

Before release:

  • Force fetch origin remote tag with git fetch origin --tags --force
  • Write and format release notes from the ongoing changelog, including contributors and packagers

Release Split :

  • Create, review and merge a MR from master branch into release: release...master

Release Candidates :

  • Commit, review and merge a v3.0.0-RC4 version change in https://github.com/f3d-app/f3d CMakeLists.txt and pyproject.toml in the release branch
  • Tag and push to https://github.com/f3d-app/f3d: git tag v3.0.0-RC4 -m v3.0.0-RC4
  • Trigger a release build using https://github.com/f3d-app/f3d-superbuild actions with v3.0.0-RC4 F3D version, superbuild main branch and prerelease publish true
  • Download the prerelease from https://github.com/f3d-app/f3d/releases
  • Locally test the prerelease on Linux
  • Locally test the prerelease on macOS (Intel)
  • Locally test the prerelease on macOS (Silicon)
  • Locally test the prerelease on Windows
  • Locally test the python wheels on Linux
  • Locally test the python wheels on macOS (Intel)
  • Locally test the python wheels on Windows
  • If it fails, fix the issues in release branch, copy this paragraph and increment N
  • Else proceed to the next part

Release :

Linux testing protocol:

  • Install F3D-3.0.0-RC4-Linux-x86_64-raytracing system wide
  • f3d testing/data/cow.vtp -> check render, orientation, press R and check raytracing
  • f3d testing/data/f3d.stp -> check render, orientation
  • f3d /path/to/any/new/file.format -> check render
  • rm -rf ~/.cache/thumbnails
  • pcmanfm (or another supported file manager)
  • Check that all supported files in testing/data have a generated thumbnails, especially for new file formats if any
  • Double click on supported file in testing/data, especially for new file formats if any and check it opens in F3D
  • Drag&Drop cow.vtp, Drag&Drop palermo_park.hdr, check render
  • Check that CTRL+O (file dialog) is working
  • cd examples/libf3d && mkdir build && cd build && cmake ../ && make
  • ./cpp/check-engine/check-engine
  • ./cpp/render-interact/render-interact ../../../testing/data/cow.vtp

macOS testing protocol:

  • Install F3D-3.0.0-RC4-macOS-x86_64-raytracing.dmg
  • Double click on cow.vtp, check render and orientation, press R and check raytracing
  • Double click on f3d.stp, check render and orientation
  • Double click on any new supported file.format, check render
  • Check all supported file in testing/data directory in finder have the f3d mark, if not, check that "open with" suggest F3D
  • Drag&Drop cow.vtp, Drag&Drop palermo_park.hdr, check render
  • Check that CTRL+O (file dialog) is working

Windows testing protocol:

  • Install F3D-3.0.0-RC4-Windows-x86_64-raytracing.exe, add F3D to path for all users
  • Start -> Disk Cleanup -> select thumbnails -> Ok -> Delete Files
  • Open testing/data directory in file manager
  • Wait for thumbnails to be generated
  • Check that every supported file has a generated thumbnails, except .tif.
  • Check that every supported file has a small "f3d" mark, for those that don't check that "Open with" -> "Use another app" suggest F3D.
  • Double click on cow.vtp, check render and orientation, press R and check raytracing
  • Double click on f3d.stp, check render and orientation
  • Double click on any new supported file format, check render
  • Check that CTRL+O (file dialog) is working
  • cd examples\libf3d && mkdir build && cd build && cmake ../ && cmake --build . --config Release
  • .\cpp\check-engine\Release\check-engine
  • .\cpp\render-interact\Release\render-interact ..\..\..\testing\data\cow.vtp

Python testing protocol:

  • Use a venv or make sure f3d is not installed in your python environment
  • pip install f3d==3.0.0-RC4
  • python
import f3d
eng = f3d.Engine(f3d.Window.NATIVE)
eng.loader.load_geometry("/path/to/cow.vtp")
eng.window.render()
eng.interactor.start()
@mwestphal mwestphal added this to the 3.0.0 milestone Jan 3, 2025
@mwestphal mwestphal added this to F3D Jan 3, 2025
@mwestphal
Copy link
Contributor Author

mwestphal commented Jan 3, 2025

3.0.0 Release

SHOWCASE TODO

🗣 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 looking for sponsors!
We have some expenses mainly related to github and web hosting bills, any help to cover the cost would be highly appreciated.
To thank you, we'll offer preferential support and vote on next feature and bugfix as soon as you start sponsoring.
Sponsors
Much love to our sponsors for this release @Saijin-Naib @CriticalPoint @kidharb @Ramalama2 ❤️

🤸 Armature Display Support

You can now display armature from glTF files in F3D!
Just press "Shift+A" and it will appear, of course, animation is supported.

📂 Open file dialog

🖥️ Interactive Console

TOWRITE

📝 Complete changelog

For F3D users:

  • BREAKING CHANGE: Config files have changed syntax
  • BREAKING CHANGE: Removed all deprecated options
  • BREAKING CHANGE: --scalars have been split into --scalar-coloring and --coloring-array CLI options
  • BREAKING CHANGE: = must be used for CLI Options, --option value is not supported anymore
  • BREAKING CHANGE: Removed geometry-only and group-geometries and added multi-file-mode option for more flexible loading of multiple files
  • BREAKING CHANGE: There is no headless specific binary release anymore, just use the standard binary with --rendering-backend=egl
  • BREAKING CHANGE: --dry-run has been renamed --no-config (Thanks @t-h2o !)
  • BREAKING CHANGE: Esc to quit the app has been changed to Ctrl+Q
  • BREAKING CHANGE: --animation-frame-rate has been replaced by --frame-rate
  • BREAKING CHANGE: Renamed --bg-color into --background-color
  • BREAKING CHANGE: Renamed --comp into --coloring-component
  • BREAKING CHANGE: Removed the ? interaction to dump info, use commands instead
  • BREAKING CHANGE: Renamed --progress into --loading-progress
  • BREAKING CHANGE: Renamed --cells into --coloring-by-cells
  • BREAKING CHANGE: Renamed --range into --coloring-range
  • BREAKING CHANGE: Renamed --bar into --coloring-scalar-bar
  • BREAKING CHANGE: Renamed --inverse into --volume-inverse
  • BREAKING CHANGE: Renamed --samples into --raytracing-samples
  • BREAKING CHANGE: Renamed --denoise into --raytracing-denoise
  • BREAKING CHANGE: Renamed --ref into --reference and --ref-threshold into --reference-threshold
  • BREAKING CHANGE: Renamed --readers-list into --list-readers
  • BREAKING CHANGE: F3D binary release is now built with GCC9
  • Changed the logo! (Thanks @snoyer @lknknm @mariami-zedginidze !)
  • Reworked the UI using ImGui
  • Added support for specifying interactions in config files, see doc
  • Added a --command-script CLI option
  • Added a tiny file dialog, just press Ctrl+O (Thanks @hant-hub !)
  • Added support for armature visualization with --armature CLI option (glTF only)
  • Added support for keeping camera position when switching files, just press Ctrl+Arrow (thanks @jia-kai !)
  • Added a ImGui based console to input commands by pressing Esc
  • Added a "Save minimal screenshot" interaction by pressing Shift+F12 (Thanks @snoyer !)
  • Added error reporting when loading a file failed for some reason
  • Added missing config file for .brep files (Thanks @NWc0de !)
  • Added support for .xbf files (Thanks @snoyer !)
  • Added --input CLI option
  • Added support for libf3d option in configuration files
  • Added support for parsing option based on their type, see the doc (Thanks @snoyer !)
  • Added a --rendering-backend option to select the rendering backend, including headless
  • Added an interaction to rotate camera 90 degrees by pressing 4/6 (Thanks @dk1242 !)
  • Added an interaction to drop only HDRI (Shift+Drop) and an interaction to drop only 3D files (Ctrl+Drop)
  • Added a --list-bindings CLI option
  • Added a --list-rendering-backends CLI option
  • Added compatibility with VFX CY2025
  • Added commands to print info about scene, coloring, mesh and options (Thanks @samoncrief !)
  • Added command to clear the console (Thanks @0xfedcafe !)
  • Added support for expanding tilda (~) into HOME when inputting any path
  • Reworked CLI option parsing to avoid parsing issues
  • Improved --list-readers CLI option output (Thanks @snoyer !)
  • Improved image comparison algorithm
  • Improved options suggestion in the command line (Thanks @snoyer !)
  • Improved many features in F3DWeb as well as adding OCCT and Draco support (Thanks @jo-chemla !)
  • Improved the webassembly bindings
  • Improved the documentation (Thanks @spevnev @stepperpig @Aarav-07 @t-h2o !)
  • Improved python bindings (Thanks @snoyer @Nokse22 !)
  • Improved startup performance (Thanks @Yogesh9000 !)
  • Improved scalar range handling with animation
  • Fixed a crash when opening a glTF file with no textures
  • Fixed an option priority issue with --help (Thanks @brown-eric !)
  • Fixed a crash with invalid --animation-index and assimp
  • Fixed an issue where the window displayed an empty filename (Thanks @snoyer !)
  • Fixed an issue where the window resolution was reset when changing file
  • Fixed an issue when reseting the camera and using --camera-index
  • Fixed an issue with --camera-index being overridden by other camera options (Thanks @dk1242 !)
  • Fixed an issue when loading a time value outside of the range (Thanks @snoyer !)
  • Fixed issues with screenshot templating (Thanks @snoyer !)
  • Fixed an issue with grid rendering on main axes (Thanks @rhysaelliott !)
  • Fixed an issue where color-bar would show when not needed
  • Fixed an issue with glTF file using URI
  • Fixed --help invalid output (Thanks @Schwarzemann !)

For libf3d users:

  • BREAKING CHANGE: All deprecated methods have been removed
  • BREAKING CHANGE: engine::libInformation members have been changed
  • BREAKING CHANGE: options API has been rewritten from scratch, see the doc (Thanks for the help @Yogesh9000 !)
  • BREAKING CHANGE: options many options are now optional
  • BREAKING CHANGE: loader API has been replaced by a new class: scene
  • BREAKING CHANGE: engine creation API has been rewritten from scratch and a context class has been added.
  • BREAKING CHANGE: interactor: setKeyPressCallBack, setDropFilesCallBack and timerCallback have been removed
  • BREAKING CHANGE: camera API has been reworked
  • BREAKING CHANGE: image::compare API has been changed
  • BREAKING CHANGE: libf3d API is now using C++17, nodiscard, std::filesystem and std::string_view are now used whenever it makes sense
  • BREAKING CHANGE: Removed support for python 3.8
  • Added an interactor::command* API that lets user control the libf3d behavior more finely
  • Added an interactor::binding* API that lets user control how the libf3d respond to interactions
  • Added an scene::loadAnimationTime API to select animation time to load
  • Added interactor::start arg to control an event loop time and a event loop callback
  • Added python stubs for autocompletion and IDE integration (Thanks @snoyer !)
  • Added suport for python 3.13
  • Fixed an issue with instanciang multiple engines (Thanks @hant-hub !)
  • Added an utils::collapsePath
  • Fixed an issue with HiDPI when using the libf3d on Windows

For F3D packagers:

  • BREAKING CHANGE: Removed compatibility with older version of VTK. VTK v9.2.6 is now required.
  • Added a new CMake options to build python stubs: F3D_BINDINGS_PYTHON_GENERATE_STUBS
  • Added a new optional but internally provided dependency: tinyfiledialogs
  • Modified dmon dependency to be optional
  • F3D_LINUX_APPLICATION_LINK_FILESYSTEM has been renamed F3D_LINUX_LINK_FILESYSTEM and is now OFF by default

For F3D plugin developpers:

  • Added a vtkF3DImporter and vtkF3DGLTFImporter for easier subclassing

@mwestphal
Copy link
Contributor Author

mwestphal commented Jan 4, 2025

F3D 3.0.0 Migration Guide

Deprecation removal

First make sure any deprecated CLI options, API or options are not used when using F3D 2.5.1.
If they are, replace them by modern usage as recommend in the errors and warnings.

For F3D users

CLI Options changes

  • = should be used for CLI options values

Add a = for all long option values if not already, eg:
--light-intensity 0.6 -> --light-intensity=0.6

  • --scalars CLI options replaced

--scalars has been replaced by two CLI options.
To turn on scalar coloring use --scalar-coloring. To select the array to color with use --coloring-array=array, eg:

--scalars=Normals -> --scalar-coloring --coloring-array=Normals

The short option -s can still be used to turn on scalar coloring.

  • --geometry-only has been removed

It is not supported to load only the geometry using --geometry-only. If this is a needed feature you can disable the texture individually by setting them to the empty string, eg: --texture-base-color=

  • --group-geometries has been replaced with --multi-file-mode

The way files are loaded in F3D has been completely reworked and is now way more flexible.
The CLI option has changed though, eg:
--group-geometries -> --multi-file-mode=all

Multiple rendering backends are available, osmesa is another possible choice for headless rendering. Use --list-rendering-backends for the complete list.

  • Simple CLI option renaming:

--dry-run -> --no-config
--animation-frame-rate -> frame-rate
--bg-color -> --background-color
--comp -> --coloring-component
--progress -> --loading-progress
--cells -> --coloring-by-cells
--range -> --coloring-range
--bar -> --coloring-scalar-bar
--inverse -> --volume-inverse
--samples -> --raytracing-samples
--denoise -> --raytracing-denoise
--ref -> --reference
--ref-threshold -> --reference-threshold
--readers-list -> --list-readers

Other changes

  • Esc is now Ctrl+Q to quit the application

Pressing Esc is now used by the console, so quitting F3D now is Ctrl+Q.
If needed, you can change that in your configuration file, however closing the console will always be Esc.

  • ? interaction has been removed

The ? interaction has been removed, use the console and type print_scene_info, print_coloring_info, print_mesh_info or print_options_info to print such info.

If needed you can add a interaction bind for these commands in your configuration file.

  • No headless binary release anymore

There is no headless binary anymore, just use the standard binary with the --rendering-backend CLI option, eg:
--rendering-backend=egl.

For libf3d users

API changes

  • options

The options API has been completely reworked and now offers three different API as documented here.

Code using v2.5.1 should be able to rely on the variant API however we recommend using the struct API for better integration in IDE or the string API for flexibility.

eg:

opt.set("render.show_edges", true);

Should now be either:

opt.render.show_edges = true;

or

opt.setAsString("render.show_edges", "true");

  • engine

Engine creation has been completely reworked and now requires the usage of dedicated static creation method, eg:

f3d::engine eng();

Should now be:

f3d::engine eng = f3d::engine::create();

engine::libInformation was also reworked.

  • loader -> scene

The loader class has been reworked into the scene class and both loadGeometry and loadScene have been replaced by scene::add, eg:

eng.getLoader().loadScene("path/to/file.ext"); or eng.getLoader().loadGeometry("path/to/file.ext");

Should now be:

eng.getLoader().add("path/to/file.ext");

Loading multiple files is supported by the add method, use scene::clear to remove them all.

  • interactor

interactor has been completely reworked for more flexibility and simplicity.

setKeyPressCallBack and setDropFilesCallBack have been removed, use the command and binding API instead.

timerCallback API has been removed, use interactor::start with a callback and time delta argument instead.

  • camera

camera API has been renamed simply:

pos -> position
up -> viewUp
foc -> focalPoint
angle -> viewAngle

  • image::compare

image::compare now directly returns the error value, eg:

double error;
if (img.compare(img2, 0.05, error))

Should be:

if (img.compare(img2) >= 0.05)
  • other API changes

C++17 is now required to use the libf3d and [[nodiscard]], std::string_view and std::filesystem::path are now used in the whole API. This should not cause any problem not easily caught by build error and warnings. You may want to migrate to std::filesystem::path.

If your compiler does not support C++17, please use F3D 2.5.1 until it does.

Options renaming

  • opt.model.scivis.array_name

opt.model.scivis.array_name has been split into opt.model.scivis.enable and opt.model.scivis.array_name.
Only setting opt.model.scivis.array_name does not enable scivis coloring anymore*.

  • Simple option renaming

render.background.blur -> render.background.blur.enable
render.background.blur_coc -> render.background.blur.coc
interactor.axis -> ui.axis

  • Optional options

Many options are now std::optional with the option not set meaning the no action should be taken, see options.json, options.h and the options documentation.

@mwestphal
Copy link
Contributor Author

mwestphal commented Jan 4, 2025

3.0.0-RC1 testing:

MacOS arm tested and some issues found.
Linux tested and some issues found.
Windows tested and some issues found.
Linux python wheels tested, no issues found.
Windows python wheels tested, no issues.

TODO

MacOS x86_64
MacOS Wheels

Issues:

MacOS default window size is small with retina display -> not an issue
Filename (empty) is visible by default -> #1878
multifile mode problem with partial loading -> #1883
examples filesystem crash on linux -> f3d-app/f3d-docker-images#30
double file open macos -> #748
macos colors for installer -> f3d-app/f3d-superbuild#227
windows installer missing logo -> f3d-app/f3d-superbuild#228
f3d.glb is slow on windows -> https://gitlab.kitware.com/vtk/vtk/-/merge_requests/11811
--version not working with git bash -> #1888
saving an image using the libf3d -> #1882

@mwestphal
Copy link
Contributor Author

mwestphal commented Jan 8, 2025

Release notes update:

  • Engine creation outdated
  • Test animation
  • Add mention about merging release into master
  • MacOS wheel is silicon only
  • Command testing ?
  • Check stubs

@mwestphal
Copy link
Contributor Author

mwestphal commented Jan 10, 2025

3.0.0-RC2 testing:

MacOS silicon tested and no issues found.
Linux tested and some issues found.
Windows tested and some issues found.
Windows python wheels testes, no issues found
Linux python wheels tested, some issues found.
MacOS python wheels tested, no issues found
MacOS x86_64 tested, some issues found

Issues:

Commands from console issues: #1899

  • crashes with: add_files, set_hdri, add_files_or_set_hdri, load_*_file_group, reload_current_file_group, toggle_volume_rendering, take*_screenshot
  • No effect with: roll_camera, set_camera reset_camera

Windows installer still not fixed: f3d-app/f3d-superbuild#228
Windows name from python wheels is not set on creation: #1898
macos open multiple file and does not show the right one: #1902
Armature showing up without armature: #1904

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

No branches or pull requests

1 participant