DiamondLightSource / DiamondLightSource/sm-bluesky

Multi-Layer Canvas

Open
#376 0 comments 0 reactions 0 assignees View on GitHub
core dependency Data Vis Decision needed
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.