Piano simulation in Virtual Reality with Passthrough API
September 28, 2021
Piano simulation in Virtual Reality with Passthrough API

Project: Piano simulation on the Oculus Quest 2 The process of learning to play the piano can be quite monotonous and progress is not always clearly visible. This can lead to the student abandoning further training or not putting in enough effort to learn a new skill. This is especially true for children and adolescents. In order to make the process of learning to play the piano more fun, we decided to use virtual reality technology. With the help of its capabilities, the learning process can be more colorful, exciting and interactive. In order to keep the tactile sensations and sounds from a real piano, we used the PassThrough API. With its help, you can overlay the virtual keyboard on the real one and adjust the number and size of keys. Thus, we are trying to combine the advantages of the virtual and real worlds in order to get a new learning experience. The application development process continues. Follow our news, there will be many fun and exciting things. Technology stack: Unity SDK, Oculus MRTK, Oculus Integration. Devices: Oculus Quest 2.

Creating a standalone application with computer vision base on Barracuda and TF model
September 23, 2021
Creating a standalone application with computer vision base on Barracuda and TF model

During the COVID-19 pandemic, many people lost the opportunity to train in the gym with a trainer. Lack of coaching support can lead to improper exercise performing, which in turn can lead to injury. But thanks to modern technology, it has become possible to train correctly: you view a recording of an exercise with a trainer and repeat it in real time. The computer vision base on Barracuda and TF model technology compares your movements and displays information on how well you perform the exercise. Technology stack: Unity SDK, Barracuda, TF. Devices: Windows 10, MacOS.

Scheme of the engine with the HoloLens 2
September 17, 2021
Scheme of the engine with the HoloLens 2

Project: Scheme of the engine with the HoloLens 2 Working on the engine scheme as a part of the education apps for engineers in industrial companies. Technology stack: Unity SDK, MRTK Devices: HoloLens 2

How to check WiFi and internet connection in Unity application on Oculus Quest with native Java methods
August 19, 2021
How to check Wi-Fi and internet connection in Unity application on Oculus Quest with native Java methods

Sometimes we get requests for using native java methods from Unity code in the Oculus Application. Below, we describe one of the ways we can check if Wi-Fi and internet connection are enabled on the Oculus headset from the Unity Engine code part. In this sample application, we check if Wi-Fi is switched on or off on the Oculus app and if we have an internet connection to this Wi-Fi. At first, we need to call the native java class method using this code to call Wi-Fi availability: /// /// Send request to JavaClass to check if wifi is enabled on oculus /// /// private bool DeviceWiFiAndroidRequest () { var isWifiEnabled = false; try { // An activity provides the window where the app draws its UI. // Typically, one activity in an app is specified as the main activity, which is the first screen to appear when the user launches the app. // Get current activity in unity project from java classes. // AndroidJavaClass: Construct an AndroidJavaClass from the class name. // GetStatic: Get the value of a static field in an object type. using (var activity = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"). GetStatic ("currentActivity")) { // Method "getSystemService": Gets the name of the system-level service that is represented by the specified class. // As the parameter arguments, we pass the name of the package with handle "getSystemService". // The class of the returned object varies by the requested name. // Get "WifiManager" for management of Wi-Fi connectivity. using (var wifiManager = activity.Call ("getSystemService", "wifi")) { // Call: Calls a Java method on an object. Call, T – return type // Call method "isWifiEnabled". Return whether Wi-Fi is enabled or disabled. Returns bool value. isWifiEnabled = wifiManager.Call ("isWifiEnabled"); } } } catch (Exception e) { Debug.LogError ("Android request exception: " + e.Message); } return isWifiEnabled; } After that, we need to check if we have an internet connection on connected Wi-Fi. Also, we need to call the native java class method. /// /// Request to JavaClass to check if internet connection is reachable /// /// private bool NetworkConnectionAndroidRequest () { var isNetworkEnabled = false; try { using (var activity = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"). GetStatic ("currentActivity")) { // Get "ConnectivityManager" for handling management of network connections. using (var connectivityManager = activity.Call ("getSystemService", "connectivity")) { // Call method "getActiveNetworkInfo" that returns details about the currently active default data network. // Call method "isConnected" that indicates if network connectivity exists. Returns bool value. isNetworkEnabled = connectivityManager.Call ("getActiveNetworkInfo"). Call ("isConnected"); } } } catch (Exception e) { Debug.LogError ("Android request exception: " + e.Message); } return isNetworkEnabled; } After this, we have to use a coroutine to check these two parameters. We check each for 2 seconds. /// /// Check if the application is connected to Wi-Fi in coroutine /// /// private IEnumerator CheckDeviceWifiConnection () { yield return new WaitForSecondsRealtime (2f); while (true) { yield return new WaitForSecondsRealtime (checkDelay); wifiConnection = DeviceWiFiAndroidRequest (); wifiMessage.text = wifiConnection ? "Wifi On" : "Wifi Off"; } } /// /// Check if the application is connected to Wi-Fi in coroutine /// /// private IEnumerator CheckNetworkConnection () { yield return new WaitForSecondsRealtime (2f); while (true) { yield return new WaitForSecondsRealtime (checkDelay); internetConnection = NetworkConnectionAndroidRequest (); internetMessage.text = internetConnection ? "Internet reachable" : "Internet not reachable"; } } Below, you can see the full script for checking internet connection and Wi-Fi availability on the Oculus Quest 2 from Unity code using native java methods.

Streaming high-level detailed graphics in web browser with Unity WebGL
August 19, 2021
Qualium Systems Devlog | Streaming high-level detailed graphics in web browser with Unity WebGL

Feature: High-level detailed graphics and real-time lightings in any web browser. Using streaming from the webserver to the client browser and reading input from the device. All high-loaded processes compute on the web server. As a result, we receive an incredible graphic level that we can use in the promo application. Technology stack: Unity SDK, The High Definition Render Pipeline (HDRP), WebRTC, NodeJS. Devices: Web browsers (iOS, Android, Windows, macOS, Linux).

Face tracking on PC with Unity SDK and UltraFaceBarracuda
August 16, 2021
Face tracking on PC with Unity SDK and UltraFaceBarracuda

Feature: Face tracking on PC Depending on the face position, the picture that person is looking at moves. As a result of this the effect of a hologram is created. An interesting solution for marketing purposes with the ability to track people’s actions and test various marketing activities. Technology stack: Unity SDK, UltraFaceBarracuda. Devices: PC (Windows, Mac OS, Linux)

Oculus release notes_our thoughts about two interesting features which are available in v30-v31 of Oculus Quest
August 13, 2021
Oculus release notes: our thoughts about two interesting features which are available in v30-v31 of Oculus Quest

Oculus updated release notes on version 30.0 and 31.0 for Oculus Quest on 15 June and 20 July respectively. We decided to focus on two points that, in our opinion, are important and our Unity Tech Lead (AR/VR/MR Team) Alex V. commented on them. Notes on version 30.0 Information from release notes: You can now multitask with multiple system-level 2D apps side by side in Oculus Home on Quest 2 and Quest. Supported apps include: Explore, Store, Browser, Events, Oculus TV, Oculus Move, Scoreboards, and more. Our thoughts: This update is very interesting and now the main question is if Oculus Quest will make this feature available for all 2D applications or not. Our video: To demonstrate this new feature, we recorded a short video. Notes on version 31.0 Information from release notes: We’ve created multiplayer APIs for developers to use with their apps. For any app that opts in for this feature, you’ll be able to invite friends or people you’ve recently played with to your game sessions directly from the Quest Universal menu. Our thoughts: This may be a very powerful update and this step may change the standard of the matchmaking multiplayer game in the Oculus environment. We’ll try to use this update in our in-home project. Additional link: Find out more in the article Improve Concurrency in Your Multiplayer Games with Travel Together and Public Parties by Oculus for developers.

Passthrough API on Oculus Quest 2
August 12, 2021
Passthrough API on Oculus Quest 2. Our first attempts with mixed reality

Feature: Passthrough API on Oculus Quest 2 Oculus’ Passthrough API enables mixed reality experiences that combine real and virtual worlds into one. Immediately after an update became available, we started testing the API. It is an exciting promise by Oculus and has a lot of prospective. We are already brainstorming the ideas of using Passthrough API to solve our clients’ business issues. Technology stack: Unity SDK, Oculus SDK 31, Passthrough API Devices: Oculus Quest 2

Added animated atom structure to VR Chemistry app with core and electrons, motion in orbit
August 9, 2021
VR Chemistry App | Added animated atom’s structure

Project: VR Chemistry App. A VR application for safe teaching chemistry to children. Added animated atom structure to VR Chemistry app with core and electrons, motion in orbit. Technology stack: UnitySDK, Oculus SDK and MRTK-OculusQuest. Devices: Oculus Quest 1/2, PC VR.