The aim of this project is to create an educational AR (Augmented Reality) mobile game for the Multimedia Interactive Systems university course. The game is to contain issues from a selected field of computer science, computer graphics was chosen. The task was completed by a team of three people during the first semester of master's studies. Each team member had to create a separate mini-game based on different issue of computer graphics. The final version contains 3 mini-games:
RGBMixer- Michał KuprianowiczLattice Deform- Jakub WierzbaBézier Curves- Krzysztof Pisarski
The aim of this mini-game is to combine fun gameplay with understanding how mixing RGB colors work. To start playing 4 vumarks (1-4) are needed. The game randomly selects 4 colors (except black) and sets them as starting colors. They can be seen appearing on vumarks when camera tracking works correctly. Each mark shows:
- its color and hex representation
- number of how many times it is used in mixing
+and-signs
The top part of the screen has a simple UI containing:
- exit to the main menu button
currentrepresenting color created from mixingstarting colors. At the beginning of the level, it is set to whitetargetis a color that the player has to create usingstarting colors. It is randomly chosen from starting colors and mixing them 5 - 9 timessimilaritywhich represents how closecurrentis totarget. The value is calculated by the distance of 2 colors in an RGB cube which is similar to the human eye comparing 2 colors.next levelbutton after completing the levelresetbutton at the bottom of the screen to reset the whole level and start again
To complete a level it is needed to create current color with at least 96% similarity to target. After this ability to go to the next level is given. Then new colors are chosen and the game repeats itself.
If some issues happen with vumarks tracking it is recommended to cover the phone camera for 3 seconds to make it lose tracking for all vumarks.
This minigame is supposed to teach the user about lattice deform, and how it deforms the mesh. For simplicity it uses armature deform, which imatated lattice deform.
The interactive part of the UI consists of only two simple buttons:
Wróć- returns to the main menuNowe zadanie- generates a new task (One of 4 models with new random offsets from vumarks)
The aim of the player is to restore the mesh's shape using vumarks. Each vumark had random offset cotnrolling the lattice point, and height of it can be controller using the vumark rotation.
If shape is close enough to resemble the original shape (with certain margin error), the object shape is restored, and the challenge is finished. Score is shown, and dissapears after a moment. After that the the model is glued to the single vumark and player can see the model in detail.
In this minigame, the player is supposed to move four vumarks to closely match a reference Bézier curve. When the marks are moved within some margin of error of their corresponding control points of the reference curve, the task is succesfully completed.
The interactive part of the UI consists of only two simple buttons:
Wróć- returns to the main menuNowe zadanie- generates a new task (new Bézier curve that the player will have to match)
Apart from them, there are other UI features related to the curves:
- Indices of the curve's control points, displayed above each vumark (1, 2, 3 and 4)
- Thin green lines, connecting consecutive control points
- Blue Bézier curve, controlled by the position of vumarks - the player's curve
- Yellow Bézier curve, displayed in the middle position between all the vumarks - the reference curve
The task of the player is to move the vumarks in order to make the player's curve (blue) closely match the reference curve (yellow). When the vumarks' positions are within a margin of error of the reference curve's control points, the task is successfully completed: both curves are animated and a congratulations text as well as score for completing the task appear on the screen. The score is also saved to the high scores list if it is greater than the previous high score for this particular curve. The player can use the new task button to move to a next task after completing the current one, or to skip the current task (without saving the score) if it was not yet completed.
Each new curve is generated by randomly choosing the control points' positions within some range, while ensuring no two points are being placed too close to each other. Moreover, if the new curve too closely matches the previous one (i.e. if the task would be immediately completed), a new curve is also generated. While the curves are random, the random seed is set to a constant value when starting the Bézier Curves minigame (so the n-th reference curve is always the same), in order to allow a fair comparison of scores and a sensible high score system.
- Unity 2022.3.18f1
- Vuforia 10.22
- Vumarks 1-4