diff --git a/Documentation/Doxygen/Properties.dox b/Documentation/Doxygen/Properties.dox index c9dd576037..21ceccb62a 100644 --- a/Documentation/Doxygen/Properties.dox +++ b/Documentation/Doxygen/Properties.dox @@ -1,140 +1,187 @@ /** \page PropertiesPage The MITK Property Concept \section PropertyConcept The Concept Behind MITK Properties TODO: What information to they contain? Why use them? How to use them? What should not be stored in there? Where can they be accessed? \section ListOfIndependentProperty A List Of Module Independent Properties TODO: \subsection FileManagement File Management - path - The physical path the file was loaded from - name - The node name in the datamanager - selected - Whether the node is selected in the datamanager +path - The physical path the file was loaded from +name - The node name in the datamanager +selected - Whether the node is selected in the datamanager \subsection GenericRenderingProperty Generic Rendering Properties color - Color the surface, grey value image, whatever should be rendered in (default is usually white). There is a special mitk::ColorProperty and you can use the Getter/Setter methods to access it. The color is defined with three values (RGB) in the range between 0.0 and 1.0. \info If you are inside a mapper you can use the following code to access the color: \code float rgb[3]={1.0f, 1.0f, 1.0f}; GetColor( rgb, BaseRenderer ); \endcode (The BaseRenderer is usually known inside a mapper). \endinfo \warning This property will not effect images if you set the property "use color" -to true. In that case a user-defined lookuptable will be used. +to false. In that case a user-defined lookuptable will be used. in plane resample extent by geometry - Toggles: - Resampling grid corresponds to the current world geometry. This - means that the spacing of the output 2D image depends on the - currently selected world geometry, and *not* on the image itself. +Resampling grid corresponds to the current world geometry. This +means that the spacing of the output 2D image depends on the +currently selected world geometry, and *not* on the image itself. - Resampling grid corresponds to the input geometry. This means that - the spacing of the output 2D image is directly derived from the - associated input image, regardless of the currently selected world - geometry. +Resampling grid corresponds to the input geometry. This means that +the spacing of the output 2D image is directly derived from the +associated input image, regardless of the currently selected world +geometry. layer - Controls which image is considered "on top" of another. In the case that two should inhabit the same space, the higher layer occludes lower layer. -TODO Does this also apply for surfaces, points, etc.? +So far it works for images and pointsets. The layer property applies only for similar datatypes. Pointsets are always rendered in front of images and the layer will not have any effect. -levelwindow - contains the level window of the image +levelwindow - In general, grayscale images contain values between 0 and 255. Therefore, the default window boundaries are set respectively. For displaying the image within a certain range, ie. 50 - 200, this property can be used to adjust the minimum and maximum boundary. + +LookupTable - This property contains a user defined lookuptable, which can be used to map scalar values to color values. Example: If an image contains a value of 128, in the resulting image the passed lookuptable could map this value to red (255, 0, 0). +\warning +This property will not effect images if you set the property "use color" +to true. In that case color properties and a default lookuptable are used. +Example for setting up a lookuptable in MITK: +\code +#include +#include +#include +#include + +[...] + +vtkSmartPointer vtkLUT = vtkSmartPointer::New(); +vtkLUT->SetRange(100,200); //define your table here +vtkLUT->Build(); + +//pass the table to MITK +mitk::LookupTable::Pointer mitkLookupTable = mitk::LookupTable::New(); +mitkLookupTable->SetVtkLookupTable(vtkLUT); +mitk::LookupTableProperty::Pointer LookupTableProp = mitk::LookupTableProperty::New( mitkLookupTable ); + +result->SetProperty( "LookupTable", LookupTableProp ); +result->SetBoolProperty("use color", false); +result->Update(); +\endcode -LookupTable - contains lookuptable for use in coloring image opacity - Alpha (or transparency) value of the node/image/surface etc.. The range of the opacity is between 0.0 and 1.0. \info If you are inside a mapper you can use the following code to access the opacity: \code float opacity=1.0f; GetOpacity( opacity, BaseRenderer ); \endcode (The BaseRenderer is usually known inside a mapper). \endinfo -reslice interpolation - Select interpolation mode (Nearest, Linear, Cubic) +reslice interpolation - This property takes effect in swivel mode or crosshair rotaiton only. The interpolation modes "Nearest", "Linear", and "Cubic" are available and effect the pixel outcome along the rotated plane. -texture interpolation - toggle interpolation +texture interpolation - This property toggles interpolation of the texture. If enabled, edges between image pixels are blurred. If disabled, edges remain sharp. -TransferFunction - contains transfer function for use in coloring image use color - This property toggles the use of a user-defined lookuptable -for the rendering. True: use the LUT; False: use the color propery -TODO Provide an example how to set a lookuptable. +for the rendering. True: use the LUT; False: use the color propery. +Example for setting up a lookuptable in MITK: +\code +#include +#include +#include +#include + +[...] + +vtkSmartPointer vtkLUT = vtkSmartPointer::New(); +vtkLUT->SetRange(100,200); //define your table here +vtkLUT->Build(); + +//pass the table to MITK +mitk::LookupTable::Pointer mitkLookupTable = mitk::LookupTable::New(); +mitkLookupTable->SetVtkLookupTable(vtkLUT); +mitk::LookupTableProperty::Pointer LookupTableProp = mitk::LookupTableProperty::New( mitkLookupTable ); + +result->SetProperty( "LookupTable", LookupTableProp ); +result->SetBoolProperty("use color", false); +result->Update(); +\endcode TODO Should be redone and renamed, this is counterintuitive visible - toggle node/image/surface being rendered at all \subsection SurfaceRenderingProperties Surface Rendering Properties ..Surfacerendering: back color - in 2D, color of the normals outside the surface back normal lenth (px) - in 2D, length of the normals in pixels - Missing "g"? (When decreasing it the color using the front color is shorter?) color mode - surface - ??? draw normals 2d - Boolean: in 2D, toggles the presence of normals front color - in 2D, color of the normals inside the surface front normal lenth (px) - in 2D, length of the normals in pixels - Missing "g"? (When decreasing it the color using the back color is shorter?) invert normals - in 2D, switch front/back normals line width - in 2D, controls the thickness of the line where the surface intersects the plane (and normals) material.ambientCoefficient - in 3D ambient lighting material.diffuseCoefficient - in 3D scattering of light material.interpolation - Choose which interpolation algorithm to use for surface construction material.representation - Choose the representation to draw the mesh in (Surface, Wireframe, Point Cloud) material.specularCoefficient - in-/decrease non-scattered reflection material.specularPower - control percentage of non-scattered reflection - ??? difference to specularCoefficient? material.wireframeLineWidth - width of the wires if wireframe representation is scalar mode - surface - ??? scalar visibility - surface - ??? selected shader - which shader to use for surface rendering, currently the options are "fixed" and "mitkShaderLightning" \subsection VolumeRenderingProperties Volume Rendering Properties +TransferFunction - contains transfer function for use in coloring image volumerendering - Boolean: Should the volume be rendered or not volumerendering configuration - Choice between Composite und MIP - ??? volumerendering.cpu.ambient - ambient lighting volumerendering.cpu.diffuse - in-/decrease light dispersion volumerendering.cpu.specular - in-/decrease non-scattered reflection volumerendering.cpu.specular.power - control percentage of non-scattered reflection - ??? difference to just specular? volumerendering.gpu.ambient - same as cpu with gpu volumerendering.gpu.diffuse - same as cpu with gpu volumerendering.gpu.reducesliceartifacts - presumably what the name suggests - ??? volumerendering.gpu.specular - same as cpu with gpu volumerendering.gpu.specular.power - same as cpu with gpu volumerendering.gpu.usetexturecompression - presumably what the name suggests - ??? volumerendering.ray.ambient - same as cpu with ray volumerendering.ray.diffuse - same as cpu with ray volumerendering.ray.specular - same as cpu with ray volumerendering.ray.specular.power - same as cpu with ray volumerendering.usegpu - Boolean: Whether to use the GPU for rendering or not volumerendering.uselod - Boolean: Whether to use the Level Of Detail mechanism or not volumerendering.usemip - Boolean: Whether to utilize maximum intensity projection volumerendering.useray - Boolean: Whether to use raycasting or not Additional comment: uselod can be active with usegpu, usemip, useray, but any of the latter can not be used with another one of them. */