Skip to content

Commit

Permalink
App v1.0.0
Browse files Browse the repository at this point in the history
+ ReacTiVision functionality added
- Bug fixes
  • Loading branch information
Necas209 committed Jun 4, 2022
1 parent 5017321 commit f4b7e76
Show file tree
Hide file tree
Showing 29 changed files with 1,281 additions and 46 deletions.
14 changes: 3 additions & 11 deletions game.kv
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@
<PlayScreen>:
PlayLayout:
RoundLabel:
text: f'{root.round_no} / {root.no_rounds}'
text: f'{root.round_no} / {len(root.numbers)}'
MDCard:
border_radius: 10
radius: [10,]
Expand All @@ -136,14 +136,6 @@
pos_hint: {'center_x': 0.5, 'center_y': 0.55}
Image:
source: root.play_img
MDIconButton:
pos_hint: {'center_x': 0.2, 'center_y': 0.2}
icon: 'check-circle'
on_press: root.bt_check_play(True)
MDIconButton:
pos_hint: {'center_x': 0.8, 'center_y': 0.2}
icon: 'close-circle'
on_press: root.bt_check_play(False)

<ContinueButton@MDIconButton>:
icon: 'chevron-right-circle'
Expand All @@ -154,7 +146,7 @@
<RightScreen>:
PlayLayout:
RoundLabel:
text: f'{root.round_no} / {root.no_rounds}'
text: f'{root.round_no} / {len(root.numbers)}'
MDCard:
border_radius: 10
radius: [10,]
Expand All @@ -176,7 +168,7 @@
<WrongScreen>:
PlayLayout:
RoundLabel:
text: f'{root.round_no} / {root.no_rounds}'
text: f'{root.round_no} / {len(root.numbers)}'
MDCard:
border_radius: 10
radius: [10,]
Expand Down
Binary file removed images/numbers/number0.png
Binary file not shown.
3 changes: 3 additions & 0 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ class GameApp(MDApp):
no_rounds = NumericProperty(5)
score = NumericProperty(0)

def __init__(self, **kwargs):
super().__init__(**kwargs)

def build(self):
Config.set('input', 'fun_table', 'tuio,127.0.0.1:3333')
self.icon = 'images/app_logo.png'
Expand Down
46 changes: 46 additions & 0 deletions reacTIVision-1.5.1-win64/CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
reacTIVision 1.5.1
—————————————————-
* revert FrameEqualizer to equalization rather than subtraction
* fixed the calibration distortion for wide camera formats
* correctly save updated camera configuration on exit
* implemented camera format enumeration on Windows
* added a dedicated PS3 camera driver on MacOSX (thanks to Sebestyén Gábor)
* implemented GAMMA and POWERLINE camera configuration on MaxOSX
* implemented CONTRAST camera configuration on Windows
* implemented V4L2_PIX_FMT_GREY in Video4Linux2 (for SUR40)
* implemented STEPWISE camera formats in Video4Linux2 (for raspicam)
* improved SDL event handling and adaptive VSync (for higher fps)
* updated the SDL2 Framework to 2.0.4
* code sign MacOSX application bundle
* minimum supported MacOSX version is 10.8
32bit version for older systems and CPUs
* add Windows 64bit build (min. Windows 7)
32bit version for older systems and CPUs

reacTIVision 1.5
————————————————
* new AVFoundation camera driver for MacOS X (including controls)
* new videoInput camera driver for Windows (including controls)
* improved Video4Linux2 camera driver for Linux (including controls)
* list all available cameras and formats (via -l startup argument)
* support MJPEG decompression for higher USB camera frame rates
* support IIDC-over-USB cameras through libdc1394
* added frame cropping configuration (xoffset,yoffset,xwidth,yheight)
* multithreaded thresholder for reduced latency on multicore CPUs
* allow the adjustment of the threshold tile size
* updated FrameEqualizer for faster background subtracion
* sending correct TUIO 1.1 source messages
* added a quicker and less tedious calibration mode
* migrated the user interface to SDL 2.0 (less CPU overhead)
* fixed a MIDI configuration file location bug on MacOS X
* added fullscreen toggle (via F1 key)
* added a headless mode (via -n startup argument)
* improved Linux desktop integration
* updated oscpack, tinyxml, portmidi and dc1394 libraries
* added x86_64 and dropped PPC architecture on MacOS X
* provide x86_64 and i686 binaries for Mac OS X and Linux
* updated XCode and Visual Studio 2012 projects
* added a project for the Codeblocks IDE on Linux
* removed the dtouch fiducial tracker
* removed the now outdated VdigGrab, DSVideolib and Video4Linux drivers
* new application icon
340 changes: 340 additions & 0 deletions reacTIVision-1.5.1-win64/GPL.txt

Large diffs are not rendered by default.

45 changes: 45 additions & 0 deletions reacTIVision-1.5.1-win64/LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
The reacTIVision software and the the TUIO example clients
are free software licensed under the GPL license.
You can freely use this software for any private, academic
or commercial purpose, provided that you are willing
to publish the source code of your derived work upon request.

* the reacTIVision framework (c) by Martin Kaltenbrunner
is licensed under the GPL v2.0 license
see the file GPL.txt for the detailled license terms
http://github.com/mkalten/reacTIVision

* the fidtrack library (c) by Ross Bencina & Martin Kaltenbrunner
is licensed under the LGPL license
see LICENSE.txt in the project folder for its terms
http://github.com/mkalten/reacTIVision

* the oscpack library (c) by Ross Bencina
is licensed under a BSD style license
see LICENSE in the project folder for its terms
http://code.google.com/p/oscpack/


* the videoInput library (c) by Theo Watson et al.
is licensed under a BSD style license
http://github.com/ofTheo/videoInput



* the TinyXML library (c) by Lee Thomason et al.
is licensed under the ZLib license
see README.txt in the project folder for its terms
http://www.sourceforge.net/projects/tinyxml



* the PortMidi library (c) by Roger B. Dannenberg et al.
is licensed under a BSD style license
see README.txt in the project folder for its terms
http://portmedia.sourceforge.net/portmidi/



* the VVUVCKit framework
is licensed under the MIT license
http://github.com/mrRay/VVUVCKit
214 changes: 214 additions & 0 deletions reacTIVision-1.5.1-win64/README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
reacTIVision 1.5.1
------------------
(c) 2005-2016 by Martin Kaltenbrunner <martin@tuio.org>
https://github.com/mkalten/reacTIVision

reacTIVision is an open source, cross-platform computer vision
framework for the fast and robust tracking of fiducial markers
attached onto physical objects, as well as for multi-touch
finger tracking. It was mainly designed as a toolkit for the
rapid development of table-based tangible user interfaces (TUI)
and multi-touch interactive surfaces. This framework has been
developed by Martin Kaltenbrunner and Ross Bencina as part of
the Reactable project, a tangible modular synthesizer.
http://www.reactable.com/

reacTIVision is a standalone application, which sends Open Sound
Control (OSC) messages via a UDP network socket to any connected
client application. It implements the TUIO protocol, which has been
specially designed for transmitting the state of tangible objects
and multi-touch events from a tabletop surface. As an alternative
to TUIO, the application is also capabable of sending MIDI messages.

The TUIO framework includes a set of example client projects
for various programming languages, which serve as a base for
the easy development of tangible user interface or multi-touch
applications. Example projects are available for languages such as:
C/C++, Java, C#, Processing, Pure Data, Max/MSP and Flash.

The reacTIVision application currently runs under the
following operating systems: Windows, Mac OS X and Linux
Under Windows it supports any camera with a proper WDM driver,
such as most USB, FireWire and DV cameras. Under Mac OS X most
UVC campliant USB as well as Firewire cameras should work.
Under Linux FireWire cameras are as well supported as many
Video4Linux2 compliant USB cameras.

Fiducial Symbols
----------------
This application was designed to track specially designed fiducial
markers. You will find the default "amoeba" set of 216 fiducials in
the document "default.pdf" within the symbols folder. Print this
document and attach the labels to any object you want to track.
The default fiducial tracking engine is based on the included fidtrack

library, which also provides an alternative "classic“ fiducial set,
which are a reimplementation of Enrico Costanza’s d-touch concept.
See below how to configure the application to use these symbol sets.

reacTIVision detects the ID, position and rotation angle of fiducial
markers in the realtime video and transmits these values to the client
application via the TUIO protocol. TUIO also assigns a session ID to
each object in the scene and transmits this session ID along with the
actual fiducial ID. This allows the identification and tracking of
several objects with the same marker ID.

Finger Tracking
---------------
reacTIVision also allows multi-touch finger tracking, which is basically
interpreting any round white region of a given size as a finger that
is touching the surface. Finger tracking is turned off by default and
can be enabled by pressing the 'F' key and adjusting the average finger
size, which is given in pixels. The general recognition sensitivity can
also be adjusted, where its value is given as a percentage. 75 would be
less sensitive and 125 more sensitive, which means that also less probable
regions are interpreted as a finger. The finger tracking should work with
DI (diffuse illumination) as well as with FTIR illumination setups.

Application Handling
--------------------
Before starting the reacTIVision application make sure you have
a supported camera connected to your system, since the application
obviously will not work at all without a camera. The application
will show a single window with the B&W camera video in realtime.

Pressing the 'S' key will show to the original camera image.
Pressing 'T' will show the binary tresholded image, pressing the
'N' key will turn the display off, which reduces the CPU usage.

The thresholder gradient gate can be adjusted by hitting the 'G' key.
Lowering the value can improve the thresholder performance in low
light conditions with insufficient finger contrast for example.
You can gradually lower the value before noise appears in the image.
Optionally you can also adjust the tile size of the thresholder.

The camera options can be adjusted by pressing the 'O' key.
On Windows and Mac OS this will show a system dialog that allows
the adjustment of the available camera parameters. On Linux (Mac OS X
when using Firewire cameras), the available camera settings can be
adjusted with a simple on screen display.

In order to produce some more verbose debugging output, hitting
the 'V' will print the symbol and finger data to the console.
Pressing the 'H' key will display all these options on the screen.
'F1' will toggle the full screen mode, the 'P' key pauses the
image analysis completely, hitting 'ESC' will quit the application.

XML configuration file
----------------------
Common settings can be edited within the file "reacTIVision.xml" where
all changes are stored automatically when closing the application.
Under Mac OS X this XML configuration file can be found within the
application bundle's Resources folder. Select "Show Package Contents"
from the application's context menu in order to access and edit the file.

The reacTIVision application usually sends the TUIO messages
to port 3333 on localhost (127.0.0.1)
You can change this setting by adding or editing the XML tag
<tuio host="127.0.0.1" port="3333"> to the configuration.

The <fiducial engine="amoeba" tree="default"/> XML tag lets you
select the fiducial engine or an alternative amoeba tree order.
The default engine is using the fastest and effective 'amoeba'
fiducial set. Add the 'classic' option in order to use the dtouch
reimplementation from libfidtrack.

The display attribute defines the default screen upon startup.
The <image display="dest" equalize="false" gradient="32" tile="10"/>
lets you adjust the default gradient gate value and tile size.
reacTIVision comes with a background subtraction module, which in
some cases can increase the recognition performance of both the finger
and fiducial tracking. Within the running application you can toggle
this with the 'E' key or recalculate the background subtraction
by hitting the SPACE bar.

The overall camera and imageesettings can be configured within the
"camera.xml" configuration file. On Mac OS X this file is as well
located in the Resources folder within the application bundle.
You can select the camera ID and specify its dimension and framerate,
as well as the most relevant image adjustments. Optionally you can also
crop the raw camera frames to reduce the final image size.
Please see the example options in the file for further information.

You can list all available cameras with the "-l" startup option.

TUIO vs. MIDI
-------------
The application can alternatively send MIDI messages, which allows
the mapping of any object dimension (xpos, ypos, angle) to a MIDI
control message through an XML configuration file. Adding and removing
objects can also be mapped to simple note ON/OFF events.
Keep in mind though that MIDI has less bandwidth and data resolution
compared to Open Sound Control, so the new MIDI feature is only meant
as a convenience alternative to TUIO in some application scenarios.

Adding <midi config="midi_demo.xml" /> to reacTIVision.xml switches to
MIDI mode and specifies the MIDI configuration file that contains the

mappings and MIDI device selection. An example configuration file along

with a simple PD patch example can be found in the midi folder.

You can list all available MIDI devices with the "-l" startup option.

Calibration and Distortion
--------------------------
Many tables, such as the reacTable are using wide-angle lenses
to increase the area visible to the camera at a minimal distance.
Since these lenses unfortunately distort the image, reacTIVision
can correct this distortion as well as the alignment of the image.

For the calibration, print and place the provided calibration sheet
on the table and adjust the grid points to the grid on the sheet.
To calibrate reacTIVision switch to calibration mode hitting 'C'

Use the keys A,D,W,X to move within grid, moving with the cursor keys
will adjust the position (center point) and size (lateral points)
of the grid alignment. By pressing 'Q' You can toggle into the precise
calibration mode, which allows you to adjust each individual grid point.

'J' resets the whole calibration grid, 'U' resets the selected point
and 'K' reverts to the saved grid.

To check if the distortion is working properly press 'R'. This will show
the fully distorted live video image in the target window. Of course the
distortion algorithm only corrects the found fiducial positions instead
of the full image.

Compilation
-----------
The source distribution includes projects for all three supported
platforms and their respective build systems: Linux, Win32, MacOS X.

Windows:
A Visual Studio 2012 project as well as the necessary SDL2 libraries
and headers are included. The project should build right away for
32bit and 64bit targets without any additional configuration.

Mac OS X:
An Xcode project for Xcode version 3.2 or later is included.
The build will require the SDL2 and VVUVCKit frameworks, in order
to compile properly, just unzip the included Frameworks.zip

Linux:
Call make to build the application, the distribution also
includes configurations for the creation of RPM packages, as well
as a project file for the Codeblocks IDE.
Make sure you have the libSDL 2.0 and libdc1394 2.0 (or later)
as well as turbojpeg libraries and headers installed.

License
-------
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Binary file added reacTIVision-1.5.1-win64/SDL2.dll
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
8 changes: 8 additions & 0 deletions reacTIVision-1.5.1-win64/camera.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="ISO-8859-1" ?>
<portvideo>
<camera id="0">
<capture width="640" height="480" fps="max" compress="true" />
<settings brightness="default" contrast="default" gain="9" shutter="default" exposure="default" sharpness="default" gamma="default" focus="min" />
<frame width="max" height="max" xoff="0" yoff="0" />
</camera>
</portvideo>
29 changes: 29 additions & 0 deletions reacTIVision-1.5.1-win64/midi/README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
reacTIVision is a standalone application, which sends Open Sound
Control (OSC) messages via a UDP network socket to any connected
client application. It implements the TUIO protocol, which has been
specially designed for transmitting the state of tangible objects
and multi-touch events from a tabletop surface. As an alternative
to TUIO, the application is also capabable of sending MIDI messages.
http://www.tuio.org/

Alternatively it can also send MIDI messages, which are configurable
via an XML configuration file. Keep in mind though that MIDI has less
bandwidth and data resolution compared to Open Sound Contol, so the
MIDI feature is meant as an convenient alternative in some cases,
but TUIO still will be the primary messaging layer.

The alternative MIDI mode can map any object dimension (xpos, ypos, angle)
to a MIDI control via an XML configuration file. Adding and removing objects
can be mapped to simple note ON/OFF events.

Adding <midi config="midi.xml" /> to reacTIVision.xml switches to MIDI mode
and specifies the MIDI configuration file that contains the mappings and MIDI
device selection. An example PD patch "midi_demo.pd" can be found this folder.

You can list all available MIDI devices with the "-l" option.

The demo configuration file "midi.xml" defines a simple controller
setup with a few vertical and horizontal faders, some knobs and
a free controller area for a single object. See the "midi_demo.pd" patch
for Pure Data for an example MIDI client using this setup.

Loading

0 comments on commit f4b7e76

Please sign in to comment.