DiamondLightSource / DiamondLightSource/sm-bluesky
Multi-Layer Canvas
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- Avg merge
- 2d 3m
- Merged PRs (30d)
- 8
Description
Part of https://github.com/DiamondLightSource/sm-bluesky/issues/373 Live plotting:
Build a central canvas that supports rendering multiple overlapping, transparent data layers (e.g., raw STXM, webcam views, reconstructed images) with independent controls.
### Goals
Acceptance criteria : What journeys should the user be able to complete to consider your feature done
Be as specific as you can, check them off once they work. Add more if you find more requirements during development. Issue should only be considered done after all of them are checked
- [ ] Independent Layer Controls: The user can independently toggle visibility, opacity, and colormaps for each rendering layer.
- [ ] Stacking Context: Transparent layers overlay accurately on top of each other without affecting background layers.
### Tasks
base on the goals, deduce the tasks required. check them off once they're done
> [!CAUTION]
> ### Decision needed
> - [ ] Look into what libraries already exist and what data is required, some possibility ( Unity, Plotly.js, uPlot etc) but all of which will involve some kind of WebGL.
> - [ ] Check what diamond plans are for handling data heavy possess on the web.
> - [ ] How are we generating the 3d model from our 2d input, Is workflow going to output a 3d model for laminography?
> - [ ] What are we going to do with 3d model?
> - [ ] Would point cloud make sense? (Three.js, potree, deck.gl VTK.Js - this is use in medical imaging)
- [ ] Layer Control UI panel: Design and implement side panels with opacity sliders 0-100, colormap dropdowns, and adjustable intensity range limits.
- [ ] Canvas Blending: Build hardware-accelerated canvas composition supporting transparent layer blending.
- [ ] Dynamic Level of Detail: Data send to the UI should be scaled depend the level of zoom(detail) the user required.
- [ ] Spatial view culling: Data that fall outside field of view should not be send or rendered.
Contributor guide
Research direction
No files, tests, or entry points are named. Start with the linked parent issue #373 and resolve the listed library, data-volume, 3D-model, and point-cloud decisions before implementation. Done means users can independently control each layer and transparent layers stack accurately, with zoom-based detail and view culling addressed.
Written by the indexing model from the issue text.
Assessment
- Domain
- data-visualization, frontend, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100