f3d-app / f3d Goto Github PK
View Code? Open in Web Editor NEWFast and minimalist 3D viewer.
Home Page: https://f3d.app
License: BSD 3-Clause "New" or "Revised" License
Fast and minimalist 3D viewer.
Home Page: https://f3d.app
License: BSD 3-Clause "New" or "Revised" License
In a few locations, extensions are still listed (eg linux thumbnails) rework this to rely on the factory instead
Documentation is hard to maintain, here is the current state:
This should be improved, here is what we need to have:
Here is a proposition to fix that:
Example .md file organization, that could also be used as a webdoc organisation:
- README.md
- doc
-- OPTIONS.md
-- HOTKEYS.md
-- INSTALATION.md
-- USAGE.md
-- BUILD.md (should this go into dev?)
-- CONFIGURATION_FILE.md
-- LIMITATIONS.md
-- TROUBLESHOOTING.md
-- dev
--- GENERATE_WEBDOC.md
--- GENERATE_COVERAGE.md
--- GENERATE_MAN.md
--- DEVELOP.md
- webdoc
...
Differences between README.md and webdoc md files:
+ ![F3D Logo](./resources/logo.svg)
- ![F3D Logo](logo.png)
+ <img src="https://kitware.github.io/F3D/gallery/04-f3d.png" width="640">
- ![F3D Demo](../gallery/04-f3d.png)
+ Options &|Description
- Options|Description
+ See the coloring cycle section for more info.
- See the [coloring cycle](#Cycling Coloring) section for more info.
If all slight change are removed, simply symlinking from the webdoc to the doc.md could be a very easy solution to put into place.
Linux package currently rely on GLIBC. If the Docker image we use for building the Linux package uses a newer version than the user one, the application refuses to run.
See https://gitlab.kitware.com/f3d/f3d/-/merge_requests/224#note_901968
Possible solutions:
musl
The current version of the package uses Ubuntu 18.04, which we consider good enough and should support Debian 10 and Centos 8. Letting this happen in case there are older distribution user in need of a package.
Steps to reproduce :
Improve bokeh blur shader performance.
This approach looks promising: https://www.shadertoy.com/view/Xd33Ds
We are running out of short options and hotkeys, Let's plan how to tackle that.
A few possibilities:
:comp=2
@Meakk please review .github/docker/Dockerfile and .github/workflows/build_docker_image.yml
It was not possible to put them in a PR
--no-background does not work, either because of a VTK regression or an issue in our code.
It works in 1.0, but not in 1.1
Context
When drawing lines coincident with polygons, there could be z-fighting.
We are currently using the default polygon offset value of VTK but I suspect that there is an issue when computing depth range in VTK. Let's investigate.
Steps to reproduce
Notes
more info here: https://gitlab.kitware.com/f3d/f3d/-/issues/217
Context
F3D is used to show models of different sizes. It can be hard to judge the size of a model when opening it in F3D.
Adding a Grid around it as shown below would help with this evaluation:
The idea of this issue is to add a CLI and libf3d options to control the showing of such a grid.
Suggested solution
In vtkF3DRenderer
, add a vtkGridAxes3DActor
similarly to how the GridActor is added and add the method to control the showing of it. In window_impl::UpdateDynamicOptions()
, control the showing of the new actor based on a new option that has to be added in the options.
Finally, in F3DOptionsParser, add a CLI option to control the libf3d options.
CLI Option: --axes-grid
libf3d option: render.axes-grid.enable
No interaction planned to control it as of yet.
Required skill
No required skill, this could be a good-first-issue
with a bit more work.
Potentially more info here: https://gitlab.kitware.com/f3d/f3d/-/issues/81
Currently direct scalars is being set by using the comp option to -2.
Let see if we want to improve that
Context
F3D is using a simple light configuration that works for most usecases. F3D also supports loading lights from files directly for a file formats supports it. However, there is no way to configure lights manually yet.
The idea of this issue is to add libf3d options and F3D cli options to be able to configure lights
Suggested solution
Being able to add a single light and control its type, position, direction, angle and color would be beneficial.
This light would be added on top of the usual light kit already in use.
CLI options:
--light-type
--light-position
--light-direction
--light-angle
--light-color
And corresponding libf3d options (render.additional.light.X
)
Special care would be needed to ensure --light-intensity
works with it as well.
Discussions needed before adding "help-wanted" label
The feature should be implemented in VTK.
Example file can be downloaded here
libf3d was introduced in !259 (closed), let's brainstorm a stable API for it.
Tasklist:
libf3d
F3D
Doc
In order to extend windows explorer:
References:
If an image is 2D, it can be useful to have a 2D interactor (I'm thinking of DXF or medical images).
And tbh, if we implement it, then it makes sense to supports JPG/PNG/TIFF/HDR/TGA/... too since it is basically free.
I know this is not the main purpose of f3d but since f3d is GPU accelerated, it may outperform other image previewers with large images.
f3d cow.vtp -f
f
will not create a window of the right sizef3d cow.vtp -f
f
f
again window disapearLinux fullscreen issue : Fullscreen with multiple screens cover both screens
Linux fullscreen issue : Starting in fullscreen and then pressing Escape
segfaults
./bin/f3d --fullscreen
pres Escape
Segfault
f
hotkey is not workingContext
F3D can display a progress bar when loading a file, however, F3D relies on the progress reporting done by the readers and importers. Some of readers and importers we use, either from F3D or VTK, do not report accurate progress or progress at all.
The idea os this issue is to investigate the status of the different importers and readers in regards to progress reporting, and improve the one that do a bad job of it. First in F3D and second in VTK directly.
Suggested solution
Skills needed
Notes
We are currently building VTK and F3D using the static system library on Windows.
Should we add InstallRequiredSystemLibraries
CMake module in order to support the shared system library?
See https://cmake.org/cmake/help/latest/module/InstallRequiredSystemLibraries.html
./bin/f3d -v ../data/vase_4comp.vti --comp=-2
vtkOpenGLVolumeLookupTa:84 WARN| vtkOpenGLVolumeOpacityTable (0x5575e3ea0b10): This OpenGL implementation does not support the required texture size of 131072, falling back to maximum allowed, 32768.This may cause an incorrect lookup table mapping.
The rendering seems fine.
Cycling to -2 does not create this warning for some reason.
If no argument is provided, a rendering window is created with nothing shown (gray background). It can be difficult to know if the program is working or freezing.
In case no argument is provided, we should expect that the program show a clear drop zone
F3D - A fast and minimalist 3D viewer
Version: 1.1.0
Build date: 2021-04-07 11:48:28
System: Linux-5.8.0-48-generic x86_64
Compiler: GNU 10.2.0
RayTracing module: OFF
VTK version: 9.0.0 (build 20210406)
Author: Kitware SAS
eg :
f3d ./files/* --output=output.png
Could create output_0.png, output_1.png ...
Context
F3D supports many file formats, but they are many that F3D does not support, lets add supports for these formats!
Help wanted
Not an usual help wanted issue, but if you are familiar with any of these formats and want to add supports for it, please say so and we will create a dedicated issue with all needed information.
Formats
Formats to consider sorted by reddit upvotes:
more info here: https://gitlab.kitware.com/f3d/f3d/-/issues/99
Please add support for the DXF/DWG file format.
I'm afraid not. It seems that paraviewgeo is able to open dxf files, see http://paraviewgeo.objectivity.ca/documentation/user-manual/supported-formats
We should consider ways to add support for FBX file format
@michael.migliore
Found this:
Context
F3D is a tool that let user visualize 3D models easily. Having a mobile android version would be benificial for the project.
A simple idea would be able to support opening a file attached to an email. iOS version could be considered as well.
Current status
@Meakk has created a prototype of an android app that rely on the libf3d: https://github.com/f3d-app/f3d-android
Some non-exhaustive related tasks
The following discussion from !265 should be addressed:
@jpouderoux started a discussion: (+3 comments)
May be out of scope of this MR but quite related: it could be nice to generate a HTML file to be installed for Windows users.
Each community of users may want to have different default config file, especially regarding interaction style, up direction, coloring.
It would be nice to provide default config file for each of the basic usage of F3D, eg:
Ideally, for the NSIS windows installer, a dedicated screen would let the user choose the default config to install.
Since ffmpeg is included in VTK, we should be able to export animation in h264 or animated gif files.
Hello, I tried to package F3D as Flatpak and I want to submit to Flathub.
flathub/flathub#2282
I could build and run F3D without OSPRay just fine.
But since OSPRay is needed for ray tracing, I will try to add them.
Right now I have some problem with ISPC needed by OSPRay because it need glibc-32bit, which I have a bit of issue how to do it in flatpak.
flathub/org.freedesktop.Sdk.Extension.llvm11#10
** Context **
F3D is able to load many type of files. For full scene format, F3D relies on each individual importers to provide meta data information about the file. However, some importers are not great at providing such info.
To recover such info cleanly, we probably need #653
** Notes **
more info here: https://gitlab.kitware.com/f3d/f3d/-/issues/174
We need to do something smarter to avoid this problem.
One idea:
Another idea:
Run f3d and load (ノಠ益ಠ )ノ.vtp
file. Press 'N' to display the file name. It prints (1/1) ( ).vtp
.
Release packages do not contain OSPRay, this requires creating some sort of a superbuild.
This thread is meant to discuss code improvements. It can be edited by everyone.
Architecture may be improve by splitting files in folders:
f3d::except
?f3d::filter
, f3d::data
, ... may be too verbose.)NamespaceIndentation
)...
#pragma once
more info here: https://gitlab.kitware.com/f3d/f3d/-/issues/173
When using a HDRI, spherical harmonics and specular textures are computed.
The result should be cached on disk to improve performance.
more info here: https://gitlab.kitware.com/f3d/f3d/-/issues/168
Steps to reproduce
./bin/f3d AnimatedBog.gltf
Context
F3D is able to show data using a colormap. Such a colormap has a range. This range is initialized using the min and max value of the data at the first time step. This works in most cases but in same cases, this would lead to unreadable results.
A workaround to this is of course to specify the colormap manually, however, F3D could have a better behavior.
** Suggested Solution**
F3D should expand the colormap on each timestep so that when the animation has been played fully, the colormap will not change anymore and further play through the animation will not make the color map evolve.
To implement this, one would need to ensure that changing the timestep in animationManager
turn a flag on in vtkF3DRendererWithColoring
so that it knows that the colormap should be expanded, and take that information into account in vtkF3DRendererWithColoring::ConfigureRangeAndCTFForColoring
.
Context:
F3D has many different rendering mode, surface
, volume
, point sprites
.
The idea of this issue is to add yet another rendering mode using VTK provided tools in order to represent the normals as glyphs on top of the surface.
Suggested solution:
--normal-glyphs
normal-glyphs
Shift + N
Possible pain point:
Discussions needed before adding "help-wanted" label:
CAD formats has been introduced by !236
Visual quality highly depends on the meshing parameters.
Currently, these parameters are hard-coded with a trade-off between loading speed and visual quality.
Moreover, it is standard for CAD visualizer to display surfaces boundaries (curves discretized with poly-lines) but sometimes we do not want it.
How to handle these CAD specific options?
We can already write the color buffer in a PNG image.
We should be able to write the depth buffer too.
I can easily imagine cases where you want to use f3d in a script to generate color and depth images and composite several images using the depth buffers.
Implementation details:
vtkF3DPolyDataMapper::ReplaceShaderLight
For now, just writing the normalized depth in the shader as a greyscale value (something like gl_FragData[0] = vec4(vec3(gl_FragDepth), 1.0);
) should be enough, but we could also consider doing color mapping like the image below:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.