*This project is a work in progress, so I will update this page as the project progresses.

This project is a new experience for me, in that it is not a game, but a software tool. This is a proof-of-concept design that allows digital forensic analysts in the police to view the data they have recovered from suspects in an interactive VR environment.
Typically, analysts use timeline software to view digital evidence they have collected. However, the client for this project believes that creating a VR version of the digital forensic software would allow better understanding of the data and interaction with it.
Working in VR
This was my first project working with VR in Unreal Engine 5 and it has been a challenge, getting used to a new perspective and learning new ways for the user to interact with the environment. While most of the coding is the same as a non-VR game, there are some parts which need new solutions, for example interactions where the player would usually use a mouse. The input needs to come from another method. The VR controllers are able to act as pointers and interact with widgets, using the controller’s forward vector. By revising the code to emulate a mouse click when the assigned button is pressed, the VR controllers can act as a mouse in a 3D space.
Importing external data
This project required the use of external data to be presented in a 3D space. The first bits of data I imported were images and their associated metadata. The images themselves were imported using drag-and-drop, however the metadata required more prep, as it was stored in a CSV file, so I created a datasheet in Unreal and assigned the data fields before importing. Once the data was imported, I had access to all the images and metadata in Blueprint and could use them to output to 3D objects.
Use of C++
Blueprint versatility is extremely impressive, however it does have blind spots. For this project, it was the importing of text files, more specifically emails in text form. I used C++ to create a function that is able to search the files on my computer based on an input file path and extract the text from a TXT file.

I then created a storage folder for a large number of email files and pulled the text data without the need to manually go through and copy each one into a string in the project.
Filtering Data

Having the data in the project was not enough. I then needed to get the right data out of a larger dataset. The timeline in the project provided the user with a way to filter by date, so I needed the software to determine which set of data needed to be shown.
This process was achieved using a for-loop, checking the two dates against each other, but first I needed to format the timeline date so it was identical to the one used in the database, otherwise it would cause conflicts. I made a function to break down any date into its individual values – months, days, hours, etc – to streamline this process.
Displaying Data

I displayed the data using 3D datasheets that could display an image and text on the front with the ability to see metadata beside it, which can be accessed by interacting with a button on the datasheet.