The goal of the project was to build a VR product that delivers a realistic game-like experience to the players. This app allows players to keep training without the necessity of leaving their homes, in particular training the reaction of hitting out the ball in different positions.
The purpose of this app is to train the tennis player’s reaction, and to achieve this the player’s brain has to believe in the reality of the training. Thus, the biggest challenge of this project was to simulate a realistic environment and ball/racket physics (including direction of the ball flight, collision of the ball and the racket, ball angles, etc.)
After the initial analysis phase we’ve got an understanding that there
are two main goals to achieve to make this project successful: a
photorealistic environment and realistic physics.
The first one is more straightforward: working in close collaboration with a 3D artist, creating photorealistic textures and keeping in mind restrictions of our target platform Oculus Quest 1/2 delivers the expected result.
Platform choice: among all benefits of Oculus Quest platform the most valuable is that it doesn’t need a cable – a really important thing when you are playing tennis.
The second one was trickier. Our experiments with the prebuilt Unity physics engine using Nvidia Physx System Software revealed that the outcome it gives is rather arcade than realistic. After in-depth study of other physics engines we still were unhappy with the result and decided to create a custom one that fits our purposes.
That means that we have to calculate many parameters just with the help of mathematical formulas and understanding of physics. To strengthen our team we invited a university physics lecturer for this project who helped us to correctly reflect in our engine all parameters and variables including side wind, racket strings tension, rolling of the ball after the collision and many others.
After three months of development and multiple iterations we managed to achieve the realistic physics engine for tennis training simulation.
- Unity SDK
- Oculus platform
- C Sharp
- Unity Job System
- Burst Compiler