{"id":22053163,"url":"https://github.com/nuilab/interactivepaint","last_synced_at":"2025-03-23T15:44:22.692Z","repository":{"id":88382123,"uuid":"49742502","full_name":"NuiLab/InteractivePaint","owner":"NuiLab","description":"The 4th iteration of the Interactive Paint application.","archived":false,"fork":false,"pushed_at":"2016-08-05T01:44:02.000Z","size":270942,"stargazers_count":0,"open_issues_count":7,"forks_count":2,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-01-28T21:46:08.237Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NuiLab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-01-15T20:13:56.000Z","updated_at":"2017-01-14T17:29:30.000Z","dependencies_parsed_at":"2023-03-04T18:45:15.241Z","dependency_job_id":null,"html_url":"https://github.com/NuiLab/InteractivePaint","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NuiLab%2FInteractivePaint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NuiLab%2FInteractivePaint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NuiLab%2FInteractivePaint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NuiLab%2FInteractivePaint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NuiLab","download_url":"https://codeload.github.com/NuiLab/InteractivePaint/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245127938,"owners_count":20565203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-30T15:15:26.363Z","updated_at":"2025-03-23T15:44:22.656Z","avatar_url":"https://github.com/NuiLab.png","language":"C#","readme":"This application is dual-licensed.\n\nLicense A:  GPL v2 and/or GPL v3\n\nLicense B: The second license, is a private license available via Dr. Rishe and Dr. Ortega. Write to fortega@cs.fiu.edu for more information.\n\n\n\n![](https://cloud.githubusercontent.com/assets/9858188/15053885/c8e0fb9c-12d2-11e6-8890-e6214fa2a825.png)\n\n\nMulti Modal Interactive Paint is an application designed to showcase various input devices. Currently implemented devices include\n\tMultitouch Monitor\n\tTobii EyeX\n\tLeap Motion Controller\n\tIntel Real Sense Camera\n\nThe application was designed for the OpenHID lab at Florida International University. It will be an application that sets the baseline for testing new devices on their indevelopment Smart Desk, a desk designed for students that will make use of various input devices.\n\nThe application is a painting application, allowing users to draw on a canvas using different shapes, colors, as well as more intricate functionality such as layer and alpha color support.\n\nThe software also gives the user some basic control over what they want their active devices to do, for example the Leap Motion can be toggled on to perform Drawing and Hand Gesture Recognition, you can also toggle one of these off so making performing the other simpler.\n\nUser Read Me\n\nMultitouch Read Me\n\n\t Without using the Tobii EyeX these UI Boxes should always be showing unless disabled using the Radial Menu.\n\tIf you are currently using the Tobii EyeX you must have your 'gaze' in the vicinity of the UI to have it display as well as work properly.\n\nDrawing -\n\nDrawing with the Multitouch device is simple. Simply drag your fingers accross any non-interactive UI elements. The multitouch will pick up that your finger is moving and then begin to draw a shape. Drawings can be various shapes. Circles, rectangles, and triangles can also be filled as opposed to hollow shapes. Below is a list of the various shapes implemented thus far.\n\n\tLines\n\n\t\tWhen in line mode simply drag your finger across the touch screen to draw lines.\n\t\tThe Program supports as many fingers as your multitouch display does.\n\n\tCircles\n\t\tWhen in circle mode simply put your finger where you want the center of the circle to be.\n\t\tDrag your finger until the desired size of the circle is created\n\n\tRectangles\n\t\tWhen in rectangle mode place your finger at the location where you want one of the corners.\n\t\tDrag your finger until you get your desired rectangle size, then lift.\n\n\tTriangles\n\t\tWhen in triangle mode, the touch of your finger represents the center of the base.\n\t\tDrag your finger to change the height as well as width of the triangle.\n\t\tRelease your finger when the desired height and width is created.\n\nHere is our basic user interface :\n\n![image](https://cloud.githubusercontent.com/assets/9858188/15054055/99c1cab6-12d3-11e6-9198-7e89836b47d6.png)\n\n\n\nMode Buttons (Top left of UI) - From left to right\n\n\n\tColor Change Button\n\t\tToggling this button opens up another menu of all the colors that you can change to. Colors correspond to the color inside the boxes.\n\n\tShape Change Button\n\t\tToggling this button opens up another menu of buttons that represent all the currently available shapes\n\t\tLines\n\t\tCircles (Unfilled or Filled depending on the value of the fill button)\n\t\tRectangles (Unfilled or Filled depending on the value of the fill button)\n\t\tTriangle (Unfilled or Filled depending on the value of the fill button)\n\tBrush Buttons - Opens the following buttons\n\t\tToggle Fill Button\n\t\t\tTurns the 'filled' function on and off for some shapes. Circles, Rectangles, and Triangles can all be 'filled' shapes as opposed to just connected lines.\n\t\tLine Size Increase Button\n\t\t\tIncreases the size of lines as well as non-filled shapes lines.\n\t\tLine Size Decrease Button\n\t\t\tDecreases the size of lines as well as non-filled shapes lines.\n\t\tTransparency Increase (Purple Button)\n\t\t\tIncreases transparency of any shapes or lines you draw\n\t\tTransparency Decrease (Green Button)\n\t\t\tDecreases transparency (makes then more solid) for any shapes or lines you draw.\n\tToggle Symmetry (Dotted line Icon)\n\t\tToggles a line of symmetry on and off.\n\t\tA dotted white line will split the screen when it is enabled.\n\t\tAny shapes that you draw will be reflected over this Axis.\n\tLayer Visualization (Two 'Pages' Icon)\n\t\tToggles on and off layer visualization\n\t\tThese are the three 'layers' you can draw on. Press either of the bottom two layers to swap it with the top.\n\t\tThe top layer is the layer you are currently drawing on.\n\n\t\tThe Menu also allows you to drag a green dot up and down a slider. This will allow you to change the Alpha color of that layer.\n\n![image](https://cloud.githubusercontent.com/assets/9858188/15054100/d582c9a6-12d3-11e6-9768-23c1b99f5197.png)\n\t\t\t\tLayer Visualization Menu\n\n\t'A' Text Icon\n\t\tTap this icon, and then tap anywhere on the screen to begin writing text.\n\t\tA Touch Keyboard will appear, simply tap any keys to type.\n\t\tYou can drag this keyboard around by touching the edges and moving your finger.\n\t\tIn addition you can hit 'Done' or touch anywhere on the screen without the keyboard interface to close it.\n\n\tUndo Button\n\t\tThe Undo button simply undoes the last drawing that you performed on the currently active layer.\n\nHere is an example of some of these menus\n\n![image](https://cloud.githubusercontent.com/assets/9858188/15054083/c43a0d8a-12d3-11e6-85ed-a8db4aecd0e9.png)\n\n\nMultitouch Gestures\n\n\tDouble tap the screen\n\t\tDouble tapping the screen will open up a radial menu at the fingers location\n\t\t\tRadial Menu -\n\t\t\t\tLeft button cycles through colors\n\t\t\t\tRight Button - Cycles through Shapes\n\t\t\t\tTop button - Toggles on and off symmetry\n\t\t\t\tBottom button - toggles on and off UI\n\t\t\t\tGrey Center Button - Turns off the radial menu.\n\n\tExtended Touch Gesture\n\t\tPress your finger on the multitouch and hold it in place.\n\n\t\tYou should then see icons which cycle through various shapes.\n\n\tTwo Finger Tap Gesture\n\t\tPlace two fingers together, at about the same height, and tap the screen. Make sure the fingers are separated enough to be detected as two separate taps.\n\n\t\tThis gesture will cycle through colors.\n\n\n\n\nMode Box - Bottom Right of UI\n\n\tThis box Enables you to see what settings are currently on.\n\n\tDepending on the mode, the box will display a line if you currently have lines active, a Circle if you have Circles Active (Filled circles if filled circles are active) etc.\n\n\tEraser mode will display a small hollow white circle with the background color inside.\n\n\tIt will also show the shapes in their correct colors as well as line size.\n\n\tAdditionality it shows which devices were currently plugged in at launch time of the application.\n\t\t- Blue box in the top left corner of the mode box represents a present touch screen.\n\t\t- Green box to the right of the blue box represents a leap motion device is present\n\t\t- A Red box further to the right represents the presence of a Tobii EyeX Device.\n\t\t- A Yellow Box indicating the Intel Real Sense Camera is plugged in.\n\n\tThe mode box also has a 'Cog' button in the bottom left for settings, this menu contains\n\t\tA toggle button for Frames Per Second\n\t\tA Cycle Backgrounds button\n\n\tIn addition it has a 'Device Modes' menu located at the top right. Opening it will provide you various options for the implemented devices. Currently a green box means 'On' while a black box means 'Off'\n\nEyeX Guide -\n\tSimply move your gaze around so the EyeX can pick them up. You can see two gray circles jumping around indicating where you gaze is located.\n\n\tSimply gaze to the top left corner to 'draw' the mode buttons, as well as gaze to the bottom right corner to draw the mode box.\n\n\tIn addition, tapping space with the EyeX enabled will change your shape based on where you are looking.\n\n\t![image](https://cloud.githubusercontent.com/assets/9858188/15054183/27b7a58e-12d4-11e6-9a85-455dd248eb89.png)\nThis image displays the Two circles that show where you gaze is being tracked to. In addition it is close enough to the mode box to pull it up.\n\n\nKeyboard Shortcuts\n\n\t'Touch Screen' buttons are available as keyboard shortcuts as well.\n\tSome additional functionality may be found on the keyboard because we have yet to implement it into the UI.\n\n\t'q' and 'w' - Cycle through the various colors. 'q' goes backwards while 'w' goes forward.\n\t'e' - Toggle Eraser Mode - Turns on the 'eraser' which draws the current background color to the canvas\n\t\t(The 'Mode Box' shows a small white circle that shows the size of the current eraser')\n\t\tIn addition you must turn off eraser mode before drawing (Retoggle with the 'e' key)\n\t'r' - Toggle Random Color Mode - Draws in randomly generated colors. Must turn it off to continue drawing in specific colors.\n\t'z' - Line size decrease - Decreases size of the lines as well as lines that encompass non-filled shapes.\n\t'x' - Line size Increase - Increases size of the lines as well as lines that ecompass non-filled shapes.\n\t'c' - Clears the current canvas, including both layers.\n\t'u' - Turns on line drawing\n\t'i' - turns on Circle Drawing\n\t'o' - turns on rectangle drawing\n\t'p' - turns on triangle drawing\n\t'f' - toggles filled shapes on and off\n\n\n\n\n\n\n\nLeap Motion Read Me\n\n\tLeap motion device allows a user to draw by using his or her fingers.\n\tAlso provides gestures that allows the user to change the current color being used\n\tto draw and the current shape chosen for drawing. The final gesture a keyboard tap gesture\n\tallows user to save current canvas.\n\nLeap Motion Drawing\n\n\tLeap Motion Drawing capabilities\n\t\tThe leap motion enables a user to draw lines on the screen by using his or her fingers as the drawing tool.\n\t\tCurrently only line drawing is allowed and the shapes can only be drawn using the multi touch screen. The Interaction\n\t\tUI will show three lines that tells the user the current mode is in line drawing mode.\n\n\tInstructions for drawing a line with Leap Motion\n\t\tThe leap motion allows all ten of a persons fingers to be using to create lines on the canvas.\n\t\tWhen a person would like to draw he or she should first uses his or her index finger and slowly approach the leap\n\t\tmotion from the front side of the device. As a person finger enters the leap motions interaction zone a green circle\n\t\twill appear when the device reads the finger.\n\t\tA green circle signals to the user that he or she is hovering over a virtual touch screen created by the leap\n\t\tmotion device. The green circle will fade away as the person continues to move their finger towards the screen.\n\t\tOnce the green circle disappears the person has entered the drawing zone and will be able to draw by moving their\n\t\tfingers around the screen.\n\n\t\tWhen a person wants to finish a line drawn he or she must remove their hand from the leap motion device's\n\t\tinteraction zone.\n\n\n![image](https://cloud.githubusercontent.com/assets/9858188/15054139/f6ea33b8-12d3-11e6-8f88-8321a76c6d4d.png)\n\t\t\t\t\t\tLeap Motion Drawing in Action!\n\n\tLeap Motion Gestures\n\t\tLeap motion device has three different gestures that allows a user to change a current setting of the\n\t\tprogram or save an image.\n\n\t\tSince the leap motion device is always running a person may draw and accidently perform a gesture.\n\t\tIn order to avoid a gesture being read accidently the user can toggle off and on the drawing mode\n\t\tfor the leap motion.\n\n\t\tBy pressing KeyBoard shortcut 'v' as stated previously the drawing capabilities will be disabled\n\t\tallowing a user to not have to worry about drawing while performing or gesture.\n\n\n\tSwipe Gesture\n\t\tWhen a user performs a swipe gesture the current color the program is set on will be incremented to the\n\t\tnext predefined color.\n\n\t\tA successful gesture reading will provide feedback in the form of the new color appearing on the screen\n\t\tand eventually fades out.\n\n\t\tHow to Perform a swipe gesture:\n\t\t- The swipe gesture can be performed horizontally or vertically\n\t\t- The user may start on the left or right side of the leap motion or start at the top or bottom\n\t\t- When the user decides to perform the swipe he or she must move from one side of the leap to the opposite side\n\t\t- For example: left to right , right to left , top to bottom , bottom to top\n\t\t-\n\t\t-The gesture should be one  fluid motion and best down with a single finger pointing toward the screen.\n\t\tThe gesture is read best by the device when the user keeps their wrist and hand rigid and moves their arm.\n\t\tUser should imagine your finger,hand,wrist and arm as one solid object.\n\n\tCircle Gesture\n\t\tWhen a user performs a circle gesture the current shape, for drawing , the program is set on will be\n\t\tincremented to next predefined shape.\n\n\t\tA successful gesture reading will provide feedback as a shape image appearing on the screen\n\t\tand eventually fades out.\n\n\t\tHow to Perform a circle gesture:\n\t\t- The circle gesture can be performed using either the left or right index finger.\n\t\t- The user begins the gesture by using their index finger and pointing towards the screen with his\n\t\t- or her hand over the leap motion device.To begin the gesture the user either goes in a clock\n\t\t- or counterclock direction.The user should continue moving only his or her index finger and complete\n\t\t- a 360 degree rotation which will be read by the leap motion as a single circle gesture.\n\t\t- Again it is suggested for the user to keep hand and wrist still and only rotate index finger in\n\t\t- a circle.\n\n\t\tUser Note:\n\t\tUnlike the multi touch in order to have filled shapes the user must continue traverse the possible\n\t\tshapes until the filled shape they desire has been dispalyed.\n\n\t\tAlso user should note that shapes can only be drawn with the touch screen.\n\n\n\tKeyboard Tap Gesture\n\t\tWhen a user performs a keyboard tap gesture the current canvas is saved to the users computer.\n\n\t\tA successful gesture reading will provide feedback in the form a saved file image.\n\n\t\tHow to Perform a keyboard tap gesture:\n\t\t- The keyboard tap gesture can be performed using either the left or right index finger.\n\t\t- The user begins the gesture by using their index finger and pointing towards the screen\n\t\t- with his or her hand over the leap motion device. To perform the gesture the user keeps his\n\t\t- or her wrist and hand still and points the index finger towards the keyboard in a single fluid\n\t\t- motion while keep hand and wrist still. The motion simulates a person taping a keyboard key.\n\n\tTroublshooting:\n\tMake sure the leap motion service is running on the machine perform starting the Interactive Paint Program.\n\nIntel Real Sense Guide\n\n\tDrawing -\n\t\tDrawing can be performed similar to the Leap Motion device. You simply move your hand forward and draw iwth your entire hand. The interface for drawing is very similar, instead of green circles they are simply yellow circles to indicate where the drawing will occur.\n\tFacial Recognition\n\t\tThe real sense also provides a facial detection service. We implemented 5 Facial Gesture so far including :\n\n\t\tKiss Gesture - Toggles User Interface for Mode box and Mode Buttons\n\n\t\tSmile Gesture - Changes Shapes\n\n\t\tEyebrow Raise Gesture - Calls the undo function\n\n\t\tPuffy Cheeks Gesture - Changes colors\n\n\t\tTongue Out Gesture - Toggles Symmetry Line.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuilab%2Finteractivepaint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnuilab%2Finteractivepaint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuilab%2Finteractivepaint/lists"}