Hotspot Mitigation

From Immersive Visualization Lab Wiki
Jump to: navigation, search

Contents

Purpose

The HotSpot plugin is designed to minimize the visibility of hotspots in the cave. A hotspot is a circular area of the screen that is brighter than the rest of the screen. Because the projectors are behind the screens, the brightest point occurs where the line from the user's eyes to the projector intersect with the screen. The plugin uses the viewer's location to determine where the hotspots are. The end result is that the image appears homogeneous to the viewer.

HotSpot is intended to be used with other plugins. HotSpot renders during preSwapBuffers so as to be the last thing in the rendering pipeline.

How to Use

  1. Ensure that HotSpot is enabled in the <Plugin> section of the starcave.xml configuration: <HotSpot value="on">
  2. Start openCOVER.
  3. Start any other plugins. HotSpot is intended to be used with other plugins. It does post-processing on whatever is being displayed.
  4. From the main menu, click on HotSpot to bring up the menu.
  5. Select Enabled. HotSpot should now be working with default settings. For more detailed usage information, including how to adjust the level of attenuation, see the next section, "Menu"

Menu

Menu.png Note: This image is out of date. Several new options have been added, which are not shown but describe below.

  • Enabled - This checkbox controls whether the mitigation code runs. The first time you enable the plugin, it will do some initialization. You may enable and disable this plugin at will.
  • Use headtracker data - Choose whether the plugin uses the viewer's position to calculate the positions of the hotspots. Checking this checkbox disables the sliders Hotspot x and Hotspot y. When this menu item is not checked, the hotspot position can be changed with the sliders.
  • Mark Hotspot - If selected, a red dot will be drawn at the points where the hotspots are calculated to be. Useful for debugging or visualizing the location of the hotspots.
  • Hotspot x - When "Use headtracker data" is NOT checked, this slider controls the x coordinate of the hotspot.
  • Hotspot y - When "Use headtracker data" is NOT checked, this slider controls the y coordinate of the hotspot.
  • Min Alpha - In "Linear" mode, sets the amount of attenuation or amplification applied to the center of the hotspot. A typical setting for this slider is 0.8, which works well with medium to dark images. A smaller value may be needed for brighter images. When in "1D Lookup Table" or "2D Lookup Table" mode, specifies a constant bias value which is added to the value in the lookup table. Can be used to increase or decrease the overall attenuation.
  • Max Alpha - Set the amount of attenuation or amplification applied far away from the hotspot. A typical setting for this slider is 1.4 which works well with medium to dark images. For bright images, setting this value too high can result in brightness saturation.
  • Linear - Use a linear ramp function to do the attenuation.
  • 1D Lookup Table - Use the data in the file specified in the <Lut1DDataFile> directive as a lookup-table. Can use this to specify an arbitrary mitigation function. In this mode, the "Min Alpha" slider acts as a constant bias, which is added to the value in the lookup table.
  • 2D Lookup Table - Use the theoretical model of light transmission through diffuse media to generate a 2D lookup table which uses angle of incidence and angle of transmission to determine the attenuation value. In this mode, the "Min Alpha" slider acts as a constant bias, which is added to the value in the lookup table.


Configuration

Typical Settings

<HotSpot>
   <LinearShaderFile value="/home/covise/covise/src/renderer/OpenCOVER/plugins/calit2/HotSpot/linear.frag" />
   <Lut1DShaderFile value="/home/covise/covise/src/renderer/OpenCOVER/plugins/calit2/HotSpot/lut1d.frag" />
   <Lut1DDataFile value="/home/covise/covise/src/renderer/OpenCOVER/plugins/calit2/HotSpot/lut1d.csv" />
   <Lut2DShaderFile value="/home/covise/covise/src/renderer/OpenCOVER/plugins/calit2/HotSpot/lut2d.frag" />
   <ProjCoordSource value="config" />
   <Enabled value="false" />
   <UseHeadTrackerData value="true" />
   <MarkHotspot value="false" />
   <MinAlpha value="0.8" />
   <MaxAlpha value="1.5" />
</HotSpot>

Configuration entries

LinearShaderFile

  • value - string - Specify a path to the fragment shader to use when in Linear mode.

Lut1DShaderFile

  • value - string - Specify a path to the fragment shader to use when in 1D Lookup Table mode.

Lut1DDataFile

  • value - string - Specify a path to the file containing the data to use as the 1D lookup table.

Lut2DShaderFile

  • value - string - Specify a path to the fragment shader to use when in 2D Lookup Table mode.

ProjCoordSource

  • value - "config "| "auto" - Specify from where the projector coordinates are obtained. "config" - looks for attributes named px, py, pz in the covise configuration file in the <Screen> element. If the attributes name px, py, pz are not present, they will be automatically calculated.

"auto" - attempt a best-guess calculation of the projector coordinates based on the screen geometries.

Enabled

  • value - boolean - Initial state for "Enabled" menu item.

UseHeadTrackerData

  • value - boolean - Initial state for "Use headtracker data" menu item.

MarkHotspot

  • value - boolean - Initial state for "Mark hotspot" menu item.

MinAlpha

  • value - float [0, 2.0] - Initial state for "min alpha" menu item.

MaxAlpha

  • value - float [0, 2.0] - Initial state for Max Alpha menu item.

PosX

  • value - float [-1.0, 1.0] - Initial state for Hotspot x slider.

PosY

  • value - float [-1.0, 1.0] - Initial state for Hotspot y slider.