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 VolumeMapper multi component using multiple image data #3157

Merged
merged 18 commits into from
Oct 29, 2024

Conversation

finetjul
Copy link
Member

@finetjul finetjul commented Oct 29, 2024

See #3132

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
@finetjul finetjul merged commit 4bb6513 into Kitware:beta Oct 29, 2024
6 checks passed
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.

2 participants