apertus-open-source-cinema / webui

A webui for AXIOM cameras. Interacting with nctrl.
https://apertus-open-source-cinema.github.io/webui/
15 stars 8 forks source link

Feature request: HDR PLR GUI in Dashboard #26

Closed se6astian-pi closed 2 years ago

se6astian-pi commented 2 years ago

I would propose the following elements:

Slopes: 1 (default), 2, 3 as 3 buttons in a row

switching to 2 slopes enables or adds 2 additional sliders: Exp_kp1 (exposure time for first slope) slider: here it would make sense to display it as fraction of the real exposure time, either in % or in EVs below ) Vtfl2 Slider between 0 - 64 (not sure what Bit [6] = 0/1: Enable/Disable DAC does)

switching to 3 slopes enables or adds 2 additional sliders: Exp_kp2 (exposure time for first slope) slider: here it would make sense to display it as fraction of the real exposure time, either in % or in EVs below ) Vtfl3 Slider between 0 - 64 (not sure what Bit [6] = 0/1: Enable/Disable DAC does)

se6astian-pi commented 2 years ago

Current state: grafik

dashboard.yml:

Analog Gain:
  - widget: slider
    path: devices/cmv12000/computed/analog_gain
    options: { 0.3: 1/3, 0.6: 2/3, 1: 1, 1.3: 4/3, 2: 2, 3: 3, 4: 4}
  - widget: textfield
    path: devices/cmv12000/computed/analog_gain

Exposure Time [ms]:
  - widget: slider
    path: devices/cmv12000/computed/exposure_time_ms
    min: 0
    max: 10
  - widget: slider
    path: devices/cmv12000/computed/exposure_time_ms
    min: 10
    max: 100
  - widget: slider
    path: devices/cmv12000/computed/exposure_time_ms
    min: 100
    max: 10000
  - widget: spacing
    px: 30
  - widget: buttons
    path:  devices/cmv12000/computed/exposure_time_ms
    buttons:
      -1 EV: x => parseFloat(x) / 2
      -1/3 EV: x => parseFloat(x) / Math.pow(2, 1/3)
      +1/3 EV: x => parseFloat(x) * Math.pow(2, 1/3)
      +1 EV: x => parseFloat(x) * 2

PLR HDR Mode:
  - widget: buttons
    path:  devices/cmv12000/cooked/number_slopes
    buttons:
      1 Slope: x => 1
      2 Slopes: x => 2
      3 Slopes:  x => 3  
  - widget: spacing
    px: 30
  - widget: slider
    path: devices/cmv12000/computed/exposure_time_kp1_ms
    min: 0
    max: 15
  - widget: text
    text: Exposure Time Kneepoint 1
  - widget: spacing
    px: 30
  - widget: slider
    path: devices/cmv12000/cooked/vtfl2
    options: { 64: off, 70: 10%, 76: 20%, 83: 30%, 89: 40%, 95: 50%, 102: 60%, 108: 70%, 114: 80%, 121: 90%, 127: 100%}
  - widget: text
    text: Kneepoint 1 Level   
  - widget: spacing
    px: 30
  - widget: slider
    path: devices/cmv12000/computed/exposure_time_kp2_ms
    min: 0
    max: 15
  - widget: text
    text: Exposure Time Kneepoint 2
  - widget: spacing
    px: 30
  - widget: slider
    path: devices/cmv12000/cooked/vtfl3
    options: { 64: off, 70: 10%, 76: 20%, 83: 30%, 89: 40%, 95: 50%, 102: 60%, 108: 70%, 114: 80%, 121: 90%, 127: 100%}
  - widget: text
    text: Kneepoint 2 Level

What I would like to see added:

  1. button class adapted so it turns orange if "active" (meaning if the current value matches the value of the button) - for the slopes buttons for example
  2. in the slider class there is only code to handle float values currently but all sensor registers are raw integer or hex currently, https://github.com/apertus-open-source-cinema/webui/blob/master/frontend/components/NctrlValueWidgets.jsx#L114
  3. for the kneepoint exposure times it would make sense to use a different scale or value scheme (maybe percent of actual exposure time?)