Skip to content

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
3 checks passed
@floryst floryst mentioned this pull request Jun 5, 2025
1 task
floryst added a commit that referenced this pull request Jun 13, 2025
Major changes:
- #3239
- #3224
- #3171
- #3159
- #3158
- #3157
@github-actions
Copy link

🎉 This PR is included in version 34.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@github-actions github-actions bot added the released Automated label label Jun 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

released Automated label

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants