VTK is an open-source software system for image processing, 3D graphics, volume rendering and visualization

Related tags

Game VTK
Overview

VTK - The Visualization Toolkit

Introduction

VTK is an open-source software system for image processing, 3D graphics, volume rendering and visualization. VTK includes many advanced algorithms (e.g., surface reconstruction, implicit modeling, decimation) and rendering techniques (e.g., hardware-accelerated volume rendering, LOD control).

VTK is used by academicians for teaching and research; by government research institutions such as Los Alamos National Lab in the US or CINECA in Italy; and by many commercial firms who use VTK to build or extend products.

The origin of VTK is with the textbook "The Visualization Toolkit, an Object-Oriented Approach to 3D Graphics" originally published by Prentice Hall and now published by Kitware, Inc. (Third Edition ISBN 1-930934-07-6). VTK has grown (since its initial release in 1994) to a world-wide user base in the commercial, academic, and research communities.

Learning Resources

  • General information is available at the VTK Homepage.

  • Community discussion takes place on the VTK Discourse forum.

  • Commercial support and training are available from Kitware.

  • Doxygen-generated nightly reference documentation is available online.

  • There is now a large collection of VTK Examples that showcase VTK features and provide a useful learning resource.

Reporting Bugs

If you have found a bug:

  1. If you have a patch, please read the CONTRIBUTING.md document.

  2. Otherwise, please join the VTK Discourse forum and ask about the expected and observed behaviors to determine if it is really a bug.

  3. Finally, if the issue is not resolved by the above steps, open an entry in the VTK Issue Tracker.

Requirements

In general VTK tries to be as portable as possible; the specific configurations below are known to work and tested.

VTK supports the following compilers:

  1. GCC 4.8 or newer
  2. Clang 3.3 or newer
  3. Apple Clang 5.0 (from Xcode 5.0) or newer
  4. Microsoft Visual Studio 2015 or newer
  5. Intel 14.0 or newer

VTK supports the following operating systems:

  1. Windows Vista or newer
  2. Mac OS X 10.7 or newer
  3. Linux (ex: Ubuntu 12.04 or newer, Debian 4 or newer)

Building

See build.md (in Documentation/dev/) for build instructions.

Contributing

See CONTRIBUTING.md for instructions to contribute.

License

VTK is distributed under the OSI-approved BSD 3-clause License. See Copyright.txt for details.

Comments
  • Fix compilation by gcc-4.9

    Fix compilation by gcc-4.9

    VTK fails to build during compilation by gcc-4.9 with the following message:

    CMakeFiles/vtkFiltersParallelMPI.dir/vtkDistributedDataFilter.cxx.o: In function `memset': /usr/include/x86_64-linux-gnu/bits/string3.h:81: warning: memset used with constant zero length parameter; this could be due to transposed parameters collect2: error: ld returned 1 exit status

    This patch sets if-condition before all "memsets" in vtkDistributedDataFilter and checkes, whether the number of bytes to be set by memset is more than 0 to escape this error.

    opened by gladk 6
  • Update vtkPolyDataConnectivityFilter.cxx

    Update vtkPolyDataConnectivityFilter.cxx

    If I understand correctly. The function of SetMarkVisitedPointIds() is, that you can reteive a list of point id's that correlates to the selected, hence visited cell data of the filter input. In the current version of the filter, one only gets the visited order of the points and not their original id's. This is because the "this->PointMap[pts[i]]" entry is filled using the "PointNumber" variable, rather than the actual point id. So one basically gets the order of the point in the filter output, rather than the expected selected point id's of the input.

    opened by Rhodanos 5
  • extension to vtkDiscreteMarchingCubes to also create vtkPointData Scalars containing the value of the neighbouring voxel

    extension to vtkDiscreteMarchingCubes to also create vtkPointData Scalars containing the value of the neighbouring voxel

    This extension to vtkDiscreteMarchingCubes makes it possible to let vtkDiscreteMarchingCubes also create vtkPointData Scalars containing the label value of the neighbouring voxel in a label image. This then allows to remove regions of the resulting mesh that are adjacent to specific other label meshes. For example a label image that was created by running a watershed on a distance map followed by masking with the original binary segmentation, a common procedure to separate regions in the segmentation at constrictions (see e.g. Beare and Lehmann (2006) The watershed transform in ITK - discussion and new developments, http://hdl.handle.net/1926/202). Such a label image is shown in Fig. 1.

    Fig. 1 A label image that separates a segmentation at constrictions and also contains a background label (0, rendered fully transparent). The cursor is on label 21 (light purple) which is adjacent to label 19 (dark pink): vtkdiscretemarchingcubes_extension_07

    When creating meshes for each foreground label from such a label image the meshes are closed at the constrictions where the separation was introduced, see 3D view in Fig. 1 and Fig. 2.

    Fig. 2 Meshes generated by vtkDiscreteMarchingCubes for the label image shown above, coloured differently and smoothed with vtkWindowedSincPolyDataFilter. Note the capping at constrictions: vtkdiscretemarchingcubes_extension_01

    With the contributed extension to vtkDiscreteMarchingCubes the resulting mesh contains additional scalar data for the points that holds the label value of the adjacent label. A simple threshold that extracts the regions of the meshes that are adjacent to the background label (0) then makes it possible to remove the capping at constrictions, see Fig. 3.

    Fig. 3 Result only displaying those regions of the meshes that were adjacent to the background label. Note that the capping is removed compared to Fig. 2: vtkdiscretemarchingcubes_extension_02

    For example looking at label 19 and 21 (extracted by a simple threshold on the cell scalars generated by vtkDiscreteMarchingCubes) which are adjacent to each other but mostly separated by the background label, see Fig. 4.

    Fig. 4 Showing only the meshes of label 21 (light grey) and 19 (dark grey). Regions of the mesh of label 21 are coloured if adjacent to other labels, e.g. red where 19 and 21 touch, i.e. where the separation took place: vtkdiscretemarchingcubes_extension_03

    Fig. 5 Views of label 21 only, coloured as in Fig. 4: vtkdiscretemarchingcubes_extension_04 vtkdiscretemarchingcubes_extension_05

    An additional threshold on the point scalars then removes the capping at the separation, see Fig 6.

    Fig. 6 Capping removed from label 21: vtkdiscretemarchingcubes_extension_06

    An advantage of this kind of capping removal is that it is even possible after the mesh was modified by other filters, e.g. smoothed by vtkWindowedSincPolyDataFilter. However, in most cases the resulting meshes are not connected on the open border edges any more, i.e. there will be gaps between them. The vtkCoplanarSurfaceExtractor (Grothausmann (2014) Extracting Intersections of Coplanar Surfaces (Boolean-operation on touching meshes), http://hdl.handle.net/10380/3504) can be used to avoid such gaps.

    opened by romangrothausmann 5
  • Two files need to be modified.

    Two files need to be modified.

    1. IO/FFMPEG/vtkFFMPEGWriter.cxx ffmpeg 3.x compatibility

    2. Rendering/GL2PSOpenGL2/vtkOpenGLGL2PSHelperImpl.cxx gl2psAddPolyPrimitive function parameters

    Cheers Pei

    opened by jiapei100 4
  • GitHub Action to lint Python code

    GitHub Action to lint Python code

    Results: https://github.com/cclauss/VTK/actions

    $ flake8 . --count --select=E9,F63,F7 --show-source --statistics

    [ ... ]
    15    E999 SyntaxError: invalid syntax
    15
    

    https://flake8.pycqa.org/en/latest/user/error-codes.html

    On the flake8 test selection, this PR does not focus on "style violations" (the majority of flake8 error codes that psf/black can autocorrect). Instead, these tests focus on runtime safety and correctness:

    • E9 tests are about Python syntax errors usually raised because flake8 can not build an Abstract Syntax Tree (AST). Often these issues are a sign of unused code or code that has not been ported to Python 3. These would be compile-time errors in a compiled language but in a dynamic language like Python, they result in the script halting/crashing on the user.
    • F63 tests are usually about the confusion between identity and equality in Python. Use ==/!= to compare str, bytes, and int literals is the classic case. These are areas where a == b is True but a is b is False (or vice versa). Python >= 3.8 will raise SyntaxWarnings on these instances.
    • F7 tests logic errors and syntax errors in type hints
    • F82 tests are almost always undefined names which are usually a sign of a typo, missing imports, or code that has not been ported to Python 3. These also would be compile-time errors in a compiled language but in Python, a NameError is raised which will halt/crash the script on the user.

    Thanks for your interest in contributing to VTK! The GitHub repository is a mirror provided for convenience, but VTK does not use GitHub pull requests for contribution. Please see

    https://gitlab.kitware.com/vtk/vtk/-/tree/master/CONTRIBUTING.md

    for contribution instructions. GitHub OAuth may be used to sign in.

    opened by cclauss 3
  • Web/JavaScript/CMakeLists.txt needs include(vtkPythonPackages)

    Web/JavaScript/CMakeLists.txt needs include(vtkPythonPackages)

    Having changed the build options to VTK_USE_SYSTEM_AUTOBAHN=YES VTK_USE_SYSTEM_TWISTED=YES VTK_USE_SYSTEM_ZOPE=YES I discovered that Web/JavaScript/CMakeLists.txt is missing an include(vtkPythonPackages) for the copy_files_recursive definition.

    opened by drlight-code 3
  • Fixed control points clamp function to handle NaN value

    Fixed control points clamp function to handle NaN value

    If the user clicks in a plot that has an invalid (0,0) range, then in vtkContextScene::ProcessItem that is called after mouse events, the mapped mouse position becomes NaN, due to invalid matrix in the ContextScene's transform. This NaN position is then added to the function as a control point with an invalid NaN value. This fix makes sure this does not happen, by clamping the NaN values to minimum bounds on x axis, and 0 on y axis (any value comparison returns false if an operand is NaN, so need to check explicitly).

    Thanks for your interest in contributing to VTK! The GitHub repository is a mirror provided for convenience, but VTK does not use GitHub pull requests for contribution. Please see

    https://gitlab.kitware.com/vtk/vtk/tree/master/CONTRIBUTING.md

    for contribution instructions. GitHub OAuth may be used to sign in.

    opened by cpinter 2
  • doxy and misc. typos pt2

    doxy and misc. typos pt2

    addendum PR to #38 VTK Gitlab Issue: https://gitlab.kitware.com/vtk/vtk/issues/16994 Gitlab PR: https://gitlab.kitware.com/vtk/vtk/merge_requests/2562 CC @cquammen @cory-quammen

    opened by luzpaz 2
  • Update ReadMe.txt

    Update ReadMe.txt

    fix typo

    Thanks for your interest in contributing to VTK! The GitHub repository is a mirror provided for convenience, but VTK does not use GitHub pull requests for contribution. Please see

    https://gitlab.kitware.com/vtk/vtk/-/tree/master/CONTRIBUTING.md

    for contribution instructions. GitHub OAuth may be used to sign in.

    opened by ziqiangxu 1
  • Link against the rendering backend

    Link against the rendering backend

    Linking against the rendering backend is not done for the examples in the Infovis directory. At runtime, this leads to a seg-fault:

    Generic Warning: In /home/manuel/work/99_temp/VTK-8.1.0/Rendering/Core/vtkRenderer.cxx, line 55
    Error: no override found for 'vtkRenderer'.
    
    Generic Warning: In /home/manuel/work/99_temp/VTK-8.1.0/Rendering/Core/vtkRenderWindow.cxx, line 43
    Error: no override found for 'vtkRenderWindow'.
    
    
    Program received signal SIGSEGV, Segmentation fault.
    0x00007ffff749821b in vtkRenderViewBase::vtkRenderViewBase (this=0x5555557a0180)
        at /home/manuel/work/99_temp/VTK-8.1.0/Views/Core/vtkRenderViewBase.cxx:33
    33        this->RenderWindow->AddRenderer(this->Renderer);
    

    Thanks for your interest in contributing to VTK! The GitHub repository is a mirror provided for convenience, but VTK does not use GitHub pull requests for contribution. Please see

    https://gitlab.kitware.com/vtk/vtk/tree/master/CONTRIBUTING.md

    for contribution instructions. GitHub OAuth may be used to sign in.

    opened by ombre5733 1
  • ENH: Adding Click and Drag Action in ChartXY

    ENH: Adding Click and Drag Action in ChartXY

    Hi all, I'd like to add the click and drag action in the ChartXY. This is part of an update for 3DSlicer to use vtkPlots. @jcfr

    https://github.com/Slicer/Slicer/pull/770 https://www.dropbox.com/s/g08jzgacjxy54dm/videoPlot.mkv?dl=0

    opened by Punzo 1
  • missing initialization of member DataSet when initialize picking oper…

    missing initialization of member DataSet when initialize picking oper…

    The miss initialization of member variable DataSet in function vtkAreaPicker::Initialize will cause crash of PCL program randomly when empty area picking of QVTKOpenGLNativeWidget which holding a pcl::visualization::PCLVisualizer as actual visualizer.

    The crash will happen if: step1: picking a subset of cloud points holding by PCLVisualizer. step2: remove this subet set from the PCLVisualizer. step3: picking the region without any cloud points the dangling member variable DataSet will romdonly cause the if condition at line 174 of pcl::visualization::PointPickingCallback::performAreaPick become true. Then the dangling points->GetPointData() will cause crash.

    Thanks for your interest in contributing to VTK! The GitHub repository is a mirror provided for convenience, but VTK does not use GitHub pull requests for contribution. Please see

    https://gitlab.kitware.com/vtk/vtk/-/tree/master/CONTRIBUTING.md

    for contribution instructions. GitHub OAuth may be used to sign in.

    opened by christoffel1989 0
  • Update vtkDICOMImageReader.cxx

    Update vtkDICOMImageReader.cxx

    After executing the SetFileNames method, the DICOM file is not loaded, and the judging FilesNames variable is added, but it is not elegant.

    Thanks for your interest in contributing to VTK! The GitHub repository is a mirror provided for convenience, but VTK does not use GitHub pull requests for contribution. Please see

    https://gitlab.kitware.com/vtk/vtk/-/tree/master/CONTRIBUTING.md

    for contribution instructions. GitHub OAuth may be used to sign in.

    opened by feliciwithme 1
Owner
Kitware, Inc.
Kitware develops software for web visualization, data storage, build system generation, infovis, media analysis, biomedical inquiry, cloud computing and more.
Kitware, Inc.
conway's game of life algorithm with visualization

This is a visualization program of John Conway's game of life algorithm. It's one of my favorite algorthms and it's super cool to watch it in action. I chose to do do mine recursively.

Taylor Gamache 15 Oct 18, 2022
OpenMW is an open-source open-world RPG game engine that supports playing Morrowind.

OpenMW is an open-source open-world RPG game engine that supports playing Morrowind.

null 4.5k Jan 2, 2023
An open source C++ entity system.

anax ARCHIVED: as I haven't maintained this library for at least a couple of years. I don't have the time or interest to work on this. Please use anot

Miguel Martin 457 Nov 16, 2022
GammaGo is an interactive go game system that integrates image recognition with robot arm control.

Introduction GammaGo is an interactive go game system that integrates image recognition with robot arm control. This repository contains all the neces

Jin Zihang 5 Jul 31, 2022
C++ game engine inspired by quake. Modern rendering and quake mapping tool integration.

Nuake Feel free to join the discord server for updates: What is it Nuake is a game engine written from scratch by myself. It is not meant to be a end-

Antoine Pilote 25 Oct 17, 2022
Creating Unreal Engine infinite landscapes/oceans using the editor shader graph and rendering them using Geometry ClipMap. It also allows to spawn mesh on landscape surface. UE5 required

Procedural Landscapes and Oceans in Unreal Engine 5 using Editor Shader Graph Latest version of this project is available as a plugin for UE 4.26+ on

Maxime Dupart 10 Oct 4, 2021
Intrinsic is a Vulkan based cross-platform game and rendering engine

Intrinsic is a Vulkan based cross-platform game and rendering engine

Benjamin Wrensch 1k Dec 29, 2022
Minecraft 4k: decompiled, translated to C using SDL for graphics and input, and improved upon

M4KC Minecraft 4K - C Rewrite For those who don't know, Minecraft 4K was a stripped down version of Minecraft submitted by Notch to the Java 4K Game P

Sasha Koshka 38 Oct 9, 2022
VE Font Cache is a single header-only GPU font rendering library designed for game engines.

VE Font Cache is a single header-only GPU font rendering library designed for game engines. It aims to: Be fast and simple to integrate. Take advantag

Xi Ma Chen 340 Dec 7, 2022
Exploring the modern rendering landscape

HellTech Engine An WIP exploration of the modern rendering landscape with Vulkan 1.2+ on Windows. REQUIREMENTS: Win10+ Vulkan1.2+ dedicated GPU ( ?, p

null 7 Jul 11, 2022
High Performance 3D Game Engine, with a high emphasis on Rendering

Electro High Performance 3D Game Engine, with a high emphasis on Rendering MainFeatures Rendering PBR Renderer (Cook–Torrance GGX) IBL (Image Based Li

Surge 45 Dec 19, 2022
A Minecraft like game with basic rendering, movement, block placement.. All made from scratch

Voxel-Game-Demo A Minecraft like game with basic rendering, movement, block placement.. All made from scratch Downlod Pre-compiled binaries (executabl

null 1 Dec 30, 2021
Code samples to show how to use Rendering features in Unreal :)

UE4GraphicsSample Code samples to show how to use Rendering features in Unreal :) Clear Texture Example (MAP_ClearTexture) Shows basics of how to use

Amit Kumar Mehar 78 Dec 28, 2022
An OpenGL 4.3 / C++ 11 rendering engine oriented towards animation

aer-engine About An OpenGL 4.3 / C++ 11 rendering engine oriented towards animation. Features: Custom animation model format, SKMA, with a Blender exp

Thibault Coppex 29 Nov 22, 2022
Rendering isometric terrain in the C language on the TI-84+ CE.

Iso-Render Rendering beautiful isometric terrain, using sprites, in C on the TI-84+ CE. This program is currently in progress, its mostly an experimen

Michael 17 Oct 3, 2022
Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU

Panda3D Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs. Panda3D is open-source and free for a

Panda3D 3.6k Dec 31, 2022
A fast, practical GPU rasterizer for fonts and vector graphics

Pathfinder 3 Pathfinder 3 is a fast, practical, GPU-based rasterizer for fonts and vector graphics using OpenGL 3.0+, OpenGL ES 3.0+, WebGL 2, and Met

Servo 3k Jan 4, 2023
Free, open-source, game engine and a 3D sandbox.

Work-in-Progress The official "early alpha" release should be available around April 2021 SGEEngine SGEEngine is an open source (MIT License), C++ cen

ongamex 72 Dec 7, 2022
Project DELTA - An open-source trainer built on the Void Engine for Toby Fox's games and their spin-offs.

Project DELTA v3 Project DELTA - An open-source, modular mod menu for Toby Fox's games and their spin-offs. Important note to Grossley: Yes, it is out

Archie 8 Oct 15, 2022