VTK: Difference between revisions

From KitwarePublic
Jump to navigationJump to search
No edit summary
 
(190 intermediate revisions by 39 users not shown)
Line 1: Line 1:
http://public.kitware.com/images/logos/vtk-logo2.jpg
__NOTOC__ __NOEDITSECTION__
 
<center>[[File:VTK_187.png]]</center>
<br />
<br />
The Visualization ToolKit (VTK) is an open source, freely available software system for 3D computer graphics, image processing, and visualization used by thousands of researchers and developers around the world. VTK consists of a C++ class library, and several interpreted interface layers including Tcl/Tk, Java, and Python. Professional support and products for VTK are provided by Kitware, Inc. ([http://www.kitware.com www.kitware.com]) VTK supports a wide variety of visualization algorithms including scalar, vector, tensor, texture, and volumetric methods; and advanced modeling techniques such as implicit modelling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation. In addition, dozens of imaging algorithms have been directly integrated to allow the user to mix 2D imaging / 3D graphics algorithms and data.
==Open Questions in VTK==
* Is there an octree class?
* How do you use vtkHyperOctree?
* How do you find the intersection of two 3D objects?
* How do you fit a quadric surface to a set of points?
==Dashboard submissions==
===Running tests locally===
To run all of the tests on your modified source tree, simply type
<source lang="text">
ctest
</source>
in your build directory. This will not submit anything to the dashboard, but it is a good "first test" to simply see, locally, if everything works.
===Submitting an experimental build to the dashboard===
The idea of this type of submission is simply to have a nice way to view the output of all the tests, and to leave "proof" that you indeed tested the code. This is useful if you then commit your code and it breaks someone else's build - you can then claim you did everything you could :). To run this type of submission, simply type
<source lang="text">
make Experimental
</source>
from your build directory.
===Creating a 'Nightly' dashboard submission===
It is impossible for developers to test code on every operating system, compiler, and configuration. By creating a dashboard submission, you can help them find bugs that could be affecting many users but are transparent to some developers. The idea is to get the latest source code, compile it, and run a battery of tests - reporting any compile, build, and test errors to a system which very neatly arranges the results (http://www.cdash.org/CDash/index.php?project=VTK).
It is recommended to not use the same build you work with daily for you dashboard submission. If there is a problem with the nightly cvs, your code may not compile the next day!
To get started, create a new directory called /home/username/Dashboards/VTK. It does not actually have to be in this exactly directory, but this path will be used throughout this example to make the ideas concrete. cd to your new directory and run these commands to check out an initial version of VTK and data sets used for testing.
[[Example CMake Dashboard file|Here]] is an example cmake dashboard file.
You will probably want to submit a dashboard every night, so you can add a cronjob. Run 'crontab -e' and enter the following command
<source lang="text">
0 1 * * * export DISPLAY=:0.0 ; ctest -S /home/username/Dashboards/VTK/dashboard.cmake -V > /home/username/Dashboards/VTK/dashboard.log 2>&1
</source>
This says "at 1:00 AM, every day, every month, run the dashboard tests and log verbose output to dashboard.log". The DISPLAY variable is set to allow the tests that need an X server to complete successfully.
== Developers Corner ==
* If you work with Paraview and VTK, the recommended procedure is to use the same source tree for both projects. That is, build Paraview from .../src/Paraview and VTK from .../src/Paraview/VTK.
* You should use vtkGetObjectMacro and vtkCxxSetObjectMacro to set and get member variables that are custom types. This allows VTK's mechanisms to keep the reference count correct by automatically registering and unregistering your objects. An example using a custom class member variable is [[Using a custom class member variable|here]].
===Pitfalls===
* When using the Set*Macro's, you must initialize the variable that is being set in the constructor. The Set*Macro does a check to see if the value has changed before changing it (so that it can update the Modified variable), so if the value is uninitialized, this will cause an error in some memory checking tools (such as valgrind).
* When trying to use an abstract class, such as
<source lang="cpp">
vtkSmartPointer<vtkPointSet> PointSet = vtkSmartPointer<vtkPointSet>::New();
</source>
you will see
<source lang="text">
error: invalid conversion from 'vtkDataObject*' to 'vtkPointSet*'
</source>
To fix this, use a subclass instead.
* You are getting
<source lang="text">
Generic Warning: In /home/doriad/src/ParaView3/VTK/Common/vtkDebugLeaks.cxx, line 296
Deleting unknown object: vtkObject
</source>
and
<source lang="text">
vtkDebugLeaks has detected LEAKS!
Class "vtkYourClass" has N instances still around.
</source>
This could mean one of two things. Either 1) you are actually doing something wrong by trying to manually delete a smart pointer or the equivalent or 2) You have forgotten to add:
<source lang="cpp">
vtkCxxRevisionMacro(vtkYourClass, "$Revision: 1.1 $");
</source>
to your .cxx file and
<source lang="cpp">
vtkTypeRevisionMacro(vtkYourClass,vtkObject);
</source>
to your .h file.
You must do this because vtkDebugLeaks uses the VTK factory mechanism to keep track of references.
===Examples for Developers===
* [[Simple object class]]
* [[Creating a patch]]
* [[Applying a patch]]
==Administrative Topics==
* Where can I find more [[VTK Additional Information|information about VTK]]?
* [[VTK 5.4 Release Planning]]
* Where can I [http://vtk.org/get-software.php download VTK]?
* Where can I download a tarball of the [http://vtk.org/files/nightly/vtkNightlyDocHtml.tar.gz nightly HTML documentation]?
* Where can I get [[VTK Datasets]]?
* [[VTK Classes|Extending VTK]]
* [[VTK Coding Standards]]
* [[VTK cvs commit Guidelines]]
* [[VTK Patch Procedure]] -- merge requests for the current release branch
* [[VTK Scripts|Extending VTK with Scripts]]
* [[VTK Tools|VTK-Based Tools and Applications]]
* What are some [[VTK Projects|projects using VTK]]?
* [[Proposed Changes to VTK | Proposed Changes to VTK]]
* [[VTK FAQ|Frequently asked questions (FAQ)]]


* [[VTK OpenGL|Common OpenGL troubles]]
<center>'''Welcome to the VTK Wiki, home of the latest VTK documentation and resources on the web.
</center>


* [[VTK Related Job Opportunities|VTK Related Job Opportunities]]
The Visualization ToolKit (VTK) is an open source, freely available software system for 3D computer graphics, image processing, and visualization used by thousands of researchers and developers around the world. VTK consists of a C++ class library, and several interpreted interface layers including Python, Tcl/Tk and Java. Professional support and products for VTK are provided by [http://www.kitware.com Kitware, Inc.] VTK supports a wide variety of visualization algorithms including scalar, vector, tensor, texture, and volumetric methods; and advanced modeling techniques such as implicit modelling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation. In addition, dozens of imaging algorithms have been directly integrated to allow the user to mix 2D imaging / 3D graphics algorithms and data.
==Start Here==


* [[VTK/Writing_VTK_files_using_python | Writing VTK files using python]]
<div style="float: left; margin-right: 1%; width: 49%;">
===Join===
: [https://vtk.org/community-support Sign up] for the VTK forum
: [https://gitlab.kitware.com/vtk/vtk/-/issues Register] on the bug tracker
===Read===
: Browse the [https://docs.google.com/a/kitware.com/document/d/1nzinw-dR5JQRNi_gb8qwLL5PnkGMK2FETlQGLr10tZw/edit VTK Coding Standards]
: Skim the [[VTK/FAQ | Developer's FAQ]]
: Peruse a few of the [[VTK/Tutorials/External_Tutorials | External Tutorials]]


* [[VTK/mesh quality | Geometric mesh quality]]
===Learn===
:Watch some of Kitware's [https://blog.kitware.com/?s=vtk+webinar VTK Webinars]
:Build some of the [https://kitware.github.io/vtk-examples/site/ VTK Examples]
:Read the [[VTK/Tutorials | Advanced Tutorials]]
:Study the [http://www.vtk.org/doc/nightly/html Doxygen] documentation


* [[VTK_XML_Formats | VTK XML Format Details]]
</div>


* [[VTK_Third_Party_Library_Patrol | VTK 3rd Party Library Patrol]]
<div style="float: left; width: 50%;">
===Source Code How-to===
:[http://www.vtk.org/VTK/resources/software.html Get the VTK Source]
:[https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/develop.md Create, Commit, and Share Code Changes]
:[https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/build.md Configure and Build VTK]
===Check the Status===
:[https://www.openhub.net/p/vtk Black Duck Open Hub VTK page]
:[https://gitlab.kitware.com/vtk/vtk/commits/master Recent commits]


* [[Python Wrapping FAQ]]
===View the Code===
:[https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/README.md Git Landing page]
:[https://github.com/Kitware/VTK Github Mirror]
</div>


* [[VTK/Executives | VTK executives]]
<div style="clear: both;"></div>


* [[VTK/Streaming | Streaming data in VTK]]
==Resources==


== Current Projects ==
<div style="float: left; margin-right: 1%; width: 49%;">
* [[VTK/Graph Layout | VTK Graph Layout]]
; [[VTK/Dashboard_how_to|Contribute a Dashboard]]: Dashboards are an important tool we use to ensure quality.
* [[VTK/Java Wrapping | VTK Java Wrapping]]
* [[VTK/Composite Data Redesign | Composite Data Redesign]]
* [[VTKWidgets | VTK Widget Redesign]]
* [[VTKShaders | Shaders in VTK]]
* [[VTK/VTKMatlab | VTK with Matlab]]
* [[VTK/Time_Support | VTK Time support]]
* [[VTK/Depth_Peeling | VTK Depth Peeling]]
* [[VTK/MultiPass_Rendering | VTK Multi-Pass Rendering]]
* [[VTK/Using_JRuby | Using VTK with JRuby]]
* [[VTK/Painters | Painters]]
* [[VTK/Cray XT3 Compilation| Cray XT3 Compilation]]
* [[VTK/statistics | Statistics]]
* [[VTK/Array Refactoring | Array Refactoring]]
* [[VTK/Multicore and Streaming | Multicore and Streaming]]
* [[VTK/3DConnexion Devices Support | 3DConnexion Devices Support]]


== External Links ==
; [http://markmail.org/search/?q=vtk Communications]: Search the mailing list archives or use [http://www.google.com/advanced_search?as_sitesearch=www.vtk.org&as_epq=vtk-users Advanced Google search]
*[http://www.imtek.uni-freiburg.de/simulation/mathematica/IMSweb/ IMTEK Mathematica Supplement (IMS)], the Open Source IMTEK Mathematica Supplement (IMS) interfaces VTK and generates ParaView batch scripts
*[http://zorayasantos.tripod.com/vtk_csharp_examples], VTK examples in C# (Visual Studio 5.0 and .NET 2.0)


== Development Process ==
; [http://www.vtk.org/Wiki/VTK_Datasets Data]: VTK is tested and released with datasets for visualization.
The VTK Community is [[VTK/Managing_the_Development_Process | upgrading its development process]]. We are doing this in response to the continuing and rapid growth of the toolkit. A VTK Architecture Review Board [[VTK/Architecture_Review_Board |VTK ARB]] is being put in place to provide strategic guidance to the community, and individuals are being identified as leaders in various VTK subsystems.
</div>


== Examples ==
<div style="float: left; width: 50%;">
[[VTK:Examples|Examples]]
; [http://open.cdash.org/index.php?project=VTK CDash]: View the VTK Quality Dashboards


; [[VTK/BuildingDoxygen|Documentation]]: Build the VTK Doxygen documentation


; [[VTK/Roadmap | Roadmap]]: Read about what's in and coming soon to VTK.
</div>


==Wiki Sandbox==
<div style="clear: both;"></div>
[[Ranking test]]


{{VTK/Template/Footer}}
== Help ==
* Kitware offers [http://www.kitware.com/products/support.html Support Contracts] and [http://www.kitware.com/products/consulting.html Expert Consulting]
* [[VTK/Deprecated_frontpage|Deprecated Frontpage]]

Latest revision as of 15:53, 13 September 2021


VTK 187.png


Welcome to the VTK Wiki, home of the latest VTK documentation and resources on the web.

The Visualization ToolKit (VTK) is an open source, freely available software system for 3D computer graphics, image processing, and visualization used by thousands of researchers and developers around the world. VTK consists of a C++ class library, and several interpreted interface layers including Python, Tcl/Tk and Java. Professional support and products for VTK are provided by Kitware, Inc. VTK supports a wide variety of visualization algorithms including scalar, vector, tensor, texture, and volumetric methods; and advanced modeling techniques such as implicit modelling, polygon reduction, mesh smoothing, cutting, contouring, and Delaunay triangulation. In addition, dozens of imaging algorithms have been directly integrated to allow the user to mix 2D imaging / 3D graphics algorithms and data.

Start Here

Join

Sign up for the VTK forum
Register on the bug tracker

Read

Browse the VTK Coding Standards
Skim the Developer's FAQ
Peruse a few of the External Tutorials

Learn

Watch some of Kitware's VTK Webinars
Build some of the VTK Examples
Read the Advanced Tutorials
Study the Doxygen documentation

Resources

Contribute a Dashboard
Dashboards are an important tool we use to ensure quality.
Communications
Search the mailing list archives or use Advanced Google search
Data
VTK is tested and released with datasets for visualization.
CDash
View the VTK Quality Dashboards
Documentation
Build the VTK Doxygen documentation
Roadmap
Read about what's in and coming soon to VTK.

Help