During my time at Queen's University, I was enrolled in a course in another University, called Athabasca University. The reason for my enrollment was to because I had failed a course. Therefore, to compensate for this, one solution was to enroll in a program while simultaneosly to my master's project during the spring and summer. The name of the course that I was enrolled in is "Human Computer Interaction". For more information, click here.
When I was taking this course, we had to do a final project for it. Initially, I wanted to make a mixed reality (MR) application in Unity that takes advantage of Nintendo Switch's Joy-Con controllers. These controllers were a perfect combination between XR controllers and traditional controllers. Unfortunately, capabilities of the Joy-Cons outside of their purposed console were very thin. Even open-source tools did not provide much help. Thus, I had to revert to a more traditional game controller, specifically the DualShock 4.
Basically, the application is about changing the propeties of a virtual cube in an MR environment. The most accessible way to create an MR scene was to have a phone be used as a headset. To make the experience complete, however, I also had to use a special type of headset, one that can be used for turning smartphone into one. The additional headset component is displayed and described in the slideshow.
The user can change the cube's:
Another technology that was used to make this small application is called "Raycasting". In Unity, a raycast is a straight, invisible line that starts from a certain point (In this project's case, it would be the very middle of the user's view.) and continues either infinity or to a certain distance until it hits an entity. To demonstrate that raycasting works, there is a red circle in the center of the user's view. If the raycasting line detects something that the user can interact with, the red circle will turn green.
This is the color canvas. It has 4 sliders, 12 buttons for preset colors, and a square to show the current color. The coloring scheme follows the RGBA coloring rule. RGBA stands for "Red-Green-Blue-Alpha".
The sliders give the user more flexibility and precision on what color and opacity that he/she might like to pick. Each of the sliders works as follows:
Another option to select colors is to use the preset colors provided. In the very middle of the canvas, there is the "Select Preset" button. At first, the colored buttons around it would be hidden. When the user presses it (via raycasting), the colored buttons will appear. When a colored button is clicked on, its color will be the selected color of the cube. Also, the first three sliders will change their values to match that for the selected color, and the value of the "Alpha" slider will be set to 100%.
As you can see in the image, the buttons are displayed like a prefect circle around the "Select Preset" button. Programatically, this is done using a "for" loop. The number of iterations of the loop equals the total number of colors provided. In this case, it is 12. The procedure of each loop is as follows:
This is the geometry canvas (Or Transform canvas). It has the following components (or UI elements):
The dropdown list provides the options of what geometrical property of the cube would the user want to modify. The options are:
The three tick boxes tell in which axis or axes would the user want to modify the germetrical property of the cube. Each tick box correspond to a specific axis. They are:
The cyan "+" button and red "-" button are used to respectively increase or decrease the values of the selected geometrical property of the cube. When pressing either button, the changes are based on the selected property in the dropbox, the selected axes in the tick boxes, and the value of the sensitivity slider. Mentioned slider is used for controlling the quantity/amount of change per press of either button.
The "Reset" button is for resetting the geometrical properties of the cube back to their original values.
Lastly, the panel in the middle shows the geomterical values of the cube. The panel updates with the changes that happen onto the cube. The panel is presented like a table, where the rows represent the geometrical properties and the columns represent the axes.
95%
90%
85%
85%
80%
80%
95%
95%
90%
75%
85%
70%
85%
80%
80%
70%
85%
80%
80%
80%
Gameplay Programming
Gameplay Programming90%
Tools Programming
Tools Programming85%
UI Programming
UI Programming85%
Physics Programming
Physics Programming70%
AI Programming
AI Programming75%
Data Saving and Encryption
Data Saving and Encryption70%
Path Finding
Path Finding65%
95%
80%
Communication Skills
Communication Skills85%
3D Math Skills
3D Math Skills80%
Problem-Solving Skills
Problem-Solving Skills80%
Character Drawing
Character Drawing60%