F3D(1)

πŸ¦‹ F3D β€” NAME πŸ¦‹

okay bestie, gather round, because this is the F3D(1) manual page and it's literally the user-commands one πŸ’…

F3D β€” fast and minimalist 3D viewer ✨


🌸 DESCRIPTION 🌸

F3D β€” A fast and minimalist 3D viewer. Usage, and I'm gonna give it to you raw because that's just how it is:

f3d [OPTIONS...] file1 file2 ...

so yeah, options first, then however many files you want, no cap 🫢

πŸŽ€ Applicative options

like, the main character options. the ones that actually do the big stuff πŸ’–

  • --input <files> β€” the actual input files, bestie. the whole point πŸ¦‹
  • -D, --define libf3d.option=value β€” define libf3d options, go set 'em ✨
  • -R, --reset libf3d.option β€” reset libf3d options, undo era πŸ’…
  • --output <png file> β€” render to a file, png style πŸŽ€
  • --output-video <h264 file> β€” render to a video, h264 style πŸ”₯
  • --no-background [=<bool>(=1)] β€” no background when you render to file (default: false) 🌈
  • --no-cache [=<bool>(=1)] β€” no cache is used, and I mean both reading and writing (default: false) πŸ’€
  • -h, --help β€” print help, the classic 🫢
  • --version β€” print version details, iykyk ⭐
  • --list-readers β€” print the list of readers πŸ‘‘
  • --force-reader <reader> β€” force a specific reader to be used, straight up disregarding the file extension. rude but iconic πŸ’…
  • --skip-content-check [=<bool>(=1)] β€” select a reader to read the file without checking its header content, only based on the file extension (default: false) πŸ™ˆ
  • --list-bindings [=<bool>(=1)] β€” print the list of interaction bindings and exits. it's ignored with --no-render, and it only considers the first file group (default: false) πŸ¦‹
  • --config <filePath/filename/fileStem> β€” specify the configuration file to use. absolute/relative path, or filename/filestem to search in the configuration file locations 🌸
  • --no-config [=<bool>(=1)] β€” do not read the configuration file (default: false) 🚫
  • --no-render [=<bool>(=1)] β€” do not render anything and quit right after loading the first file. use it with --verbose to recover information about a file (default: false) πŸ”
  • --load-statefile <file path> β€” restore the application state from a statefile, applied above config files but below command line options. use - for the standard input πŸ’œ
  • --save-statefile <file path> β€” save the application state to a statefile right after loading, then continue. supports the same template variables as --output. use - for the standard output πŸŽ€
  • --statefile-filename <file path> β€” default filename used by the statefile save and load interactions when no file is provided. supports the same template variables as --output. use - for the standard output (save) or standard input (load) ⭐
  • --rendering-backend <string> β€” backend to use when rendering (auto|glx|wgl|egl|osmesa) (default: auto) πŸ”₯
  • --list-rendering-backends β€” print the list of rendering backends available on this system πŸ‘‘
  • --list-video-encoders β€” print the list of video encoders available on this system 🌈
  • --video-encoder <name> β€” select the video encoder to use for output πŸŽ₯
  • --video-bitrate <bitrate> β€” select the video bitrate in Mbps to use for output (default: 5) πŸ“Ά
  • --video-low-latency [=<bool>(=1)] β€” enable low latency mode for video encoding (default: false) ⚑
  • --max-size <size in Mib> β€” maximum size in Mib of a file to load, leave it empty for unlimited 🐘
  • --dpi-aware [=<bool>(=1)] β€” scale font and window resolution according to system scale (default: false) πŸ–₯️
  • --watch [=<bool>(=1)] β€” watch the current file and automatically reload it whenever it's modified on disk (default: false) πŸ‘€
  • --frame-rate <fps> β€” frame rate used to refresh animation and other repeated tasks (watch, UI). does not impact rendering frame rate (default: 30.0) 🎞️
  • --load-plugins <paths or names> β€” list of plugins to load, separated with a comma 🧩
  • --plugins-path <path> β€” path specifying where to load plugins from πŸ“
  • --scan-plugins β€” scan standard directories for plugins and display available plugins (heads up: the result can be incomplete) πŸ”Ž
  • --screenshot-filename <filename> β€” screenshot filename (default: {app}/{model}_{n}.png) πŸ“Έ

✨ General options ✨

the everyday essentials, the ones that just live in your config 🫢

  • --verbose [={debug, info, warning, error, quiet}(=debug)] β€” set verbose level, providing more information about the loaded data in the console output (default: info) πŸ—£οΈ
  • --loading-progress [=<bool>(=1)] β€” show loading progress bar (default: false) ⏳
  • --animation-progress [=<string>(=default)] β€” animation progress bar mode ("none", "default" or "advanced") (default: none) 🎠
  • --multi-file-mode <single|all|dir> β€” choose the behavior when opening multiple files. "single" will show one file at a time, "all" will show all files in a single scene, "dir" will show files from the same directory in the same scene (default: single) πŸ—‚οΈ
  • --multi-file-regex <regex> β€” regular expression pattern to group files. captured groups are replaced with "*" so that, for example, the pattern "part(\d+)" would group files "foo-part1.xyz" and "foo-part2.xyz" together as "foo-part*.xyz" 🧠
  • --recursive-dir-add [=<bool>(=1)] β€” add directories recursively (default: false) 🌳
  • --remove-empty-file-groups [=<bool>(=1)] β€” remove file groups that results into an empty scene (default: false) 🧹
  • --up <direction> β€” up direction (default: +Y) ⬆️
  • -x, --axis [=<bool>(=1)] β€” show axes (default: false) πŸ“
  • -g, --grid [=<bool>(=1)] β€” show grid (default: false) πŸ”²
  • --x-color <color> β€” color of the X axis (default: #f94306) ❀️
  • --y-color <color> β€” color of the Y axis (default: #7aff7a) πŸ’š
  • --z-color <color> β€” color of the Z axis (default: #788bff) πŸ’™
  • --grid-absolute [=<bool>(=1)] β€” position grid at the absolute origin instead of below the model (default: false) 🎯
  • --grid-unit <value> β€” size of grid unit square, automatically computed by default πŸ“
  • --grid-subdivisions <value> β€” number of grid subdivisions (default: 10) πŸ”’
  • --grid-color <color> β€” color of main grid lines (default: #000000) πŸ–€
  • --grid-opacity <value> β€” opacity of the grid lines (default: 1) 🫧
  • --grid-reflection <value> β€” reflection strength of the grid (default: 0) πŸͺž
  • --axes-grid [=<bool>(=1)] β€” enable grid axis (default: false) ✨
  • -e, --edges [=<bool>(=1)] β€” show cell edges πŸ•ΈοΈ
  • --armature [=<bool>(=1)] β€” enable armature visualization (default: false) 🦴
  • --camera-index <index> β€” select the camera to use πŸŽ₯
  • -k, --interaction-style [=<style>(=2d)] β€” interaction style (default: default) πŸ–±οΈ
  • --invert-zoom [=<bool>(=1)] β€” invert zoom direction with right mouse click (default: false) πŸ”„
  • --animation-autoplay [=<bool>(=1)] β€” automatically start animation (default: false) ▢️
  • --animation-indices <index,index,index> β€” select animations to show (default: 0) 🎬
  • --animation-speed-factor <ratio> β€” set animation speed factor (default: 1) πŸƒβ€β™€οΈ
  • --animation-time <time> β€” set animation time to load ⏱️
  • --font-file <file_path> β€” path to a FreeType compatible font file πŸ”€
  • --font-scale <ratio> β€” scale fonts (default: 1) πŸ”
  • --font-color <color> β€” set font color (default: #f4f4f4) 🎨
  • --backdrop-opacity <value> β€” UI backdrop opacity (default: 0.9) 🫧
  • --backdrop-color <color> β€” UI backdrop color (default: #141414) πŸŒ‘
  • --command-script <file_path> β€” path to a script file containing commands to execute πŸ“œ
  • --normal-glyphs [=<bool>(=1)] β€” enable normal glyphs (default: false) 🧭
  • --normal-glyphs-scale <ratio> β€” scale normal glyphs (default: 1) πŸ“Š

πŸ’œ Material options πŸ’œ

this is where the lewks happen, bestie. textures, colors, the whole vibe πŸ’…

  • -o, --point-sprites [=<string>(=sphere)] β€” select point sprites type ("none", "sphere", "gaussian", "circle", "stddev", "bound") (default: none) πŸ”΅
  • --point-sprites-size <size> β€” point sprites sphere size (default: 10) πŸ“
  • --point-sprites-absolute-size [=<bool>(=1)] β€” do not scale point sprites size by scene size (default: false) πŸ“Œ
  • --point-size <size> β€” point size when showing vertices, model specified by default πŸ”˜
  • --line-width <width> β€” line width when showing edges, model specified by default βž–
  • --backface-type <visible|hidden> β€” backface type, can be visible or hidden, model specified by default πŸ”ƒ
  • --color <color> β€” solid color 🎨
  • --opacity <opacity> β€” opacity πŸ«₯
  • --roughness <roughness> β€” roughness coefficient (0.0-1.0) πŸͺ¨
  • --metallic <metallic> β€” metallic coefficient (0.0-1.0) πŸͺ©
  • --base-ior <base-ior> β€” Index Of Refraction of the base layer (1.0-2.5) πŸ’Ž
  • --hdri-file <file path> β€” path to an image file that can be used as a light source and skybox πŸŒ…
  • -f, --hdri-ambient [=<bool>(=1)] β€” enable HDRI ambient lighting (default: false) πŸ’‘
  • -j, --hdri-skybox [=<string>(=enabled)] β€” enable HDRI skybox background (default: disabled) 🌌
  • --texture-matcap <file path> β€” path to a texture file containing a material capture 🫧
  • --texture-base-color <file path> β€” path to a texture file that sets the color of the object 🎨
  • --texture-material <file path> β€” path to a texture file that sets the Occlusion, Roughness and Metallic values of the object 🧱
  • --texture-emissive <file path> β€” path to a texture file that sets the emitted light of the object ✨
  • --textures-transform <transform2d> β€” 3x3 matrix to transform textures πŸ”²
  • --emissive-factor <color> β€” Emissive factor. this value is multiplied with the emissive color when an emissive texture is present 🌟
  • --texture-normal <file path> β€” path to a texture file that sets the normal map of the object πŸ—ΊοΈ
  • --checkerboard [=<bool>(=1)] β€” apply checkerboard texture to objects (default: false) 🏁
  • --normal-scale <normalScale> β€” Normal scale affects the strength of the normal deviation from the normal texture πŸ“ˆ
  • --unlit [=<bool>(=1)] β€” ignore shading and make the material unlit πŸ’‘

πŸŽ€ Window options πŸŽ€

the actual window itself. the stage. the main character energy πŸͺŸ

  • --background-color <color> β€” background color (default: #333333) πŸ–€
  • --resolution <width,height> β€” window resolution (default: 1000, 600) πŸ“Ί
  • --position <x,y> β€” window position πŸ“
  • -z, --fps [=<bool>(=1)] β€” display rendering frame per second (default: false) 🎞️
  • -n, --filename [=<bool>(=1)] β€” display filename (default: false) πŸ“„
  • -m, --metadata [=<bool>(=1)] β€” display file metadata (default: false) 🏷️
  • --scene-hierarchy [=<bool>(=1)] β€” display the scene hierarchy widget (default: false) 🌳
  • --notifications [=<bool>(=1)] β€” display notifications (default: false) πŸ””
  • --hdri-filename [=<bool>(=1)] β€” display hdri filename (default: false) πŸ–ΌοΈ
  • --blur-coc &lt;value&gt; β€” the blur circle-of-confusion radius, aka how extra your depth-of-field bokeh gets (default: 20)
  • --light-intensity &lt;value&gt; β€” how hard the lights go (default: 1)

Scientific visualization options ✨

  • -s, --coloring-mode [=<material|scivis|direct>(=scivis)] β€” switch up the color mode (default: material)
  • --coloring-array &lt;array_name&gt; β€” the name of the array you wanna color with
  • -y, --coloring-component [=<comp_index>(=0)] β€” which component of that array you're coloring with. Don't specify one? It uses magnitude, periodt.
  • --coloring-field [=<string>(=cells)] β€” pick which field does the coloring, e.g. "cells" or "points" (default: any)
  • --coloring-range &lt;min,max&gt; β€” set a custom range for the coloring-by-array. If you don't, it just computes it for you automatically, no cap.
  • -b, --coloring-scalar-bar [=<bool>(=1)] β€” show the scalar bar (default: false)
  • --colormap-file &lt;filePath/filename/fileStem&gt; β€” hand over a colormap image 🎨
  • --colormap-discretization &lt;int&gt; β€” how many colors live in the colormap
  • --colormap &lt;color_list&gt; β€” build a custom colormap (lowkey ignored if "colormap-file" is specified) (default: 0,#000000,0.4,0.9,0,0,0.8,0.9,0.9,0,1,#ffffff)
  • --volume-opacity-map &lt;opacity_list&gt; β€” a custom opacity map for volume rendering (default: 0,0,1,1)
  • --volume-opacity-file &lt;filePath/filename/fileStem&gt; β€” a custom opacity map image for volume rendering 🫢
  • -v, --volume [=<bool>(=1)] β€” show the volume, but only if the file is compatible (default: false)
  • -i, --volume-inverse [=<bool>(=1)] β€” flip the opacity function for volume rendering (default: false)

Camera options πŸ“Έ

  • --camera-position &lt;X,Y,Z&gt; β€” where the camera sits. Heads up bestie: this overrides camera direction and camera zoom factor if you passed any. It's giving main character energy, it wins.
  • --camera-focal-point &lt;X,Y,Z&gt; β€” the camera focal point
  • --camera-view-up &lt;direction&gt; β€” the camera view up
  • --camera-view-angle &lt;angle&gt; β€” camera view angle (non-zero, in degrees) (default: 0.0)
  • --camera-direction &lt;direction&gt; β€” the camera direction
  • --camera-zoom-factor &lt;factor&gt; β€” camera zoom factor (non-zero) (default: 0.0)
  • --camera-azimuth-angle &lt;angle&gt; β€” camera azimuth angle (in degrees), and it's performed after the other camera options (default: 0.0)
  • --camera-elevation-angle &lt;angle&gt; β€” camera elevation angle (in degrees), also performed after the other camera options (default: 0.0)
  • --camera-orthographic [=<bool>(=1)] β€” use an orthographic camera

Raytracing options πŸ”₯

  • -r, --raytracing [=<bool>(=1)] β€” turn on raytracing (default: false)
  • --raytracing-samples &lt;samples&gt; β€” samples per pixel (default: 5)
  • -d, --raytracing-denoise [=<bool>(=1)] β€” denoise the image (default: false)

PostFX (OpenGL) options πŸ’…

  • -p, --blending [=<string>(=ddp)] β€” pick your translucency blending mode: "none", "ddp", "sort", "sort_cpu" or "stochastic" (default: none)
  • -q, --ambient-occlusion [=<bool>(=1)] β€” enable ambient occlusion for approximate shadows and better depth perception, implemented using SSAO (default: false)
  • -a, --anti-aliasing [=<string>(=fxaa)] β€” pick your anti-aliasing method: "none", "fxaa", "ssaa" or "taa" (default: none)
  • -t, --tone-mapping [=<bool>(=1)] β€” enable Tone Mapping for balanced coloring (default: false)
  • --final-shader &lt;GLSL code&gt; β€” run the final shader at the very end of the rendering pipeline, the grand finale ✨
  • --display-depth [=<bool>(=1)] β€” display the depth buffer as a grayscale image, or with a colormap if "--scalar-coloring" is specified (default: false)

Testing options πŸ§ͺ

  • --reference &lt;png file&gt; β€” reference
  • --reference-threshold &lt;threshold&gt; β€” testing threshold (default: 0.04)
  • --interaction-test-record &lt;file_path&gt; β€” path to an interaction log file to record interaction events to
  • --interaction-test-play &lt;file_path&gt; β€” path to an interaction log file to play interaction events from when loading a file

πŸ¦‹ EXAMPLES πŸ¦‹

f3d file.vtu -xtgans

View a unstructured mesh in a typical nice looking sciviz style β€” she ate, ngl πŸ’…

f3d file.glb -tuqap --hdri-file=file.hdr --hdri-ambient --hdri-skybox

View a gltf file in a realistic environment 🌈

f3d file.ply -o --point-size=0 --coloring-mode=direct

View a point cloud file with direct scalars rendering ⭐

f3d folder

View all files in folder β€” literally the whole folder, iconic πŸ“


πŸ› REPORTING BUGS πŸ›

Found a bug? Spill it here, bestie: https://github.com/f3d-app/f3d/issues


ok so here's the little ID-card moment at the bottom of the page, and yes it's all staying because it's part of the vibe check πŸ’–

F3D - A fast and minimalist 3D viewer

  • Version: 4.0.1.
  • Build date: 2026-10-31 14:33:59.
  • Build system: Linux 64-bits.
  • Compiler: GNU 16.2.1.
  • Module FFmpeg: OFF.
  • Module ImGui: ON.
  • Module OpenEXR: ON.
  • Module Raytracing: ON.
  • Module WebP: OFF.
  • VTK version: 9.7.1.
  • Copyright Β© 2019-2021 Kitware SAS.
  • Copyright Β© 2021-2025 Michael Migliore, Mathieu Westphal.
  • Copyright Β© 2025-2026 F3D-APP Foundation.
  • License BSD-3-Clause.

and that's the whole page, bestie πŸŽ€ this little legend is F3D 4.0.1, dated October 2026, and she lives in section F3D(1) β€” go forth and render something gorgeous, ily 🫢✨

πŸ“¦ where this page comes from