Summary of Achievements

Requirement Targets

Requirements Priority State Contributors
Mapping 2D images into 3D object Must have César, Diana
Hand gesture recognition to view next clothing item Must have César, Thom
The ability to pull any clothing image from the YNAP clothing APIs based on Product ID. Must have Diana, Thom
Live preference updating in app Should have Thom
Intuitive structure and flow of the application to facilitate user navigation. Should have Thom, César
The ability to view all liked outfits in a list after adding them to your preferences. Should have Thom
Integration of voice commands as an additional navigation Could have Thom
Integrating haptics using the GloveOne to allow to users to feel the texture of the products. Would like to have x N/A

Challenges

One of the main challenges that we faced was to project 2D images into custom 3D models in order to achieve a 3D effect. We spent a significant amount of time building generic models for 'Tops' and 'Bottoms' with Blender. Unfortunately the JPEG images did not render on the models in the expected manner. Firstly most of the items have different contours and we were not able to map all of them onto the same two models. Also due to the fact that the 3D models were having hundreds of vectors the mapping was not possible and we had to relinquish the models for a simpler solution. Thus, we solved this problem by overlaying the newly generated transparent texture on a 3D cylinder-shaped object.

Another challenge appeared while implementing the shader. Due to the fact that all the images were .jpeg we needed to make the white background transparent in order to map them on the models. Thus, in the first stages, the shader also partially removed pixels inside the clothing images that had the same white tone as the background. Fortunately we were able to improve the shader in order to remove all the white space from the background without affecting the clothes.

Incomplete Features and Bugs

During the development stage our team encountered a number of bugs. The "ray casting" technique used for gaze recognition produced bugs when used for selecting items. The gaze fell on two pieces of clothing at once, so the tap motion triggered the OnSelect function on multiple items. This problem was later overcome by defining the OnSelect function to activate only on the first collision of a gaze, as opposed to all items intersecting a gaze. Another bug resulted from the API calling. It appeared when an outfit was added to Favourites. The app would retrieve the similar outfits from the API but sometimes, unexpectedly, the API would return more items than we expected, resulting in NullPointerExceptions warning messages.

Work Package Contribution

Work Package Category Contributors
Client Meeting: Demo of app Client Liaison Thom, Diana
Client Emails Client Liaison Cesar
Bi-Weekly Reports Report Writing All
Slide Preparation Presentations All
Testing: UAT, Unit, Integration Testing Thom
Website Editing Final Deliverables All
Poster Editing Final Deliverables Cesar
Video Editing Final Deliverables Cesar

Critical Evaluation of the Project

Architecture Design

In order to evaluate our architecture design we had to analyze the current design and how well it satisfied our client's requirements. This evaluation was performed three times during our app development: firstly after creating the initial design and implementing the basic functions, secondly during the last stages of implementation and finally after the app was fully developed and presented to our client for feedback. By performing this evaluation multiple times our design improved considerably and the result was a more intuitive and easy to use app.

UI Design and UX

As this is an augmented reality application designed to be used with the Microsoft HoloLens both User Experience Design and User Interface Design were really important for our projects.

In order to make sure that our strategy is the best we analyzed competitive projects as well as customers preferences and we developed a plan that followed all our criteria. Thus, we improved the usability of our app by adding both hand gestures and voice commands that provide a more pleasurable interaction and allow our users to choose their favourite method of creating outfits.

Furthermore, we designed our User Interface in order to be intuitive, guiding, enjoyable and attractive. At this stage we focused on our clients needs and we added animation to our buttons: one for liking an outfit and the other one for seeing all the liked outfits. In order to create the User Interface we also did Design Research on other virtual and augmented reality apps and analyzed our User Scenarios as they provided a more realistic view.

Evaluation of Several Parameters

Before doing our final evaluation we also had a mid-term project evaluation that was to assess our achievements half-way through the project. We did this by following our expected objectives and outcomes.

Our final evaluation had 5 main points: functionality, stability, efficiency, compatibility, maintainability. Firstly we self evaluated the functionality of our app by going through our requirements and making sure that every function is currently working in the final version. Thus, we checked the implementation of voice commands, hand gestures, navigation along with the two buttons that are created for liking outfits, saving them in favourites and being able to see them at a later point in time.

Moreover, we improved our evaluation by using a focus group made by computer science students and we collected their opinions regarding of their first time interaction with our app. This provided valuable information not only about functionality but also about the stability and efficiency of the app. Our app's efficiency was also tested by our clients in order to make sure that their vision and expectations are met.

Since our app is created to be used with the Microsoft HoloLens, in our compatibility criteria we focused mostly on the possibility of merging our app with other apps. For this we communicated with our clients along with another team which developed a chatbot and ensured the possibility of combining the two projects in the near future.

The last point was maintainability and for this one we focused on the code and made sure that it is well written and explained if future developers want to modify it. Also the application is easy to maintain as the update of outfits is made automatically and it is connected to the main clothing website of the company.

Evaluation of Testing

Testing was a critical part during and at the end of our project. Thus we performed three types of testing: Unit Testing, Integration Testing and User Acceptance Testing using the black-box method. The first two types are automated testing methods which provided feedback on the code and they proved to be very useful for debugging. The final method of testing provided feedback from users that had no previous knowledge about the app before they used it. In terms of testing evaluation, all the feedback was useful, significantly changes were made and the overall app quality was improved.

Project Management

We started by creating an initial plan that included deliverables and milestones. Our schedule was designed in such a complex manner that we took all aspects into consideration such as resources (time), design period, implementation period, testing and documentation. We broke each milestone in subtasks that were easy to split between the team members. Thus, every week each team member fulfilled their tasks and we were able to complete our milestones in time. Moreover, we planned our schedule in such a way that between each milestone we had a short period of time used as a safety method in case something needed to be modified or improved.

We had at least one meeting every week on which we discussed our progress and future steps. We also constantly communicated through messages and emails and kept everyone up to date.


Future Work

Even though the time was limited, we believe that our project can still be developed further by succeeding to map 2D images on 3D models and adding a texture to the materials. At that stage rotation could be implemented and it would provide a better visualization of clothes to users compared with the current stage in which only front view is possible. Moreover, additional clothing items could be added such as coats, jackets, dresses and even accessories.