EasyTangibleTable is a lightweight Unity package for building tangible table applications using the TUIO protocol.
It allows Unity apps to detect, track, and interact with fiducial markers (tags) on interactive surfaces such as touch tables and projection systems.
The package provides:
- a clean event-driven API
- a component-based tag controller system
- an extensible architecture for interactive installations and R&D projects
- โ Detect tangible tags using TUIO protocol
- โ Track tag position, rotation, and movement
- โ Event-driven architecture
- โ Create custom tag behaviors
- โ Support for multiple tags simultaneously
- โ Built-in target alignment detection
- โ Clean EasyTT API
- โ Designed for interactive installations and R&D prototypes
Perfect for:
๐งฉ Tangible user interfaces ๐ฎ Interactive installations ๐งช R&D prototypes ๐๏ธ Museum installations ๐ฅ Multi-object interactive demos
EasyTangibleTable requires extOSC to receive TUIO messages.
Follow the installation steps in order.
- Open Unity โ Window โ Package Manager
- Click + โ Add package from Git URL
- Paste the following: https://github.com/IreshSampath/extOSC.git#upm
- Click Install
- Open Unity โ Window โ Package Manager
- Click + โ Add package from Git URL
- Paste the following: https://github.com/IreshSampath/unity-assets-easy-tangible-table.git
- Click Install
After installing the package:
- 1๏ธโฃ Open Package Manager
- 2๏ธโฃ Select EasyTangibleTable
- 3๏ธโฃ Go to the Samples tab
- 4๏ธโฃ Click Import
Inside the imported sample, you will find two prefabs.
- Receiving TUIO tag and touch data
- Displaying tag details
- Debug logging
This prefab demonstrates example tag behaviours and abobe bsic functaionalties.
Example tag controllers included:
TagAController
TagBController
TagCController
TagDControllerThese show how to create custom tag interactions, such as:
- rotation-based UI states
- button interactions
- color selection
- alignment triggers
Without EasyUIConsole the system still works, but debug messages will not appear.
EasyTangibleTable provides a simple API via EasyTT.
Example
using GAG.EasyTangibleTable;
void OnEnable()
{
EasyTT.TagAligned += OnTagAligned;
EasyTT.TagRemoved += OnTagRemoved;
}
void OnDisable()
{
EasyTT.TagAligned -= OnTagAligned;
EasyTT.TagRemoved -= OnTagRemoved;
}
void OnTagAligned(int tagID)
{
Debug.Log($"Tag aligned: {tagID}");
}
void OnTagRemoved(int tagID)
{
Debug.Log($"Tag removed: {tagID}");
}Each tangible tag can have its own controller script.
EasyTangibleTagControllerBaseExample
using GAG.EasyTangibleTable;
using UnityEngine;
public class MyCustomTagController : EasyTangibleTagControllerBase
{
protected override void OnTargetReached()
{
Debug.Log("Tag reached target!");
}
protected override void OnTargetDeparted()
{
Debug.Log("Tag left target!");
}
}Attach this script to your tag prefab.
EasyTangibleTable exposes multiple events:
EasyTT.TagPlaced
EasyTT.TagUpdated
EasyTT.TagMoved
EasyTT.TagRotated
EasyTT.ActiveTagsUpdated
EasyTT.TagAligned
EasyTT.TagAlignmentLost
EasyTT.TagRemovedThese events allow you to build complex interactions such as:
- UI triggers
- object manipulation
- multi-tag interactions
- experience control
EasyTangibleTable can be used for:
- tangible games
- interactive tables
- educational installations
- museum exhibits
- research experiments
IT License โ Free for commercial and personal use.
Thanks for using EasyTangibleTable!
- Feel free to contribute
โญ Star the repo ๐ Report issues ๐ Suggest improvements
Iresh Sampath
๐ LinkedIn Profile




