-
Notifications
You must be signed in to change notification settings - Fork 327
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
fix(color volume viewport): fix incorrect property on volume actor #683
Conversation
…handling - Added support for volume viewports in the webLoader example - Created new HTML elements for volume viewports and set their dimensions - Updated the rendering engine to include the new volume viewports - Implemented loading and rendering of volume data in the volume viewports - Modified image loading logic to convert RGBA format to RGB format - Updated image metadata provider to add support for volume metadata - Improved performance by reducing memory duplication during image loading - Made necessary adjustments to accommodate the change in dimensions in the streaming image volume loader class
✅ Deploy Preview for cornerstone-3d-docs ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
// @ts-ignore | ||
const pixelDataRGBA = image.getPixelData(); | ||
const pixelDataRGB = image.getPixelData(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you need yet another image data array? You don't even appear to use targetArray, so can you throw it away entirely? I don't get this logic here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
targetArray is used to view the portion of the full volume at the offset and length, we need it to fill the volume
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, I see what you are doing here - the target array is created from the passed in arrayBuffer instance, so it is a view onto the destination object and you are setting it. Missed that and thought you were creating a new instance.
You can avoid the copy entirely by passing targetBuffer into getPixelData and creating the Uint8array view inside the getPixelData. Then, that getPixelData has enough information to do a bounds check to see that nothing is being cut off, and to throw an exception if the provided array is too small.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is not about only volume viewport and target buffer, it should handle both cases (Stack and volume) so I don't want to modify the getPixelData since that correctly return the pixelData for stack viewport, does that makes sense?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is why I would put the logic into getPixelData, setting it up as an optional parameter. The return value will be identical in both cases, just if you are passed an array buffer, it uses that array buffer (+ offsets info), otherwise create new data. That prevents the copy operation entirely, while being 100% compatible with either call method.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok applied it
Context
Webloader was returning RGBA true which volume viewport could not handle. It is fixed now. Also the volume viewports color was not working either because of it is changed now to reflect
setIndependentComponents(false)
. In addition streaming into the volume for color was not working since we had a short circuteChanges & Results
Testing
yarn run example webloader
should work now
https://deploy-preview-683--cornerstone-3d-docs.netlify.app/live-examples/webloader
Checklist
PR
semantic-release format and guidelines.
Code
[] My code has been well-documented (function documentation, inline comments,
etc.)
[] I have run the
yarn build:update-api
to update the API documentation, and havecommitted the changes to this PR. (Read more here https://www.cornerstonejs.org/docs/contribute/update-api)
Public Documentation Updates
additions or removals.
Tested Environment