Skip to content

Multi-Layer Canvas #376

Open
Open

Description

@Relm-Arrowny

Part of #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.

Activity

  1. added
    core dependencyMore needed to know before we can fully scope this work.
    Decision neededDecision is required before this is ready to be scoped
    on Sep 7, 2026
  2. changed the title [-]Build a multi-layer plotting window supporting independent opacity, colormap, and dynamic range settings per layer.[/-] [+]Multi-Layer Canvas[/+] on Sep 9, 2026
  3. NKatti2011 commented on Sep 16, 2026

    @NKatti2011
    Collaborator

    Below include notes from meeting with @EmsArnold and others.

    Scope

    3D is out of scope for this issue. Generating a 3D model from 2D input is an open
    question and should be tracked separately. Before raising that issue we
    need an answer to: how much 3D do we actually need during acquisition, as opposed to
    post-hoc analysis?

    Open questions

    • Does transparent layer blending need hardware-accelerated canvas composition to hit our
      target frame rates, or is 2D canvas compositing sufficient for the layer counts we
      expect? This interacts with the canvas throttling/reduction item in P99 Acquisition & Visualisation Interface Overhaul #373, and should be
      part of the Davidia evaluation.

    To Scope

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Data VisDecision neededDecision is required before this is ready to be scopedcore dependencyMore needed to know before we can fully scope this work.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions