A downloadable Art tool

Graffiti 3D is a straightforward application with one purpose: enable you to doodle in 3d space with 3d meshes in colors/materials of your choice. An Oculus Rift and Leap Motion are recommended for the best experience.

If you like Graffiti 3D, check out my other VR projects Superstruct (http://jscottk.itch.io/superstruct) and Triangulate (http://jscottk.itch.io/triangulate).

A Hovercast (https://github.com/aestheticinteractive/Hover-VR-I...) menu on your off hand allows you to control brush color, size, material (cartoon, metal, porcelain, clay, neon, wireframe), and perform a variety of utility functions (such as export/import meshes, turn on augmented reality mode, undo strokes, and clear the canvas).

For users who interested in other input options, mouse input and xbox 360 controller work as well (see readme.txt).

If you want to touch up meshes after working on them in Graffiti 3D, you can export them in .obj format by pressing the "e" button (or "export" in hovercast).

Graffiti inspiration

Street artists and the techniques they use to make their pieces jump off their canvases have inspired me for a long time. After following the oculus rift kickstarter and developing an interest in stereoscopic media, I realized an opportunity existed to enable the creation of free-hand art that literally has depth to it. To my surprise, I couldn't find quite what I was looking for, so I went on a search for the best suitable 6dof input device and built it.

Please let me know if you run into any issues or have any suggestions.


Read the included README.txt to learn how to deposit material, change colors, change the brush size, change the material, clear the canvas, undo strokes, set left-handed mode, turn on/off the interaction box, export/import meshes, and choose an image for the photosphere.


- Added resolution dialog to resolve issues some Windows 10 users were having with the application crashing on launch. If the issue occurs, try changing the quality setting to "good".


- Added support for Oculus runtime 1.3

- Note: if you're having issues getting this version to run, try messing with the quality settings in the resolution dialog that pops up at launch.


- Updated to the new Leap Motion Orion SDK

- Changed hand model to new Orion "Capsule Hand" model. The active material/color is applied the joints of the capsule hand.

- The pinch gesture (between the thumb and index finger) now initiates drawing as well as the old "crimp" gesture (between the thumb and side of hand).


- Added function to store and recall positions and scales within the scene (left ctrl + number key to store, number key to recall).

- Added option to view the tracking camera bounds.

- Added function to rotate the camera (shift + mouse move).

- Fixed issue with neon material (it should now glow again).

- Fixed issue with colorpicker at scales < 1.

- Extended scale slider to a maximum of 20 (instead of 10).

- Removed boundaries in passthrough mode; no clipping should ever occur with imported geometry in passthrough mode now.

- Clearing the canvas now removes any imported geometry from the scene.


- Passthrough mode has been fixed. It is now accessible under the utility menu.

- The colorpicker has been revamped to be easier to use.

- Users can now scale the size of the camera.

- Users can now move the camera through the space with WASD keys.

- A tutorial has been added under the help menu.

- Multiple objects can now be imported at once. Place any desired objects to be imported in the "import" folder in the root directory. All .obj files will be imported simultaneously.

- Fixed issue with interaction box not properly disappearing when users set it to be hidden in config.txt.

- Fixed issue with colorpicker not appearing at scales other than 1.0

still working on Orion support. It's a bit tricky because Hovercast/Hovercursor/Hoverboard don't appear to support it yet.


- Fixed issue with importing objects; users should now be able to import custom meshes properly.

- Added ability to control mouse cursor with left analog stick on gamepad.

- Added cursor recentering when recentering camera (F2, F12, or R key)

- Fixed issue with saturation slider on hovercast menu.

- Fixed issue with neon material glow color not properly changing when material was changed.


- Added new materials: neon glow material, diffuse clay material, and a generic metal material (set to white for silver, yellow for gold, and orange for copper).

- Added object importing. Users can now import custom objects (up to 65,000 vertices) to draw on.

- Added photosperes. Users can now load in custom 360 degree panoramic images as environments to draw within.

- Added bloom effects. Extremely shiny materials will now sometimes appear to glow slightly when reflecting bright light.

- Fixed some rendering issues; material lighting should look better.

- Added ability to turn off lights (fun with neon material).

- Added ReadMe UI for Leap Motion users (mouse/gamepad users can still access the ReadMe in the main menu).

- Updated to Unity 5.2f3, Leap Motion Core Assets 2.3.1, and Oculus 0.6.2 (compatible with Oculus runtime 0.7+)

- Temporarily removed passthrough mode; waiting on Leap Motion SDK update before that will work again (this is a priority).

- Removed fine control of stroke width with thumb distance; too many people reported issues using this feature. Change the stroke size in order to modify the drawing width.


- Fixed issue with new UI; mouse input should now work properly for laptop trackpads.

- Fixed issue with augmented reality mode; the image in the right eye should now align properly with the skeletal model (along with the left eye).

- Fixed issue with glossy plastic material. It should now appear shiny/reflective in game.

- Palm token now displays the currently selected material.

- Cleaned up the help text window; the mask is now working properly.


- Added ability to draw with new materials (including copper, silver, gold, plastic, wireframe, and cartoon material).

- Added support for mouse input and Xbox 360 controller input. Note: holding right click moves the cursor on the z axis, clicking mouse scroll wheel opens UI menu. When using controller, clicking right analog stick undoes the last stroke.

- Updated Hovercast menu to utilize a look-based input cursor rather than a finger to select items in the left hand menu. Also, sliders now allow jump-to-select.

- Fixed issue with mesh normals and triangles; things look significantly better now.

- Added new UI menu that can be used with mouse and controller input. Help documentation (readme.txt) is now accessible in-game.

- Leap Motion controller is automatically detected now and hides interaction box if there is no leap plugged in. The mouse cursor is hidden if a leap is detected.

- Updated to OVR, Leap Motion 2.2.4, and Unity 5.


- Fixed an issue with left handed mode; drawing should now properly work while left handed.

- Fixed an issue with drawing while both hands are in view. Users can draw as long as the Hovercast menu is not visible.


- Deactivated drawing while interacting with the Hovercast menu system (to avoid accidental drawing).

- Converted menu items to appropriate input types in the Hovercast menu system; shape selectors are now radio buttons, and the augmented reality button is now a checkmark.

- Changed "Lightness" to "Brightness" on the HSB color selector.


- Converted left hand controls to Hovercast menu (https://github.com/aestheticinteractive/Hovercast-...)

- Added in-game color and size controls, so sizes.txt and colors.txt are no longer needed.

- Moved commonly used keyboard shortcuts (undo, clear canvas, export mesh, augmented mode) to the left hand menu.

- Converted "digital" thumb drawing trigger to "analog" control (the distance between the thumb and hand determines line width instead of simply triggers drawing). This allows for variable width painbrush-like strokes.


- Added passthrough camera/"augmented reality" access by pressing "p" key. Make sure "allow images" is selected in your leap motion driver before trying this.

- Added ability to export meshes by pressing "e" key.

- Fixed issues with undoing strokes. Now a "stroke" is considered to be one continuous drawn line.

- Made a variety of performance adjustments (such as making undo/export run on their own threads).

More information

Published1 year ago
Tags3D, art, artgame, creative, doodle, drawing, graffiti, painting, tool, Virtual Reality
Player countSingleplayer

Install instructions

Download the zip file, and unzip to a convenient directory. Then run Graffiti3D.exe or Graffiti3D_directToRift.exe. Make sure your oculus rift is plugged in and turned on when you run the program.

This was developed for oculus runtimes 0.4.3 and 0.4.4 so apologies if it has issues on other runtimes.


Graffiti 3D_3.6.2 (runtime 0.8).zip (35 MB)
Graffiti 3D_4.0.4 (runtime 1.3).zip (33 MB)