Scrolling and fading video conferencing with PixGRID

The year 2020 was the year of video conferencing and remote meetings (“corona”) … how can you ease the situation of your colleagues when the meetings are getting boring?

You can use PixGRID as an unintrusive moving background for your home television studio. So when it becomes boring for your audience of your online meeting, they have some puzzles to solve when observing the moving, scrolling and fading background of your video stream.

…recently I stumbled over an old Applet I programmed nearly two decades ago and which I now ported to JavaFX as I was seeking for some moving backgrounds during video conferencing - so here comes PixGRID 1

The PixGRID application simulates a matrix of light bulbs where the bulbs cannot move by themselves (they have a fixed position on the light bulbs matrix) but the bulbs can change their color they are glowing with. Now you can take a pixmap image (for example PNG or GIF) and PixGRID maps a part of it onto a light bulbs matrix of, for example, 40 x 22 bulbs. The light bulbs matrix now is your viewport onto the image! You could also chose to use a viewport of 120 x 40 bulbs or any other dimension, though I would recommend not to use a resolution being too high as the effect of using a fixed sized light bulbs matrix would loose its characteristic abstraction.

Your image (you can provide multiple images) is loaded by PixGRID and a portion of it (the size of the viewport) is projected onto its light bulbs matrix. Now the viewport moves around your image randomly changing direction and speed, so for your audience to explore the image you provided. From time to time, the image is changed to another image by some random fading effect. You can also configure a fader image of the size of your viewport, so when PixGRID fades from one image to another, it uses your fader image as intermediate step. Again you can provide more than one fader image to your setup.

Try it out and download PixGRID from the downloads page, directly staring it uses a pre-configured setup (see screenshots below).

In case you use Teams or Zoom for video conferencing, you can tell it to use a virtual camera. A virtual camera might be the result of your real world physical webcam’s video stream mixed together with some foreground and background images or videos. In my case I use the output of PixGRID as part of my background mixed together with the OBS Studio free broadcaster software:

Take a look at the blog post How to get a moving background in a Microsoft Teams meeting (+ other fun things) from Amanda Sterner on how to set up the broadcaster OBS Studio accordingly to get things like PixGRID rock your video conferencing background!

This gallery gives you some impressions of the pre-configured PixGRID application:

The configuration below will show sooner or later all of the images above in some variation. Put it in a file called pixgrid.ini and fire up the PixGRID tool as follows:

1
./pixgrid-launcher-x.y.z.sh -c /path/to/your/pixgrid.ini

pixgrid.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
MATRIX_SCROLL_MAP_FILENAMES=map.elevator_action_1.colors.png,map.elevator_action_2.colors.png,map.elevator_action_3.colors.png,map.bomber_man.bw.gif,map.american_speedway.bw.gif,map.zaxxon.bw.gif,map.funcodes.colors.png,map.funcodes.bw.png,map.captain_future.bw.gif,map.captain_future.red.gif
MATRIX_FADER_MAP_FILENAMES=fader.5161.bw.40x22.png,fader.5161.blue.40x22.png,fader.5161.red.40x22.png,fader.ready.bw.40x22.png,fader.ready.colors.40x22.png
MATRIX_WIDTH=40
MATRIX_HEIGHT=22
BACKGROUND_COLOR=Black
PIXEL_WIDTH=14
PIXEL_HEIGHT=14
PIXEL_SHAPE=ELLIPSE
PIXEL_BORDER_COLOR=#505050
PIXEL_BORDER_WIDTH=0.8
TOP_BORDER=6
BOTTOM_BORDER=6
LEFT_BORDER=6
RIGHT_BORDER=6
HORIZONTAL_SPACE=6
VERTICAL_SPACE=6
INACTIVE_PIXEL_COLOR=#303030
MIN_PERPENDICULAR_DISTANCE=75
MAX_PERPENDICULAR_DISTANCE=150
MIN_PERPENDICULAR_DELAY=35
MAX_PERPENDICULAR_DELAY=100
MIN_DIAGONAL_DISTANCE=25
MAX_DIAGONAL_DISTANCE=50
MIN_DIAGONAL_DELAY=35
MAX_DIAGONAL_DELAY=100
MIN_DIRECTION_CHANGES=5
MAX_DIRECTION_CHANGES=10
MIN_FADER_MAP_SHOW_TIME=1000
MAX_FADER_MAP_SHOW_TIME=3000
DRAW_PIXEL_PROPABILITY=0.15
DRAW_PIXEL_DELAY=1

See also

  1. Java is an astoundingly robust programming language regarding the validity of your code, even the Applet API was still there after all that time, just being deprecated. Moving my code to JavaFX worked like a charm, bringing lots of additional functions for free. So if you do not want to throw away your code after > 6 month, consider using Java