Arvutiteaduse instituut
Courses.cs.ut.ee Arvutiteaduse instituut Tartu Ülikool
  1. Kursused
  2. 2025/26 kevad
  3. Virtuaalreaalsus (LTAT.06.019)
EN
Logi sisse

Virtuaalreaalsus 2025/26 kevad

  • Main
  • Schedule
  • Labs
  • Projects
  • Points
  • Links

Labs structure

  • Labs take place in the classroom. Bring your VR device with you.
  • Check Discord for prerequisites.

Submission

  • Tasks need to be submitted to Discord in a dedicated channel. Current submission channel is marked with ⏰.
  • If explicitly asked to submit in Courses, use the following form.

Unless otherwise specified, an informative screenshot or two of your Unreal Engine application is required for your task submission. Display the viewport and the new features that you have implemented. Meaningful parts of the related blueprints are welcome as well. Add short and clear explanations of your implementations in the comments. Comment also on what you struggled with.

Lahenduste esitamiseks peate olema sisse loginud ja kursusele registreerunud.

Lab 1 (11.02) - Introduction. Experiences video editing. (click to open)

Lab slides

Task for the week: (submit to Discord, deadline 17.02)

Make an analysis video that meets the following criteria (which will be assessed in class):

  • Describes 5 interesting observations and marks at least 3 emotions (for example fear, anger, joy, sadness, disgust, surprise) about the VR experiences that you tried. Do this using voiceover.
  • Uses footage captured from the Quest to illustrate those points.
  • The video should be between 3 and 7 minutes long.
  • The video should foremost be informational so make it adequate but don’t spend too much time editing it.
  • While and in between trying the different experiences, write down the parts that you want to bring up in the video.
  • Add the link to your submission to Discord.
  • Be ready for the videos to be shown and discussed in next week's lab session.

💎 Tip: Listen with speakers (if possible) and look through your video before submitting to make sure there are no unexpected issues, like the game sound too loud compared to your voice, etc.


Lab 2 (18.02) - Experiences videos reviews and discussion. (click to open)

Slides

Task for the week: (submit to Discord, deadline 24.02)

VR project thinking - prepare 3 ideas:

  • From today’s experiences (yours and others), put together 3 ideas for your possible project candidates. Each idea has one sentence about main goal/point of the project.
  • Note and write down 2 emotions that you want to have in your project, and 2 emotions that you want to avoid in your project.
  • Include 1 picture per idea that would illustrate something specific you want to achieve (a scene, colors, character, situation, fight moment, art style, item, etc. anything that comes to your mind - but try to be specific about it)
  • Prepare this nice and clear in short writing and post it to Discord on Tuesday before the next class session. A simple Discord post with minimal formatting is good, but if it suits you better, you can make a document or slides. Just consider that it is easy and quick to open, and clear to understand as a whole. Do not spend time yet on making it pretty.

📌 This task is a pre-work for your future task (Project Idea Pitch) and will be also graded later as part of the pitch. The purpose of this task is to make you think about your project ideas sooner, and practice writing them in a short, clear, informative way.


Lab 3 (25.02) - VR setup with Unreal Engine. Ball Shooter. (click to open)

Task for the week, make a screenshot of your ball shooter while it is launching balls: (submit to Discord, deadline 4.03)

Download Tennis Racket: Attach:TennisRacket.zip
Source: https://sketchfab.com/3d-models/tennis-racket-c314dcce06ba488ca624957f579b8196

Steps:

  1. Create a new Unreal Engine 5 project using the VR template.
  2. Import the tennis racket model,
    • adjust its import scale and colliders to work properly.
    • add the tennis racket to the Map, make it movable and apply physics.
    • turn the tennis racket into a blueprint, give it the grab component, ensure it snaps correctly into the hand.
  3. Create a ball blueprint similar to the racket using the Unreal's sphere mesh.
  4. Remove the unnecessary objects from the map and create a Tennis Stadium environment by using the Modeling tools and Cube Grid.
  5. Create a tennis ball shooter machine:
    • Create base and barrel models using the modeling tools.
    • Combine both parts into a single blueprint (having two static mesh components).
    • Add a script that spawns a ball every second and applies an impulse towards a direction defined by the arrow component (add this component to the point where the balls are thrown).
    • Add another script that rotates the barrel continuously using a sine function.
    • Make the ball throwing force and barrel rotation arc configurable and test your shooter machine.
    • Adjust your parameters so you can hit the balls with the racket.
    • Enable continuous collision detection (CCD) for both the racket and the ball to ensure that the hit is always registered.
  6. Create a ground area blueprint for checking where the balls land:
    • Create a static mesh blueprint with a box shape.
    • Set its physics to OverlapAll and turn on the overlap events on both the area and ball actors.
    • Add a custom event to the VRGameMode blueprint that adds a score to the value and prints it out.
    • When the ball touches the ground area call this function in the VRGameMode and destroy the ball.

Lab 4 (04.03) - Unreal Engine practicing - Game mode. (click to open)

Download tennis net texture:

  • CC0 Net texture: https://ambientcg.com/view?id=Net004A

Steps:

  1. Create a new scene for tennis court.
    • Add environmental lighting (sky sphere, dir light, SkyLight) and terrain.
    • Add PlayerStart
    • Add NavMeshBoundsVolume and configure the area to teleport
    • Add net, ball shooter, and racket - configure them to be able to hit the ball.
  2. Create materials
    • Create tennis net material
    • Create landscape material and paint it
    • https://dev.epicgames.com/documentation/en-us/unreal-engine/landscape-paint-mode-in-unreal-engine
  3. Create custom game mode
    • Set up respawn areas for in and out zones
    • Track the points in the game mode
    • When 10 points have reached, the game will end and shooting will stop
  4. Make a widget
    • Create a world-scale widget to show your score
  5. Make a button on the table that restarts the game
  6. Add some juice
    • Add blue particle effect when ball hits the in zone
    • Add red particle effect when ball hits the out zone
    • https://dev.epicgames.com/community/learning/tutorials/b8yy/unreal-engine-unreal-particle-effects-tutorial

Lab 5 (11.03) - Immersion and presence. Table tennis. (click to open)

Table tennis base project template

Task for the week is to finish the lab work we did in the class: (submit to Discord, deadline 17.03)

  • In the class today, we enhanced a table tennis project with sounds and haptics.
  • Questions are welcome in our Discord questions channel!

💎 Tip: Come to class and let's learn hands-on together. There are instructors to help you and also fellow students, who are welcome to give a hand to those who might need it!


Lab 6 (18.03) - Interactions. Door. (click to open)

Door interactions template

Task for the week: (submit both to Discord, deadline 24.03)

  1. Finish the lab work we did in class with the door interaction.
  2. Prepare a project idea pitch (see details in Discord, under dedicated channel).

💎 Tip: Think of the door interactions practice session more broadly, expanding the work we did today in class to the interactibles you will implement in your project. There might or might not be any doors in your project, but there will be interaction!


Lab 7 (25.03) - Project idea pitches. Project team forming.

Here, you presented your project idea pitches and discussed them with others in class.

You have now formed your initial teams and have a rough concept of your project / experience. The goal of the following tasks is to prepare you for the design and prototyping session next week.

For the next session, 1st of April - within your teams:

  1. Create your own communication channel (for example a personal Discord channel) where you can discuss your project.
  2. Schedule and have a meeting where you discuss your project idea and write the summary document of your project idea.
  3. Create a brief experience summary document (about 1 page) that answers the following things:
  • Name of your experience (we will use it to create your personal project pages in courses)
  • Brief description of your experience (2-3 sentences, not too long)
  • One imaginary user story (not too long)
  • Two problems that you need to solve in your experience
  • Short description about what you would like to prototype and what question it will help you to answer.

Submit your summary document to the dedicated Discord channel (only one person in the team has to submit, everyone else has to be assigned in the project registration sheet)

💡 You will find this task description also in Discord, together with one small example!


Lab 8 (01.04) - Prototyping. Paper prototype making in teams and presenting.


Lab 9 (08.04) - Locomotion. Git TBD.


Lab 10 (15.04) - Audio. Project M1 presentations.


Lab 11 (22.04) - Visual design. Blender.


Lab 12 (29.04) - Graphics and performance. Git status and work on the project M2.


Lab 13 (06.05) - Lighting task. Project M2 presentations.


Lab 14 (13.05) - Deploying to Quest.


Lab 15 (20.05) - Work on the project.


Lab 16 (27.05) - Final presentations + playing each other's games in class.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused