F3D - Fast and minimalist 3D viewer

Overview

CI codecov Downloads Downloads

F3D Logo

F3D - Fast and minimalist 3D viewer

By Michael Migliore and Mathieu Westphal.

F3D (pronounced /fɛd/) is a VTK-based 3D viewer following the KISS principle, so it is minimalist, efficient, has no GUI, has simple interaction mechanisms and is fully controllable using arguments in the command line.

F3D is open-source and cross-platform (tested on Windows, Linux and macOS). It supports a range of file formats (including animated glTF, stl, step, ply, obj, fbx), and provides numerous rendering and texturing options.

A typical render by F3D

Animation of a glTF file within F3D

A direct scalars render by F3D

Acknowledgments

F3D was initially created by Kitware SAS and is relying on many awesome open source projects, including VTK, OCCT, Assimp and Alembic.

How to use

There are 4 main ways to use F3D:

  • By running F3D from a terminal with a set of command-line options.
  • By running F3D directly and then dragging and dropping files into it to open them.
  • By using F3D automatically in the file manager when opening file.
  • As a thumbnailer for all supported file formats with certain file managers.

Installation

You can find the release binary packages for Windows, Linux and macOS on the Release page. See the desktop integration section in order actually integrate the binary release in your desktop. Alternatively, you can build it yourself following the build guide below.

You can also find packages for the following operating systems:

OpenSuse

Available in OpenSuse.

Arch Linux

Available in the AUR.

FreeBSD

Avaiable in FreshPORTS.

DragonFly BSD

Available in DPorts.

MacOS Brew

Available in Homebrew.

NixOS

Available in nixpkgs.

Ubuntu/Debian/Fedora

Available on OpenSuse OBS.

Flathub

Available in Flathub.

Spack

Available in Spack.

Build

Dependencies

  • CMake >= 3.1.
  • VTK >= 9.0.0 (optionally with raytracing capabilities to enable OSPray rendering).
  • A C++11 compiler.
  • A CMake-compatible build system (Visual Studio, XCode, Ninja, Make, etc.).

Configuration and building

Configure and generate the project with CMake by providing the following CMake options:

  • VTK_DIR: Path to a build or install directory of VTK.
  • BUILD_TESTING: Enable the tests.
  • F3D_MACOS_BUNDLE: On macOS, build a .app bundle.
  • F3D_WINDOWS_GUI: On Windows, build a Win32 application (without console).

Some modules depending on external libraries can be optionally enabled with the following CMake variables:

  • F3D_MODULE_EXODUS: Support for ExodusII (.ex2) file format. Requires that VTK has been built with IOExodus module (and hdf5). Enabled by default.
  • F3D_MODULE_RAYTRACING: Support for raytracing rendering. Requires that VTK has been built with OSPRay. Disabled by default.
  • F3D_MODULE_OCCT: Support for STEP and IGES file formats. Requires OpenCASCADE. Disabled by default.
  • F3D_MODULE_ASSIMP: Support for FBX, DAE, OFF and DXF file formats. Requires Assimp. Disabled by default.
  • F3D_MODULE_ALEMBIC: Support for ABC file format. Requires Alembic. Disabled by default.

Then build the software using your build system.

File formats

Here is the list of supported file formats:

  • .vtk : the legacy VTK format
  • .vt[p|u|r|i|s|m] : XML based VTK formats
  • .ply : Polygon File format
  • .stl : Standard Triangle Language format
  • .dcm : DICOM file format
  • .nrrd/.nhrd : "nearly raw raster data" file format
  • .mhd/.mha : MetaHeader MetaIO file format
  • .tif/.tiff : TIFF 2D/3D file format
  • .ex2/.e/.exo/.g : Exodus 2 file format
  • .gml : CityGML file format
  • .pts : Point Cloud file format
  • .step/.stp : CAD STEP exchange ISO format
  • .iges/.igs : CAD Initial Graphics Exchange Specification format
  • .obj : Wavefront OBJ file format (full scene)
  • .gltf/.glb : GL Transmission Format (full scene)
  • .3ds : Autodesk 3D Studio file format (full scene)
  • .wrl : VRML file format (full scene)
  • .fbx : Autodesk Filmbox (full scene)
  • .dae : COLLADA (full scene)
  • .off : Object File Format (full scene)
  • .dxf : Drawing Exchange Format (full scene)

Scene construction

The full scene formats (gltf/glb, 3ds, wrl, obj) contain not only geometry, but also some scene information like lights, cameras, actors in the scene, as well as texture properties. By default, all this information will be loaded from the file and displayed. For file formats that do not support it, a default scene will be created.

Options

Generic Options

Options Description
--input= The input file or files to read, can also be provided as a positional argument.
--output= Instead of showing a render view and render into it, render directly into a png file. When used with ref option, only outputs on failure
--no-background Output file is saved with a transparent background. Ignored when using ref option.
-h, --help Print help.
--verbose Enable verbose mode, providing more information about the loaded data in the console output.
--no-render Verbose mode without any rendering for the first provided file, to recover information about a file.
--quiet Enable quiet mode, which superseed any verbose options. No console output will be generated at all.
--version Show version information.
-x, --axis Show axes as a trihedron in the scene.
-g, --grid Show a grid aligned with the XZ plane.
-e, --edges Show the cell edges.
-k, --trackball Enable trackball interaction.
--progress Show a progress bar when loading the file.
--up Define the Up direction (default: +Y)
--animation-index Select the animation to show.
Any negative value means all animations.
The default scene always has at most one animation.
If the option is not specified, the first animation is enabled.
--geometry-only For certain full scene file formats (gltf/glb and obj),
reads only the geometry from the file and use default scene construction instead.
--dry-run Do not read the configuration file but consider only the command line options
--config Read a provided configuration file instead of default one
--font-file Use the provided FreeType compatible font file to display text.
Can be useful to display non-ASCII filenames.

Material options

Options Default Description
-o, --point-sprites Show sphere points sprites instead of the geometry.
--point-size 10.0 Set the size of points when showing vertices and point sprites.
--line-width 1.0 Set the width of lines when showing edges.
--color= 1.0, 1.0, 1.0 Set a color on the geometry.
This only makes sense when using the default scene.
--opacity= 1.0 Set opacity on the geometry.
This only makes sense when using the default scene. Usually used with Depth Peeling option.
--roughness= 0.3 Set the roughness coefficient on the geometry (0.0-1.0).
This only makes sense when using the default scene.
--metallic= 0.0 Set the metallic coefficient on the geometry (0.0-1.0).
This only makes sense when using the default scene.
--hrdi= Set the HDRI image used to create the environment.
The environment act as a light source and is reflected on the material.
Valid file format are hdr, png, jpg, pnm, tiff, bmp.
--texture-base-color= Path to a texture file that sets the color of the object.
--texture-material= Path to a texture file that sets the Occlusion, Roughness and Metallic values of the object.
--texture-emissive= Path to a texture file that sets the emitted light of the object.
--emissive-factor= 1.0, 1.0, 1.0 Emissive factor. This value is multiplied with the emissive color when an emissive texture is present.
--texture-normal= Path to a texture file that sets the normal map of the object.
--normal-scale= 1.0 Normal scale affects the strength of the normal deviation from the normal texture.

PostFX (OpenGL) options

Options Description
-p, --depth-peeling Enable depth peeling. This is a technique used to correctly render translucent objects.
-q, --ssao Enable Screen-Space Ambient Occlusion. This is a technique used to improve the depth perception of the object.
-a, --fxaa Enable Fast Approximate Anti-Aliasing. This technique is used to reduce aliasing.
-t, --tone-mapping Enable generic filmic Tone Mapping Pass. This technique is used to map colors properly to the monitor colors.

Camera configuration options

Options Description
--camera-index Select the scene camera to use.
Any negative value means custom camera.
The default scene always has a custom camera.
--camera-position= The position of the camera. Automatically computed or recovered from the file if not provided.
--camera-focal-point= The focal point of the camera. Automatically computed or recovered from the file if not provided.
--camera-view-up= The view up vector of the camera. Will be orthogonalized even when provided. Automatically computed or recovered from the file if not provided.
--camera-view-angle= The view angle of the camera, non-zero value in degrees. Automatically computed or recovered from the file if not provided.
--camera-azimuth-angle= The azimuth angle of the camera in degrees (default: 0.0).
This angle will be applied after setting the position of the camera, focal point of the camera, and view up vector of the camera.
--camera-elevation-angle= The elevation angle of the camera in degrees (default: 0.0).
This angle will be applied after setting the position of the camera, focal point of the camera, and view up vector of the camera.

Raytracing options

Options Default Description
-r, --raytracing Enable OSPRay raytracing. Requires OSPRay raytracing to be enabled in the linked VTK dependency.
--samples= 5 The number of samples per pixel. It only makes sense with raytracing enabled.
-d, --denoise Denoise the image. It only makes sense with raytracing enabled.

Scientific visualization options

Options Default Description
-s, --scalars= Color by a specific scalar array present in the file. If no array_name is provided, one will be picked if any are available.
This only makes sense when using the default scene.
Use verbose to recover the usable array names.
-y, --comp= -1 Specify the component from the scalar array to color with.
Use with the scalar option. -1 means magnitude. -2 or the short option, -y, means direct values.
When using direct values, components are used as L, LA, RGB, RGBA values depending on the number of components.
-c, --cells Specify that the scalar array is to be found on the cells instead of on the points.
Use with the scalar option.
--range= Set a custom range for the coloring by the array.
Use with the scalar option.
-b, --bar Show scalar bar of the coloring by array.
Use with the scalar option.
--colormap= Set a custom colormap for the coloring.
This is a list of colors in the format val1,red1,green1,blue1,...,valN,redN,greenN,blueN
where all values are in the range (0,1).
Use with the scalar option.
-v, --volume Enable volume rendering. It is only available for 3D image data (vti, dcm, nrrd, mhd files) and will display nothing with other default scene formats.
-i, --inverse Inverse the linear opacity function. Only makes sense with volume rendering.

Testing options

Options Description
--ref= Reference image to compare with for testing purposes. Use with output option to generate new baselines and diff images.
--ref-threshold= Testing threshold to trigger a test failure or success.
--interaction-test-record= Path to an interaction log file to record interaction events to.
--interaction-test-play= Path to an interaction log file to play interactions events from when loading a file.

Window options

Options Default Description
--bg-color= 0.2, 0.2, 0.2 Set the window background color.
Ignored if hdri is set.
--resolution= 1000, 600 Set the window resolution.
-z, --fps Display a frame per second counter.
-n, --filename Display the name of the file.
-m, --metadata Display the metadata.
This only makes sense when using the default scene.
-f, --fullscreen Display in fullscreen.
-u, --blur-background Blur background.
This only makes sense when using a HDRI.

Rendering precedence

Some rendering options are not compatible between them, here is the precedence order if several are provided:

  • Raytracing (-r)
  • Volume (-v)
  • Point Sprites (-o)

Interaction

Simple interaction with the displayed data is possible directly within the window. It is as follows:

  • Click and drag with the left mouse button to rotate around the focal point of the camera.
  • Hold Shift then Click and drag horizontally with the right mouse button to rotate the HDRI.
  • Click and drag vertically with the right mouse button to zoom in/out.
  • Move the mouse wheel to zoom in/out.
  • Click and drag with the middle mouse button to translate the camera.
  • Drag and drop a file or directory into the F3D window to load it

Note: When playing an animation with a scene camera, camera interactions are locked.

The coloring can be controlled directly by pressing the following hotkeys:

  • C: cycle between coloring with array from point data and from cell data.
  • S: cycle the array to color with.
  • Y: cycle the component of the array to color with.

See the coloring cycle section for more info.

Other options can be toggled directly by pressing the following hotkeys:

  • B: display of the scalar bar, only when coloring and not using direct scalars.
  • V: volume rendering.
  • I: opacity function inversion during volume rendering.
  • O: point sprites rendering.
  • P: depth peeling.
  • Q: Screen-Space Ambient Occlusion.
  • A: Fast Approximate Anti-Aliasing.
  • T: tone mapping.
  • E: the display of cell edges.
  • X: the trihedral axes display.
  • G: the XZ grid display.
  • N: the display of the file name.
  • M: the display of the metadata if exists.
  • Z: the display of the FPS counter.
  • R: raytracing.
  • D: the denoiser when raytracing.
  • F: full screen.
  • U: background blur.
  • K: trackball interaction mode.

Note that some hotkeys can be available or not depending on the file being loaded and the F3D configuration.

Other hotkeys are available:

  • H: key to toggle the display of a cheat sheet showing all these hotkeys and their statuses.
  • ?: key to dump camera state to the terminal.
  • ESC: close the window and quit F3D.
  • ENTER: reset the camera to its initial parameters.
  • SPACE: play the animation if any.
  • LEFT: load the previous file if any.
  • RIGHT: load the next file if any.
  • UP: reload the current file.

Cycling Coloring

When using the default scene, the following hotkeys let you cycle the coloring of the data:

  • C: cycle between point data and cell data - field data is not supported.
  • S: cycle the array available on the currently selected data, skipping array not containing numeric data. It will loop back to not coloring unless using volume rendering.
  • Y: cycle the component available on the currently selected array, looping to -2 for direct scalars rendering if the array contains 4 or less components, -1 otherwise.

When changing the array, the component in use will be kept if valid with the new array, if not it will be reset to 0 when coloring with an invalid higher than zero component, and to -1 when using direct scalars rendering with an array having more than 4 components.

When changing the type of data to color with, the index of the array within the data will be kept if valid with the new data. If not, it will cycle until a valid array is found. After that, the component will be checked as well.

Configuration file

Almost all the command-line options can be controlled using a configuration file. This configuration file uses the "long" version of the options in a JSON formatted file to provide default values for these options.

These options can be organized by block using a regular expression for each block in order to provide different default values for the different filetypes.

Using a command-line option will override the corresponding value in the config file. A typical config file may look like this:

{
   ".*": {
       "resolution": "1200,800",
       "bg-color": "0.7,0.7,0.7",
       "color": "0.5,0.1,0.1",
       "fxaa": true,
       "timer": true,
       "progress": true,
       "axis": true,
       "bar": true,
       "verbose": true,
       "roughness": 0.2,
       "grid": true
   },
   ".*vt.": {
       "edges": true
   },
   ".*gl(tf|b)": {
       "raytracing": true,
       "denoise": true,
       "samples": 3
   },
   ".*mhd": {
       "volume": true
   }
}

Here, the first block defines a basic configuration with many desired options for all files. The second block specifies that all files ending with vt., eg: vtk, vtp, vtu, ... will be shown with edges visibility turned on. The third block specifies raytracing usage for .gltf and .glb files. The last block specifies that volume rendering should be used with .mhd files.

The following command-line options
cannot
be set via config file: help, version, config, dry-run, no-render, inputs, output and all testing options.

Boolean options that have been turned on in the configuration file can be turned off in the command line if needed, eg: --point-sprites=false

The configuration file possible locations depends on your operating system. They are considered in the below order and only the first found will be used.

  • Linux: /etc/f3d/config.json, [install_dir]/config.json, ${XDG_CONFIG_HOME}/.config/f3d/config.json, ~/.config/f3d/config.json
  • Windows: [install_dir]\config.json, %APPDATA%\f3d\config.json
  • macOS: /etc/f3d/config.json, f3d.app/Contents/Resources/config.json, [install_dir]/config.json, ~/.config/f3d/config.json

If you are using the releases, a default configuration file is provided when installing F3D. On Linux, it will be installed in /etc/f3d/, on Windows, it will be installed in the install directory, on macOS, it will be installed in the bundle.

Desktop Integration

F3D can be integrated in the desktop experience.

Linux

For Linux desktop integration, F3D rely on mime types files as defined by the XDG standard, .thumbnailer file as specified here and .desktop file as specified here. Many file managers use this mechanism, including nautilus, thunar, pcmanfm and caja.

The simplest way to obtain desktop integration on linux is to use a package for your distribution, or the .deb binary package we provide if compatible with your distribution. In other cases, the binary archive can be used like this:

  1. Make sure ~/.local/bin is part of your PATH
  2. Extract F3D archive in a TEMP folder
  3. move $TEMP/config.json to ~/.config/f3d/
  4. copy $TEMP/* to ~/.local/
  5. Update your mime database pointing to ~/.local/share/mime
  6. Update your desktop database pointing to ~/.local/share/application
tar -xzvf f3d-1.2.0-Linux.tar.gz
cd f3d-1.2.0-Linux
mkdir -p ~/.config/f3d/
mv config.json /.config/f3d/
cp -r ./* ~/.local/
sudo update-mime-database ~/.local/share/mime/
sudo update-desktop-database ~/.local/share/applications

If you have any issues, read the troubleshooting section.

Windows

For Windows desktop integration, F3D rely on a registered shell extension.

Using the F3D NSIS installer (.exe) is the simplest way to enable thumbnails and integrate F3D on windows.

It is also possible to do it manually when using the zipped binary release, on installation, just run:

cd C:\path\to\f3d\bin\
regsvr32 F3DShellExtension.dll

To remove the shell extension, run:

cd C:\path\to\f3d\bin\
regsvr32 /u F3DShellExtension.dll

MacOS

There is no support for thumbnails on MacOS, the .dmg binary release should provide automatic file openings.

Known limitations

  • No categorical generic field data rendering support.
  • No string array categorical rendering support.
  • No support for specifying manual lighting in the default scene.
  • Pressing the z hotkey to display the FPS timer triggers a double render.
  • Multiblock (.vtm, .gml) support is partial, non-surfacic data will be converted into surfaces.
  • Animation support with full scene data format require VTK >= 9.0.20201016.
  • Full drag and drop support require VTK >= 9.0.20210620
  • Escape interaction events cannot be recorded.
  • Drag and drop interaction cannot be recorded nor played back.
  • Volume rendering and HDRI support requires a decent GPU

Assimp

FBX, DAE, OFF, and DXF file formats rely on Assimp library. It comes with some known limitations:

  • PBR materials are not supported for FBX file format
  • Animations are not working very well with Assimp 5.1, it's recommended to use Assimp 5.0
  • Some files can be empty, crash, or show artifacts
  • DXF support is very limited: only files with polylines and 3D faces are displayed.

Alembic

ABC file formats rely on Alembic library. It comes with some known limitations:

  • Supports Alembic 1.7 or later
  • Supports only simple polygonal geometry
  • Does not support ArbGeomParam feature in Alembic
  • Does not support Subdivision Meshes
  • Does not support Materials

Troubleshooting

General

I have built F3D with raytracing support but the denoiser is not working.

Be sure that VTK has been built with OpenImageDenoise support (VTKOSPRAY_ENABLE_DENOISER option).

Linux

Thumbnails are not working in my file manager.

  • Check that your file manager supports the thumbnailer mechanism.
  • Check that you have updated your mime type database.
  • If all fails, remove your .cache user dir and check that pcmanfm thumbnails are working.
  • If they are working, then it is an issue specific to your file manager.
  • If only a few format have working thumbnails, then it is an issue with mime types
  • If no formats have working thumbnails, then it is an issue with the f3d.thumbnailer file

Windows

After installing F3D or registering the shell extension, my explorer is broken

Unregister the shell extension by running:

cd C:\path\to\f3d\bin\
regsvr32 /u F3DShellExtension.dll

I use F3D in a VM, the application fails to launch.

OpenGL applications like F3D can have issues when launched from a guest Windows because the access to the GPU is restricted. You can try to use a software implementation of OpenGL, called Mesa.

  • Download the latest release-msvc.
  • copy x64/OpenGL32.dll and x64/libglapi.dll in the same folder as f3d.exe.
  • set the environment variable MESA_GL_VERSION_OVERRIDE to 4.5.
  • run f3d.exe.

I run f3d from the command prompt and my Unicode characters are not displayed properly.

Set the codepage to UTF-8, run chcp 65001.

Issues
  • Initial prototype of Alembic reader

    Initial prototype of Alembic reader

    This is not feature complete in any sense. The purpose of this PR is to fold in the base changes to include building and linking the new/additional Alembic library/SDK

    Once this is confirmed acceptable, additional work on the Alembic feature shall follow.

    #138

    @mwestphal

    opened by nyue 32
  • Alembic support

    Alembic support

    Describe the solution you'd like It would be very nice if this app also supports alembic/alembic caches

    Describe alternatives you've considered Open the Alembic files in Maya

    Additional context

    Contribution I am not a developer.

    enhancement 
    opened by gerroon 27
  • Provide a standalone .deb package

    Provide a standalone .deb package

    Currently, we provide a .tar.gz and a .tar.xz package for Linux.
    It's not clear how to use it after extraction to have a better integration with the system.

    We need to document the installation steps.
    We can also provide a .deb package easily with the CPack generator but we need help for testing.

    enhancement 
    opened by Meakk 20
  • 1.2.0 release

    1.2.0 release

    1.2.0 Release

    • [x] Fix remainings issues:
      • [x] #37
      • [x] #58
      • [x] #73
      • [x] #65
      • [x] #60
    • [x] Last fixups: #95
    • [x] Update version strings: #96
    • [x] Write the changelog
    • [x] Last fixups again: #100
    • [x] Generate communication images and gifs
    • [x] Trigger a CI build
    • [x] Download and quickly test Linux artifacts : run, render, drag&drop, thumbnails
    • [x] Download and quickly test MacOS artifacts: run, render, drag&drop
    • [x] Download and quickly test Windows artifacts: run, render, drag&drop, thumbnails
    • [x] Generate google analytics: #105
    • [x] Update github-pages branch and check website
    • [x] Merge website update: #112
    • [x] Cleanup repo
    • [x] Tag the commit and push the tag
    • [x] merge master into release
    • [x] Create release on gitlab with changelog and artifacts
    • [x] Update Aur package
    • [x] Update Brew package: https://github.com/Homebrew/homebrew-core/pull/90575
    • [x] Inform package maintainers
    • [x] Inform Assimp team
    • [x] Communicate LinkedIn
    • [x] Communicate Reddit
    opened by mwestphal 16
  • backpack.vti crashes

    backpack.vti crashes

    $ f3d backpack.vti -vmn --range=300,1000 --colormap=0,0,0,0,1,1,1,1
    2021-11-22 18:42:59.099 (   4.367s) [           19718]     vtkOpenGLState.cxx:1069  WARN| Error glEnable/Disable1 OpenGL errors detected
      0 : (1282) Invalid operation
    
     with stack trace of
    WARNING: The stack trace will not use advanced capabilities because this is a release build.
    0x803f87dd4 : vtksys::SystemInformation::GetProgramStack(int, int) [(libvtksys-9.1.so.1) ???:-1]
    0x803f87cae : vtksys::SystemInformation::GetProgramStack(int, int) [(libvtksys-9.1.so.1) ???:-1]
    0x801ad3338 : vtkOpenGLState::vtkglColorMask(unsigned char, unsigned char, unsigned char, unsigned char) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x801ad5a63 : vtkOpenGLState::SetEnumState(unsigned int, bool) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x801ad8402 : vtkOpenGLState::vtkglBlitFramebuffer(int, int, int, int, int, int, int, int, unsigned int, unsigned int) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x800983667 : vtkOpenGLGPUVolumeRayCastMapper::vtkInternal::CaptureDepthTexture(vtkRenderer*) [(libvtkRenderingVolumeOpenGL2-9.1.so.1) ???:-1]
    0x80098fe95 : vtkOpenGLGPUVolumeRayCastMapper::GPURender(vtkRenderer*, vtkVolume*) [(libvtkRenderingVolumeOpenGL2-9.1.so.1) ???:-1]
    0x8020fd9db : vtkGPUVolumeRayCastMapper::Render(vtkRenderer*, vtkVolume*) [(libvtkRenderingVolume-9.1.so.1) ???:-1]
    0x8027c65e7 : vtkVolume::RenderVolumetricGeometry(vtkViewport*) [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x80276e101 : vtkProp::RenderFilteredVolumetricGeometry(vtkViewport*, vtkInformation*) [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x8019f57e5 : vtkDefaultPass::RenderFilteredVolumetricGeometry(vtkRenderState const*) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x801b3dc6f : vtkSequencePass::Render(vtkRenderState const*) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x8019d8346 : vtkCameraPass::Render(vtkRenderState const*) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x8019f5e24 : vtkDepthImageProcessingPass::RenderDelegate(vtkRenderState const*, int, int, int, int, vtkOpenGLFramebufferObject*, vtkTextureObject*, vtkTextureObject*) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x801a0acb0 : vtkFramebufferPass::Render(vtkRenderState const*) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x25a691 : _ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_ [(f3d) ???:-1]
    0x801ab701c : vtkOpenGLRenderer::DeviceRender() [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x802797702 : vtkRenderer::Render() [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x8027a8260 : vtkRendererCollection::Render() [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x80278394e : vtkRenderWindow::DoStereoRender() [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x8027837e9 : vtkRenderWindow::Render() [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x801ab5e6b : vtkOpenGLRenderWindow::Render() [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x801b6fa6f : vtkXOpenGLRenderWindow::Render() [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x26edb5 : _ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_ [(f3d) ???:-1]
    
    2021-11-22 18:42:59.576 (   4.845s) [           19718]     vtkOpenGLState.cxx:1069  WARN| Error glEnable/Disable1 OpenGL errors detected
      0 : (1282) Invalid operation
    
     with stack trace of
    WARNING: The stack trace will not use advanced capabilities because this is a release build.
    0x803f87dd4 : vtksys::SystemInformation::GetProgramStack(int, int) [(libvtksys-9.1.so.1) ???:-1]
    0x803f87cae : vtksys::SystemInformation::GetProgramStack(int, int) [(libvtksys-9.1.so.1) ???:-1]
    0x801ad3338 : vtkOpenGLState::vtkglColorMask(unsigned char, unsigned char, unsigned char, unsigned char) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x801ad5a63 : vtkOpenGLState::SetEnumState(unsigned int, bool) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x801ad8402 : vtkOpenGLState::vtkglBlitFramebuffer(int, int, int, int, int, int, int, int, unsigned int, unsigned int) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x800983667 : vtkOpenGLGPUVolumeRayCastMapper::vtkInternal::CaptureDepthTexture(vtkRenderer*) [(libvtkRenderingVolumeOpenGL2-9.1.so.1) ???:-1]
    0x80098fe95 : vtkOpenGLGPUVolumeRayCastMapper::GPURender(vtkRenderer*, vtkVolume*) [(libvtkRenderingVolumeOpenGL2-9.1.so.1) ???:-1]
    0x8020fd9db : vtkGPUVolumeRayCastMapper::Render(vtkRenderer*, vtkVolume*) [(libvtkRenderingVolume-9.1.so.1) ???:-1]
    0x8027c65e7 : vtkVolume::RenderVolumetricGeometry(vtkViewport*) [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x80276e101 : vtkProp::RenderFilteredVolumetricGeometry(vtkViewport*, vtkInformation*) [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x8019f57e5 : vtkDefaultPass::RenderFilteredVolumetricGeometry(vtkRenderState const*) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x801b3dc6f : vtkSequencePass::Render(vtkRenderState const*) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x8019d8346 : vtkCameraPass::Render(vtkRenderState const*) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x8019f5e24 : vtkDepthImageProcessingPass::RenderDelegate(vtkRenderState const*, int, int, int, int, vtkOpenGLFramebufferObject*, vtkTextureObject*, vtkTextureObject*) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x801a0acb0 : vtkFramebufferPass::Render(vtkRenderState const*) [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x25a691 : _ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_ [(f3d) ???:-1]
    0x801ab701c : vtkOpenGLRenderer::DeviceRender() [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x802797702 : vtkRenderer::Render() [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x8027a8260 : vtkRendererCollection::Render() [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x80278394e : vtkRenderWindow::DoStereoRender() [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x8027837e9 : vtkRenderWindow::Render() [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x801ab5e6b : vtkOpenGLRenderWindow::Render() [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x801b6fa6f : vtkXOpenGLRenderWindow::Render() [(libvtkRenderingOpenGL2-9.1.so.1) ???:-1]
    0x802789fa7 : vtkRenderWindowInteractor::Render() [(libvtkRenderingCore-9.1.so.1) ???:-1]
    0x801ba7733 : vtkXRenderWindowInteractor::DispatchEvent(_XEvent*) [(libvtkRenderingUI-9.1.so.1) ???:-1]
    0x801ba8657 : vtkXRenderWindowInteractor::StartEventLoop() [(libvtkRenderingUI-9.1.so.1) ???:-1]
    0x26edc8 : _ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_ [(f3d) ???:-1]
    
    
    
    

    f3d-1.1.1 vtk-9.1.0 FreeBSD 13

    opened by yurivict 13
  • Can f3d work in docker?

    Can f3d work in docker?

    Describe the bug I tried to build a f3d docker to run f3d under command line. I can only get it output help message. When run f3d with real glb model, I see "segmentation fault"

    To Reproduce Steps to reproduce the behavior:

    docker build -t glb2video .
    wget https://github.com/f3d-app/f3d/raw/master/testing/data/WaterBottle.glb
    docker run -i -v $PWD:/data -w /data glb2video f3d --help # now we can see the output
    
    # this command gives no output
    docker run -i -v $PWD:/data -w /data glb2video f3d --input WaterBottle.glb --output wb.png --dry-run
    
    # run these to see 'segmentation fault'
    docker run -it -v $PWD:/data -w /data glb2video bash
    [email protected]:/data# f3d --input WaterBottle.glb --output wb.png --dry-run
    Segmentation fault
    

    Dockerfile(I tried 3 different base images, none of them works):

    #FROM python:3.9.9-slim-buster
    #FROM ubuntu:18.04
    FROM nvidia/opengl:1.2-glvnd-devel-ubuntu18.04
    COPY f3d-1.2.1-Linux.deb /
    RUN (dpkg -i /f3d-1.2.1-Linux.deb || true ) && apt-get update && apt-get install -y -f && dpkg -i /f3d-1.2.1-Linux.deb && rm -f /f3d-1.2.1-Linux.deb
    
    bug 
    opened by xzhub 12
  • Pixelated 4K HDRI

    Pixelated 4K HDRI

    Hello,

    In F3D, Poly Haven's Cape Hill HDRI in 4K is pixelated whereas model is crisp.

    F3D - Pixelated 4K HDRI with crisp model

    Always in F3D, same HDRI in 8K is still pixelated but less pixelated than in 4K.

    F3D - Less pixelated 8K HDRI

    F3D - Pixelated 4K HDRI

    Hovewever in RenderStuff Panorama Viewer, same HDRI in 4K (converted to JPEG, with quality 100%) is less pixelated.

    RenderStuff Panorama Viewer - Less pixelated 4K HDRI

    I saw in F3D code source HDRI is mapped to a sphere... Maybe a param is missing to increase HDRI rendering quality?

    I can workaround with a 8K/16K HDRI but it takes longer to load. So I would prefer to stick on 4K. PS: I use F3D v1.2.1

    Thanks!

    enhancement 
    opened by SamuelTallet 12
  • Segfault while loading a glTF with a normal map

    Segfault while loading a glTF with a normal map

    Hello, I'm unable to load a glTF model with a normal map in F3D v1.2.1.

    f3d --input='trex_s.gltf' gives:

    ERROR: In /__w/f3d/f3d/dependencies/vtk/Rendering/OpenGL2/vtkShaderProgram.cxx, line 437
    vtkShaderProgram (0x55ac9ed42f70): 1: #version 150
    2: #ifndef GL_ES
    3: #define highp
    4: #define mediump
    5: #define lowp
    6: #endif // GL_ES
    7: #define attribute in
    8: #define varying out
    9: 
    10: 
    11: /*=========================================================================
    12: 
    13:   Program:   Visualization Toolkit
    14:   Module:    vtkPolyDataVS.glsl
    15: 
    16:   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
    17:   All rights reserved.
    18:   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
    19: 
    20:      This software is distributed WITHOUT ANY WARRANTY; without even
    21:      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
    22:      PURPOSE.  See the above copyright notice for more information.
    23: 
    24: =========================================================================*/
    25: 
    26: in vec4 vertexMC;
    27: 
    28: 
    29: 
    30: 
    31: // frag position in VC
    32: out vec4 vertexVCVSOutput;
    33: 
    34: // optional normal declaration
    35: //VTK::Normal::Dec
    36: 
    37: // extra lighting parameters
    38: //VTK::Light::Dec
    39: 
    40: // Texture coordinates
    41: in vec2 tcoord;
    42: out vec2 tcoordVCVSOutput;
    43: 
    44: uniform mat4 tcMatrix;
    45: 
    46: // material property values
    47: //VTK::Color::Dec
    48: 
    49: // clipping plane vars
    50: //VTK::Clip::Dec
    51: 
    52: // camera and actor matrix values
    53: uniform mat4 MCDCMatrix;
    54: uniform mat4 MCVCMatrix;
    55: 
    56: // Apple Bug
    57: //VTK::PrimID::Dec
    58: 
    59: // Value raster
    60: //VTK::ValuePass::Dec
    61: 
    62: // picking support
    63: //VTK::Picking::Dec
    64: 
    65: void main()
    66: {
    67:   
    68: 
    69:   //VTK::Color::Impl
    70: 
    71:     tangentVCVSOutput = tangentMC;
    72:   tangentVCVSOutput = normalMatrix * tangentVCVSOutput;
    73: 
    74: 
    75:   vec4 tcoordTmp = tcMatrix*vec4(tcoord,0.0,1.0);
    76: tcoordVCVSOutput = tcoordTmp.xy/tcoordTmp.w;
    77: 
    78: 
    79:   //VTK::Clip::Impl
    80: 
    81:   //VTK::PrimID::Impl
    82: 
    83:     vec4 posMC = vertexMC;
    84:   gl_Position = MCDCMatrix * posMC;
    85:   vertexVCVSOutput = MCVCMatrix * posMC;
    86: 
    87: 
    88:   //VTK::ValuePass::Impl
    89: 
    90:   //VTK::Light::Impl
    91: 
    92:   //VTK::Picking::Impl
    93: 
    94:   //VTK::CustomEnd::Impl
    95: }
    
    ERROR: In /__w/f3d/f3d/dependencies/vtk/Rendering/OpenGL2/vtkShaderProgram.cxx, line 438
    vtkShaderProgram (0x55ac9ed42f70): 0(71) : error C1503: undefined variable "tangentVCVSOutput"
    0(71) : error C1503: undefined variable "tangentMC"
    0(72) : error C1503: undefined variable "tangentVCVSOutput"
    0(72) : error C1503: undefined variable "normalMatrix"
    0(72) : error C1503: undefined variable "tangentVCVSOutput"
    

    However attached model is valid and loads on glTF Report.

    trex_s_report

    bug VTK 
    opened by SamuelTallet 10
  • Need help testing Flatpak package.

    Need help testing Flatpak package.

    I recently create PR to update F3D to 1.2.0. For unknown reason, I could not get any model to display.

    https://github.com/flathub/com.kitware.F3D/pull/33

    To install it, first install flatpak.

    Ubuntu sudo apt install flatpak openSUSE sudo zypper in flatpak

    To install F3D from the PR. flatpak install --user https://dl.flathub.org/build-repo/67847/com.kitware.F3D.flatpakref

    To run it.

    • Click the F3D icon on the menu.
    • Use command flatpak run com.kitware.F3D

    Thanks.

    bug 
    opened by kevinsmia1939 10
  • Github migration

    Github migration

    • [x] Migration of repo
    • [x] CI: #61
    • [x] Website: #66
    • [x] Issues
    • [x] Releases
    • [x] MRs to PRs
    • [x] Archive gitlab
    • [x] reddit pass
    • [x] blog pass
    • [x] discourse pass
    • [x] other websites pass
    • [x] brew package
    • [x] aur package
    • [x] freebsd: comment below
    • [x] nixpkgs: https://github.com/NixOS/nixpkgs/pull/147173
    • [x] flathub: https://github.com/flathub/com.kitware.F3D/issues/25
    • [x] OpenSuse community: https://build.opensuse.org/package/show/home:AndnoVember:Debian/f3d
    • [x] Upcoming debian package : ongoing
    • [x] GLTF Project Expolorer: https://github.com/KhronosGroup/glTF-Project-Explorer/pull/130
    • [x] https://github.com/nschloe/awesome-scientific-computing : https://github.com/nschloe/awesome-scientific-computing/pull/76
    opened by mwestphal 10
  • When render with hdr background and '-u' , the background could be stretched (wrong x/y ratio)

    When render with hdr background and '-u' , the background could be stretched (wrong x/y ratio)

    Describe the bug When render with hdr skybox photo, and using different x/y for the output picture, we can see the background is stretched.

    First, the pictures without -u, I don't see obvious issues, background picture looks fine. 1200x1200: 1200x1200

    2400x1200: 2400x1200

    However, after turn on background blur, the second one looks wrong (the light shape is oval): 1200x1200 with -u: 1200x1200u

    2400x1200 with -u: 2400x1200u

    To Reproduce Steps to reproduce the behavior:

    f3d --input WaterBottle.glb --output 2400x1200u.png --camera-position=0.584518,0.0,0.0 -u -t --hdri christmas.hdr --resolution=2400,1200 --dry-run
    

    background img: christmas.hdr.zip

    Expected behavior

    background should look similar with different resolution

    System Information:

    • OS: Linux
    • GPU and GPU driver: None

    F3D Information Paste the content of f3d --version:

    1.2.1

    bug 
    opened by xzhub 8
  • --scalar and --texture-base-color create stange artifacts

    --scalar and --texture-base-color create stange artifacts

    Describe the bug Using --scalar and --texture-base-color together create stange artifacts

    To Reproduce ./bin/f3d ../src/testing/data/WaterBottle.glb --geometry-only --texture-base-color=../src/testing/data/red.jpg --scalars=TANGENT --output=a.png

    a

    It is not clear to me what should be expected, but something better than this, Im sure. To check against #347

    bug 
    opened by mwestphal 0
  • --scalar and --color do not work together

    --scalar and --color do not work together

    Describe the bug --scalar and --color do not work together, --scalar override completely --color

    To Reproduce ./bin/f3d ../src/testing/data/WaterBottle.glb --geometry-only --color=0,1,1 --scalars

    Expected behavior A blend of color if possible

    a

    bug 
    opened by mwestphal 1
  • Better user-friendly effect options names

    Better user-friendly effect options names

      this->Internals->init("render.effect.depth-peeling", false); // MEAK: "depth-peeling" -> "translucency-support"?
      this->Internals->init("render.effect.fxaa", false); // MEAK: "fxaa" -> "anti-aliasing"?
      this->Internals->init("render.effect.ssao", false); // MEAK: "ssao" -> "ambient-occlusion"?
      this->Internals->init("render.effect.tone-mapping", false);
    
    enhancement 
    opened by mwestphal 0
Releases(v1.2.1)
  • v1.2.1(Dec 14, 2021)

    Bug fixes and features:

    • Fixed a build issue on MacOS
    • Fixed a critical issue with the Windows Thumbnailer that could crash explorer.exe
    • Fixed the --quiet option so that it actually quiets VTK errors and warnings
    • Fixed an issue with output window poping up at each log on Windows
    • Added a .deb package for Linux Debian-based distros

    For Packagers:

    • LFS file have been added in source code release, this seems to be retroactive, so hash of previous releases may have changed
    • Flatpack org name has been fixed
    Source code(tar.gz)
    Source code(zip)
    f3d-1.2.1-Darwin.dmg(19.31 MB)
    f3d-1.2.1-Linux.deb(24.87 MB)
    f3d-1.2.1-Linux.tar.gz(24.86 MB)
    f3d-1.2.1-Linux.tar.xz(17.54 MB)
    f3d-1.2.1-win64.exe(9.77 MB)
    f3d-1.2.1-win64.zip(12.81 MB)
  • v1.2.0(Dec 5, 2021)

    Main New Features:

    • Added STEP and IGES file format support thanks to @Open-Cascade-SAS /OCCT (thanks @drtrigon)
    • Added FBX, DAE, OFF, and DXF file format support thanks to @assimp /assimp
    • Added thumbnail support with many linux file managers
    • Added thumbnail support on Windows
    • Added desktop environnement integration in linux
    • Added scalar and scalar component looping

    zelda_small Model: Zelda - Breath Of The Wild by theStoff

    Complete Changelog

    Other New Features:

    • Added support for KHR_materials_unlit with glTF files (thanks @spiraloid)
    • Added option for selecting camera --camera-index (thanks @spiraloid)
    • Added coloring the to Windows error output window
    • Added a man entry on Linux
    • Added a --config option to select a config file to load instead of using default location
    • Added a --quiet option
    • Added --camera-azimuth and --camera-elevation options (thanks @tatsuya-s)
    • Added a metainfo.xml file (thanks @kevinsmia1939)

    Issue Fixes:

    • Fixed an issue with opening files with accented char in the name on Windows (thanks @shankarsivarajan)
    • Fixed HDRI orientation with --up option (thanks @truhlikfredy)
    • Fixed an issue with point cloud rendering
    • Fixed a crash on exit on Windows
    • Fixed an issue with fullscreen window size on Windows
    • Fixed offscreen rendering (--output and --ref ) to actually use offscreen rendering
    • Fixed a memory leak when no rendering is performed (thanks @CharlesGueunet)
    • Fixed a rendering issue with certain GPU drivers
    • Fixed tone mapping with background opacity
    • Fixed non-working drag and drop implementation in VTK (thanks @msbit)
    • Fixed a potential sorting issue when opening a folder
    • Fixed a crash with unsupported glTF files in VTK

    For Developpers:

    • Full rework of the CI framework, including coverage report support
    • Full rework of the testing framework
    • Separation of vtkF3DRenderer in two classes
    • Separation of f3d executable into a libf3d library and f3d executable to support windows thumbnails

    For Packagers:

    • New CMake options to select file to install, all documented and starting with F3D_
    • mime types file can be installed, make sure to trigger update-mime-databse
    • dekstop file can be installed, make sure to trigger update-desktop-database

    Packagers: AndnoVember @jokersus @kevinsmia1939 @yurivict @bcdarwin @mzf-guest @Meakk @mwestphal

    Binary Release Information:

    • The binary release is not built with raytracing support
    • This binary release is built with assimp 5.1.2, animation for assimp formats is not working well

    Contributors: @CharlesGueunet @kevinsmia1939 @mzf-guest @jpouderoux @Meakk @mwestphal

    Source code(tar.gz)
    Source code(zip)
    f3d-1.2.0-Darwin.dmg(19.31 MB)
    f3d-1.2.0-Linux.tar.gz(24.85 MB)
    f3d-1.2.0-Linux.tar.xz(17.53 MB)
    f3d-1.2.0-win64.exe(10.45 MB)
    f3d-1.2.0-win64.zip(13.84 MB)
  • v1.1.1(Nov 20, 2021)

    A patch release dedicated to package managers that makes F3D v1.1 compatible with vtk v9.1.0

    Changelog

    • Fix a render pass build issue with vtk 9.1.0
    • Fix a renderer build issue with vtk 9.1.0

    Contributors

    • Michael Migliore @Meakk
    • Mathieu Westphal @mwestphal
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Nov 14, 2021)

    Changelog

    New Important Features:

    • Added direct scalars color rendering mode, see doc.
    • Added a turntable interactor and made it default. The previous interactor can still be used using a dedicated option. Thanks @orangebowlerhat @filip.sund and @jjomier for your suggestions.
    • Added animation support for glTF and Exodus files. Press space for playing the animation.
    • Added animation related option, --animation-index, only for glTF when using the full scene.

    New Readers and format compatibility features:

    • Added skinning and morphing support with glTF files.
    • Added TIFF format support. Thanks @proudot for your suggestion.
    • Added exodus format support. Thanks @gvernon for your suggestion.
    • Added support for OBJ with color directly inside of it instead of using a .mtl file. Thanks @Chenge321 for your suggestion.

    Quality of life features:

    • Added a hotkey (UP) to reload current file, thanks @caioaao.
    • Improved Alpha blending performance, thanks @paul.lafoix.
    • Changed the progress bar to a more nice looking one and made it appears only if loading takes time. Thanks @finetjul for the suggestion.
    • Improved logging mechanism with color on all OS and a dedicated output window on windows.
    • Added a warning when using RayTracing but it is not available.

    Fixes:

    • Fixed an issue with skybox and edges.
    • Fixed a crash when an array had no name.
    • Fixed a window naming issue on OSX.
    • Fixed a symlink issue.
    • Fixed a coloring issue with dataset containing only cell data.

    Packaging:

    • Upgraded the AUR f3d package to 1.1.0 : https://aur.archlinux.org/packages/f3d.
    • Added a Brew f3d 1.1.0 package : https://formulae.brew.sh/formula/f3d.
    • FreeBSD now contains a f3d 1.1.0 package, thanks to [email protected]
    • NixOS now contains a f3d package, 1.1.0 should come soon, thanks to [email protected]

    How to support F3D:

    • Use the software.
    • Share it with anyone interested.
    • Star us on github: https://github.com/kitware/F3D.

    Note: Binaries have no raytracing support.

    Main Contributors

    • Michael Migliore @Meakk
    • Mathieu Westphal @mwestphal
    Source code(tar.gz)
    Source code(zip)
    f3d-1.1.0-Darwin.dmg(9.07 MB)
    f3d-1.1.0-Linux.tar.xz(8.17 MB)
    f3d-1.1.0-win64.exe(4.92 MB)
    f3d-1.1.0-win64.zip(6.22 MB)
  • v1.0.1(Nov 14, 2021)

    Changelog

    • VisualStudio Runtime is now included into the windows release
    • Ensure VTK compatibility
    • Improve STL binary reader performances
    • Fix default configuration issues
    • Add support for Window icon on all OSes

    Note: Binaries have no raytracing support.

    Contributors

    • Michael Migliore @Meakk
    • Mathieu Westphal @mwestphal
    Source code(tar.gz)
    Source code(zip)
    f3d-1.0.1-Darwin.dmg(7.41 MB)
    f3d-1.0.1-Linux.tar.gz(9.33 MB)
    f3d-1.0.1-Linux.tar.xz(6.54 MB)
    f3d-1.0.1-win64.exe(3.93 MB)
    f3d-1.0.1-win64.zip(4.92 MB)
  • v1.0.0(Nov 14, 2021)

    Changelog

    • Documentation
      • Online documentation based on Hexo (https://kitware.github.io/F3D/)
    • Rendering
      • Add volume rendering for 3D images
      • HDRI support (skyboxes, HDR files, Filmic tone mapping)
      • Point sprites for displaying point clouds
      • Color map customization (default one changed to “inferno”)
    • Interface
      • Drag&Drop files support
      • Supports opening of several files (or folder), use left/right arrow to navigate
      • Scalars field handling improvements
      • Cheat Sheet
      • Interactive hotkeys have been reworked
      • File association on Windows and OSX
      • Fullscreen mode
      • No background mode (useful when saving image to a PNG file with alpha channel)
    • Command line
      • Camera configuration
      • Metadata (field data) display
      • File name display
      • No render mode (useful to read information in the file)
      • Shell completion (supports bash, zsh, fish)
    • New readers
      • CityGML
      • PTS
    • Packages
      • Default config provide

    Note: Binaries have no raytracing support.

    Contributors

    • Michael Migliore @Meakk
    • Mathieu Westphal @mwestphal
    • Helene Grandmontagne @hlngrandmontagne
    • Paul Lafoix
    Source code(tar.gz)
    Source code(zip)
    f3d-1.0.0-Darwin.dmg(7.38 MB)
    f3d-1.0.0-Linux.tar.gz(9.30 MB)
    f3d-1.0.0-Linux.tar.xz(6.52 MB)
    f3d-1.0.0-win64.exe(3.67 MB)
    f3d-1.0.0-win64.zip(4.57 MB)
  • v0.1.1(Nov 14, 2021)

  • v0.1.0(Nov 14, 2021)

Gfx - A minimalist and easy to use graphics API.

gfx gfx is a minimalist and easy to use graphics API built on top of Direct3D12/HLSL intended for rapid prototyping. It supports: Full shader reflecti

Guillaume Boissé 241 Aug 3, 2022
Minimalist protocol buffer decoder and encoder in C++

protozero Minimalistic protocol buffer decoder and encoder in C++. Designed for high performance. Suitable for writing zero copy parsers and encoders

Mapbox 224 Aug 10, 2022
isabel - Simple, minimalist note manager.

isabel isabel - Simple, minimalist note manager. Usage Type name and body of note and press Ctrl+s for save note. Press Tab to open notes list. Press

null 1 Oct 2, 2021
Legacy stepper motor analyzer - A DYI minimalist hardware stepper motor analyzer with graphical touch screen.

Simple Stepper Motor Analyzer NOTE: This is the legacy STM32 based design which was replaced by the single board, Raspberry Pi Pico design at https://

Zapta 158 Mar 21, 2022
A Sol-inspired minimalist Lua binding for Zig.

zoltan A Sol-inspired minimalist Lua binding for Zig. Features Supports Zig 0.9.0 Lua tables table creation from Zig get/set/create methods possible k

null 70 Jul 27, 2022
per - Simple unix permission viewer and converter

Per is a simple utility that can verbosely print unix permissions and convert between symbolic and numeric notations and vice-versa.

jarmuszz 5 Feb 27, 2022
Unix pager (with very rich functionality) designed for work with tables. Designed for PostgreSQL, but MySQL is supported too. Works well with pgcli too. Can be used as CSV or TSV viewer too. It supports searching, selecting rows, columns, or block and export selected area to clipboard.

Unix pager (with very rich functionality) designed for work with tables. Designed for PostgreSQL, but MySQL is supported too. Works well with pgcli too. Can be used as CSV or TSV viewer too. It supports searching, selecting rows, columns, or block and export selected area to clipboard.

Pavel Stehule 1.8k Aug 7, 2022
DICOM images and volumes viewer with advanced processing infrastructure (WPF, ITK, VTK)

DicomViewer DICOM images and volumes viewer with advanced processing infrastructure Stack: WPF (C#) ITK (C++) VTK (C++) Structure: DicomViewer - WPF a

Paweł Piorun 0 Jul 1, 2022
Registry viewer, editor and profile saver

Registry Profiler This app allows certain registry values like the ones for brightness & volume to change and saved into profiles. The first menu give

Codiak 4 Feb 6, 2022
SFML-based Mandelbrot viewer program

mandelbrot SFML-based Mandelbrot viewer program. Dependencies CMake 3.16 C++17 SFML 2.5 Building cmake -B build -DCMAKE_BUILD_TYPE=Release cmake --bui

Chris Thrasher 13 May 14, 2022
An image viewer for 9front

An image viewer for 9front

phil9 4 Nov 30, 2021
QOI image viewer on top of the Sokol headers

qoiview A simple .qoi image file viewer on top of the sokol headers. QOI: https://github.com/phoboslab/qoi Sokol: https://github.com/floooh/sokol WASM

Andre Weissflog 97 Aug 7, 2022
This repository provides the implementation of a ADC real-time viewer for an analog sound sensor.

Real-time sound analysing using microcontroller FRDM-KL25Z Acest cod este realizat pentru o platforma autonoma realizata cu kitul de la NXP care are r

null 5 Jan 20, 2022
This is a dithered photo viewer.

M5Stack M5Paper: Photo viewer This is a dithered photo viewer for the M5Stack M5Paper device. It's capable of drawing 960x540 resolution pictures in 1

Sarah Cartwright 12 Apr 15, 2022
Level viewer for Super Mario Maker 2, based on JiXiaomai's work

Toost Level viewer for Super Mario Maker 2, based on JiXiaomai's work How to build If building for desktop, obtain development files for sdl2, glew, g

TheGreatRambler 48 Aug 3, 2022
htop - an interactive process viewer

Introduction htop is a cross-platform interactive process viewer. htop allows scrolling the list of processes vertically and horizontally to see their

htop 3.9k Aug 10, 2022
Total Registry - enhanced Registry editor/viewer

Total Registry Replacement for the Windows built-in Regedit.exe tool. Improvements over that tool include: Show real Registry (not just the standard o

Pavel Yosifovich 976 Aug 10, 2022
Peregrine - A blazing fast language for the blazing fast world(WIP)

A Blazing-Fast Language for the Blazing-Fast world. The Peregrine Programming Language Peregrine is a Compiled, Systems Programming Language, currentl

Peregrine 1.5k Aug 9, 2022
Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more

EnTT is a header-only, tiny and easy to use library for game programming and much more written in modern C++. Among others, it's used in Minecraft by

Michele Caini 7k Aug 6, 2022