Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add multi component using multiple image data #3132

Open
wants to merge 18 commits into
base: master
Choose a base branch
from

Conversation

bruyeret
Copy link
Contributor

@bruyeret bruyeret commented Oct 1, 2024

Volume mapper now support up to 4 inputs, each representing a component.

This PR contains a very big refactor that opens possibilities for multi volume handling.

To add multiple components using multiple image data:

  • Use addInputData to add multiple image data to the volume mapper
  • Use setProperty(volumeProperty, n) to also add volume properties per component

The first volume property will be used for all rendering properties except preferSizeOverAccuracy and interpolationType.

BREAKING CHANGE:
Some properties have been moved from the volume mapper to the volume property, the following methods have been moved:
'getAnisotropy',
'getComputeNormalFromOpacity',
'getFilterMode',
'getFilterModeAsString',
'getGlobalIlluminationReach',
'getIpScalarRange',
'getIpScalarRangeByReference',
'getLAOKernelRadius',
'getLAOKernelSize',
'getLocalAmbientOcclusion',
'getPreferSizeOverAccuracy',
'getVolumetricScatteringBlending',
'setAnisotropy',
'setAverageIPScalarRange',
'setComputeNormalFromOpacity',
'setFilterMode',
'setFilterModeToNormalized',
'setFilterModeToOff',
'setFilterModeToRaw',
'setGlobalIlluminationReach',
'setIpScalarRange',
'setIpScalarRangeFrom',
'setLAOKernelRadius',
'setLAOKernelSize',
'setLocalAmbientOcclusion',
'setPreferSizeOverAccuracy',
'setVolumetricScatteringBlending'

These functions used a `getInput` method that doesn't exist
It is not a breaking change as these functions instantly crash when called
The ImageSlice actor already used a more concise code.
Do the same for the base Actor and and Volume actor.
The prop3D has three children that were redefining `getBounds` in the same way.
Move the definition of `getBounds` in the prop3D.
Update typescript accordingly.
BREAKING CHANGE: Move vtkVolumeMapper's properties related to rendering in vtkVolumeProperty.
Add a clear error message for these widely used methods.
This is part of the MultiVolumeMapper feature.
This work is part of the MultiVolumeMapper feature
Fix the getVolumes function which didn't return an array
Instead of comparing a big state that take all actor properties into account,
compare the mtime of the actor as it takes properties into account
Support multiple images as input
Uniform styling of fragment shader
Fix resource sharing core object for volume mapper scalars
Many shader bugs are fixed, often linked to wrong coordinate system.
Fix normal computation in shader.

BREAKING CHANGE: the volume mapper fragment shader is very different.
This can cause shader replacements to break.
refactor: Use the right matrices in volume FS shader
The normals have been fixed in the shader, hence the difference
Also the sample distance is not computed in index space anymore
This explains some differences
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant