Commit 2aa044de authored by Cory Quammen's avatar Cory Quammen Committed by Kitware Robot

Merge topic 'release-notes-5.8' into release

956bb70e doc: remove development markdown files
bf50d339 doc: Initial 5.8 release notes version
Acked-by: Kitware Robot's avatarKitware Robot <kwrobot@kitware.com>
Acked-by: Yohann Bearzi's avatarYohann Bearzi <yohann.bearzi@kitware.com>
Acked-by: default avatarDavid E. DeMarle <dave.demarle@kitware.com>
Acked-by: Mathieu Westphal's avatarMathieu Westphal <mathieu.westphal@kitware.com>
Acked-by: Michael Migliore's avatarMichael Migliore <michael.migliore@kitware.com>
Acked-by: Nicolas Vuaille's avatarNicolas Vuaille <nicolas.vuaille@kitware.com>
Merge-request: !3909
parents 63794065 956bb70e
Pipeline #160438 pending with stage
ParaView 5.7.1 Release Notes
============================
Major changes made since ParaView 5.7.0 are listed in this document. The full list of issues addressed by this release is available
[here](https://gitlab.kitware.com/paraview/paraview/-/milestones/16).
# General Notes
This patch release is mostly dedicated to various file IO bugs that were found in the 5.7.0 release. It does however have one new feature, a plugin that converts data into a tree based AMR format.
### New Features
* The new 'HyperTreeGridADR' plugin adds a 'Resample To HyperTreeGrid' filter that converts any data set into a tree based AMR data type. It does so by doing intelligent resampling that optionally takes into account attribute expressions to control the refinement process. The algorithm follows the approach outlined in the Nouanesengsy et al's Analysis-Driven Refinement paper from LDAV 2014.
* ParaView can be now compiled with OpenImageDenoise releases newer than 0.8.
* The Web exporter for standalone data viewing now preserves dataset names.
### Bug fixes
* There are a number of miscellaneous refinements to 5.7.0's new cmake infrastructure.
* A crash discovered in 5.7.0's Cell Size filter is fixed.
* Two regressions in which the HyperTreeGrid .htg writer did not support multicomponent arrays and could not be written into .vtm collections are fixed.
* There are a number of miscellaneous bug fixes to HyperTreeGrid filters.
* Two bugs are fixed in the AMReX (formerly BoxLib) reader.
* The MPAS reader no longer issues warnings when reading datasets without time.
* Inconsistent time information and missing cell arrays in the Truchas reader are fixed.
* Incorrect 2D rectilinear grid orientation with both XDMF readers are corrected.
* The brand new ExportNow feature properly skips screenshots from deselected views in this release.
* Catalyst scripts with Cinema image exports no longer skip attribute arrays.
This diff is collapsed.
# Calculator accepts vktTable
* The calculator filter now accepts vtkTable as input.
# Custom labels for charts
* It is already possible to define custom ticks on axis in chart views.
This adds the ability to display custom labels on those ticks.
If no label is specified, the value of the tick is used.
# Multiple Expressions in FindData
* The FindData Dialog now allows to combine multiple logical expressions.
New buttons were added to add / remove expression entries. The resutling query is a
AND combination of the given expressions.
# Copy SpreadSheet Selection to clipboard
In spreadsheet view, the standard copy shortcut (ctrl+c or cmd+c on OSX)
can be used to copy the current selection in the clipboard.
This copy includes only visible columns, and add the column names as first row.
# New support for ADIOS 2.x readers
ParaView now has support for two different readers using ADIOS 2:
* ADIOS2CoreImageReader: Read ADIOS BP files with 2D and 3D image data by
explicity specifying the various elements to populate metadata from.
* ADIOS2VTXReader: Read ADIOS BP files which contain metadata in either an
attribute or as a file in the .bp directory describing the metadata in
VTK XML format. Support vtkImageData and vtkUnstructuredGrid.
# Improvements to animations
We have refactored caching of rendered data when playing animations with caching
enabled. The new changes avoid pipeline updates and data movement when cached
data is being used. The cache is now stored on the rendering nodes, thus
avoiding the need to delivery data when playing animations. This also includes
several cleanups to minimize unnecessary pipeline updates for pipelines that are
not impacted by the animation. While such updates are largely no-ops, they still
caused lots of bookkeeping code to execute which adversely impacted the
performance.
This introduces backwords incompatible changes to representations that will
affect developers who have custom `vtkPVDataRepresentation` or `vtkPVView`
subclasses. Please refer to [Major API Changes](@ref MajorAPIChanges) for
details.
# Add tolerance to vtkCleanUnstructuredGrid
This patch adds tolerance to the vtkCleanUnstructuredGrid class like it already exists in vtkCleanPolyData.
So far, the vtkCleanUnstructuredGrid rounds all coordinates first to float precision, then directly compares for equality (like x1 == x2) - which is never a good idea for float or double numbers. The reason is that points are fed into a vtkPoints object that has float precision by default.
The latter can be changed by writing a vtkObjectFactory derived factory class for vtkPoints with double precision and registering it. But then the effect is only that the vtkCleanUnstructuredGrid class will not have much effect any more - because then the direct comparison will be done at double precision level, so points will hardly ever coincide any more and no merging will happen.
Here these patches will come into the game because now a tolerance can be specified, in absolute or relative terms. With that, the merging can be exactly adapted to the geometry of the problem.
# New data histogram in the Color opacity editor
A histogram can now be shown in the opacity editor widget.
It is controlled by the following buttons :
* A checkbox to enable/disable the histogram display
* A button that highlights when the histogram is outdated and computes the histogram when clicked
* A checkbox to automatically computes the histogram if it is outdated
* A slider to control the number of bins of the histogram
# New range handles in the Color opacity editor
Range handles are now shown in the color opacity editor widget
They allow to very easily manipulate the range of the transfer function.
By grabbing, moving and releasing a range handle, the range is interactively modified.
The range is shown in the widget while interacting with the handles.
# Datamine reader
Datamine files can now be read in by ParaView. The readers are available on loading the **Datamine** plugin.
# Adding expansion depth for tree view in xml
If a filter uses a tree widget (ArrayListDomain, ArraySelectionDomain, EnumerationDomain, CompositeTreeDomain), the default
expansion depth can now be controlled with a specific hint.
0 is the minimal expansion depth, only root node is expanded. -1 means expandAll.
<IntVectorProperty command="..." name="...">
<CompositeTreeDomain mode="all" name="tree">
<RequiredProperties>
<Property function="Input" name="Input" />
</RequiredProperties>
</CompositeTreeDomain>
<Hints>
<!-- This tag sets the height of the CompositeTreeDomain -->
<Expansion depth="3" />
</Hints>
</IntVectorProperty>
# Adding support for testing in external plugins
ParaView now support XML and Python testing within external plugins.
When adding a XML testing to an external plugin, it is now possible
to specify a variable, `testName_USES_DIRECT_DATA`, that will be picked up by paraview
testing macro. With the variable defined, no data expansion will be performed
which means that baseline can now be used without requiring to rely
on an ExternalData mechanism and directly point to baseline image
or data in the plugin subdirectory.
```
set (TestName_USES_DIRECT_DATA ON)
paraview_add_client_tests(
LOAD_PLUGIN PluginName
PLUGIN_PATH $<TARGET_FILE_DIR:PluginName>
BASELINE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Data/Baseline
TEST_SCRIPTS TestName.xml)
```
When adding a python testing to an external plugin, it is now possible
to specify a parameter to the paraview_add_test_python function, `DIRECT_DATA`,
that will be picked up by VTK testing macro. With this parameter defined,
no data expansion will be performed which means that baseline can now be used
without requiring to rely on an ExternalData mechanism and directly point to baseline image
or data in the plugin subdirectory.
In order to load the plugin in the python script, it may be required to use
other mechanisms, see in the elevation filter example.
```
# Uses DIRECT_DATA to inform VTK to look into Data/Baseline/ for the baselines
paraview_add_test_python(
NO_RT DIRECT_DATA
TestPython.py)
```
See Examples/Plugins/ElevationFilter for a complete example
# Filter to extract subset from a structured grid starting with a seed point
Sometimes one encounters a multi-block of structured grids
that are not aligned in i-j-k space, however the blocks may be adjacent in x-y-z
space. In that case, **Extract Subset** does not work as expected since it only
takes in the volume of interest in i-j-k space. **Extract Subset With Seed**
takes in a XYZ location instead and can extract lines or planes in the i-j-k
space starting at that point in the dataset and following the structured grid
along the requested i-j-k directions.
# Flip Book plugin for persistence of vision analysis
We introduced a new plugin which creates a new toolbar which allows a flip book type
rendering mode: when the flip book mode is enabled every visible representations
of an active Render view will be flipped at each flip iteration step.
This mode allows to use persistence of vision to perceive differences between
several representations. Note that the SPACE key can be used to flip visibility manually.
# Generating global point and cell ids
Newly added **Generate Global Ids** filter can be used to generate global
point and cell ids for any dataset. The filter also flags duplicate points
using appropriate ghost point flags.
# Volume Slicing with GPU
A new Volume representation property called `Blend Mode` has been added.\
This property replaces the old `Show Isosurface` property.\
Three blend modes are available:\
- *Composite*: This is the default volume rendering.
- *Isosurface*: This is the replacement of the old `Show Isosurface` property.
- *Slice*: This mode allows the configuration of a slice plane with an interactive widget.
# Improve python properties support
Improving Python Properties support by returning the property instead of the value for domain based properties.
Which allows to do the following:
rep = GetDisplayProperties()
rep.Representation.Available
['3D Glyphs', 'Feature Edges', 'Outline', 'Point Gaussian', 'Points', 'Slice', 'Surface', 'Surface With Edges', 'Volume', 'Wireframe']
# Adding Light Widget
Additional lights now have their dedicated interactive widget
for easier light manipulation and visualization.
The widget shows up for scene light, it shows the type of light (positional, directional), the light position, the light focal point and cone angle (for positional), and the light color.
The widget allows to interactively change the light position, the light focal point and cone angle.
# Explicit refinement for line source
Line source now supports explicitly specifying intermediate points.
This enables generation of non-equidistant sample points along the length
of the line. Since line sources are often used to generate probes in a dataset,
this enables users to affect the probing locations.
# Adding linear camera interpolation
A new camera interpolation has been added for the camera animation.
It interpolates linearly between camera position while the old one was interpolating positions with a spline.
This new interpolation is available in the animation view.
It is called `Interpolate camera locations (linear)`.
The old one was renamed `Interpolate camera locations (spline)` to avoid confusion.
# Linear cell extrusion filter
A new filter called **Linear Cell Extrusion** is available.\
This filter takes a polygonal data in input and extrudes its cells\
along the cell normals to create 3D cells.\
The extrusion length is determined by the selected cell data array.
# Adding argument lists for plugins and plugin paths to testing macros
The arguments `LOAD_PLUGINS` and `PLUGIN_PATHS` have been added to the
testing macros, allowing for the testing of multiple plugins within a
single test.
# Redistribute dataset filter
Newly added **RedistributeDataSet** filter can be used to split data into the
requested number of partitions for load balancing. The filter either computes
the bounding boxes, or uses a provided collection of bounding boxes, for
distributing the data. Cells along partition boundaries can be uniquely
assigned to a partition, duplicated among partitions, or split among the
partitions.
# Reading OME-TIFF files
ParaView now supports mutli-page OME-TIFF files with multiple channels and timesteps.
Additional details about the OME-TIFF format can be found here:
https://docs.openmicroscopy.org/ome-model/5.6.3/ome-tiff/
Note that multi-file OME-TIFFs are currently not supported.
# OpenVR new features
New features have been added to the OpenVR plugin:
- A new **Reset All Positions** has been added to reset positions
of objects that have been moved using the **Grab** mode
- A new **Pick** interaction is available that allows to grab objects far away with the ray
- A new checkbox **Interactive Ray** is available. When enabled, the ray becomes green when an
interaction with an object is possible and the ray is cut at the intersection.
# paraview-mesa
The `--mesa*` flags have been removed from the `paraview` binary. Instead,
there is now the `paraview-mesa` executable which can launch any ParaView
executable with a Mesa environment. For example, instead of the `--mesa-llvm`
flag, `paraview-mesa paraview --backend llvmpipe -- $paraview_args` may be
used.
# Physically Based Rendering and normal mapping
ParaView now supports physically based rendering.
Under the `Lighting` properties group of the `Surface` representation, a new interpolation type
can be selected.\
When selected, new properties are available:
- Roughness: define how glossy a material is
- Metallic: if a material is metallic or not (you can set any value but for most realistic materials, it should be either 0 or 1)
- Base Color Texture: use a texture to define the color
- Material Texture: this texture encodes ambient **O**cclusion, **R**oughness, **M**etallic on the Red, Green, Blue channels respectively. This texture is also called ORM.
- Emissive Texture: this texture defines which parts of the model emit light.
This new interpolation properties are mapped to the OSPRay `Principled` material when the pathtracer is enabled.
PBR also supports reflections. Select your skybox (in equirectangular projection) and tick `Use As Environment Lighting`.
Normal mapping (also called Bump mapping) is now supported by both Gouraud and PBR interpolation. The texture can be selected with the `Normal Texture` property.\
This texture can be selected if the surface contains texture coordinates and tangents.
The tangents can be computed by the new filter `Generate Surface Tangents` (the surface must be triangulated and contain normals and texture coordinates)
# plugin-dir-structure-loading
`PV_PLUGIN_PATH` now supports directories which hold the structure made by
ParaView's plugin build macros. Namely, that directories named `PluginName`
found in these paths will trigger a search for `PluginName.dll` or
`PluginName.so` (depending on platform) under that directory.
Plugin XML files (which list plugins and `auto_load` settings) may now specify
a relative path to a plugin. When using a relative path, it must end up under
the original XML file's directory (i.e., using `..` to "escape" is not
allowed).
# Loading of plugins
In earlier versions, plugins could be loaded before or after the main window in
the application was created depending on whether the plugin was loaded using the
**Load Plugin** dialog or was being auto-loaded. With recent changes, we are now
assuring that plugins are always loaded **after** the main window is created.
This enbles the plugin developers can assume existence of a
main window irrespective of whether the plugin was auto-loaded or loaded after
the application has started.
# Plugin location properties
* Multiple static plugin search functions may now be registered. The
`vtkPVPluginTracker::SetStaticPluginSearchFunction` is deprecated in
preference for `vtkPVPluginTracker::RegisterStaticPluginSearchFunction`.
# Proxy XML for readers now supports multiple hints for file types
The <Hints> element in a reader proxy can now contain multiple entries to allow
a reader to suport differnt filetypes with differnt descriptions.
An example of this use case is in the ADIOS2CoreImageReader:
```xml
<Hints>
<ReaderFactory extensions="bp"
file_description="ADIOS2 BP3 File (CoreImage)" />
<ReaderFactory filename_patterns="md.idx"
file_description="ADIOS2 BP4 Metadata File (CoreImage)" />
<ReaderFactory extensions="bp"
is_directory="1"
file_description="ADIOS2 BP4 Directory (CoreImage)" />
</Hints>
```
THis allows a single reader to present multiple entries in the "File -> Open"
dialog box rather than a single combined entry.
# Provide access to client-side selection
The vtkSMRenderViewProxy class now creates instances
of a new vtkPVEncodeSelectionForServer class in order
to prepare the client-side selection for representations
on the server side. This allows applications built on
ParaView a way to access the client-side selection
while it is being processed.
# remove-unified-bindings
"Unified" bindings have been removed. This used the Python bindings as a
backing implementation for the ClientServer bindings used for ParaView's
client/server communication. It did not produce the expected results and is no
longer useful.
# Increase icon size in render-view toolbar
* Increase the icon size in the render view toolbar from 12 pixels to 24 pixels, and add 24 pixel icons for the split-view buttons. Add a note about adding new testing baselines to CMakeLists.txt in the docs.
# Render view toolbar icons
* Icons in the render view toolbar were updated to SVG versions, so they can scale to any resolution.
* Other uses of .png icons are being replaced if possible.
* Icons changes are mostly documented in a [wiki page](https://gitlab.kitware.com/paraview/icons-rework/-/wikis/home)
# Adding support for making links between representations proxy or properties
So far, the Link Editor allowed to create links for Views and Objects (ie.
pipeline sources) but Representations were not available. It is not the
case anymore: one can link representation proxies or representation properties.
For instance, one can link the Opacity property of two representations together
and then, when one is changed, the other is automatically changed the same way
and vice versa.
# Run Script button in Python Shell now provides the script path
When running a Python script, it might be useful to know the path of the script.
It is now possible to recover the full path of such a script run via the
"Run Script" button in the Python Shell view thanks to the variable `__file__`.
## Exporting contents of the *Output Messages* window
It is now possible to save the contents of the *Output Messages* window to a text file in the ParaView client.
# Selection by array from the render view
A new button has been added to the render view toolbar.\
It allows to select all the points or cells with the same array values based on the currently active array.\
The active array must be an IdType array.\
If a point data or cell data array is selected, points or cells with the same values will be selected respectively.
# QTTesting additions
* ItemView widgets record and replay a double-click in addition to an edit event,
so TreeViews that respond to double-click but not edit can be tested.
* ItemView widgets record and replay selection events in addition to setCurrentItem,
so they can test multiple selections. Useful in spreadsheet view and color annotation
widget, for example.
# New Billboard mode for Text Source representation
We introduced a new `Billboard 3D Text` mode for the Text Source representation.
This new `TextPropMode` allows to display a text attached to a point in the
3D space. The point position can be set explicitly or interactively using the
usual point widget.
# Volume rendering cropping
It is now possible to volume-render only a volume of interest (VOI) of a 3D image data without\
applying a filter. A set of new properties and interactive box widget allows setting the\
axis-aligned VOI region.
# ZIP archives for Python packages and modules in static builds
In static builds of ParaView with Python enabled, we package all Python modules
and packages into ZIP archives. This helps reduce the file accesses needed to import
ParaView's Python modules which can have a negative impact on HPC systems when running
at scale. With ZIP archives, there are just two files `_paraview.zip` and `_vtk.zip` that
need to opened to import all ParaView's (and VTK's) Python modules.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment