Summary
The purpose of HoloPaint is to give users an interactive painting experience, allowing them to collaborate and share ideas using the Microsoft Hololens. We want to allow users to be able to have a real time collaborative experience, where multiple users can interact with a paintable hologram in order to collectively work together without the need of a huge space, having to crowd around a single writing surface, or taking the time to meet in person. We want this application to be relatively simple for the casual user, so that any individual would be able to pick up a Hololens and begin contributing ideas. This will be implemented as a Hololens Shared Experience and many users will be able to see and work immersively with each other.
With many diverse applications such as drafting ideas in meetings, adding life and color to a virtual hologram, and creatively painting together with friends, HoloPaint allows Hololens users to enhance their AR experience and also fully immerse themselves in a creative environment.
Deliverables
Our project is a collaborative painting application on the Hololens device. This application will have a shareable workspace (e.g. a customizable hologram) for multiple users to draw and paint on using hand movements. Each user will have access to their own set of drawing tools (brush, eraser, etc) in order to paint and will be allowed to move the hologram in real space without physical limitations. Additionally, the workspace is shared for all users across each session and users can use it to collaborate and work together in real time. Once users are done with the sketching, they can save their creations for further refinement in the future or showcasing their work to peers.
Critical Features
- Drawing on a virtual hologram with hand movement and gestures
- Options for drawing (color and width of cursor)
- Options for holograms (multiple holograms, placement)
- Simultaneously editable by multiple Hololens users
Performance Metrics
- Usability of the application. We want our application to be usable without any tutorials, similar to Paint.
- Accuracy of synchronization between multiple Hololens devices. Anything one user creates should be identical for the other users and any conflicts must be handled gracefully.
- Precision of painting. What the user creates on our application must be what the users actually did and expect
- Performance of the application. We are aiming for the application to be able to run at a refresh rate of 60 Hz or more.
Milestones
Weeks 4 - 6 Basic Elements of the applications- Be able to track user’s hand gestures and have a cursor follow the focus point
- Display a basic hologram in space
- Allow user to draw on hologram using simple hand gestures
- Change hologram position and orientation within space using gaze and hand movement
* Start when basic elements are mostly finished
- Establish what data to transfer between multiple instances of application
- Setup server for communication between Hololens devices (decide between lab machine server or AWS server)
- Implement collaborative painting on hologram (changes made to hologram appear on all other instances of the hologram)
- Advanced menu for selection of holograms and other painting related functionalities
- Change color and size of painting tool
- Eraser/Clear all for deleting drawn items
- Advanced brush cursor (show color and size of current brush)
- Debug application
- Polish features and user experience
- Planning for video and demo
Responsibilities
- Borui Andy Li   Painting and UI design
- Panji Wisesa     Networking and Painting
- Radu Cracut     Painting and UI design
- Thomas Yi        Networking and Painting
Materials and outside help needed
We need access to a server to facilitate communication between Hololens devices. And we also may need assistance with networking portion of the application, though this should be resolvable through participating in the Hololens App Development Forum.Budget
- UI Assets $250
- UI Sounds $150
- Background Music $50
- Unity Store Assets $300
Risks and how risks will be addressed
- Latency between devices might negatively affect user experience. Optimize network code, use local machine as server as backup if connection over third party server is too unresponsive for normal use.