Coder Social home page Coder Social logo

inviwo / modules Goto Github PK

View Code? Open in Web Editor NEW
9.0 23.0 12.0 46.53 MB

Additional Inviwo modules

License: BSD 2-Clause "Simplified" License

CMake 3.32% C++ 89.62% C 0.36% GLSL 1.81% Python 4.89%
inviwo dicom openmesh vtk visualization scientific-visualization volume-visualization flow-visualization tensor-visualization medical-visualization

modules's Introduction

Inviwo - Interactive Visualization Workshop

Build Status BSD licensed Release version Slack

Inviwo is a software framework for rapid visualization prototyping.

Package releases and information is available at www.inviwo.org

Below follow some general information about the framework:

  • Freely available under the Simplified BSD License.
  • Cross-platform and runs on Windows, Linux and Mac OS X.
  • Easily extendable through inclusion of external modules and projects.

Core

  • The core is written in C/C++ only, with minor dependencies.

Modules

  • Modern graphics programming through OpenGL (>= 3.3 Core) related modules.
  • Parallel computing on multiple platforms (GPU/CPU) through OpenCL (>= 1.0) related modules.
  • Python (>= 3.9) scripting and computation is supported through provided modules.

GUI

  • The primary GUI is based on Qt (>= 6).
  • A minimal application is available, utilizing GLFW 3 for multiple window and context management.

Build system

  • The project and module configuration/generation is performed through CMake (>= 3.16.0).
  • Inviwo has been compiled in Visual Studio 2022, Clang 14, GCC 11, XCode 14
  • C++20 Required

Documentation

For help and general discussion join us on our Slack server

External modules and applications

There are a large number of modules developed and maintained in other repositories. These can be added through the CMake option IVW_EXTERNAL_MODULES, see Inviwo modules for more details. The following modules add a variety of functionalities to Inviwo. Please refer to the respective repository for possible issues related to them.

  • Dicom reader Adds support for reading DICOM image/volume files (.dcm file ending)
  • Molecular visualization Adds support for molecular data structures along with reading PDB and mmCIF files. Molecules are rendered in van-der-Waals, Licorice, and Ball and Stick representations.
  • Tensor visualization Adds support for reading/writing tensor fields. Includes algorithms such as HyperLIC and Anisotropy raycasting.
  • Topology visualization Integrates the Topology Toolkit into Inviwo. Includes algorithms for critical points, integral lines, persistence diagrams, persistence curves, merge trees, contour trees, Reeb graphs, Morse-Smale complexes, topological simplification, topology-aware compression, harmonic design, fiber surfaces, continuous scatterplots, Jacobi sets, Reeb spaces, bottleneck and Wasserstein distances between persistence diagrams etc.
  • Clustering Cluster rows of a DataFrame. Supported clustering methods are k-means, DBSCAN, agglomerative, and spectral clustering
  • Vector Graphics Integrates NanoVG, which is a small antialiased vector graphics rendering library for OpenGL.
  • NetCDF Adds support for reading NetCDF files
  • OpenMesh Integrats the OpenMesh library, which is a data structure for polygonal meshes. Includes for example mesh decimation and vertex normal generation.
  • Spring-mass system Simulation of spring-mass system.
  • Visualization Toolkit Integrates support for VTK, which has algorithms for surface reconstruction, implicit modeling, decimation and much more.
  • Photon mapping Volume illumination algorithm for time-varying heterogenous media.
  • Temporal Tree Maps Temporal treemaps for visualizing trees whose topology and data change over time.
  • Developer tools Log inviwo events, useful for debugging interaction.

Applications

  • Visual Neuro A visual analysis tool understanding cohorts of brain imaging and clinical data. Also includes algorithms for statistical computation.
  • ENVISIoN Visualization of electronic structure quantities from ab-initio calculations.

Is your repository missing above? Just add it and make a pull request!

Sponsors

This work is supported by Linköping University, Ulm University, and KTH Royal Institute of Technology as well as grants from the Swedish e-Science Research Centre (SeRC), the Excellence Center at Linköping - Lund in Information Technology (ELLIIT), the Swedish Research Council (Vetenskapsrådet), DFG (German Research Foundation), and the BMBF.

modules's People

Contributors

alab0329 avatar ankeanke avatar emmwel avatar eriksunden avatar inviwo-team avatar martinfalk avatar petersteneteg avatar petiteviking avatar r-englund avatar researchdaniel avatar sigsid avatar tbmasood avatar weinkauf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

modules's Issues

NanoVG does not seem to reset blendmode after rendering

NanoVG uses blending while rendering and hence enable it using glEnable at some point. Unfortunately, they do not turn it off again when they finish rendering.
TODO:

  • Investigate possible ways of addressing this
  • Check if other gl-states are modified

Compilation error

Hi,
I'm compiling inviwo with this extra module enabled and I'm having three compilation errors on dicomdirtypes.h.

I'm trying to compile on a fresh ubuntu instalation using CLion IDE.

The affected lines are from 178 to 187:
template <class Elem, class Traits> std::basic_ostream<Elem, Traits>& operator<<(std::basic_ostream<Elem, Traits>& ss, const dicomdir::Image& image) { ss << "[ DICOM Image" ss << "\n Path: " << image.path << "\n Orientation: " << image.orientationPatient << "\n Position: " << image.positionPatient << "\n Thickness: " << image.sliceThickness << "\n z pos: " << image.zPos << "\n Window (center, width): " << image.windowCenter << ", " << image.windowWidth << " ]"; return ss; }

and the errors:
Line 181: Expected ';' after expression
Line 182: No member named 'orientationPatient' in 'inviwo::dicomdir::Image'
Line 183: No member named 'positionPatient' in 'inviwo::dicomdir::Image'

All seems logic to me. So, is there a bug, or how should I solve that?
Thanks!
Imanol

Can't merge PR when they are out of date compared to master

If master has commits that are not yet in the PR-branch one can't merge the pr-branch onto master. To merge the PR-branch you first have to merge master into that branch (i.e. click the update branch button in the PR).

This works in the main Inviwo repo, I guess there is a setting for it but I can't change settings anymore, guess I lost that privilege

TopologicalSimplification will not allways process with new data

If the processor gets new data (or properties are modified) while the background thread is processing no new calculation will be started since both the if statement and the else if statements are false.
To work around this one has to invalidate the output of the processor to start the calculation on the new data.
A fix for this would be to change the else if to a plain else

void TopologicalSimplification::process() {
if (util::is_future_ready(newTriangulation_)) {
try {
auto triangulation = newTriangulation_.get();
outport_.setData(triangulation);
hasNewData_ = false;
getActivityIndicator().setActive(false);
} catch (Exception &) {
// Need to reset the future, VS bug:
// http://stackoverflow.com/questions/33899615/stdfuture-still-valid-after-calling-get-which-throws-an-exception
newTriangulation_ = {};
outport_.setData(nullptr);
hasNewData_ = false;
throw;
}
} else if (!newTriangulation_.valid()) { // We are not waiting for a calculation
if (inport_.isChanged() || persistenceInport_.isChanged() || threshold_.isModified() ||
invert_.isModified() || simplificationDirty_) {
getActivityIndicator().setActive(true);
updateOutport();
}
}
}

Toggleboxes in "View"-dropdown is not updating properly

Clicking "View->Animation editor" checks the togglebox next to "Animation editor". When closing the animation editor, the choice is still checked. It should become unchecked when closing the window.

Because of this, the next time a user clicks "View->Animation editor", the box will now become unchecked again, despite the editor window now opening.

NOTICE: This happens for all choices in "View->Arbitrary selection", not just "Animation Editor".

MeshRendering: opaque rendering affected by minimum alpha

In the Mesh Rasterizer, the opaque shading option (Shade Opaque) is depending on Minimum Alpha (grouped under "Alpha") which is hidden if shade opaque is true.

image

Opaque Shading with minimal alpha set to 0.2
image

Opaque Shading with minimal alpha = 1
image

VTK as submodule

This is meant more as a discussion that an issue so feel free to just contribute.

Why do we not have VTK as submodule for the VTK module? I understand that it is a huge dependency. This may be heavy on the CI pipeline but:

  1. The VTK module is not enabled as of now anyway
  2. There's an option to cache files in-between builds so unless we update VTK, there is no need to compile it with every CI run.

As for the user, there's a bit of extra disk space needed but I suppose that shouldn't matter anymore nowadays. If the module is not enabled the binaries are not build and if the module is enabled, the user needs the disk space either way.

TTK module failing

I have followed the instructions given in the readme.md in the TTK module (installed boost 1.70) but CMake fails with the following error:
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.