A Reminder is an AR sticky notes application for iOS.
You place notes on objects in a house or office and can share those notes with other people. Objects can display a history of past notes that have been placed on it. You can set notes to appear repeteadly on any desired schedule. Set up chores, tasks, or reminders with your roomates, family, or just yourself. Each note displays the person who placed it, their name, and a specific color only associated with their notes. Once you have completed that task, just swipe on your phone and it will dissapear.
Sticky notes will be associated with specific objects. The user will also be able to mark certain spaces as collaborative by listing users who can add or view notes in that area. All notes will be typed via keyboard and objects will have a history for all notes that have been attached to it. The user can choose weather not to display the history of an object. The notes will be stored into a database so that several users can access the same notes. In a collaborative space, each user will choose different colors so that different authors are clearly visible. When a user has completed the task, they simply swipe to remove it from their screen.
AR is an excellent platform for virtual sticky notes as physical sticky notes can be lost or unnoticed. Furthermore, virtual sticky notes can also have a history associated with it which is helpful for tasks that are performed at certain time intervals (i.e cleaning your fridge every 3 months). Not many people will pay extra for sticky notes but most people have a smartphone so now all they have to do is click an object and then set a note!
There are somewhat similar applications on the app store currently, one example being Stiktu; an AR application that allows users to virtually graifiti locations.
1. Click to open a note.
2.Type your note.
3.Swipe to close a note.
Initially, A Reminder will be developed with Apple ARkit for AR compatible iOS. There might also be APIs that deal with collaborative locations that will be added. There will be a cloud database to store notes and who made them. There will need to be some way to 'tag' items, perhaps by location or with QR codes.
I will be looking at the following:
I will be the only one on the team and in charge of all aspects of the project. My schedule is:
1. Make the user able to place a box with AR.
2. Make the user able to show that box to nearby users.
3. Make the user be able to see boxes from players who are not nearby.
4. Make the user able to type into the box or delete it.
5. Implement a history to each item.
6. Add any additional QOL features.
I intend to make this application usable by all ages and backgrounds by making it intuitive and simple with UI.
The final project is able to:
1. Allow the user to create a reminder with tap gestures.
2. Allow the user to delete a reminder with swipe gestures.
3. Able to recognize ImageTargets.
4. Allow the user to change the color of notes.
5. Allow the user to change their name within the app.
I used Unity and Vuforia to create the application. Vuforia is a package that allows the application to recognize things called ImageTargets. Vuforia comes with a handful of built in ImageTargets, which I have incorprorate a script into so when the camera on your phone sees an ImageTarget, it recognizes it. For now, the four ImageTargets that are provided have been hard coded into the program. I have added a script that allows you to dynamically spawn a sticky note prefab when an ImageTarget is found but I stuck to hardcoding the ImageTargets for now for simplicity. For future releases, the script can be implement with additional databases so you can have more ImageTargets and can customize them.
When a tap gesture is registered along with hovering over an ImageTarget, A textinput field appears. Here, the user is able to type in their reminder. Just clicking on the field produces the mobile keyboard. When the user is done typing and presses 'Done' they receive audio feedback that a note has been created and a note spawns ontop of the ImageTarget. What is happening behind the scenes is that the Note gameObject is being set to active, and the text within it is set to what the user entered.
To delete, the user must simply point at the object and swipe across it. The gesture interaction script shoots a ray when a user taps or swipes and returns the name of the object it touches. When deleteing, a ray is shot at the note and depending on the name of the note, which is based on its image target, the corresponding note will delete.
At the top left corner of the application is a settings button. Upon clicking it, two fields and a button appear. Here, the user is able to set their name or choose a color. Once the user clicks "Done" a script activates that searches for all active notes in the scene and changes the name (which is found by tagging the header on creation) and color. The script also ensures that all future notes follow the prefrences set by the user.
In the future, the app has many ways to expand. The first would be the use of ImageTargets, as mentioned earlier there is a script in the project that allows you to dynamically spawn notes. If you create a huge database of custom ImageTargets, you can include the database in the application and then allow yourself to have more than 4 notes at a time. Other ideas might be to have multiple notes to one ImageTarget. I wanted to incorporate a history to each note as well, something I didn't have time for in this build.
I can also add more customization options, such as changing font or size of notes. Maybe even make it so you can edit already created notes.
I also really wanted to make this a collaborative application which can be implemented using an online database or google sheets.
Fonts from google
Used the following videos for saving/loading data:
Original idea based heavily on ARText
How to download:
Open the project in Unity. Build and run as an iOS application. When Xcode opens, set a unique bundle identifier and enable automatic manage signing. Make sure your phone is selected in the top left corner and press play. The application will launch by itself.