# HoloKit Overview

Welcome to the HoloKit User Guide. This guide aims to provide all the information you need to get started with your HoloKit.&#x20;

## HoloKit X

HoloKit X is a Stereoscopic Augmented Reality (StAR) headset for iPhone. It's the most accessible and affordable full-functional StAR device in the world by far in 2022.

## For Creators

If you're a general user of HoloKit X, please go to [About the Product](/about/media-inquiry/fact-sheet/about-the-product) .

If you're a media who want to know more stories behind our products, please go to [Media Inquiry](/about/media-inquiry).


# Concepts


# What's Stereoscopic AR?


# Mixed Reality Spectrum


# OST vs VST


# Why We Design HoloKit X?


# Why iPhone Only?


# Journey of HoloKit X


# HoloKit X

## HoloKit X

* HoloKit X is an open-source headset for creative mixed reality.&#x20;
* HoloKit X is first-of-its-kind stereoscopic optical see-through AR headset for smartphone.&#x20;

### Features

* 🥽 **Ingenious Invention**: We have released an optical see-through stereoscopic MR headset [HoloKit X](https://holokit.io/) in 2022, which is an award-winning premium-quality upgrade from our original periscope-shaped invention [HoloKit 1](https://1.holokit.io/), a cardboard proof of concept released in 2017.
* 📲 **Full AR Functionalities**: Without reinventing the wheel, our open-source, phone-based MR headset maximizes your smartphone's existing AR functionalities, such as [ARKit](https://developer.apple.com/documentation/arkit/arkit_in_ios), [6DOF Spatial Tracking](https://developer.apple.com/documentation/arkit/arworldtrackingconfiguration), [Hand Tracking](https://developer.apple.com/documentation/vision/detecting_hand_poses_with_vision), [Depth and Mesh by LiDAR](https://developer.apple.com/documentation/avfoundation/additional_data_capture/capturing_depth_using_the_lidar_camera), [Spatial Audio](https://developer.apple.com/documentation/arkit/), and [MultipeerConnectivity](https://developer.apple.com/documentation/multipeerconnectivity).
* 💲 **Accessible Immersion**: With a crystal-clear 60-degree FOV optics, experience a rich, immersive mixed reality that stands as a cost-effective alternative to 20-30x pricier options like [HoloLens](https://www.microsoft.com/en-us/hololens/buy) and [Magic Leap](https://www.magicleap.com/buy-now).
* 🎨 **For Creators by Creators**: Tailored for quick and efficient MR creative project execution, especially in multiplayer scenarios, HoloKit is the go-to tool for *MR researchers, educators, and creators*. See more [#MadeWithHolokit works](https://github.com/holoi/awesome-holokit) from our community.
* 🎖 **Award-winning**: Design of HoloKit X won [Red Dot Award 2023, Product Design](https://www.red-dot.org/project/holokit-x-64930) and [Core 77 Design Award 2023 Consumer Technology](https://designawards.core77.com/consumer-technology/122922/HoloKit-X-Accessible-AR-Copresence) and nominated for [Webby Award 2023](https://winners.webbyawards.com/2023/metaverse-immersive-virtual/metaverse-immersive-features/technical-achievement/249481/holokit-x--a-stereoscopic-ar-headset-for-iphone) and [SXSW Innovation Awards 2023](https://eon-media.com/insights/innovation-awards-at-sxsw-part-one/).


# Technologies


# Hand Tracking


# Haptics Feedback


# App-less WebXR Browser


# Apple Exclusive Technology


# Low-Latency 6DOF Spatial Tracking


# Multipeer Connectivity


# Spatial Audio and Audio Spatialization


# Environmental Understanding based on LiDAR


# Stereoscopic Rendering


# Input Methods


# Speech Recognition


# Eye Gazing


# Hand Tracking


# TouchBar Control


# Wireless Game Controller (Optional)

HoloKit supports all wireless game controllers that connects to iPhones.&#x20;

Here are all controllers supported by iPhone officially.&#x20;

## Xbox Controller&#x20;

* Xbox Wireless Controller with Bluetooth (Model 1708)
* Xbox Wireless Controller Series S
* Xbox Wireless Controller Series X
* Xbox Elite Wireless Controller Series 2
* Xbox Adaptive Controller

<figure><img src="/files/2W42CInxSxDyQ2BUFWBm" alt="" width="375"><figcaption></figcaption></figure>

See more on <https://support.apple.com/en-us/HT211232>&#x20;

## PlayStation Controller

* PlayStation DualShock 4 Wireless Controller
* PlayStation 5 DualSense Wireless Controller
* PlayStation 5 DualSense Edge Wireless Controller

<figure><img src="/files/5bDbuV0k6IUkdYBI6VVs" alt="" width="375"><figcaption></figcaption></figure>

See more on <https://support.apple.com/en-us/HT211813>

<br>


# Wireless Keyboard (Optional)

Any bluetooth keyboard that connects to iPhone is supported on HoloKit X.


# Apple Watch (Optional)

We use Apple Watch as Controller for HoloKit X.


# Arduino sensors (Optional)


# Specifications

### Dimension&#x20;

#### HoloKit X (without strap)

Height: 100 mm (3.93 in)\
Width: 133 mm (5.23 in)\
Depth: 140 mm (5.51 in)\
Weight: 215 grams (7.6 oz)

#### Box

Height: 118 mm (4.64 in) \
Width: 167 mm (6.57 in) \
Depth: 167 mm (6.57 in) \
Weight: 355 grams (12.5 oz)

### Features

* Made for iPhone
* Compatible with Apple Watch
* 60 degree ultrawide field of view
* High-standard optics design
* Headset fits over most eyeglasses
* Comfortable ergonomic design with replaceable headband
* 6 degree of freedom spatial tracking based on iOS ARKit
* Environmental understanding based on iPhone LiDAR sensor
* Anti-counterfeit authentication based on NFC chip and blockchain tech

### In The Box

* HoloKit X
* Headband
* Instruction "Use, Health & Safety Guideline For HoloKit X"
* Instruction "Getting Started"<br>


# Compatible iPhones

HoloKit X works primarily with iPhones with LiDAR Scanner&#x20;

* iPhone 15 Pro
* iPhone 15 Pro Max
* iPhone 14 Pro
* iPhone 14 Pro Max
* iPhone 13 Pro
* iPhone 13 Pro Max
* iPhone 12 Pro
* iPhone 12 Pro Max

{% hint style="info" %}
LiDAR scanner will allow you

* Instant AR: allowing for the *instant* placement of *AR* objects in the real world without scanning
* Precise Hand Tracking: 3D *hand* perception in real-time to compute *21* 3D keypoints of a *hand.*&#x20;
  {% endhint %}

Secondary support for all iPhones with OLED screen&#x20;

* iPhone 14
* iPhone 14 Max
* iPhone 13
* iPhone 12
* iPhone 11 Pro Max
* iPhone 11 Pro
* iPhone XS Max
* iPhone XS
* iPhone X

{% hint style="info" %}

* iPhone with OLED screen (all iPhones listed above) will provide enough screen pixel density (\~458 ppi) for you to enjoy high quality Stereoscopic AR experience.&#x20;
* iPhone with LCD screen (such as iPhone 11, XR, SE) does not have enough screen pixel density (326 ppi) to give you very bad user experience.&#x20;
* The form factor of all iPhones older than iPhone X, and 12 mini / 13 mini have too small screen to fit into HoloKit X.&#x20;
  {% endhint %}


# Compatible Audio

HoloKit X is compatible with any audio device that connects to iPhone both wirelessly and wiredly.&#x20;

To enjoy the spatial audio (directionally audio), we recommend Spatial Audio devices from Apple:&#x20;

* AirPods Pro
* AirPods Max
* AirPods (3rd generation)
* Beats Fit Pro


# HoloKit App

Get HoloKit App from App Store.&#x20;

{% embed url="<https://apps.apple.com/us/app/holokit/id6444073276>" %}
Download HoloKit App.
{% endembed %}

HoloKit App composes of 14 demo realities.&#x20;


# Games and Demos


# Dragon Hunting


# Wizard Duel


# Typed Reality


# App-less WebXR Launcher


# How-to Instructions


# FAQs

### What is HoloKit X?&#x20;

HoloKit X is an iPhone accessory designed to bring Stereoscopic AR, and the experiences designed to showcase it, to the world at an affordable price point, with a simple, well-designed, and comfortable form factor. HoloKit X is the only augmented reality accessory in the world to harness the full power of the iPhone, activating the whole camera system and tapping into specific technologies and APIs that many developers have yet to tap into.

HoloKit X offers an immersive-hands free experience, unique in today’s largely handheld/2D AR world, giving users more freedom and ways to interact in space and within their new realities. HoloKit X was designed to be multi-modal and interactive with multiple control inputs at launch, and with more to come in the future – to make experiences hands free if needed but also include physical objects that can be manipulated by a user during a game or within a reality environment.

### What is stereoscopic AR tech?

Stereoscopic augmented reality, which is what the HoloKit X provides, is accomplished with a head-mounted device (usually with some sort of clear goggles/glasses over the eyes) that projects images into the “real world” which allows you to directly see through (optical see-through) from your eyes the AR experience.

### Why HoloKit X is only for iPhone？

iPhone has one of the most powerful bionic chips on the market, it provides substantial power to the “neural engine” and utilizes machine learning to process images and sound, which, given the complexities in rendering 3D imaging in AR spaces. iPhone’s LiDAR and ARKit also provided a strong support for immersive AR experience.

Check out Tech specs for specific iPhone models.

### **What is "Spectator View"?**

HoloKit X provides a “shared experience” which means people wearing a HoloKit X can share augmented reality. If you see and interact with a digital object in front of you, all the HoloKit app users around you will also see that in real-time too from their HoloKit app.&#x20;


# Gallery of Realities


# WebXR Gallery


# For Creators


# For Educators


# For Researchers


# Design New Reality


# Unity SDK


# Overview

HoloKit Unity SDK enables Unity developers to build StAR (Stereoscopic Augmented Reality) apps on HoloKit.

There are two main functionalities provided by HoloKit Unity SDK, which are stereoscopic rendering and hand tracking. Stereoscopic rendering allows the user to see the virtual content in a holographic way, and hand tracking enables the user to interact with the virtual content with their hands.

HoloKit SDK Unity is compatible with ARFoundation, which helps experienced AR developers quickly get started to build StAR apps.

If you have any questions, please visit our [Developers' Channel](https://discord.gg/pWgmM43Kxq) on our Discord sever.


# Prerequisite

* An iPhone supported by HoloKit
  * Reference: <https://holokit.io/x/>
* Unity 2021 LTS
  * We highly recommend you to use this Unity 2021.3.x LTS version to develop any HoloKit project
  * <https://unity.com/releases/2021-lts>
* Xcode 14 on your Mac
  * Make sure that you installed Xcode Command Line Tools
  * Reference: <https://mac.install.guide/commandlinetools/4.html>
* iOS 16 on your iPhone
  * Make sure that you enabled Developer Mode in your iPhone
  * Reference: <https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device>
* An Enrolled Apple developer account
  * Reference: <https://developer.apple.com/programs/enroll/>


# How to Get HoloKit Unity SDK

Please fill out the application form here if you are interested in the SDK.

{% embed url="<https://holokit.io/pages/get-holokit-x-sdk>" %}

The latest SDK can be found here:

{% embed url="<https://github.com/holoi/holokit-unity-sdk>" %}

If you have any questions or problems, please visit our [Developer's Channel](https://discord.gg/pWgmM43Kxq). Your feedback is very appreciated.


# Stereoscopic Rendering

\*For guidance on the latest version, refer to the GitHub page.

Stereoscopic rendering is the core functionality provided by HoloKit SDK. It can transform a screen AR project into a stereo one by using the stereoscopic camera prefab provided by the SDK.

This section is a tutorial on how to implement the sample stereoscopic rendering project. You can directly import this sample by clicking the import button as shown below.

<figure><img src="/files/SXV348KDi1ZUzkOViaJN" alt=""><figcaption><p>Click the import button to import the stereoscopic rendering sample</p></figcaption></figure>

After you import the sample, you can have a look at the prefabs and scripts used in the sample scene.

If you want to build everything from scratch, please follow the rest of the section.

## Initialize HoloKit SDK

There is a script called `HoloKitDriver` which initializes some fundamental functinalities at the beginning of the application life cycle. For any HoloKit project, we first need to drag the `HoloKitDriver` prefab into the scene. We can find the `HoloKitDriver` prefab in `Packages->HoloKit SDK->Assets->Prefabs`.

<figure><img src="/files/o24LqhMe8vEYaFXDSFS2" alt=""><figcaption><p>Drag HoloKitDriver prefab into the scene</p></figcaption></figure>

## Setup HoloKit Camera

We first add `ARSession` and `XROrigin` objects into the scene as a normal ARFoundation project.

<figure><img src="/files/3NE1SM4YQxbAGlQp1pTb" alt=""><figcaption><p>Add ARSession and XROrigin into the scene</p></figcaption></figure>

Then delete the `MainCamera` object under the `XROrigin`, and replace it with a `HoloKitCamera` prefab. You can find the `HoloKitCamera` prefab in `Packages->HoloKit SDK->Assets->Prefabs`.

<figure><img src="/files/MU4Y1mb7SXSYVNlTLD9D" alt=""><figcaption><p>Replace the default MainCamera with HoloKitCamera</p></figcaption></figure>

After replacing, please make sure the `Camera GameObject` field of the `XROrigin` is assigned with the new `HoloKitCamera`.

<figure><img src="/files/RVZoSefwmzsTPR7xTEGD" alt=""><figcaption></figcaption></figure>

## Add The Default HoloKit UI

For a HoloKit application, it can switch between two render modes, which are `Mono` mode and `Stereo` mode. Under `Mono` mode, the app should look exactly like a normal screen AR app. Under `Stereo` mode, two viewports are rendered on the screen and you can insert your iPhone into a HoloKit to experience stereoscopic AR.

<figure><img src="/files/d4B7o2U95Jqn8refgRYn" alt=""><figcaption><p>A screenshot of HoloKit App under Mono mode</p></figcaption></figure>

<figure><img src="/files/PzOwY1Rn07JCvy8Cgvz1" alt=""><figcaption><p>A screenshot of HoloKit App under Stereo mode</p></figcaption></figure>

We need some basic UI to control the switching between two render modes. There is already a default UI canvas in the package which does the job. Go to `Packages->HoloKit SDK->Assets->Prefabs->UI` and find the `HoloKitUICanvas` prefab. Drag the prefab into the scene. Also add an `EventSystem` object into the scene thus we can press the button on the canvas.

<figure><img src="/files/KKOZEd4n1c2vMDKI4OBP" alt=""><figcaption><p>Add HoloKitUICanvas and EventSystem into the scene</p></figcaption></figure>

If you are using Unity New Input System, don't forget to upgrade your `EventSystem` to fit it.

## Set Screen Orientation

Under `Stereo` mode, the screen orientation is locked to be `LandscapeLeft`. Under `Mono` mode, the screen orientation is really up to you. It is exactly like a normal screen AR app. But in this tutorial, let's make things easy and lock the screen orientation to be `LandscapeLeft`.

<figure><img src="/files/YJoPJj4WsS1B3nhY4Whl" alt=""><figcaption><p>Set Screen Orientation to LandscapeLeft in Project Settings</p></figcaption></figure>

## Add a Cube

Believe it or not, you've done everything to setup a basic HoloKit application. The only problem is that there is no object in the scene so you cannot see anything. Let's add a cube into the scene and set its position to (0, 0, 5).

<figure><img src="/files/KkV0rcrBjv0iFeY0NjiK" alt=""><figcaption><p>Add a cube into the scene</p></figcaption></figure>

## Build The Project

Now everything is ready. Build the project and you should see a cube in front of you. Press the upper-right button to switch to `Stereo` mode and insert your iPhone into a HoloKit. Put the HoloKit on and move around, you should see the cube fixed in that position.


# Hand Tracking

The basic input of HoloKit Unity SDK

\*For guidance on the latest version, refer to the GitHub page.

In a HoloKit application, there are several ways to provide input for the user. For example, in MOFA series, we use Apple Watch to provide input. Hand tracking is the fundamental way of input that HoloKit SDK provides with no extra device needed. The hand tracking algorithm can track the positions of 21 landmarks for each hand. With hand tracking, you can implement some basic AR interactions.

<figure><img src="/files/1SeaGd5xOz8BwabDZN9B" alt=""><figcaption><p>The algorithm can track 21 landmarks of the hand</p></figcaption></figure>

Please notice that, in order to use hand tracking algorithm, you must have an iPhone with LiDAR sensor. The iPhone models which support LiDAR sensor are iPhone 12 Pro, iPhone 12 Pro Max, iPhone 13 Pro, iPhone 13 Pro Max, iPhone 14 Pro and iPhone 14 Pro Max. Without a LiDAR enabled iPhone, you can still use the other functionalities of HoloKit SDK, only the hand tracking is disabled.

This section is a tutorial on how to implement the hand tracking sample project. You can directly import this sample project by clicking the import button as shown below.

<figure><img src="/files/OJxsYuDta6RLnaoxPxOw" alt=""><figcaption><p>Click the import button to import the hand tracking sample</p></figcaption></figure>

The rest of this section will demonstrate how to implement the hand tracking sample step by step.

In the last section, we implemented the sterescopic rendering sample. The sterescopic rendering sample is in fact the basic setup of all HoloKit projects. Therefore, we should continue from the last sample scene.

## Setup HoloKit Hand Tracker

To enable hand tracking, we only need to drag the `HoloKitHandTracker` prefab into the scene. You can find the prefab at `Packages->HoloKit SDK->Assets->Prefabs`.

<figure><img src="/files/yYOAL8Ibr1lh948jiCa7" alt=""><figcaption><p>Add HoloKitHandTracker prefab into the scene</p></figcaption></figure>

## Add AROcclusionManager

In order to run the hand tracking algorithm, we need to turn on the LiDAR sensor. In Unity, `AROcclusionManager` is the component to control the LiDAR sensor. Thus, we add `AROcclusionManager` component under the `HoloKitCamera` object.

<figure><img src="/files/EvWCMYrjUDjJC1WG03jV" alt=""><figcaption><p>Add AROcclusionManager to turn on LiDAR sensor</p></figcaption></figure>

You might notice some configurations in the above image. First, in `EnvironmentDepthMode` field, we chose `Fastest`. Running LiDAR sensor is very computationally expensive and would make the iPhone overheat fast.  We chose `Fastest` to save the consumed energy. Second, we disabled `TemporalSmoothing` field. Themporal smoothing can smooth the occlusion edge, but it has no impact on the hand tracking algorithm. Third, we chose `NoOcclusion` in `OcclusionPreferenceMode` field. This is optional, we chose `NoOcclusion` to prevent the landmarks occluded by user's hands.

## Build The Project

Now you are ready to go! Build the project onto your iPhone. Enter the StAR mode and insert your iPhone into a HoloKit. Raise your hand in front of you and you should see 21 landmarks indicating your hand's realtime position.


# Advanced Use of Hand Tracking

Some common use cases

\*For guidance on the latest version, refer to the GitHub page.

In the previous section, we demonstrated how to add the `HoloKitHandTracker` prefab into the scene and successfully tracked user's hands. However, we haven't done any coding yet such as turning hand tracker on and off at runtime and getting the position of a specific landmark position. In this section we will show some common use cases of the `HoloKitHandTracker`. Same as before, you can directly import this sample through the Unity Package Manager.

The rest of this section will be a step by step guide on how to implement the advanced hand tracking sample. We will start on top of the complete version of the basic hand tracking tutorial project.

<figure><img src="/files/CrNKi2wyIhW4FEStX6Hk" alt=""><figcaption><p>This should be the beginning point of this tutorial</p></figcaption></figure>

## Prefab `HoloKitHandTracker` Configuration

We first have a look at the inspector of `HoloKitHandTracker` prefab.

<figure><img src="/files/Nm20Au9llWAfS3LOaEQv" alt=""><figcaption><p>The inspector of <code>HoloKitHandTracker</code> prefab</p></figcaption></figure>

As you can see, there are 3 public properties.

Property `Enabled` indicates whether we want to turn on the hand tracker. If we set `Enabled` to true, the hand tracker will be turned on and trying to detect user's hands at every frame. If we set `Enabled` to false, no hand will be detected. We can dynamically set this property at runtime to save some computational power because the hand tracking algorithm is very computionally expensive.

```csharp
// Turn on the hand tracker at runtime
// Notice that class HoloKitHandTracker is a singleton
HoloKitHandTracker.Instance.Enabled = true;

// Turn off the hand tracker at runtime
HoloKitHandTracker.Instance.Enabled = false;
```

Property `MaxHandCount` indicates the maximum number of hands to be tracked by the algorithm. There are only two options for this property, which is `MaxHandCount.OneHand` and `MaxHandCount.BothHands`. This setting is up to your app's need. When you only need one hand to be detected at a time, you can set this property to `MaxHandCount.OneHand` to save computational power.

```csharp
// We can also set MaxHandCount at runtime
HoloKitHandTracker.Instance.MaxHandCount = MaxHandCount.OneHand;
HoloKitHandTracker.Instance.MaxHandCount = MaxHandCount.BothHands;
```

Property `DebugMode` controls the visibility of detected hands. If we set `DebugMode` to true, when a hand is detected, there are 21 landmarks with different colors indicating the position of each hand joint. However, in a real HoloKit app, we may not want to show those colorful landmarks. We can set `DebugMode` to false to make those landmarks invisible.

```csharp
// We can also set DebugMode at runtime
HoloKitHandTracker.Instance.DebugMode = true;
HoloKitHandTracker.Instance.DebugMode = false;
```

## Get The Position of a Specific Landmark

The most common use case of `HoloKitHandTracker` might be making a game object interacting with the position of a specific hand landmark, such as the point of the index finger.

In this sample project, we will attach a sphere onto the user's index finger. We first add a sphere into the scene and create a new script called `IndexFingerSphere`. We set the size of the sphere to 0.1 and attach the script onto it. The code of the script is shown below. Basically, in every frame, we first check whether there is at least one hand detected. If there is one, we get the first detected hand (there could be two) and set the sphere to the position of its index finger.

```csharp
public class IndexFingerSphere : MonoBehaviour
{
    private HoloKitHandTracker _handTracker;

    private void Start()
    {
        // Get the reference of the hand tracker singleton instance
        _handTracker = HoloKitHandTracker.Instance;
    }

    private void Update()
    {
        // Check whether there is at least one hand detected in the current frame
        if (_handTracker.AvailableHandCount > 0)
        {
            // Get the first detected hand
            HoloKitHand hand = _handTracker.Hands[0];
            // Attach the sphere to the end of the index finger
            transform.position = hand.GetLandmarkPosition(LandmarkType.Index3);
        }
        else
        {
            // There is no hand detected in this frame
            // Move the sphere to the sky so the user cannot see it
            transform.position = new Vector3(0f, 99f, 0f);
        }
    }
}
```

Please notice that, although the hand tracking algorithm can detect user's both hands, it cannot tell the handedness. It doesn't know which hand is left and which hand is right. The index of the list property `HoloKitHandTracker.Hands` only indicates the detection order, where `HoloKitHandTracker.Hands[0]` is the first hand being detected in the frame, and `HoloKitHandTracker.Hands[1]` is the second one.

```csharp
// When there is only one hand detected in the current frame
if (HoloKitHandTracker.Instance.AvailableHandCount == 1) {
    if (HoloKitHandTracker.Instance.Hands[0] != null) {
        // This if statement is true
        // The first hand element has value
    }
    
    if (HoloKitHandTracker.Instance.Hands[1] == null) {
        // This if statement is also true
        // The second hand element is null
    }
}
```

You might have noticed in the current project, there in only one `IndexFingerSphere` object. When two hands are detected, the `IndexFingerSphere` will jump between the two index fingers. Let's change the `IndexFingerSphere` script and add another sphere object to fit this need.

```csharp
public class IndexFingerSphere : MonoBehaviour
{
    // Indicate which hand this sphere is attached to
    // This should be 0 for one sphere and 1 for the other sphere
    public int HandIndex = 0;

    private HoloKitHandTracker _handTracker;

    private void Start()
    {
        // Get the reference of the hand tracker singleton instance
        _handTracker = HoloKitHandTracker.Instance;
    }

    private void Update()
    {
        // Check whether the desired hand is detected in the current frame
        if (_handTracker.AvailableHandCount > HandIndex)
        {
            // Get the desired hand
            HoloKitHand hand = _handTracker.Hands[HandIndex];
            // Attach the sphere to the end of the index finger
            transform.position = hand.GetLandmarkPosition(LandmarkType.Index3);
        }
        else
        {
            // There is no hand detected in this frame
            // Move the sphere to the sky so the user cannot see it
            transform.position = new Vector3(0f, 99f, 0f);
        }
    }
}
```

<figure><img src="/files/WBHnlvo2iNqBNjM1aQ3e" alt=""><figcaption><p>Now we have two <code>IndexFingerSphere</code> objects, one for each hand</p></figcaption></figure>

Now when two hands are detected at the same time, there will be two spheres attached to each index finger respectively.


# Other Useful Tips

\*For guidance on the latest version, refer to the GitHub page.

In this section, we will demonstrate some useful code snippets so that you can reference in your own project.

## Switch Render Mode

In the previous stereoscopic rendering sample, we use the default `HoloKit UI Canvas` prefab to control the render mode switch. You can also switch the render mode with your own code.

<pre class="language-csharp"><code class="lang-csharp"><strong>// Class HoloKitCamera is a singleton
</strong><strong>// Switch to the Stereo render mode
</strong><strong>HoloKitCamera.Instance.RenderMode = HoloKitRenderMode.Stereo;
</strong><strong>
</strong><strong>// Switch to the Mono render mode (the screen AR mode)
</strong><strong>HoloKitCamera.Instance.RenderMode = HoloKitRenderMode.Mono;
</strong></code></pre>

When the render mode is switched, a static event `HoloKitCamera.OnRenderModeChanged` is also invoked to indicate the switching. You can register this event to get notified.

## Center Eye Pose

When you develop a HoloKit app, you may want to get the pose of the user's head. You can get the pose by a single line of code.

```
Transform centerEyePose = HoloKitCamera.Instance.CenterEyePose;
```

Please notice that, under the `Stereo` mode,  the center eye pose indicates the pose of the center point between the user's two eyes. Under the `Mono` mode, the center eye pose indicates the pose of the iPhone's camera.

## Background Video Format

Under the screen AR mode, the camera video image is rendered as the background. We offer an option to enhance the background video format so that you can have a better background video image quality. This option is useful when you want to record some videos using the screen AR mode.

You can easily set the format in the inspector of `HoloKitCamera`.

<figure><img src="/files/3zK5emyVqvqPK1rasEid" alt=""><figcaption><p>Set <code>BackgroundVideoFormat</code> in the inspector of <code>HoloKitCamera</code></p></figcaption></figure>

You can also change the background video format in code at runtime.

```csharp
// Set the background video format at runtime
HoloKitCamera.Instance.BackgroundVideoFormat = BackgroundVideoFormat.VideoFormat2K;
HoloKitCamera.Instance.BackgroundVideoFormat = BackgroundVideoFormat.VideoFormat4K;
HoloKitCamera.Instance.BackgroundVideoFormat = BackgroundVideoFormat.VideoFormat4KHDR;
```

As you can see in the above code snippet, there are three video format options. One important thing to know is that if you set the video format to `VideoFormat4K` or `VideoFormat4KHDR`, the FPS will be dropped down to 30 to fit the high quality background image! Therefore, unless you really want to enhance the background video quality, just keep this option to the default `VideoFormat2K` for most cases.

## Camera Tracking State

In an `ARSession`, the camera tracking state indicates the current tracking state of the camera. In HoloKit Unity SDK, we use an enum to represents all possible camera tracking states as shown below.

```csharp
public enum CameraTrackingState
{
    NotAvailable = 0,
    LimitedWithReasonNone = 1,
    LimitedWithReasonInitializing = 2,
    LimitedWithReasonExcessiveMotion = 3,
    LimitedWithReasonInsufficientFeatures = 4,
    LimitedWithReasonRelocalizing = 5,
    Normal = 6
}
```

We provide a static event in `HoloKitCamera`, which is invoked when the camera tracking state changes. You can register this event to get notified. An example of registering the event is shown below.

```csharp
// Register the event at the beginning
private void Awake() 
{
    HoloKitCamera.OnCameraChangedTrackingState += OnCameraChangedTrackingState;
}

// You must unregister every static event
// Failing to do this will cause your app to crash
private void OnDestroy()
{
    HoloKitCamera.OnCameraChangedTrackingState -= OnCameraChangedTrackingState;
}

private void OnCameraChangedTrackingState(CameraTrackingState state) 
{
    Debug.Log($"Camera changed tracking state to {state}");
}
```

## Session Should Attempt Relocalization

In `HoloKitCamera` script, the property `SessionShouldAttemptRelocalization` indicates whether the `ARSession` should attempt to relocalize when it is recovered from an interruption. When this value is set to false, when the `ARSession` resumes from a break, the session origin will be set to the current pose of the device. When this value is set to true, when the `ARSession` resumes, it will try to relocalize to the previous world map. This relocalization process needs you to move your device around its previously scanned environment and may never succeed.&#x20;

You can monitor the relocalization status via `CameraTrackingState`.When the device enters relocalization stage, the `CameraTrackingState` will change to `CameraTrackingState.LimitedWithReasonRelocalizing`. It will remain in this state until the relocalization succeeds, at which moment the `CameraTrackingState` will change back to `CameraTrackingState.Normal`.

## AR Scene List

When you are developing a complicated app with more than one Unity scene, you should put the `HoloKitDriver` prefab into your first scene and then drag all your Unity scenes which have an `ARSession` object in it into the `HoloKitDriver.ArScenes` list. `HoloKitDriver` will help you reset the ARKit when you quit a scene with `ARSession` so that when you enter a new AR scene, you will get a brand new clean `ARSession`. Failing to do that will mess up your `ARSession` when you quit and enter AR scenes repeatedly.

<figure><img src="/files/KQZ2rcyUCFGbIbG6V4Uu" alt=""><figcaption><p>Drag all AR scenes into the list</p></figcaption></figure>


# Tutorials


# Tutorial 5: Multiplayer AR

See repo: <https://github.com/holokit/holokit-colocated-multiplayer-boilerplate>

## Overview

Multiplayer games, spanning over decades across various platforms like PC, consoles, mobile, and Virtual Reality (VR), uniformly immerse players in entirely virtual worlds.

Augmented Reality (AR) diverges from this norm by overlaying virtual elements onto the real world. The player’s immediate environment becomes an integral part of the overall gaming experience.

In AR development using Unity’s ARFoundation, the `XROrigin` component overlays a virtual coordinate system onto the real world, with the origin set at the AR session's initial position. This poses a challenge in multiplayer AR: the coordinate systems on different devices, each initialized at their respective AR session startig points, do not align. Consequently, synchronizing virtual objects across devices becomes complex. An object placed at specific coordinates on Device A may not appear in the same physical location on Device B, as identical coordinates do not correspond to the same real-world position.

<figure><img src="/files/CcCKAN3HppIqpTCcIIzp" alt="" width="375"><figcaption><p>The <code>XROrigin</code> component of ARFoundation</p></figcaption></figure>

There are two main problems which need to be solved to create a solid multiplayer AR experience: network communication and coordinate system synchronization.

## Network Communication

Multiplayer AR faces network communication challenges similar to those in traditional multiplayer games on platforms like PC, concoles, mobile, and VR, where different devices must synchronize content. To address these challenges, two key decisions are required:

1. Selecting a multiplayer solution SDK: Options include Unity’s Netcode for GameObjects or Photon Fusion, Unreal Engine’s built-in SDK, or Apple’s RealityKit framework.
2. Choosing a transport method: Traditional MMORPGs often use server-client architecture, while early competitive games like Warcraft 3 opt for host-client systems. Apple’s native solution employs peer-to-peer networking for local device communication, ideal for face-to-face multiplayer AR due to reduced latency in shared physical spaces. Apple’s MultipeerConnectivity framework, underpinning technologies like AirDrop, operates independentlyof cellular or Wi-Fi connections. However, it’s important to note that while some SDKs like Netcode for GameObjects support multiple transport layers, others do not.

Network latency is a critical factor in the efficiency of multiplayer AR experiences. Measured as Round Trip Time (RTT), it represents the duration it takes for a data packet to travel from one device the the server and back again. This time is crucial in multiplayer games, as high latency can lead to noticeable delays, affecting real-time interactions and synchronization crucial for an immersive AR experience.

## Coordinate System Synchronization

In a multiplayer AR session, it’s crucial for devices to share real-time pose data (position and rotation) to accurately render each other’s location in every frame. Consider a multiplayer AR game displaying each player’s health bar above them. To accomplish this, the devices’ coordinate systems must be synchronized, requiring the resetting of their origins to an identical point corresponding to the real world.

### The "cold start" approach and the "absolute coordinate" approach

Prior to synchronizing coordinate systems in AR, it’s essential to understand the two primary localization methods. The first is the “cold start” approach, where the device enters an ARSession without any prior knowledge of its surroundings. It begins by building a SLAM (Simultaneous Localization and Mapping) map from scratch, localizing itself within this map as it’s constructed. SLAM accurately reflects this dual process and mapping and self-localization. Consequently, the origin of the coordinate system is established at the initialization point of the SLAM process, resulting in distinct and independent coordinate system origins for each device.

<figure><img src="/files/M6byZM3Ga04nN8hkSlkg" alt="" width="563"><figcaption><p>The process of SLAM algorithm</p></figcaption></figure>

The second method is the “absolute coordinate” approach, contrasting sharply with the “cold start” method. This approach necessitates pre-scanning the environment to create a point cloud map. When the AR sesssion begins, the device, already familiar with its surroundings, only needs to relocalize itself within the pre-established map.

<figure><img src="/files/AeIoDvNnXWUdttPlJOBV" alt="" width="563"><figcaption><p>The scanned point cloud of a museum</p></figcaption></figure>

The “cold start” approach’s primary advantage lies in its ability to quickly initiate an AR session anywhere. However, this speed comes at the cost of accuracy. The tracking system may exprience drift over longer sessions. Moreover, due to the limited storage capacity of mobile devices, a growing SLAM map can become too large to store the entrie surrounding environemnt. For instance, ARKit’s maximum mapping capability is approximately the scale of a room. If a user continue scanning new areas, ARKit will discard previously scanned map sections.

The “absolute coordinate” method offers enhanced accuracy and a broader map scale due to its reliance on pre-scanning. This enables scanning the same area from multiple angles and investing more time to build the point cloud map from pre-scanned images. With prior knowledge of the entire map, devices can relocalize more easily when tracking drift occurs, increasing the tracking system’s fault tolerance. Additionally, storing the point cloud map either on the device or in the cloud allows for localization in very large-scale maps. The main drawback of this method is the prerequisite of pre-scanning, limiting the application’s use to only specific, pre-scanned areas.

### How to synchronize coordiante systems with these two approaches

Having explored the concepts of both the “cold start” and the “absolute coordinate” approaches, let’s focus back to the coordinate system synchronization problem.

In the “cold start” approach, aligning SLAM maps between devices is key. This means resetting the coordinate system origins of all devices in the network to a singular physical point.

ARKit’s ARCollaboration feature conveniently supports SLAM map alignment, enabling devices to share their SLAM map data in real-time. When a common area is detected, ARKit automatically transforms the devices’ 6DoF poses and AR anchors to the appropriate locations on each device’s local coordinate system. For successful alignment, devices must scan the same physical environment from similar perspectives. This method is relatively accurate, using numerous feature points for map alignment. However, the user experience can be challenging, as it requires users to patienly scan a specific area for 3-15 seconds, demanding both skill and patience.

<figure><img src="/files/LEcR8VbQuzbGQEHrlVqU" alt="" width="563"><figcaption><p>The setup process of SLAM map alignment</p></figcaption></figure>

A more user-friendly alternative involves using an external marker, like a QR code, instead of aligning a section of the SLAM map. This method exploys an image tracking algorithm to track the marker’s pose. Once devices detect the marker, they set their coordinate system origin to it. This approach is quicker, less computationally expensive and less technically demanding than SLAM map alignment. However, its accuracy is lower due to reliance on a single point for alignment, potentially resulting in significant drift due to the SLAM maps’ varying details on each device. Another limitation is the impracticality of users carying an external marker image with them at all times.

<figure><img src="/files/PUfHDXS8doV83sptbgJ7" alt="" width="563"><figcaption><p>Use an external marker to synchronize coordinate systems</p></figcaption></figure>

Addressing the issue of not having a physical marker, one solution is to display the marker on one device’s screen for other devices to scan. Yet, this method still falls short in solving the accuracy problem. Compared to the SLAM map alignment method, which involves sharing real-time SLAM map data between devices, this simpler approach of stitching maps together fails to yield better results.

<figure><img src="/files/zXvbiovc22RtdPOW8M0m" alt="" width="351"><figcaption><p>Display the marker on the host device's screen</p></figcaption></figure>

Besides the methods mentioned earlier, a simpler yet effective approach for achieving coordinate system synchronization is to initialize all devices at the same physical location and orientation. While seemingly rudimentary, this method can yield surprisingly good results with minimal effort, as it eliminates the need for complex coding (coding multiplayer AR is hard). If the goal is to create a multiplayer AR demo video featuring static virtual content, this straightforward approach is worth considering.

In the “absolute coordinate” approach, synchronizing the coordinate system is much simpler. As all devices access a shared pre-scanned map, their coordinate systems are inherently identical. This method enhances the robustness and user-friendliness of multiplayer sessions. Users can easily relocalize their device by scanning any pre-scanned area, and relocalization is more likely to succeed even if the device’s tracking is lost due to successive motion or camera obstruction. Immersal stands out as an excellent SDK for this approach, allowing devices to synchronize using the same point cloud map downloaded from the Immersal cloud server.

### VPS and AR cloud

While the “cold start” approach is limited to room-scale AR experiences, while Immersal can already support block-scale or even city-scale AR, is this the limit?

Imagine a future where AR glasses are as ubiquitous as mobile phones, with everyone owning a pair. In such a scenario, connecting every AR device on a planetary scale becomes essential. This would necessitates a vast, pre-scanned map encompassing every area of Earth, allowing all AR devices to share a unified coordinate system. With this setup, everyone could see the same virtual content, precisely rednered at identical locations worldwide.

Could the Global Positioning System (GPS) be used to position devices for AR? Unfortunately, GPS accuracy is limited to meters, whereas a seamless AR experience requires centimeter-level precision. To address this, the emerging Visual Positioning System (VPS) technology offers a solution. VPS initially uses GPS to approximate its global position, then scans the surroundings to match them with a comprehensive street view database in the cloud. This process allows for relocalization within a vast, planet-scale coordinate system, with precise latitude, longitude, and altitude. Major companies like Apple and Google are at the forefront of this technology, having developed ARKit’s GeoAnchor system and ARCore’s GeoSpatial API, respectively.

<figure><img src="/files/zy5lwOhj6qmudrykoJRo" alt="" width="563"><figcaption><p>VPS technology</p></figcaption></figure>

However, VPS technology is still in its infancy, grappling with lengthy initialization times and limited coverage cities. The key to achieve planet-scale AR lies in the development of the “AR cloud”, a foundational infrastructure for future AR devices analogous to how 5G underpins today’s mobile technology. As the AR cloud matures, the era of truly immersive multiplayer AR swill dawn.

## The Three Aspects of Multiplayer AR

Drawing from the concepts discussed earlier, implementing a multiplayer AR system hinges on addressing two primary challenges: network communication and coordinate system synchronization. Network communication itself splits into two sub-problems: choosing the right multiplayer SDK and selecting an appropriate transport layer. Therefore, a comprehensive multiplayer AR solution emerges from effectively resolving these three intertwined issues.

> Multiplayer AR Solution = Multiplayer SDK + Network Transport + Coordinate System Synchronization Method

For instance, the HoloKit multiplayer AR game “MOFA” utilizes Unity’s Netcode for GameObjects as its multiplayer SDK, Apple’s MultipeerConnectivity framework for the transport layer, and external marker for synchronizing the coordinate system.

Consider a multiplayer museum AR app: it could employ Unity’s Netcode for GameObjects as the multiplayer SDK, a local router for the transport layer, and Immersal SDK for coordinate system synchronization.

Apple Vision Pro’s native multiplayer solution integrates RealityKit as the multiplayer SDK, Apple’s MultipeerConnectivity framework for the transport layer, and ARKit’s SLAM map alignment for coordinate system synchronization.

The following section will delve into an analysis of the advantages and disadvantages of each solution for these three key problems.

### Multiplayer SDK

Netcode for GameObjects, Unity’s official solution for multiplayer gaming, provides the fundamental features necessary for multiplayer game development. Additionally, it offers a relatively lower learning curve compared to other multiplayer SDKs that boast advanced features.

Photon Fusion is another Unity multiplayer SDK, equipped with advanced features like client-side prediction and lag compensation. However, it presents a steeper learning curve than Netcode for GameObjects, coupled with fewer learning resources and less active community.

RealityKit, Apple’s native framework for AR development, includes a built-in multiplayer solution. Being an Apple framework, it requires developers to use Swift for coding. However, its capabilities for game development are not as versatile and powerful as Unity, a dedicated game engine.

### Transport layer

Using a local router offers convenience, enabling low latency as data doesn’t have to travel through a remote server, and it’s easy to set up in the Unity project. However, this method requires a dedicated router and necessitates users to manually enter IPs for device connection.

Dedicated remote servers, commonly used in modern online games, offer the benefits of anytime connectivity and stable connections. However, renting or constructng such servers can be costly, and they typically have higher latency compared to local area networks.

Apple’s MultipeerConnectivity framework, the technology powering AirDrop, offers substantial handwitdth easy connection of nearby Apple devices. As a local peer-to-peer network, it boasts low and stable latency, typically around 30ms. However, its major limitation is the restricted range; devices may disconnet if they are more than 10 meters apart.

### Coordinate system synchronization

ARKit’s SLAM map alignment feature achieves relatively high accuracy by using numerous feature points for map alignment and sharing SLAM data in real-time to ensure map uniformity across devices. However, it compromises on user experience, presenting a confusing process and requiring prolonged holding times.

Compared to SLAM map alignment, external markers offers quicker setup times, resulting in a slightly improved user experience. However, their reliance on a single alignment point leads to poorer accuracy. Users may experience drifting during extended AR sessions or when the movement area expands.

The Immersal SDK is a potent “absolute coordinate” solutioin. Developers must scan the environment, upload the imagery to the cloud for point cloud map construction, and then download the map or relocalize the device via the cloud. This process is rubust and user-friendly within predefined areas. However, its main drawback is the lack of flexiblity, restricting users to AR expreiences only in specific, pre-scanned areas.

## Current Situation of Multiplayer AR

Despite numerous teams announcing the implementation of multiplayer AR games over the past years, there are still no widely accepted titles in this genre. Pokémon Go, for instance, isn’t considered a strict AR game as it lacks precise tracking, not allowing multiple players to see the same Pokémon rendered at the exact same real-world position.

In AR experiences utilizing the “cold start” approach, user satisfaction cannot be consistently assured for the general public. Meanwhile, apps employing the “absolute coordinate” approach are confined to certain areas, limiting the potential user base.

Perhaps the widespread popularity of true multiplayer AR apps, offering unprecedented solutions to user prblems, awaits the maturation of VPS and AR cloud technologies.

## What We Offer For Multiplayer AR Now

We offer a sample project with three boilerplate scenes for developing multiplayer AR projects, accessible at [holokit-multiplayer-ar-boilerplates](https://github.com/holoi/holokit-multiplayer-ar-boilerplates). Designed for both "cold start" and "absolute coordinate" AR projects, these boilerplates include:

* External Marker Relocalization Boilerplate: Utilizes an external marker to relocalize device coordinate systems. It has a relatively easy setup process. If an external marker image is accesible, this boilerplate is ideal for AR experiences involving more than three devices.
* Dynamically Rendered Marker Relocalization Boilerplate: Employs a dynamically rendered marker, which displayed on the host's screen and scanned by all client devices. This method is more complex and less error-tolerant compared to the external marker method, as each client device's relocalization requires the help of the host. This boilerplate is suitable for projects with two or three devices where an external marker isn't available.
* Immersal Boilerplate: Specifically for "absolute coordinate" AR projects, it integrates the [Immersal SDK](https://immersal.gitbook.io/sdk/) for AR map pre-scanning and relocalizatioin. It requires scanning your map using the Immersal Mapper App and importing it into the project. It's best for AR experiences in specific locations demanding high tracking accuracy.

These boilerplates are good starting points for your multiplayer AR development. You can build the sample scenes onto your iPhones, familiarize yourself with the code, and then tailor the project to your requirements. For more information on how to use these boilerplates, refer to the [README file](https://github.com/holoi/holokit-multiplayer-ar-boilerplates) in the boilerplate repository.

Multiplayer programming is a complex endeavor, requiring the synchronization of user inputs and on-screen content across all networked devices. Programming for network objects demands a distinct approach. At the conclusion of this article, we’ll provide a list of learning resources to assist in mastering multiplayer programming.

A common misconception is that one can evolve a single-player game into a multiplayer one with ease. In reality, this often results in a disastrous need for refactoring. When developing multiplayer games, it’s essential to construct the architecture with multiplayer dynamics in mind from the outset, as there are numerous additional factors to consider in multiplayer programming.

Be aware that the spectator view feature is a key application of multiplayer AR. In this scenario, the spectator device is treated as a connected but input-free device. Lots of HoloKit demo videos have utilized this feature to capture AR experiences from a third-person perspective.

## Learning Resources

* Multiplayer AR - why it's quite hard: [https://medium.com/6d-ai/multiplayer-ar-why-its-quite-hard-43efdb378418](<https://medium.com/6d-ai/multiplayer-ar-why-its-quite-hard-43efdb378418&#xA;&#xA;https://docs-multiplayer.unity3d.com/netcode/current/about/&#xA;&#xA;https://doc.photonengine.com/zh-cn/fusion/current/getting-started/fusion-intro>)
* Netcode for GameObjects: [https://docs-multiplayer.unity3d.com/netcode/current/about/](<https://medium.com/6d-ai/multiplayer-ar-why-its-quite-hard-43efdb378418&#xA;&#xA;https://docs-multiplayer.unity3d.com/netcode/current/about/&#xA;&#xA;https://doc.photonengine.com/zh-cn/fusion/current/getting-started/fusion-intro>)
* Photon Fusion: [https://doc.photonengine.com/zh-cn/fusion/current/getting-started/fusion-intro](<https://medium.com/6d-ai/multiplayer-ar-why-its-quite-hard-43efdb378418&#xA;&#xA;https://docs-multiplayer.unity3d.com/netcode/current/about/&#xA;&#xA;https://doc.photonengine.com/zh-cn/fusion/current/getting-started/fusion-intro>)
* Apple MultipeerConnectivity: <https://developer.apple.com/documentation/multipeerconnectivity>


# Tutorial 4: Interact with holographical avatar with ChatGPT

See <https://github.com/holokit/talking-olaf>&#x20;


# Tutorial 3: Use Google Geospatial anchors to position real-world content

See <https://github.com/holokit/zuzaland> for more details.


# Tutorial 2: Use Immersal's Visual Positioning System for AR Exhibition

In this step-by-step guide, you'll learn how to leverage Immersal's powerful capabilities to seamlessly place and interact with a virtual TV in your real-world environment.

Repo: <https://github.com/holokit/virtual-tv>

In this tutorial, we will guide you through the step-by-step process of achieving the following functionality: placing a virtual TV in your surrounding environment and controlling video playback on this virtual TV using screen taps.

<figure><img src="/files/3eH20gVvXtYf1M3H86cd" alt=""><figcaption><p>Final result</p></figcaption></figure>

This tutorial is divided into the following sections:

#### Chapter 1: Preparation

In this chapter, we will introduce the course's topic and the prerequisites, including uploading and downloading Immersal point cloud data, as well as how to download our resource project.

#### Chapter 2: Creating an AR Scene

This chapter will cover how to create an AR scene and add the television to the scene.

#### Chapter 3: Replacing Point Cloud Data

In this chapter, we will discuss how to use your own point cloud data to replace the point cloud data in the sample scene.

#### Chapter 4: Placing the Virtual TV

In this chapter, we will learn how to obtain a 3D model of a modern television and import it into the Unity project. We will use the Immersal SDK to capture the surrounding environment's information so that we can accurately place the virtual TV in the desired location.

#### Chapter 5: Adding a Video Player

We will introduce how to add and use a video player component and associate it with a video source so that our TV can play videos.

#### Chapter 6: Interaction and User Experience

In this chapter, we will explore how to add interactive elements, such as allowing users to start or stop video playback by clicking on the television.

#### Chapter 7: Debugging, Building, and Deploying to Mobile

Once we have completed the creation of our AR scene, we will learn how to debug our application to ensure it runs smoothly on mobile devices.

We will discuss how to build and deploy our AR application to mobile devices so that we can observe and interact with the virtual TV in a real-world environment.

#### Chapter 8: Conclusion

In the conclusion, we will recap the knowledge we have gained throughout the tutorial.

Now that you have an understanding of the chapter structure, let's start with Chapter 1!

## Chapter 1: Getting Started

Welcome to the "Mastering Immersal: Adding a Virtual Television to Your Room" tutorial. In this first chapter, we will lay the foundation and ensure you have everything you need to embark on this AR journey.

### Prerequisites

Before we dive into the world of augmented reality televisions, let's make sure you have the prerequisites in place:

1. PointCloud Data from Immersal

   We must capture the surrounding dataset ourselves using Immersal app before start this journey. In this tutorial, we recommend choosing a space that is about the size of a bedroom, and capturing at least 100 images, then uploading. Then downloading the point cloud file through [Immersal developer portal](https://developers.immersal.com/).

   <figure><img src="/files/0G6jLVlREik0YsnOq33r" alt=""><figcaption><p>download data with .bytes format</p></figcaption></figure>

   If you're unsure about how to mapping and upload data to portal, please refer to the documentation:\
   <https://immersal.gitbook.io/sdk/tutorials/workflow-and-limitations>
2. Downloading Project

   The provided download includes all the necessary resources and a sample scene required for this tutorial.

## Chapter 2: Creating the AR Scene

In this chapter, we will delve into the process of crafting our AR scene in Unity, preparing the stage for placing a modern TV model in your real-world environment.

**Overview:** To begin, let's create the AR scene in Unity. In this section, we will:

1. Create a new scene to house our AR experience.
2. Add HoloKitCameraManager components to the scene to enable Stereo Rendering.
3. Add HoloKit UI to switch rendering mode.

### 2.1: Creating a New Scene

**Steps**

1. Open Unity.
2. Navigate to folder “ImmersalSDK” > “Samples” > “MultimapSample”
3. Right-click to duplicate it into a new scene, then save it with a suitable name, such as "ARScene”

   <figure><img src="/files/WDmmnTjf8qHckxVA02Z0" alt=""><figcaption><p>Duplicate a scene, rename to "ARScene"</p></figcaption></figure>

### 2.2: Adding HoloKit AR Components

**Steps**

1. In the Hierarchy Window, find and select the “XR Origin”. Click the gray triangle to the left of XR Origin to open its sub-hierarchy.
2. Continue by clicking the gray triangle to the left of “Camera Offset” to open its sub-hierarchy.
3. Click on “Main Camera” in the sub-hierarchy of “Camera Offset”, and go Inspector Window on the right side of the Unity.
4. Click the "Add Component" button at the bottom, type in "HoloKit Camera Manager" and click on "HoloKit Camera Manager" from the list to apply the component.

   <figure><img src="/files/qUPxyrNNRyRmQb4ayML3" alt=""><figcaption><p>Add HoloKitCameraManager Component</p></figcaption></figure>

### 2.3 Adding a Button for Rendering Mode Switching

Unlike the typical AR scenes, our current scene features two rendering modes. One is the Screen-AR rendering mode, and the other is the Stereo-AR Rendering mode that supports HoloKit hardware. Therefore, we also require a simple button to facilitate the switching between these two modes.

To access it, simply right-click within the Hierarchy Window, hover over "UI" and choose "Default UI Canvas" to create the button.

<figure><img src="/files/VQStNQ1AoGchHN7oSYsJ" alt=""><figcaption><p>Add HoloKit UI Canvas</p></figcaption></figure>

With these steps, you will have a new Unity scene set up for your AR experience, equipped with the necessary HoloKit AR components.

## Section 3: Replacing Pointcloud

In the Scene Window, you'll notice there's already a space drawn with a point cloud.

<figure><img src="/files/mZ3RyYOVAsBnyyzYOO02" alt=""><figcaption><p>Pointcloud displayed inside scene window</p></figcaption></figure>

Our next step is to replace this existing point cloud with our custom one. Let's proceed.

**Steps**

1. Select "AR Space" and expand its sub-hierarchy. Click on object “AR map 18500-A."

2. This scene currently uses three point cloud files to reconstruct the environment, which might be more than we need. We only require one point cloud file, and that's what we have. Therefore, let's proceed by deleting "AR Map 18500-B" and "AR Map 18500-C" from the scene.

   <figure><img src="/files/N1NC1qPDYmql3g4oArJg" alt=""><figcaption><p>Delete unnecessary "AR Map" objects</p></figcaption></figure>

3. Click on the "Map File" labeled "18500-A." This action will navigate our Project Window to the folder where this map file is stored. Drag and drop our point cloud file downloaded from immersal portal to this folder. Then use you own file to replace “18500-A”.

   <figure><img src="/files/slbDM69rKXB1rm9lvrpo" alt=""><figcaption><p>Replace point cloud file with your own</p></figcaption></figure>

   That’s it!

## Section 4: Placing the TV Model

**Overview:** In this section, we will import a modern TV model into our scene, which will serve as the virtual television that users will interact with.

### 4.1: Obtaining a 3D TV Model

Download model(with fbx format) from: <https://sketchfab.com/3d-models/flatscreen-tv-46-inch-94c7ccaea76f4093b484828419db25cb#download>

<figure><img src="/files/M3b0iVEbyLbfSNlryAJI" alt=""><figcaption><p>Download model from sketchfab.com</p></figcaption></figure>

### 4.2: Importing the TV Model

1. In Unity, go to "Assets", “Right Click” > “Create” > “Folder” to create a folder, rename it to “Meshes”:

   <figure><img src="/files/W1Gn2mfgTVRtAmVTPjnL" alt=""><figcaption><p>Create "Meshes" folder</p></figcaption></figure>
2. Drag the folder we downloaded into the "Meshes" folder to import all the resources:

   <figure><img src="/files/EdmnZbGEzuxRUnOLW1lQ" alt=""><figcaption><p>Make sure you have imported both folders, "source" and "texture," to ensure you have all the necessary files</p></figcaption></figure>

Click on the mesh file we imported, we found that inspector window shows there’s no material on it, because the model and the textures are not well connected:

<figure><img src="/files/PnQoefckE2FgcRRyWd8R" alt=""><figcaption><p>No materials on TV</p></figcaption></figure>

Let's fix this problem by following steps.

1. Select the mesh file, go to the Inspector panel, and switch to the Materials section. Then, choose "Extract Materials”:&#x20;

   <figure><img src="/files/mU3Q7Fl57yxyjoVyOTja" alt=""><figcaption><p>Extract Materials</p></figcaption></figure>

   You will find a material created in the folder contains the TV model:

   <figure><img src="/files/kcK4LgZWA4JTC5YMOAjT" alt=""><figcaption><p>Material "M_FlatScreen"</p></figcaption></figure>
2. Select the material file, then drag the texture files from the "textures" folder into their respective slots for the Base Map, Metallic Map, Normal Map, Height Map, and Occlusion Map in the material properties:

   <figure><img src="/files/nwwfyrrMjHI0II7UzIW0" alt=""><figcaption></figcaption></figure>

Now, our TV model has the correct material. Drag the mesh to scene “AR Scene”, a TV shows up!

<figure><img src="/files/BX96gHLybNgzHzKW6MQ9" alt=""><figcaption><p>TV with material</p></figcaption></figure>

## Section 5: Adding a Video Source

**Overview:** In this section, we will set up a video source to be displayed on the TV model within the AR scene.

### 5.1: Preparing Video Content

Download the video here: <https://www.pexels.com/video/a-river-near-the-rocky-mountains-15135149/> or get a video you like. Ensure the video is in a compatible format, such as .mp4.

<figure><img src="/files/j7hnZS3OvJ0VjHvItv0L" alt=""><figcaption><p>Click "Free Download" to download video</p></figcaption></figure>

### 5.2: Setting Up Video Playback

**Steps**

1. In Unity, go to "Assets", create a folder and rename it to “Videos”, drag and drop the video file we downloaded to “Videos”.

   <figure><img src="/files/QNFnIB2FSUoE8duXXikm" alt=""><figcaption><p>Create folder and add video file</p></figcaption></figure>

2. Create an Empty Object in your scene, rename it to “Video player”.

3. Add Video Player component to it.

   <figure><img src="/files/uPZZPgZFnyGElObhiiVz" alt=""><figcaption><p>Add Video Player component</p></figcaption></figure>

4. Drag the video we imported to the field “Video Clip”, and check “Loop”:

   <figure><img src="/files/5Tcb8cwYAh2spq00fmUk" alt=""><figcaption><p>Add Video Clip and check loop option</p></figcaption></figure>

5. Under Videos folder, Right-Click > “Create” > “Render Texture”, rename it to “RT\_VideoPlay”. Select it and set “Size” to 1920x1080:

   <figure><img src="/files/d4Aw62OKpU7fo0H59KTs" alt=""><figcaption><p>Set size to 1920*1080</p></figcaption></figure>

6. Drag this render texture to the field “Target Texture”:

   <figure><img src="/files/YJkp7hv4mrxhTj5EOgel" alt=""><figcaption><p>Add Target Texture</p></figcaption></figure>

Now, the current frame of the video playback is copied to rendertexture "RT\_VideoPlay", we can use "RT\_VideoPlay" as a dynamic texture.

### 5.3 Set the TV screen texture to display the video

#### Steps

1. Create a new material in the current folder to use for displaying video content, and rename it to "M\_Screen”:&#x20;

   <figure><img src="/files/kB4i4cD58LcbGPzyzmhd" alt=""><figcaption><p>Create a material and rename it to "M_Screen"</p></figcaption></figure>

2. Drag and drop “RT\_VideoPlay” as the Base Map of material “M\_Screen”:

   <figure><img src="/files/HUzTTPbOaSeBHSW0k4dl" alt=""><figcaption><p>Add Base Map</p></figcaption></figure>

3. In hierarchy window, “Right Click” > ”Create" > “3D Object” > “Quad” to create a Quad, rename it to “Screen”. Apply material “M\_Screen” to it:&#x20;

   <figure><img src="/files/RwAX8hWCd9FvkmC6t8QA" alt=""><figcaption><p>Create a Quad and add material</p></figcaption></figure>

4. Make “Screen” a child of SM\_TV, move the position and make sure it precisely covers the TV screen's position and scale to a same size of screen:

   <figure><img src="/files/Elp1gXbdhQOHKylMnMl7" alt=""><figcaption><p>Move and scale "Screen" object</p></figcaption></figure>

   ###

### 5.4 Placing TV to our RealWorld

Here, we will search for an appropriate location within the mapped environment to place the TV. Then, we will position the TV at that location in the editor.

By the end of this chapter, you'll have a captivating AR scene with a virtual TV at specific position and displaying your chosen video content.

In my case, I'm writing this tutorial in a serene tea room environment：

<figure><img src="/files/u88JpFTOxKj75EnxI2zX" alt=""><figcaption><p>A serene tea room</p></figcaption></figure>

The curved platform here seems like an excellent choice, serving both as a spot for placing the TV and as a relaxation area. Crafting an AR experience in such a setting promises to be quite fascinating.

To achieve this, I need to position the TV within the point cloud space accurately in the Unity editor. Here is how my pointcloud displayed inside Unity:

<figure><img src="/files/ElrR9zZ0L1pWlAWjFnsM" alt=""><figcaption><p>My point cloud shows in Unity</p></figcaption></figure>

Within the point cloud, I can easily identify the approximate location for placing the platform:

<figure><img src="/files/R2tFg4jKNKpIXm4Slu11" alt=""><figcaption><p>Placing the TV on the curved platform</p></figcaption></figure>

With these steps, you will have successfully added a modern TV model to your AR scene.

## Chapter 6: Implementing AR Interaction

**Overview:** In this section, we will enable users to interact with the virtual TV model using touch. Users will be able to touch the TV to pause and play the video.

By the end of this chapter, users will have a delightful AR interaction experience with the virtual TV, being able to control video playback through screen tap.

**Steps**

1. Add Component "VideoPlayerController" to our "VideoPlayer":&#x20;

   <figure><img src="/files/RCo9LWr02uvRIWXkOXYX" alt=""><figcaption><p>Click Add Component and search for "VideoPlayerController"</p></figcaption></figure>
2. Add Component "ClickDetection" to our "SM\_TV". This script makes the object it's attached to "clickable" allowing us to trigger events by tap on it:&#x20;

   <figure><img src="/files/Iap5vF8auKZEdyMtCOsB" alt=""><figcaption><p>Click Add Component and search for "ClickDetection"</p></figcaption></figure>
3. Click “+” to create an empty event:

   <figure><img src="/files/qFvg9D5LXXAMglETkaXX" alt=""><figcaption></figcaption></figure>
4. Drag “Video Player” object to empty slot of "Click Detection":

   <figure><img src="/files/doUCyFRlFkucv0rUWtBh" alt=""><figcaption></figcaption></figure>
5. Select function > "VideoPlayerController" > "PlayOrPauseVideo()":&#x20;

   <figure><img src="/files/ahhD0jYtNZV9vptADlPg" alt=""><figcaption></figcaption></figure>

   In the end, your Click Detection Component should look like this:

   <figure><img src="/files/8hvoaw8AFfBQqcIlhjjz" alt=""><figcaption></figcaption></figure>

## Chapter 7: Testing, Building and Deploying for iOS

### 7.1 Testing In Editor

1. Click on the "Play" button at the top to enter play mode.

   <figure><img src="/files/zTW6ouX9SPkjp3uJZl8Z" alt=""><figcaption></figcaption></figure>
2. Move the camera to ensure that the TV is completely visible in the field of view in the Simulator Window.

   <figure><img src="/files/Et289EPqLcASDVVZHfEZ" alt=""><figcaption></figcaption></figure>
3. Test the pause and play functionality by clicking on the TV screen with the mouse.
4. Click the play button again at the top to exit play mode.

If everything is working fine, let's move on to deploy our scene to a mobile device!

### 7.2 Building and Deploying

Building a Unity scene onto your iOS device involves several steps:

1. Adjust Unity's Build Settings to match your device and requirements.
2. In Unity, build the project to create a project file for Xcode.
3. Open this file in Xcode, configure the signing, connect your device via USB, and then click "Run" to build and install the app on your device.

{% hint style="info" %}
Details of there steps are not covered in this tutorial. If you encounter any issues, you can search for relevant topics like "How to build a Unity project for mobile" to find more instructions.
{% endhint %}

Here's what we made! You can see that our TV blends well with the environment, which depends on specific environmental settings, layout, lighting conditions, and more. As you become more familiar, you can customize virtual assets that better suit your surroundings.

<figure><img src="/files/WbwA7Dww1JBehNeZSjxv" alt=""><figcaption></figcaption></figure>

## Chapter 8: Conclusion

In this tutorial, we embarked on an exciting journey to create a captivating Augmented Reality (AR) experience using Immersal SDK and Unity. We achieved the remarkable feat of placing a modern television model in the real world and seamlessly integrating a looping video source within it.

As you continue your AR journey, remember that innovation knows no bounds. You now have the foundation to create AR experiences limited only by your imagination. Whether it's enhancing educational content, gamifying real-world exploration, or revolutionizing marketing campaigns, AR offers boundless opportunities to captivate and engage users.

Thank you for joining us on this enlightening journey. We can't wait to see the incredible AR experiences you'll bring to life with Immersal SDK, Unity, and your creative vision. Happy coding and may your AR adventures be truly immersive!


# Tutorial 1: Use Hand Tracking for Interacting with Holograms

In this tutorial, we will explore the foundational concepts of creating AR applications while integrating HoloKit's holographic rendering and hand-tracking features.

See <https://github.com/holokit/touching-hologram>

## Overview

This tutorial comprises the following sections:

**Section 1: Preparation**

Embark on your AR journey by learning to download essential project files and open them in Unity.

**Section 2: Scene Setup and Basic AR Components**

Dive into Unity's Scene concept, crafting your very own Scene. Discover the fundamental components necessary for building AR experiences, including XR Origin and AR Session.

**Section 3: Exploring Prefabs**

Delve into the Unity's Prefab concept. Uncover valuable insights into the provided Prefabs featured in this lesson.

**Section 4: Placing Virtual Objects in Real-World Environments**

Master the art of utilizing the AR Raycast Manager to detect and actively position virtual objects within real-world environments.

**Section 5: Unveiling Hand-Tracking Magic**

Experience the magic of HoloKit's Hand Tracking functionality. Elevate your application by introducing natural interaction.

**Section 6: Creating Your SceneManager**

Learn about Unity's SceneManager and create a customized version to efficiently manage your scenes.

**Section 7: Immersive Soundscapes**

Enhance the overall immersion of your scene by integrating background music and sound effects.

**Section 8: Test Run in Play Mode**

Before taking your creation to mobile devices, test it within the Unity editor to ensure a seamless experience.

**Section 9: Building for Mobile Devices**

Collaborate to transfer your scene onto mobile devices and witness the results of your AR journey.

This tutorial will equip you with the skills needed to create holographic AR applications. Let's dive into this thrilling learning journey!

## Section 1：Preparation

#### 1.1 Set Up Unity

The course's accompanying project uses Unity 2022.3.7f1. We recommend you download this version.

Working with other versions of Unity may leads to compatibility issues.

#### 1.2 Download the Course Project

In this tutorial, we will provide a Git project, which is a Unity project containing all the necessary assets and an implemented scene.

We will use this project as our starting point, following the tutorial step by step, to gradually build our own application.

To begin, head over to the project's GitHub page：

<https://github.com/holokit/touching-hologram>

There are two ways to download this project, choose either one:

<figure><img src="/files/77olGNAM9hVyiQKG5WLf" alt=""><figcaption><p>Click on the download to start the download process</p></figcaption></figure>

1. Click the green button to download the zip file. Once the download is complete, locate the compressed file and extract it.
2. If you are familiar with Git, clone this project on your own.

#### 1.3 Open the Project

Once the download is complete, open Unity Hub. Click “Open”:

<figure><img src="/files/uQbkcNiizPnOMk7TRdU2" alt=""><figcaption><p>Click “Open” to open project folder</p></figcaption></figure>

Select the appropriate folder, and click "Open":

<figure><img src="/files/mstfyeZRjyDr9mlcGARh" alt=""><figcaption><p> Select your project folder</p></figcaption></figure>

<figure><img src="/files/sjvkMwcMypdinpw1Wikk" alt=""><figcaption><p>Remember to choose Unity 2022.3.7f1 and IOS platform.</p></figcaption></figure>

Wait for Unity to open.

#### 1.4 Configuring Unity Layout

Before delving into the creation of our AR app, we suggest utilizing the "holokit-layout" that we've provided. This layout encompasses all essential windows to ensure a comprehensive workflow.

<figure><img src="/files/4BNef0zLic275PzTm9RN" alt=""><figcaption><p>Select the "holokit-layout" from the dropdown menu located in the upper right corner.</p></figcaption></figure>

All set, let's dive into MR development with this layout at our fingertips.

## Section 2: Setup scene and basic AR component

### 2.1 Scene Creation

In Unity, a "Scene" is a fundamental building block that encapsulates a distinct environment within your project. It serves as a self-contained space where you design and construct specific aspects of your game or application. Think of it as a contained setting, much like a chapter in a story, where you create and organize various elements to achieve your desired experience.

Here's how we dive into the action:

<figure><img src="/files/x3EIZ7hUkz9gNsSLzBDn" alt=""><figcaption><p>Create a new scene</p></figcaption></figure>

1. Locate the Project Window. You can find it on the bottom left of the Unity editor.
2. Click on the "My Assets" folder in the Project Window to select it.
3. Right-click and hover over the ”Create” option in the context menu, then select ”Scene” from the submenu. This will create a new empty scene in the project.
4. Right-click, select “Rename”, to rename it to “Buddha”
5. Double-click it to open.

After opening it, you'll notice a default skybox in the Simulator Window as the following image shows:

<figure><img src="/files/JgYImnwins8mh3NSHcQ8" alt=""><figcaption><p>Unity Editor: Open Our Scene</p></figcaption></figure>

Next, let's remove all the objects in the Hierarchy Window, including the Camera and Directional Light, for the following reasons:

* We won't be needing the default camera as we'll create new cameras for the Mixed Reality (MR) experience.
* The Directional Light is unnecessary because we won't be illuminating any objects in this tutorial.

### 2.2 Integrating AR Session and XR Origin

When it comes to Augmented Reality (AR) development, Unity's `AR Session` and `XR Origin` play crucial roles:

`AR Session` is one of the primary components in Unity used to manage the AR experience. In essence, it forms the foundation for developing AR applications in Unity, providing interfaces with **AR hardware devices** and tracking systems, as well as managing interactions between virtual content and the real world.

{% hint style="info" %}
AR hardware devices Includes sensors such as gyroscope, accelerometer, magnetometer, and camera. These sensors can be used to obtain information about the device's orientation, direction, acceleration, and position.
{% endhint %}

`XR Origin` is a virtual coordinate system used to define the origin point and axis directions in VR or AR scenes. Understanding and correctly setting up the XR Origin are essential to ensure proper positioning and movement of XR applications in VR or AR. Unless there are specific requirements, always remember to keep the object XR Origin's `Transform` component in its default state (Position(0,0,0), Rotation(0,0,0), Scale(1,1,1)).

{% hint style="info" %}
By default, the XR Origin's position is typically set at the origin of the real world (the position when the mobile application is launched), aligning the virtual and real worlds perfectly. If the XR Origin's position is not the default value, the position of virtual objects will deviate from the actual position in the real world.
{% endhint %}

Let's add these two components to our Scene.

* Let's start by adding `AR Session`. In the Hierarchy Window, right-click on an empty area → Create → XR → AR Session.

  <figure><img src="/files/PUrAMwNOwdPOCLFX5qBM" alt=""><figcaption><p>Add AR Session</p></figcaption></figure>
* Next, let's add `XR Origin`. In the Hierarchy Window, double-click on an empty area → Create → XR → XR Origin:

  <figure><img src="/files/AUCgCDq1uKryv4ReRg2J" alt=""><figcaption><p>Add XR Origin</p></figcaption></figure>

Your Hierarchy Window should look like this:

<div align="center" data-full-width="true"><figure><img src="/files/978ItIYVnN8iRp2hb1re" alt="" width="188"><figcaption><p>Hierarchy Window</p></figcaption></figure></div>

### 2.3 HoloKit Camera and Stereo Rendering

Unity's AR Foundation supports the development of Screen AR applications. However, when we intend to build Stereo AR applications work with HoloKit, we need to utilize the `HoloKitCameraManager`.

<figure><img src="/files/pQ9gHrPKtebmqbRq4U16" alt=""><figcaption><p>Add HoloKitCameraManager</p></figcaption></figure>

1. In the Hierarchy Window, find and select the “XR Origin”. Click the gray triangle to the left of XR Origin to open its sub-hierarchy.
2. Continue by clicking the gray triangle to the left of “Camera Offset” to open its sub-hierarchy.
3. Click on “Main Camera” in the sub-hierarchy of “Camera Offset”, and go Inspector Window on the right side of the Unity.
4. Click the "Add Component" button at the bottom, type in "HoloKit Camera Manager" and click on "HoloKit Camera Manager" from the list to apply the component.

We could see the `HoloKitCameraManager` component in the Inspector Window:

<figure><img src="/files/wtJpVq2cG9mZFvAqqrBm" alt=""><figcaption><p>Add HoloKitCameraManager</p></figcaption></figure>

Furthermore, under the “HoloKit Camera”, the `HoloKitCameraManager` help us added the following sub-hierarchy automatically as the following image shows.

<figure><img src="/files/4r0U7RhEmj6bLwUCAY0R" alt=""><figcaption><p>Check Hierarchy</p></figcaption></figure>

Among them, the “Center Eye Pose” represents the point between the two eyes, which can serve as a reference for the movement of our head. “Black Camera”, “Left Eye Camera”, and “Right Eye Camera” are used for background rendering, left eye content rendering, and right eye content rendering, respectively, in Stereo Rendering mode.

#### 2.3.1 Quick Creation of XR Origin with HoloKit Camera

We've also included a menu option that lets you create an “XR Origin” along with a `HoloKitCameraManager` simultaneously, streamlining the process.

<figure><img src="/files/vLRBCurZglVADvkDab2U" alt=""><figcaption></figcaption></figure>

* In the empty space within the Hierarchy Window, right-click and navigate to XR → HoloKit → XR Origin.

### 2.4 Adding a Button for Rendering Mode Switching

Unlike the typical AR scenes, our current scene features two rendering modes. One is the Screen-AR rendering mode, and the other is the Stereo-AR Rendering mode that supports HoloKit hardware. Therefore, we also require a simple button to facilitate the switching between these two modes.

<figure><img src="/files/Gs0p8FO2Si8NSNNxzqfB" alt=""><figcaption><p>Add button to switch rendering modes</p></figcaption></figure>

* To access it, simply right-click within the Hierarchy Window, hover over "UI" and choose "Default UI Canvas" to create the button.

## Section 3: Explore Prefab

Let's take a look at the virtual object we're about to place in the space — the Prefab Buddha.

The Prefab Buddha is presented in the form of a prefab. Why do we construct a prefab? It's because I want each of us to be able to drag and drop it instantly, making it incredibly convenient.

{% hint style="info" %}
In Unity, a Prefab is an essential resource type that allows for easy reuse. It serves as a template for storing and managing game objects and their components. Prefabs enable you to create and instantiate game objects with identical attributes and components in a scene, making it simple to reuse and manage these objects.
{% endhint %}

First, locate our prefab and drag it into our scene.

<figure><img src="/files/TNmIB1HvaOHDu8qsc8Q4" alt=""><figcaption></figcaption></figure>

* Go to the Project Window, open: “Course Assets” → “Course1” → “Prefabs” → “Buddha”
* Click and drag the “Buddha“ into empty area in the Hierarchy Window to place it in the scene for viewing.

The Prefab Buddha consists of three main parts: Visual Part,

* It has a Visual Effect Component that creates a particle-style representation of the Buddha figure:

  <figure><img src="/files/JHYY9kdkVHqm0vXw7JTA" alt=""><figcaption><p>Visual Effect Component</p></figcaption></figure>
* It has a `Buddha Controller` component that actively searches for the position of hand after this prefab is created and binds the position to the VFX, in this way the Visual Part can interact with our hand:

  <figure><img src="/files/Y4rAsWLEhkwsAXbI5PGR" alt=""><figcaption><p>Buddha Controller component</p></figcaption></figure>
* It has an `AudioSource` component to play sound. When the Buddha is created, play a trigger sound as feedback and enhance the immersive experience:

  <figure><img src="/files/FqqcJ2viLxnVU1DeQAwN" alt=""><figcaption><p>Audio Source Component</p></figcaption></figure>

The Prefab Buddha is intended to be created at runtime, let's remove the Buddha from the scene for now.

* Right-click on “Buddha” → “Delete”, to remove it from the scene:

  <figure><img src="/files/nnXOImoWQ71YHAT2dtem" alt=""><figcaption><p>Delete Buddha From Scene</p></figcaption></figure>

## Section 4: Placing Objects Within AR Environments

### 4.1 ARRaycastManager

Since we aim to position virtual objects within the real world, it's crucial that we have the ability to specify their placement location. Ideally, this location should be contextually relevant to the real environment, rather than consistently floating in mid-air or getting stuck within surfaces like the ground or walls.

To achieve this, `ARRaycastManager` is our go-to choice. it allows you to cast rays in environment to detect planes, objects, feature points, or other virtual content within the AR session.

Let’s add `ARRaycastManager` to our scene.

* Go to the Hierarchy Window, click on “XR Origin” to select it, click “Add Component”, type in “AR Raycast Manager”, click on `ARRaycastManager` to apply it.

  <figure><img src="/files/k6v6fHHMnAMEDLDvPI3p" alt=""><figcaption><p>Add AR Raycast Manager</p></figcaption></figure>

Moreover, we require a component to unlock the potential of the `ARRaycastManager`.

The `ARPlacementWithTouch` component leverages the functionalities provided by the `ARRaycastManager`, projecting an invisible ray from the screen's center along the camera's direction. When the user taps the screen and this ray intersects with a plane (like the ground, wall, or ceiling), it instantly creates a predefined virtual object at the intersection point.

Add `ARPlacementWithTouch` to our scene.

<figure><img src="/files/H7FlpJktgEavPtiCQpAj" alt=""><figcaption></figcaption></figure>

* First, in the Hierarchy Window, right-click → “Create Empty” to create a GameObject.
* Right-click on it → “Rename”, to rename it to "ARPlacementManager“.
* In the Inspector Window, click “Add Component”, type "ARPlacementWithTouch", click on `ARPlacementWithTouch` to apply it.

In order to inform `ARPlacementWithTouch` about the specific object we want to create, we need to find the prefab in the Project Window and drag it into the "SpawnedPrefab" field of `ARPlacementWithTouch`.

<figure><img src="/files/uU8pAKULp9fxARks4xVV" alt=""><figcaption></figcaption></figure>

* Go to the Project Window and find prefab "Buddha".
* Click and drag it into the "SpawnedPrefab" field of `ARPlacementWithTouch`.

Now, whenever you tap the screen on your phone, the virtual object will be created at the specified location. Enjoy the magic of placing virtual objects in the real world!

### 4.2 Placement Indicator

As previously discussed, the component `ARPlacementWithTouch` enables you to cast a ray into the environment, detecting collisions in real time. By visualizing the collision point, we can accurately determine the exact location to create our virtual object. Consequently, an indicator is necessary to visually represent the collision point.

To achieve this, we just need add an indicator prefab to the blank field “Placement Indicator” of `ARPlacementWithTouch`.

<figure><img src="/files/iwQs9S4MoMzYmFC4HSOr" alt=""><figcaption></figcaption></figure>

* In Project Window, go Shibi→Shibi AR GUI→Assets→AR Placement→Prefabs, find “Indicator Prefab”, hold and drag it to “Indicator Prefab” field of `AR Placement With Touch`.

## Section 5: Introducing Hand-Tracking Capability

To enable hand interaction with the Buddha, our program needs two capabilities:

1. The program should provide the ability to track the position of our hands. We got `HandTracking` component to help us.
2. The virtual object should be able to interact with the a position(in this tutorial, it’s position of our hands).

Let's start with adding `HandTracking` component.

### 5.1 Implementing Hand-Tracking Component

* First, create an empty GameObject (we already have done this before, try doing it again by yourself), and rename it to "Hand Tracking”.
* In the Inspector panel, click "Add Component", and type "Hand Tracking Manager” to search.
* Click on `HandTrackingManager` to add the component to the "Hand Tracking" GameObject.

<figure><img src="/files/dAg3ufeL41rbLJEnzezQ" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
It's worth noting the configurations within `HandTrackingManager`: we've opted for "Max Hand Count: One" and enabled "Hand Joint Visibility." The former indicates that we are currently tracking joints of one hand(not both), while the latter ensures that the tracked joints are visually displayed for reference.
{% endhint %}

However, this is not enough to enable Hand-Tracking capability since it requires access to the depth map. We need to enable the Lidar camera of our mobile to obtain the depth map.

To enable the Lidar camera, use a device that has a Lidar camera, and manually add `AROcclusionManager` to the main camera.

{% hint style="info" %}
The `AROcclusionManager` is a component for AR applications. It allows you to implement occlusion effects in the AR environment, meaning virtual objects can be occluded by real-world objects, enhancing the interaction and realism between the virtual and real environments.
{% endhint %}

* Find Object "HoloKit Camera" under Object "XR Origin", click "Add Component" and type: "AR Occlusion Manager", click on `AROcclusionManager` to apply it:

  <figure><img src="/files/6N77QTWOKKxBZVdA08LL" alt=""><figcaption><p>Add AR Occlusion Manager</p></figcaption></figure>

With the hand tracking feature now in place, if we proceed to build our app for a mobile device, we should observe the following outcomes:

<figure><img src="/files/VuTWMqpYqUlLFRkXm1wC" alt=""><figcaption></figcaption></figure>

### 5.2 Getting a Hand's Representation

As we observe, hand tracking feature aids us in monitoring all the joints of our palm. However, in our scenario, we don't require the entirety of information about each joint. Our objective is to determine a single position that roughly represents the hand's position.

First, let’s choose a Joint to represents the hand's position:

<figure><img src="/files/sCZzzw7MSNGGptIfAh4t" alt=""><figcaption><p>All Tracked Joints</p></figcaption></figure>

As the image shows, the joint MiddleMCP seems at the most center part of an opened palm. I’ll take this joint.

* Open the sub-hierarchy of the object `Hand Tracking Manager`, then open the sub-hierarchy of Object Hand 0. You’ll find object MiddleMCP and the other joint objects here.

Remember the location of MiddleMCP, as we'll utilize it later on.

## Section 6: Implementing Scene Manager

In Unity, a scene manager script is commonly used to centrally handle operations such as loading, switching, and unloading game scenes.

By customizing a scene manager script, you can gain more flexibility in controlling scene transitions, data communication between scenes, and handling some global logic, etc…

Today, we're focusing on the feature handling some global logic. With the scene manager we provided, `BuddhaSceneManager` , we'll take object "MiddleMCP" as a public parameter. This approach enables the Prefab Buddha, which will be generated at runtime, to easily locate and utilize its position.

* First , in the Hierarchy Window, right-click, create Empty Object, and rename it to "Scene Manager"
* Next , click “Add Component”, type in "Buddha Scene Manager", click on `BuddhaSceneManager` to apply it:

<figure><img src="/files/8rvq0bRVVWWMB2j6M7AA" alt=""><figcaption></figcaption></figure>

* To take object "MiddleMCP" as a public parameter. Drag the object “MiddleMCP” onto the blank field of `BuddhaSceneManager`:&#x20;

<figure><img src="/files/wQ0NPajTK6M1FHDEb1b1" alt=""><figcaption></figcaption></figure>

## Section 7: Integrating Background Music

In the realm of AR, visual elements often steal the spotlight, but there's an equally vital player that significantly shapes the immersive landscape: sound.

We also want a background music to enhance the whole experience. Let's add an `Audio Source` component to the object Scene Manager.

* Click on object Scene Manager to select it, click “Add Component”, type in “Audio Source”, click `AudioSource` to apply it:

<figure><img src="/files/CtxQrkjngrDRI1hnyGIq" alt=""><figcaption></figcaption></figure>

* Click the circle to the right of Audio Clip to select an audio file to play.
* In the search bar above, type "LightTexture," and click audio file "M\_LightTexture" to preview its sound.
* Double-click on this audio file to confirm your selection.

![](/files/Onqc7E0hTeIov4mChMTM)

We should also ensure to enable the "Loop" option to enable the song to play continuously. This is important because if the user's experience time surpasses the duration of the music, we wouldn't want the scene to become silent, correct?

<figure><img src="/files/4PWE0rtY9RN5Rn7hl6NL" alt=""><figcaption><p>Check Loop Option</p></figcaption></figure>

All set! Welcome to a world filled with sound!

## Section 8: Testing in Play Mode

Before build to your mobile, remember testing your app in the Play Mode, to ensure interactions and functionalities work as expected and check for any console errors.

The reasons for doing this are as follows:

1. **Testing in editor mode is quick.** With a single click, we can enter Play Mode, check if there are any errors in the Console Window, and verify if certain processes are meeting our expectations. If issues arise, it's easy to exit Play mode, make adjustments, and enter Play mode again. This allows for rapid iteration of our scene.
2. **Building the mobile app can be slow.** Building onto a mobile device and waiting for the app to open on the device can take several minutes (even longer for the first build or for large projects) before seeing the results.
3. **Multiple testing cycles speed up development.** When developing an MR(AR) application, it's recommended to conduct multiple testing cycles, involving both editor testing and building to the mobile device.

However, since the project of this course is small at size, we can do our first test towards the end. If your project is larger, be sure to conduct multiple tests during your development. Nobody wants to complete the entire application enthusiastically, only to enter Play mode and discover a multitude of error messages, right?

Let's enter Play Mode to check for errors and observe the effects in the Simulator Window:

* Click “Play” icon to enter Play Mode. Then, click on the screen in the Simulator Window to create the Prefab Buddha:

  <figure><img src="/files/9HpYAam6jwq8GtyWXSXU" alt=""><figcaption><p>You should observe a vibrant particle-style Buddha being created.</p></figcaption></figure>
* Try moving the position of the object “MiddleMCP" to get closer to the Buddha and observe the interaction effect:

<figure><img src="/files/TlZjrpHRMbPRz3il5JCO" alt=""><figcaption></figcaption></figure>

* Click “Play” icon again to exit Play Mode.

{% hint style="info" %}
Please remember that any modifications to objects and object hierarchy within the scene in Play Mode will not be saved.
{% endhint %}

And now we're ready to proceed with building the app and seeing the results on your mobile device!

## Section 9: Building Mobile Applications

1. Open Unity's top menu and navigate to File → Build Settings. You do not need to change any build settings for this project cause we already done this step for you:

   <figure><img src="/files/6i7Idenks0fic4FnZMXM" alt=""><figcaption><p>Open Build Settings</p></figcaption></figure>
2. Click on "Add Open Scene" to add the current scene to the list for building the app:

   <figure><img src="/files/icg3Buw6pTEBhhVHzfnh" alt=""><figcaption><p>Add Open Scene</p></figcaption></figure>
3. Click on "Build And Run". Ensure that your Xcode configuration is correct and that your iPhone is connected to the computer and is unlocked. Wait for the build to complete.

{% hint style="info" %}
The distinction between "Build" and "Build And Run":

* The "Build" button creates an Xcode project for you. After that, you need to manually open Xcode, load the project based on the file path, and click "Run" to build the mobile app.
* "Build And Run" combines the aforementioned steps, automatically opening Xcode and building the mobile app.
  {% endhint %}

After the build completes, the app will automatically open on your phone. Move your phone around, facing different surfaces (floor, walls), and tap the screen to create the Buddha. Try waving your hand near the Buddha to trigger the interactive effect.

## Section 10: Summary: **Embark on Your AR Journey!**

In this course, we've explored how to create awe-inspiring Augmented Reality (AR) applications using Unity and AR Foundation. We began by setting up our project and guided you through essential steps, from window layout and virtual object creation to gesture interactions, sound effects, hand-tracking and HoloKit integration. Along the way, you've learned how to manage scenes and enhance user experiences.

As part of your journey into AR, you've taken a solid step forward. With further exploration and practice, you can apply what you've learned to various scenarios, creating incredible AR experiences that captivate your audience. Thank you for participating in this course, and may you achieve more successes and innovations in the world of AR.

**Keep exploring and pushing boundaries. Best of luck on your journey!**

If you have any further questions, suggestions, or needs, please don't hesitate to reach out. I'm here to assist you

## Further Readings

#### VFX

[Unity Visual Effect Graph](https://unity.com/visual-effect-graph)


# Support

* Twitter: [@holokit](https://x.com/holokit)&#x20;
* Forum: <https://github.com/orgs/holokit/discussions>
* Github: h[ttps://github.com/holokit](https://github.com/holokit/)


# About us

\
HoloKit
-------

[HoloKit](https://holokit.io/) is an open-source Mixed Reality (MR) toolkit that turns your smartphone into an affordable optical see-through stereoscopic augmented reality wearable designed for spatial computing enthusiasts. It aims to be the Mixed Reality equivalent of *Arduino*, providing a cost-effective alternative to powerful yet expensive options like Vision Pro and HoloLens.

This toolkit is ideal for hackers, designers, and artists interested in hands-on spatial computing projects, such as integrating the *Internet of Things* with Mixed Reality, thanks to its open-source nature. It's also a boon for university students learning mixed reality development without a large budget, and researchers seeking to customize their setup and fully leverage ARKit for immersive, multiplayer experiences. Additionally, museums and exhibitions can leverage HoloKit to provide mixed reality experiences to large audiences, benefiting from its affordability and adaptability.

[![axon 1](https://private-user-images.githubusercontent.com/2534431/308750484-cbb9e00f-53f6-408c-85e2-01864af700b6.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTE1Nzc3NTgsIm5iZiI6MTcxMTU3NzQ1OCwicGF0aCI6Ii8yNTM0NDMxLzMwODc1MDQ4NC1jYmI5ZTAwZi01M2Y2LTQwOGMtODVlMi0wMTg2NGFmNzAwYjYuanBnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDMyNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDAzMjdUMjIxMDU4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZGY5NTFhMGRhMmNjMWU1YWNmY2RiYzc4MTNiNGQxYTljYzA3N2FiZjk5ZjNjN2M1MGRlN2QyYzE0ZTgyOGQyYyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.ieZ0V260XWRj8UYzFi8ospGmj7KEN_BBwVjtyZzhPKU)](https://private-user-images.githubusercontent.com/2534431/308750484-cbb9e00f-53f6-408c-85e2-01864af700b6.jpg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTE1Nzc3NTgsIm5iZiI6MTcxMTU3NzQ1OCwicGF0aCI6Ii8yNTM0NDMxLzMwODc1MDQ4NC1jYmI5ZTAwZi01M2Y2LTQwOGMtODVlMi0wMTg2NGFmNzAwYjYuanBnP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDMyNyUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDAzMjdUMjIxMDU4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ZGY5NTFhMGRhMmNjMWU1YWNmY2RiYzc4MTNiNGQxYTljYzA3N2FiZjk5ZjNjN2M1MGRlN2QyYzE0ZTgyOGQyYyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.ieZ0V260XWRj8UYzFi8ospGmj7KEN_BBwVjtyZzhPKU)

## HoloKit X

[HoloKit X](https://holokit.io/) is an optical see-through mixed reality headset, which was launched in 2022. It is an award-winning device, having received the Red Dot Design Award and the iF Design Award, and represents a premium-quality upgrade from our original invention, [HoloKit 1](https://1.holokit.io/) - a cardboard proof of concept released in 2017.

* 🥽 **Ingenious Invention**: We have released an optical see-through stereoscopic MR headset [HoloKit X](https://holokit.io/) in 2022, which is an award-winning premium-quality upgrade from our original periscope-shaped invention [HoloKit 1](https://1.holokit.io/), a cardboard proof of concept released in 2017.
* 📲 **Full AR Functionalities**: Without reinventing the wheel, our open-source, phone-based MR headset maximizes your smartphone's existing AR functionalities, such as [ARKit](https://developer.apple.com/documentation/arkit/arkit_in_ios), [6DOF Spatial Tracking](https://developer.apple.com/documentation/arkit/arworldtrackingconfiguration), [Hand Tracking](https://developer.apple.com/documentation/vision/detecting_hand_poses_with_vision), [Depth and Mesh by LiDAR](https://developer.apple.com/documentation/avfoundation/additional_data_capture/capturing_depth_using_the_lidar_camera), [Spatial Audio](https://developer.apple.com/documentation/arkit/), and [MultipeerConnectivity](https://developer.apple.com/documentation/multipeerconnectivity).
* 💲 **Accessible Immersion**: With a crystal-clear 60-degree FOV optics, experience a rich, immersive mixed reality that stands as a cost-effective alternative to 20-30x pricier options like [HoloLens](https://www.microsoft.com/en-us/hololens/buy) and [Magic Leap](https://www.magicleap.com/buy-now).
* 🎨 **For Creators by Creators**: Tailored for quick and efficient MR creative project execution, especially in multiplayer scenarios, HoloKit is the go-to tool for *MR researchers, educators, and creators*. See more [#MadeWithHolokit works](https://github.com/holoi/awesome-holokit) from our community.
* 🎖 **Award-winning**: Design of HoloKit X won [Red Dot Award 2023, Product Design](https://www.red-dot.org/project/holokit-x-64930) and [Core 77 Design Award 2023 Consumer Technology](https://designawards.core77.com/consumer-technology/122922/HoloKit-X-Accessible-AR-Copresence) and nominated for [Webby Award 2023](https://winners.webbyawards.com/2023/metaverse-immersive-virtual/metaverse-immersive-features/technical-achievement/249481/holokit-x--a-stereoscopic-ar-headset-for-iphone) and [SXSW Innovation Awards 2023](https://eon-media.com/insights/innovation-awards-at-sxsw-part-one/).

## About Team

HoloKit was invented by [Botao Amber Hu](https://botao.hu/) and is currently maintained as an open-source project by [Reality Design Lab](https://reality.design/).

[Reality Design Lab](https://reality.design/) is an interdisciplinary research and design lab focused on the intersection of spatial computing and programmable cryptography. Led by [Botao Amber Hu](https://botao.hu/), this lab prioritizes the development of embodied interactions within mixed reality and the realm of blockchain-substrated artificial life. Amber is not only a researcher and innovator in the field but also an accomplished designer and creative technologist who initiated Holo Interactive Inc., which operates the lab. His contributions have been showcased at prestigious events such as SIGGRAPH, WWW, CHI, SXSW, and TEDx, earning him recognition through numerous accolades like the CHI Best Interactivity, Red Dot Design Award, iF Design Award, Webby Awards, and Core77 Design Award. His academic background includes a Bachelor of Science in Computer Science from Tsinghua University and a Master's in Artificial Intelligence from Stanford University.

At the Lab, we boast a diverse team of mixed reality researchers, educators, and creators who are also the primary users of HoloKit. Our work transcends the boundaries of just hardware; we are actively engaged in exploring and forging new creative frontiers in mixed reality through the use of HoloKit. Our commitment to open-source principles for most of our groundbreaking work is driven by a desire to draw more individuals into the vast and ever-growing field of mixed reality.<br>


# Apply Evangelists for HoloKit


# Media Inquiry

The basic media information is listed on [Fact Sheet](/about/media-inquiry/fact-sheet).&#x20;

For media, if you want to

(1) try out the hardware demo in person;

(2) interview about our vision behind HoloKit, Stereoscopic AR, Realities and Realverse;

(3) see more cool things happening in our lab;

please contact:

<mark style="color:blue;"><pr@holoi.com></mark>


# Media Coverage

[**HoloKit X Media Coverage**](/about/media-inquiry/media-coverage/holokit-x-media-coverage)

[**HoloKit 1 Media Coverage**](/about/media-inquiry/media-coverage/holokit-1-media-coverage)


# HoloKit X Media Coverage

<figure><img src="/files/o4SO4tk5Wyz1Ya3bz28t" alt=""><figcaption></figcaption></figure>

{% embed url="<https://mixed-news.com/en/hands-on-with-an-iphone-powered-ar-headset/>" %}

{% embed url="<https://www.pocketgamer.biz/comment-and-opinion/81304/ar-comes-of-age-what-next-for-ar-and-mobile-gaming/>" %}

{% embed url="<https://www.cnet.com/tech/mobile/holokit-x-showed-me-how-an-iphone-can-turn-into-an-ar-headset-for-129/>" %}

{% embed url="<https://japan.cnet.com/article/35195837/?tag=as.rss>" %}

{% embed url="<https://www.stuff.tv/hot-stuff/holokit-x-turns-your-iphone-into-a-129-ar-headset/>" %}

{% embed url="<https://www.zdnet.com/article/glimpse-apples-ar-future-today-in-this-remarkable-iphone-powered-headset/>" %}

{% embed url="<https://www.wired.com/story/holokit-x-headset-iphone-ar/>" %}

{% embed url="<https://headtopics.com/us/the-holokit-x-headset-advances-hands-free-ar-on-iphones-31236432>" %}

{% embed url="<https://fossbytes.com/iphone-ar-headset-is-finally-here-but-it-is-not-from-apple-holokit-x/>" %}

{% embed url="<https://www.reviewgeek.com/135012/turn-your-iphone-into-an-ar-headset-instead-of-waiting-for-apple-to-do-it/>" %}

{% embed url="<https://mixed-news.com/en/holokit-x-turns-your-iphone-into-ar-headset/?amp=1>" %}

{% embed url="<https://techexec.com.au/?p=38871>" %}


# HoloKit 1 Media Coverage

<figure><img src="/files/iO3u0o1GKczyiyYVgKA2" alt=""><figcaption></figcaption></figure>

{% embed url="<https://techcrunch.com/2017/06/02/holokit-is-like-google-cardboard-for-augmented-reality/>" %}

{% embed url="<https://techcrunch.com/2017/06/10/how-augmented-reality-could-save-tech-from-itself/>" %}

{% embed url="<https://gizmodo.com/make-your-own-bootleg-hololens-with-the-cardboard-holok-1795784864>" %}

{% embed url="<https://www.gizmodo.com.au/2017/06/make-your-own-bootleg-hololens-with-the-cardboard-holokit/>" %}

{% embed url="<https://makerfaire.com/maker/entry/63461/>" %}

{% embed url="<https://docubase.mit.edu/tools/holokit/>" %}

{% embed url="<https://medium.com/syncedreview/sa-30-ar-headset-a0be5ed96299>" %}

{% embed url="<https://electronics360.globalspec.com/article/8891/video-diy-augmented-reality-headset-with-holokit>" %}

{% embed url="<https://smartniej.pl/ios/holokit-smartfonowe-gogle-do-ar/>" %}

{% embed url="<https://www.deccanchronicle.com/technology/gadgets/030617/holokit-is-similar-to-google-cardboard-for-augmented-reality.html>" %}

{% embed url="<https://thevrsoldier.com/holokit-is-a-google-cardboard-solution-for-augmented-reality-enthusiasts/>" %}

{% embed url="<https://www.gmw3.com/2017/06/holokit-for-low-cost-mixed-reality/>" %}

{% embed url="<https://www.america-retail.com/innovacion/innovacion-holokit-is-like-google-cardboard-for-augmented-reality/>" %}

{% embed url="<https://www.digitalbodies.net/augmented-reality/new-ar-headsets-from-cardboard-to-smartphone-holders/>" %}

{% embed url="<http://itsallahologram.blogspot.com/2019/01/holokit-for-mr-mixed-reality-like.html>" %}

{% embed url="<https://steemhunt.com/tag/minnowuprising/@sepone/holokit-open-source-mixed-reality-for-everyone>" %}

{% embed url="<https://www.schrankmonster.de/2019/09/12/homebrew-ar-holokit/>" %}

{% embed url="<https://www.youtube.com/watch?v=Wp21BynNl1k>" %}


# Fact Sheet

### The Company&#x20;

Holo Interactive, founded by Botao Amber Hu, is a pioneering reality computing lab and content studio specializing in mixed reality copresence. With a globally distributed team primarily located in NYC and Shenzhen, we are dedicated to discovering groundbreaking mixed reality copresence applications that merge face-to-face multiplayer Stereoscopic AR experiences with innovative hardware, software, design, smart contracts, gaming, and the arts.

Our vision is to make mixed reality copresence accessible to the mass consumer market. To achieve this, we have developed HoloKit, an entry-level mixed reality hardware solution, and MOFA, an engaging game designed to introduce the concept of mixed reality copresence. Together, these innovations are set to transform the way people connect and interact in the digital world, making mixed reality copresence experiences a reality for everyone.

### The Founder

Botao (Amber) Hu is a distinguished reality computing creative and new media artist. As the founder and CEO of Holo Interactive, he focuses on Mixed Reality Copresence, specifically colocated multiplayer AR. Amber's experience spans collaborations with prominent companies such as Twitter, DJI, Google, Microsoft, Pinterest, and thatgamecompany, showcasing expertise in artificial intelligence, mixed reality, virtual reality, machine learning, robotics, drone technology, LiDAR sensors, game development, and visual design.

Additionally, Amber established Amber Garage, a creative art and technology studio located in Silicon Valley. He graduated from the prestigious Tsinghua University with a degree in software engineering and received a master's degree in artificial intelligence from Stanford University. His works have been selected for SIGGRAPH, Red Dot Design Award, CHI, and the New Media Film Festival. Amber is also the inventor of HoloKit, an accessible AR headset facilitating mixed reality copresence experimentation. This innovative tool assists top universities, such as MIT Media Lab, NYU ITP, Stanford, and Harvard, in their mixed reality research.

![](/files/8zkZ6zEtly2BZeTLuMlU)

### The Product

HoloKit X, Holo Interactive's flagship product, is a groundbreaking iPhone accessory designed to bring mixed reality copresence to the mass market. This innovative stereoscopic augmented reality headset is specifically tailored for iPhone users, providing an immersive mixed reality copresence experience.

As the only accessory of its kind, HoloKit X harnesses the full potential of the iPhone's camera system, including the LiDAR scanner, and utilizes exclusive Apple-only technologies and APIs such as Hand Tracking, Spatial Audio, and Apple Neural Engine. Unlike competitors like HoloLens and Magic Leap, which can cost up to $3500, HoloKit X offers similar functionality at an affordable price of $129, making mixed reality copresence accessible to a wider audience.

HoloKit X enables users to enjoy live-action roleplaying copresence games in real life, like wizard dueling, dragon hunting, and ghost bustering. Additionally, developers can create their own mixed reality copresence experiences using HoloKit. It has already been adopted by numerous universities, museums, and local entertainment companies for various business and research applications, illustrating its potential to transform the way we interact and engage with the world around us.

<br>

![](/files/zMFAapmORFg4I2ixvP9A)


# About the Company

### Who is Holo Interactive / HoloKit?&#x20;

Holo Interactive is a new lab and company founded by Botao Amber Hu that both designs and builds hardware accessories to unlock new AR experiences – or realities. We combine technology and art to introduce the world to an immersive type of Augmented Reality, called Stereoscopic AR. Powered by the company’s lightweight, yet powerful iPhone accessory HoloKit X, we channel the best of today’s hardware technology to build AR apps and experiences that allows people to dream together in new realities.

### Is Holo Interactive a hardware company, a content studio, or both?&#x20;

Holo Interactive is both a hardware design company and a content studio. Using HoloKit X, which fully taps into the power of iPhone’s camera capabilities, the “killer apps” for AR have finally arrived.


# About the Product

### What is HoloKit X?&#x20;

HoloKit X is an iPhone accessory designed to bring Stereoscopic AR, and the experiences designed to showcase it, to the world at an affordable price point, with a simple, well-designed, and comfortable form factor. HoloKit X is the only augmented reality accessory in the world to harness the full power of the iPhone, activating the whole camera system and tapping into specific technologies and APIs that many developers have yet to tap into.

HoloKit X offers an immersive-hands free experience, unique in today’s largely handheld/2D AR world, giving users more freedom and ways to interact in space and within their new realities. HoloKit X was designed to be multi-modal and interactive with multiple control inputs at launch, and with more to come in the future – to make experiences hands free if needed but also include physical objects that can be manipulated by a user during a game or within a reality environment.

### What is stereoscopic AR tech?

Stereoscopic augmented reality, which is what the HoloKit X provides, is accomplished with a head-mounted device (usually with some sort of clear goggles/glasses over the eyes) that projects images into the “real world” which allows you to directly see through (optical see-through) from your eyes the AR experience.

### Why HoloKit X is only for iPhone？

iPhone has one of the most powerful bionic chips on the market, it provides substantial power to the “neural engine” and utilizes machine learning to process images and sound, which, given the complexities in rendering 3D imaging in AR spaces. iPhone’s LiDAR and ARKit also provided a strong support for immersive AR experience.

Check out Tech specs for specific iPhone models.

### **What is "Spectator View"?**

HoloKit X provides a “shared experience” which means people wearing a HoloKit X can share augmented reality. If you see and interact with a digital object in front of you, all the HoloKit app users around you will also see that in real-time too from their HoloKit app.&#x20;

###


# Awards

HoloKit X has been honored with a distinguished array of international awards, underscoring the exceptional quality of both its hardware and software solutions.&#x20;

<figure><img src="/files/0vyMQYk1YfU3BskAuwRU" alt=""><figcaption></figcaption></figure>

These notable accolades include:

Product and Design Awards:

* iF Design Award 2024, Produce/Gaming/VR/AR [→](https://ifdesign.com/en/winner-ranking/project/holokit-x-accessible-multiplayer-mixed-reality/624294)
* Core 77 Design Award 2023, Emerging Technology [→](https://www.core77.com/posts/123929/The-2023-Core77-Design-Awards-Emerging-Technologies-Honorees?utm_source=core77\&utm_medium=from_title#)
* Core 77 Design Award 2023, Consumer Technology [→](https://designawards.core77.com/consumer-technology/122922/HoloKit-X-Accessible-AR-Copresence)
* Red Dot Award 2023, Product Design [→](https://www.red-dot.org/project/holokit-x-64930)&#x20;
* Webby Awards 2023, Technical Achievement / Metaverse, Immersive & Virtual, Nominee [→](https://winners.webbyawards.com/2023/metaverse-immersive-virtual/metaverse-immersive-features/technical-achievement/249481/holokit-x--a-stereoscopic-ar-headset-for-iphone)[ ](https://winners.webbyawards.com/2023/metaverse-immersive-virtual/metaverse-immersive-features/technical-achievement/249481/holokit-x--a-stereoscopic-ar-headset-for-iphone)
* SXSW 2023, Nominee [→](https://eon-media.com/insights/innovation-awards-at-sxsw-part-one/)

Related Publications:

* Honorable Mention for Best IEEE ISMAR 2023 Demo Award [→](https://www.ismar.net/posts/ismar2023/)
* 2023 ACM SIGCHI, Jury's Choice for Best Interactivity Demo [→](https://dl.acm.org/doi/10.1145/3544549.3583935)


# Media Assets

###

### Before you download

Please read [Branding Guidelines](/about/media-assets/branding-guidelines)before you move on to download and use the HoloKit logo.

### Logo

<figure><img src="/files/20AH43SjJ1q2idcO62NS" alt=""><figcaption></figcaption></figure>

{% file src="/files/Dl18OSCCwdYkCYU0rlXJ" %}

###

### Product images

![](/files/ryzwZ3HKsCJK2NIRbfdW)

![](/files/wjks5KBBrrBDc3RrlkM3)

![](/files/CjEgtG2B0uAbkWEXbEx5)

![](/files/ER3v8W22rjObLFc7oOzw)

![](/files/i6FKoYSMVwYbDF6cYFk1)

![](/files/0wiawWSoTAz8LhXR5pYP)

![](/files/3BiSuzFe2Q7mqW82SDjZ)

![](/files/0faogn706vORjr2OIBA4)

{% file src="/files/jUD1OkisvKb9dmAFF2GC" %}

###

### **User scenario images**

![](/files/12FldicmJchTJkjwEeuX)

![](/files/LvOpWpvflmrhPVwZ9vHS)

![](/files/PaxpZGL8DjhYU5UJcC5f)

![](/files/DxUJZVe1MnHxooVaEErc)

![](/files/CJdGoW1rK9KLsPUfLwfG)

![](/files/C7YFKGvTsphwwBRwUcwx)

{% file src="/files/VIv8aqzV97HG2LOSosVX" %}

###

### Videos

These videos are downloadable on the Vimeo webpage. To download，

1. Click the "Share" icon on the upper right corner of the video；
2. Then click on the video address, and a Vimeo webpage will pop up;
3. In the Vimeo webpage, click the download button on the lower right side underneath the video.

HoloKit X Product

{% embed url="<https://vimeo.com/801220687/17d5194f02>" %}

HoloKit X On-street Live Reaction Interviews

{% embed url="<https://vimeo.com/763703952>" %}

Introduction to MOFA - Multiplayer AR Adventures

{% embed url="<https://vimeo.com/801373332>" %}

MOFA the Duel

{% embed url="<https://vimeo.com/holoi/mofatheduel>" %}

MOFA the Hunting

{% embed url="<https://vimeo.com/holoi/mofathehunting>" %}


# Branding Guidelines

[**Logo Guidelines**](/about/media-assets/branding-guidelines/logo-guidelines)

[**Logo for Partnership**](/about/media-assets/branding-guidelines/logo-for-partnership)

[**Slogan**](/about/media-assets/branding-guidelines/slogan)


# Logo Guidelines

#### HoloKit logo <a href="#holokit-logo" id="holokit-logo"></a>

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4CSfhrPEf8aWkzGVoBhZ%2Fuploads%2Fgit-blob-8262f6024647fb41e7787bb3cd2c02633c9d390f%2Fimage%20(4)%20(2)%20(1).png?alt=media" alt=""><figcaption></figcaption></figure>

#### App icon <a href="#app-icon" id="app-icon"></a>

​![](https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4CSfhrPEf8aWkzGVoBhZ%2Fuploads%2FmHRYSUyprLhk9IIGkITE%2FApp%20icon%20black.png?alt=media\&token=9b7f60ea-07fe-4ccc-9fee-876858a45051)​

#### Clear space <a href="#clear-space" id="clear-space"></a>

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4CSfhrPEf8aWkzGVoBhZ%2Fuploads%2Fgit-blob-1fec12fa1033a1b38643fb37a7da2ed396f76bdb%2Fimage%20(8)%20(2).png?alt=media" alt=""><figcaption></figcaption></figure>

#### Practices <a href="#practices" id="practices"></a>

* Do not change the color.

  <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4CSfhrPEf8aWkzGVoBhZ%2Fuploads%2Fgit-blob-e2103c926f5a679857b29668f5c49ddb8f5f0382%2Fimage%20(8).png?alt=media" alt=""><figcaption></figcaption></figure>
* Do not remove the kit.

  <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4CSfhrPEf8aWkzGVoBhZ%2Fuploads%2Fgit-blob-640f9bd8978a6f7c624d5f7b18726f53c9b318d7%2Fimage%20(36).png?alt=media" alt=""><figcaption></figcaption></figure>
* Do not outline.

  <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4CSfhrPEf8aWkzGVoBhZ%2Fuploads%2Fgit-blob-d19153b3c45bd37eef8d0de8dadf7371da84e68b%2Fimage%20(30).png?alt=media" alt=""><figcaption></figcaption></figure>
* Do not apply effect.

  <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4CSfhrPEf8aWkzGVoBhZ%2Fuploads%2Fgit-blob-ef5ff02454a4b384dea05202c29612387cee99b3%2Fimage%20(35).png?alt=media" alt=""><figcaption></figcaption></figure>
* Do not stretch or manipulate the logo.

  <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4CSfhrPEf8aWkzGVoBhZ%2Fuploads%2Fgit-blob-5b87ea2cb060f7762cdafb7e66a796e8e68cea9f%2Fimage%20(16).png?alt=media" alt=""><figcaption></figcaption></figure>
* Do not scale the kit icon independently.

  <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4CSfhrPEf8aWkzGVoBhZ%2Fuploads%2Fgit-blob-c3ae299d803f536e7299364dda68f6a7c3fad1af%2Fimage%20(18).png?alt=media" alt=""><figcaption></figcaption></figure>

#### &#x20;<a href="#partner-logo-pairing" id="partner-logo-pairing"></a>


# Logo for Partnership

#### Partnership

<figure><img src="/files/HRmFoIgPoUSGYyW0XEES" alt=""><figcaption></figcaption></figure>


# Slogan

#### A ~~kit~~ key to the Realverse

<figure><img src="/files/AeYctyKggH5TQipT9a5K" alt=""><figcaption></figcaption></figure>

#### DREAM TOGETHER IN NEW REALITIES

<figure><img src="/files/xWb9TbyNa4o1kO2NWHmm" alt=""><figcaption></figcaption></figure>


# Terms

[Use, Health & Safety Guideline](/legal/use-health-and-safety-guideline)

[Shipping and Return Policy](/legal/shipping-and-return-policy)

[Privacy Policy](/legal/privacy-policy)

[Terms of Service](/legal/terms-of-service)

####


# Use, Health & Safety Guideline

### About HoloKit X

HoloKit X (also referred to as HoloKit) is a head-mounted, stereoscopic augmented reality device that provides an immersive experience for a wide range of users.When you attach a compatible mobile device to the HoloKit, you can enjoy multimedia content and play games by launching apps on the mobile device. You can use the HoloKit with these compatible mobile devices and use it to interact with other external devices, such as a smart watch, a game controller or a Bluetooth headset.

### Before using the HoloKit headset

* Ensure that you have read the warnings below carefully before using the HoloKit to reduce the risk of personal injury, discomfort, or property damage. You should always follow these instructions and observe these precautions while using the HoloKit headset to reduce the risk of injury or discomfort.
* These Health and Safety warnings are periodically updated for accuracy and completeness. Check both [holokit.io](http://holokit.io) for the latest updated content.
* The HoloKit should not be used by children under the age of 13. Watching videos or playing games with the HoloKit may affect the visual development of children.
* When children, age 13 or older, use the HoloKit, adults should limit their usage time and ensure they take frequent breaks. Adults should monitor children closely after using the HoloKit if children feel discomfort.
* The HoloKit should be adjusted for each individual user, and calibrated by using the configuration software (if available) before starting a stereoscopic augmented reality experience. Failure to follow this instruction may increase the risk of discomfort.
* People who are prone to motion sickness in the real world also have a heightened risk of experiencing discomfort while using the HoloKit. Such individuals should take extra care to read and follow these warnings carefully.
* We recommend consulting with a doctor before using the HoloKit if you are pregnant, elderly, have psychiatric disorders, suffer from a heart condition, have pre-existing binocular vision abnormalities or suffer from a hear condition or other serious medical condition.
* Warning! Although eyeglasses can be worn inside HoloKit, they should be removed if the user experiences discomfort. If the discomfort continues and these glasses are not removed, this could cause facial injuries. If you have poor eyesight, we recommended wearing contact lenses when using the HoloKit.
* Note: Keep the lenses clean and protect them from getting scratched. If the lenses get dirty or steam up, clean them with the lens cleaning cloth. The foam cushioning may get dirty if your face is sweating while wearing the HoloKit. Doing so may deteriorate the quality of the foam cushioning. Ensure that you keep your face clean and dry when wearing the HoloKit.

### Health and safety warnings

* Do not wear this product without a phone attached.
* Make sure the HoloKit is level and secured comfortably on your head, and that you see a single, clear image. If you wear the HoloKit tilted to one side, you may feel discomfort.
* Use only in a safe environment. The HoloKit produces an immersive augmented reality experience that distracts you from and partially blocks your view of your actual surroundings. For the safest experience, always pay attention with your surroundings when using the HoloKit. Take special care to ensure that you are not near other people, objects, stairs, balconies, windows, furniture, or other items that you can bump into or knock down when using - or immediately after using the HoloKit headset. Do not handle sharp or otherwise dangerous objects while using the HoloKit. Never wear the HoloKit in situations that require attention, such as walking, bicycling, or driving.
* Ease into the use of the HoloKit to allow your body to adjust; use for only a few minutes at a time at first, and only increase the amount of time using the HoloKit gradually as you grow accustomed to augmented reality. Looking around when first entering augmented reality can help you adjust to any small differences between your real world movements and the resulting augmented reality experience.
* Take at least a 10 to 15 minute break every 30 minutes, even if you don't think you need it. Each person is different, so take more frequent and longer breaks if you feel discomfort. You should decide what works best.
* Do not use the HoloKit when you are tired, need sleep, are under the influence of alcohol or drugs, are hung-over, have digestive problems, are under emotional stress or anxiety, or when suffering from cold, flu, headaches, migraines, or earaches, as this can increase your susceptibility to adverse symptoms.
* Do not use the HoloKit if you have symptoms of squint, amblyopia, or anisometropia. Using the HoloKit may aggravate these symptoms.
* Do not use the HoloKit while in a moving vehicle such as a car, bus, or trains, as this can increase your susceptibility to adverse symptoms.
* Do not drive or operate a car, other vehicle, or heavy machinery while using or wearing the HoloKit headset.
* Due to the immersive nature of augmented reality, do not use the HoloKit with the sound at a high volume, so that you can maintain awareness of your surroundings and reduce the risk of hearing damage. Listening to sound at high volumes can cause irreparable damage to your hearing. Background noise, as well as continued exposure to high volume levels, can make sounds seem quieter than they actually are.
* Do not use the HoloKit when the attached mobile device is hot as this may cause burns. To prevent any injuries, take frequent breaks when using the HoloKit.

### Important warnings

* Radio Frequency Interference: The HoloKit headset together with the phone, can emit radio waves that can affect the operation of nearby electronics, including cardiac pacemakers. If you have a pacemaker or other implanted medical device, do not use the HoloKit without first consulting your doctor or the manufacturer of our medical device.\* Sunlight Damage: Do not leave the HoloKit in direct sunlight. Exposure to direct sunlight can damage the HoloKit and any attached mobile device. Exposure of the device's lens to direct sunlight may cause damage to your HoloKit and its surroundings and present a fire hazard

### Regarding discomfort

* Some people may have severe dizziness, seizures, epileptic seizures or blackouts triggered by light flashes or patterns, and this may occur while they are watching TV, playing video games or experiencing augmented reality, even if they have never had a seizure or blackout before or have no history of seizures or epilepsy. Such seizures are more common in children and young people under the age of 20. Anyone who has had a seizure, loss of awareness, or other symptom linked to an epileptic condition should consult with a doctor before using the HoloKit X.
* Immediately discontinue use if anyone using the HoloKit experiences any of the following symptoms: seizures; loss of awareness; eye strain; eye or muscle twitching; involuntary movements; altered, blurred, or double vision or other visual abnormalities; dizziness; disorientation; impaired balance; impaired handeye coordination; excessive sweating; increased salivation; nausea; lightheadedness; discomfort or pain in the head or eyes; drowsiness; fatigue; or any symptoms similar to motion sickness.
* Just as with the symptoms people can experience after they disembark a cruise ship, symptoms of augmented reality exposure can persist and become more apparent hours after use. These post-use symptoms can include the symptoms above, as well as excessive drowsiness and decreased ability to multi-task. These symptoms may put you at an increased risk of injury when engaging in normal activities in the real world. Anyone who has these symptoms should consult with a doctor immediately.
* Repetitive Stress Injury: Prolonged use can make your muscles, joints or skin hurt. If any part of your body becomes tired or score while playing, or if you feel symptoms such as tingling, numbness, burning or stiffness, stop and rest for several hours before playing again. If you continue to have any of the above symptoms or other discomfort during or after play, stop playing and consult a doctor.
* Do not drive, operate machinery, or engage in other visually or physically demanding activities that have potentially serious consequences (i.e., activities in which experiencing any symptoms could lead to death, personal injury, or damage to property), or other activities that require unimpaired balance and hand-eye coordination (such as playing sports or riding a bicycle, etc.) until you have fully recovered from any symptoms.
* Do not use the HoloKit until all symptoms have completely subsided for several hours. Make sure you have properly configured the HoloKit before resuming use.
* Be mindful of the type of content that you were using prior to the onset of any symptoms because you may be more prone to symptoms based upon the content being used.
* Consult with a doctor if you have serious and/or persistent symptoms.

### Care and maintenance

* Dust and dirt: Do not expose your device to dust, dirt, or sand.
* Cleaning solutions: Do not use harsh chemicals, cleaning solvents, or strong detergents to clean the device. Wipe it with a soft cloth slightly dampened in a mild soap-and-water solution. If the device has a retractable camera lens, do not use soap and water to clean the lens. Use a blower or brush or lens cleaning paper dampened in a lens cleaning solution.
* Shock or vibration: Do not drop, knock, or shake the mobile device. Rough handing can break internal circuit boards.
* Paint: Do not paint the mobile device. Paint can clog the mobile device’s moving parts or ventilation openings and prevent proper operation.
* Strap: Ensure that the strap is kept clean.

####


# Shipping and Return Policy

**Shipping**

We offer standard shipping for purchases within countries/regions including Australia, Austria, Belgium, Brazil, Canada, Chile, China, Czech Republic, Denmark, Finland, France, Germany, Greece, Hong Kong Special Administrative Region, Hungary, Indonesia, Ireland, Italy, Japan, Luxembourg, Macau Special Administrative Region, Malaysia, Mexico, Netherlands, New Zealand, Norway, Philippines, Poland, Portugal, Russia, Singapore, South Korea, Spain, Sweden, Switzerland, Turkey, Taiwan Region, Thailand, United Arab Emirates, United Kingdom, United States, and Vietnam.

For orders containing multiple items, we will ship the package once all items are ready.&#x20;

**Please make sure the full address, including country/region, province/state, city/area, street address, building, and apartment number, if applicable and Postal Code/ZIP code, is submitted when placing your order.**

For recipients in the **United States**, please provide the complete physical address in English. Please note: we cannot guarantee successful shipments to P.O. Boxes due to the lack of accessibility for carriers. Orders with a P.O. Box shipping address may be canceled. HoloKit online store is not responsible for any shipment loss, damage or failure when a P.O. Box is used as the shipping address.

For recipients in **Mainland China, Hong Kong, and Macao Special Administration Regions**, please provide the complete address in Chinese.

For recipients in **Taiwan Region**, please provide the complete address in Chinese along with the recipient(s)' ID number. Please also make sure that the recipient(s) are registered with and approved by EZ WAY.

For recipients in **Japan**, please provide the complete address in Japanese, including the 7-digit Postal Code, along with an 11-digit mobile phone number (starting with 050, 070, 080, or 090) or 10-digit phone number of the recipient (starting with 0).

For recipients in **South Korea**, please provide the complete address in Korean, including the 5-digit Postal Code, the recipient(s)' Personal Customs Clearance Code, and an 11-digit mobile phone number of the recipient (starting with 010).

For recipients in **Brazil**, please include the recipient(s)' personal customs number (CPF) in addition to the full address in English.

For recipients in **any other regions/countries**, please provide the complete address in English.

**Delivery time varies between different carriers and/or shipping destinations and will require additional time during holiday seasons.** Duties and taxes incurred at customs, if applicable, are the responsibility of the customer. HoloKit online store is not responsible for any duties or charges related to customs. Please double-check the recipient's address included in the order confirmation email. If you don't receive a confirmation email, which may show up in the Spam / Promotion folder of your email mailbox, after two hours, you might have provided a wrong email address.\
If you made a mistake when entering your shipping address/email address, please contact us as soon as possible, and we will do our best to accommodate your request. HoloKit online store will charge an additional shipping fee as needed. HoloKit online store is not responsible for incorrect shipping/email information. HoloKit online store does not refund shipping charges for packages that the recipient rejects.

If you have any questions regarding the Shipping policy or experiencing problems with your existing order, please refer to our FAQs page. Please get in touch with us if you need more help.&#x20;

**Return**

At Holokit, we are dedicated to providing our customers with the best possible service. Our products are shipped from Hong Kong and delivered internationally to each customer. Due to the optics features of HoloKit X and the complexity of global shipping, all sales are final, and we are unable to offer unnecessary returns or exchanges. Please read the product description and watch the video carefully before making a purchase. If you have any questions, you can contact us at <info@holokit.io> and we will be happy to assist you. To ensure the safe delivery of your goods, the shipping address and contact phone number provided should be accurate, and the phone and email must be kept clear. If delivery is unsuccessful, we will make every effort to contact you. Still, if we are unable to reach the receiver within 7 days or if the receiver do not respond to the email reminder, the goods will be destroyed by the carrier in accordance with international shipping requirements. Additionally, returns or exchanges will not be processed for purchase errors unrelated to the product's functionality or damage or scratches that occur during use.&#x20;

At Holokit, we are committed to ensuring that our customers are completely satisfied with their purchases. If you have any questions or concerns, please do not hesitate to contact us at <info@holokit.io>. We are always ready to help you.


# Privacy Policy

**Last updated October 20, 2022**

This privacy notice for Holo Interactive US, Inc. (doing business as Holo Interactive) ("**Holo Interactive**," "**we**," "**us**," or "**our**"), describes how and why we might collect, store, use, and/or share ("**process**") your information when you use our services ("**Services**"), such as when you:

▪ Visit our website at [https://holokit.io](https://holokit.io/), or any website of ours that links to this privacy notice

▪ Engage with us in other related ways, including any sales, marketing, or events

**Questions or concerns?** Reading this privacy notice will help you understand your privacy rights and choices. If you do not agree with our policies and practices, please do not use our Services. If you still have any questions or concerns, please contact us at <info@holoi.com>.

&#x20;

&#x20;

**1. WHAT INFORMATION DO WE COLLECT?**

&#x20;

**Personal information you disclose to us**

&#x20;

***In Short:** We collect personal information that you provide to us.*

&#x20;

We collect personal information that you voluntarily provide to us when you register on the Services, express an interest in obtaining information about us or our products and Services, when you participate in activities on the Services, or otherwise when you contact us.

&#x20;

&#x20;

**Personal Information Provided by You.** The personal information that we collect depends on the context of your interactions with us and the Services, the choices you make, and the products and features you use. The personal information we collect may include the following:

▪          names

▪          phone numbers

▪          email addresses

▪          usernames

▪          passwords

▪          contact preferences

▪          contact or authentication data

▪          billing addresses

▪          mailing addresses

&#x20;

**Sensitive Information.** We do not process sensitive information.

&#x20;

&#x20;

**Payment Data.** We may collect data necessary to process your payment if you make purchases, such as your payment instrument number, and the security code associated with your payment instrument. All payment data is stored by Shopify. You may find their privacy notice link(s) here: <https://www.shopify.com/legal/privacy>.

&#x20;

&#x20;

**Social Media Login Data.** We may provide you with the option to register with us using your existing social media account details, like your Facebook, Twitter, or other social media account. If you choose to register in this way, we will collect the information described in the section called "[HOW DO WE HANDLE YOUR SOCIAL LOGINS?](https://app.termly.io/builder/websites/34b18af5-8199-46c7-ba9a-4519b2eac171/documents/2309035/Privacy%20Policy%20Uses/Privacy%20Policy%20Uses#sociallogins)" below.

&#x20;

&#x20;

All personal information that you provide to us must be true, complete, and accurate, and you must notify us of any changes to such personal information.

&#x20;

&#x20;

**Information automatically collected**

&#x20;

***In Short:** Some information — such as your Internet Protocol (IP) address and/or browser and device characteristics — is collected automatically when you visit our Services.*

&#x20;

We automatically collect certain information when you visit, use, or navigate the Services. This information does not reveal your specific identity (like your name or contact information) but may include device and usage information, such as your IP address, browser and device characteristics, operating system, language preferences, referring URLs, device name, country, location, information about how and when you use our Services, and other technical information. This information is primarily needed to maintain the security and operation of our Services, and for our internal analytics and reporting purposes.

&#x20;

&#x20;

Like many businesses, we also collect information through cookies and similar technologies.

&#x20;

&#x20;

The information we collect includes:

▪          *Log and Usage Data.* Log and usage data is service-related, diagnostic, usage, and performance information our servers automatically collect when you access or use our Services and which we record in log files. Depending on how you interact with us, this log data may include your IP address, device information, browser type, and settings and information about your activity in the Services (such as the date/time stamps associated with your usage, pages and files viewed, searches, and other actions you take such as which features you use), device event information (such as system activity, error reports (sometimes called "crash dumps"), and hardware settings).

&#x20;

**2. HOW DO WE PROCESS YOUR INFORMATION?**

&#x20;

***In Short:** We process your information to provide, improve, and administer our Services, communicate with you, for security and fraud prevention, and to comply with law. We may also process your information for other purposes with your consent.*

&#x20;

**We process your personal information for a variety of reasons, depending on how you interact with our Services, including:**

▪          **To facilitate account creation and authentication and otherwise manage user accounts.** We may process your information so you can create and log in to your account, as well as keep your account in working order.

▪          **To deliver and facilitate delivery of services to the user.** We may process your information to provide you with the requested service.

▪          **To send administrative information to you.** We may process your information to send you details about our products and services, changes to our terms and policies, and other similar information.

▪          **To fulfill and manage your orders.** We may process your information to fulfill and manage your orders, payments, returns, and exchanges made through the Services.

▪          **To save or protect an individual's vital interest.** We may process your information when necessary to save or protect an individual’s vital interest, such as to prevent harm.

&#x20;

&#x20;

**3. WHAT LEGAL BASES DO WE RELY ON TO PROCESS YOUR INFORMATION?**

&#x20;

***In Short:** We only process your personal information when we believe it is necessary and we have a valid legal reason (i.e., legal basis) to do so under applicable law, like with your consent, to comply with laws, to provide you with services to enter into or fulfill our contractual obligations, to protect your rights, or to fulfill our legitimate business interests.*

&#x20;

***If you are located in the EU or UK, this section applies to you.***

&#x20;

The General Data Protection Regulation (GDPR) and UK GDPR require us to explain the valid legal bases we rely on in order to process your personal information. As such, we may rely on the following legal bases to process your personal information:

▪          **Consent.** We may process your information if you have given us permission (i.e., consent) to use your personal information for a specific purpose. You can withdraw your consent at any time.

▪          **Performance of a Contract.** We may process your personal information when we believe it is necessary to fulfill our contractual obligations to you, including providing our Services or at your request prior to entering into a contract with you.

▪          **Legal Obligations.** We may process your information where we believe it is necessary for compliance with our legal obligations, such as to cooperate with a law enforcement body or regulatory agency, exercise or defend our legal rights, or disclose your information as evidence in litigation in which we are involved.

▪          **Vital Interests.** We may process your information where we believe it is necessary to protect your vital interests or the vital interests of a third party, such as situations involving potential threats to the safety of any person.

&#x20;

&#x20;

***If you are located in Canada, this section applies to you.***

&#x20;

We may process your information if you have given us specific permission (i.e., express consent) to use your personal information for a specific purpose, or in situations where your permission can be inferred (i.e., implied consent). You can withdraw your consent at any time. &#x20;

&#x20;

In some exceptional cases, we may be legally permitted under applicable law to process your information without your consent, including, for example:

▪          If collection is clearly in the interests of an individual and consent cannot be obtained in a timely way

▪          For investigations and fraud detection and prevention

▪          For business transactions provided certain conditions are met

▪          If it is contained in a witness statement and the collection is necessary to assess, process, or settle an insurance claim

▪          For identifying injured, ill, or deceased persons and communicating with next of kin

▪          If we have reasonable grounds to believe an individual has been, is, or may be victim of financial abuse

▪          If it is reasonable to expect collection and use with consent would compromise the availability or the accuracy of the information and the collection is reasonable for purposes related to investigating a breach of an agreement or a contravention of the laws of Canada or a province

▪          If disclosure is required to comply with a subpoena, warrant, court order, or rules of the court relating to the production of records

▪          If it was produced by an individual in the course of their employment, business, or profession and the collection is consistent with the purposes for which the information was produced

▪          If the collection is solely for journalistic, artistic, or literary purposes

▪          If the information is publicly available and is specified by the regulations

&#x20;

&#x20;

**4. WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?**

&#x20;

***In Short:** We may share information in specific situations described in this section and/or with the following third parties.*

&#x20;

&#x20;

We may need to share your personal information in the following situations:

▪          **Business Transfers.** We may share or transfer your information in connection with, or during negotiations of, any merger, sale of company assets, financing, or acquisition of all or a portion of our business to another company.

▪          **Affiliates.** We may share your information with our affiliates, in which case we will require those affiliates to honor this privacy notice. Affiliates include our parent company and any subsidiaries, joint venture partners, or other companies that we control or that are under common control with us.

▪          **Business Partners.** We may share your information with our business partners to offer you certain products, services, or promotions.

&#x20;

&#x20;

**5. DO WE USE COOKIES AND OTHER TRACKING TECHNOLOGIES?**

&#x20;

***In Short:** We may use cookies and other tracking technologies to collect and store your information.*

&#x20;

We may use cookies and similar tracking technologies (like web beacons and pixels) to access or store information. Specific information about how we use such technologies and how you can refuse certain cookies is set out in our Cookie Notice.

When you visit our website, log in, register or open an email, cookies, ad beacons, and similar technologies may be used by our online data partners or vendors to associate these activities with information they or others have about you, including your email address. We (or service providers on our behalf) may then send communications and marketing to these email addresses. You may opt out of receiving this advertising by visiting <https://app.retention.com/optout>.

&#x20;

**6. HOW DO WE HANDLE YOUR SOCIAL LOGINS?**

&#x20;

***In Short:** If you choose to register or log in to our Services using a social media account, we may have access to certain information about you.*

&#x20;

Our Services offer you the ability to register and log in using your third-party social media account details (like your Facebook or Twitter logins). Where you choose to do this, we will receive certain profile information about you from your social media provider. The profile information we receive may vary depending on the social media provider concerned, but will often include your name, email address, friends list, and profile picture, as well as other information you choose to make public on such a social media platform.

&#x20;

We will use the information we receive only for the purposes that are described in this privacy notice or that are otherwise made clear to you on the relevant Services. Please note that we do not control, and are not responsible for, other uses of your personal information by your third-party social media provider. We recommend that you review their privacy notice to understand how they collect, use, and share your personal information, and how you can set your privacy preferences on their sites and apps.

&#x20;

**7. IS YOUR INFORMATION TRANSFERRED INTERNATIONALLY?**

&#x20;

***In Short:** We may transfer, store, and process your information in countries other than your own.*

&#x20;

Our servers are located in the United States. If you are accessing our Services from outside the United States, please be aware that your information may be transferred to, stored, and processed by us in our facilities and by those third parties with whom we may share your personal information (see "[WHEN AND WITH WHOM DO WE SHARE YOUR PERSONAL INFORMATION?](https://app.termly.io/builder/websites/34b18af5-8199-46c7-ba9a-4519b2eac171/documents/2309035/Privacy%20Policy%20Uses/Privacy%20Policy%20Uses#whoshare)" above), in and other countries.

&#x20;

If you are a resident in the European Economic Area (EEA) or United Kingdom (UK), then these countries may not necessarily have data protection laws or other similar laws as comprehensive as those in your country. However, we will take all necessary measures to protect your personal information in accordance with this privacy notice and applicable law.

&#x20;

**8. HOW LONG DO WE KEEP YOUR INFORMATION?**

&#x20;

***In Short:** We keep your information for as long as necessary to fulfill the purposes outlined in this privacy notice unless otherwise required by law.*

&#x20;

We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy notice, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements). No purpose in this notice will require us keeping your personal information for longer than the period of time in which users have an account with us.

&#x20;

When we have no ongoing legitimate business need to process your personal information, we will either delete or anonymize such information, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.

&#x20;

**9. HOW DO WE KEEP YOUR INFORMATION SAFE?**

&#x20;

***In Short:** We aim to protect your personal information through a system of organizational and technical security measures.*

&#x20;

We have implemented appropriate and reasonable technical and organizational security measures designed to protect the security of any personal information we process. However, despite our safeguards and efforts to secure your information, no electronic transmission over the Internet or information storage technology can be guaranteed to be 100% secure, so we cannot promise or guarantee that hackers, cybercriminals, or other unauthorized third parties will not be able to defeat our security and improperly collect, access, steal, or modify your information. Although we will do our best to protect your personal information, transmission of personal information to and from our Services is at your own risk. You should only access the Services within a secure environment.

&#x20;

**10. DO WE COLLECT INFORMATION FROM MINORS?**

&#x20;

***In Short:** We do not knowingly collect data from or market to children under 18 years of age.*

&#x20;

We do not knowingly solicit data from or market to children under 18 years of age. By using the Services, you represent that you are at least 18 or that you are the parent or guardian of such a minor and consent to such minor dependent’s use of the Services. If we learn that personal information from users less than 18 years of age has been collected, we will deactivate the account and take reasonable measures to promptly delete such data from our records. If you become aware of any data we may have collected from children under age 18, please contact us at \_\_\_\_\_\_\_\_\_\_.

&#x20;

**11. WHAT ARE YOUR PRIVACY RIGHTS?**

&#x20;

***In Short:** In some regions, such as the European Economic Area (EEA), United Kingdom (UK), and Canada, you have rights that allow you greater access to and control over your personal information. You may review, change, or terminate your account at any time.*

&#x20;

In some regions (like the EEA, UK, and Canada), you have certain rights under applicable data protection laws. These may include the right (i) to request access and obtain a copy of your personal information, (ii) to request rectification or erasure; (iii) to restrict the processing of your personal information; and (iv) if applicable, to data portability. In certain circumstances, you may also have the right to object to the processing of your personal information. You can make such a request by contacting us by <info@holoi.com>.

&#x20;

We will consider and act upon any request in accordance with applicable data protection laws.

&#x20;

If you are located in the EEA or UK and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: <https://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm>.

&#x20;

If you are located in Switzerland, the contact details for the data protection authorities are available here: <https://www.edoeb.admin.ch/edoeb/en/home.html>.

&#x20;

**Withdrawing your consent:** If we are relying on your consent to process your personal information, which may be express and/or implied consent depending on the applicable law, you have the right to withdraw your consent at any time. You can withdraw your consent at any time by contacting us by updating your preferences.

&#x20;

However, please note that this will not affect the lawfulness of the processing before its withdrawal nor, when applicable law allows, will it affect the processing of your personal information conducted in reliance on lawful processing grounds other than consent.

&#x20;

**Opting out of marketing and promotional communications:** You can unsubscribe from our marketing and promotional communications at any time by clicking on the unsubscribe link in the emails that we send. You will then be removed from the marketing lists. However, we may still communicate with you — for example, to send you service-related messages that are necessary for the administration and use of your account, to respond to service requests, or for other non-marketing purposes.

&#x20;

**Account Information**

&#x20;

If you would at any time like to review or change the information in your account or terminate your account, you can:

▪          Log in to your account settings and update your user account.

&#x20;

Upon your request to terminate your account, we will deactivate or delete your account and information from our active databases. However, we may retain some information in our files to prevent fraud, troubleshoot problems, assist with any investigations, enforce our legal terms and/or comply with applicable legal requirements.

&#x20;

**Cookies and similar technologies:** Most Web browsers are set to accept cookies by default. If you prefer, you can usually choose to set your browser to remove cookies and to reject cookies. If you choose to remove cookies or reject cookies, this could affect certain features or services of our Services.

&#x20;

**12. CONTROLS FOR DO-NOT-TRACK FEATURES**

&#x20;

Most web browsers and some mobile operating systems and mobile applications include a Do-Not-Track ("DNT") feature or setting you can activate to signal your privacy preference not to have data about your online browsing activities monitored and collected. At this stage no uniform technology standard for recognizing and implementing DNT signals has been finalized. As such, we do not currently respond to DNT browser signals or any other mechanism that automatically communicates your choice not to be tracked online. If a standard for online tracking is adopted that we must follow in the future, we will inform you about that practice in a revised version of this privacy notice.

&#x20;

**13. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS?**

&#x20;

***In Short:** Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.*

&#x20;

California Civil Code Section 1798.83, also known as the "Shine The Light" law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.

&#x20;

If you are under 18 years of age, reside in California, and have a registered account with Services, you have the right to request removal of unwanted data that you publicly post on the Services. To request removal of such data, please contact us using the contact information provided below and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Services, but please be aware that the data may not be completely or comprehensively removed from all our systems (e.g., backups, etc.).

&#x20;

**CCPA Privacy Notice**

&#x20;

The California Code of Regulations defines a "resident" as:

&#x20;

(1) every individual who is in the State of California for other than a temporary or transitory purpose and

(2) every individual who is domiciled in the State of California who is outside the State of California for a temporary or transitory purpose

&#x20;

All other individuals are defined as "non-residents."

&#x20;

If this definition of "resident" applies to you, we must adhere to certain rights and obligations regarding your personal information.

&#x20;

**What categories of personal information do we collect?**

&#x20;

We have collected the following categories of personal information in the past twelve (12) months:

&#x20;

| **Category**                                                                         | **Examples**                                                                                                                                                                                             | **Collected** |
| ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| A. Identifiers                                                                       | Contact details, such as real name, alias, postal address, telephone or mobile contact number, unique personal identifier, online identifier, Internet Protocol address, email address, and account name | YES           |
| B. Personal information categories listed in the California Customer Records statute | Name, contact information, education, employment, employment history, and financial information                                                                                                          | YES           |
| C. Protected classification characteristics under California or federal law          | Gender and date of birth                                                                                                                                                                                 | NO            |
| D. Commercial information                                                            | Transaction information, purchase history, financial details, and payment information                                                                                                                    | YES           |
| E. Biometric information                                                             | Fingerprints and voiceprints                                                                                                                                                                             | NO            |
| F. Internet or other similar network activity                                        | Browsing history, search history, online behavior, interest data, and interactions with our and other websites, applications, systems, and advertisements                                                | NO            |
| G. Geolocation data                                                                  | Device location                                                                                                                                                                                          | NO            |
| H. Audio, electronic, visual, thermal, olfactory, or similar information             | Images and audio, video or call recordings created in connection with our business activities                                                                                                            | NO            |
| I. Professional or employment-related information                                    | Business contact details in order to provide you our Services at a business level or job title, work history, and professional qualifications if you apply for a job with us                             | NO            |
| J. Education Information                                                             | Student records and directory information                                                                                                                                                                | NO            |
| K. Inferences drawn from other personal information                                  | Inferences drawn from any of the collected personal information listed above to create a profile or summary about, for example, an individual’s preferences and characteristics                          | NO            |

&#x20;

&#x20;

&#x20;

We may also collect other personal information outside of these categories through instances where you interact with us in person, online, or by phone or mail in the context of:

▪          Receiving help through our customer support channels;

&#x20;

▪          Participation in customer surveys or contests; and

&#x20;

▪          Facilitation in the delivery of our Services and to respond to your inquiries.

**How do we use and share your personal information?**

&#x20;

More information about our data collection and sharing practices can be found in this privacy notice.

&#x20;

You may contact us or by referring to the contact details at the bottom of this document.

&#x20;

If you are using an authorized agent to exercise your right to opt out we may deny a request if the authorized agent does not submit proof that they have been validly authorized to act on your behalf.

&#x20;

**Will your information be shared with anyone else?**

&#x20;

We may disclose your personal information with our service providers pursuant to a written contract between us and each service provider. Each service provider is a for-profit entity that processes the information on our behalf.

&#x20;

We may use your personal information for our own business purposes, such as for undertaking internal research for technological development and demonstration. This is not considered to be "selling" of your personal information.

&#x20;

Holo Interactive US, Inc. has not disclosed or sold any personal information to third parties for a business or commercial purpose in the preceding twelve (12) months. Holo Interactive US, Inc. will not sell personal information in the future belonging to website visitors, users, and other consumers.

&#x20;

**Your rights with respect to your personal data**

&#x20;

Right to request deletion of the data — Request to delete

&#x20;

You can ask for the deletion of your personal information. If you ask us to delete your personal information, we will respect your request and delete your personal information, subject to certain exceptions provided by law, such as (but not limited to) the exercise by another consumer of his or her right to free speech, our compliance requirements resulting from a legal obligation, or any processing that may be required to protect against illegal activities.

&#x20;

Right to be informed — Request to know

&#x20;

Depending on the circumstances, you have a right to know:

▪          whether we collect and use your personal information;

▪          the categories of personal information that we collect;

▪          the purposes for which the collected personal information is used;

▪          whether we sell your personal information to third parties;

▪          the categories of personal information that we sold or disclosed for a business purpose;

▪          the categories of third parties to whom the personal information was sold or disclosed for a business purpose; and

▪          the business or commercial purpose for collecting or selling personal information.

In accordance with applicable law, we are not obligated to provide or delete consumer information that is de-identified in response to a consumer request or to re-identify individual data to verify a consumer request.

&#x20;

Right to Non-Discrimination for the Exercise of a Consumer’s Privacy Rights

&#x20;

We will not discriminate against you if you exercise your privacy rights.

&#x20;

Verification process

&#x20;

Upon receiving your request, we will need to verify your identity to determine you are the same person about whom we have the information in our system. These verification efforts require us to ask you to provide information so that we can match it with information you have previously provided us. For instance, depending on the type of request you submit, we may ask you to provide certain information so that we can match the information you provide with the information we already have on file, or we may contact you through a communication method (e.g., phone or email) that you have previously provided to us. We may also use other verification methods as the circumstances dictate.

&#x20;

We will only use personal information provided in your request to verify your identity or authority to make the request. To the extent possible, we will avoid requesting additional information from you for the purposes of verification. However, if we cannot verify your identity from the information already maintained by us, we may request that you provide additional information for the purposes of verifying your identity and for security or fraud-prevention purposes. We will delete such additionally provided information as soon as we finish verifying you.

&#x20;

Other privacy rights

&#x20;

▪          You may object to the processing of your personal information.

▪          You may request correction of your personal data if it is incorrect or no longer relevant, or ask to restrict the processing of the information.

▪          You can designate an authorized agent to make a request under the CCPA on your behalf. We may deny a request from an authorized agent that does not submit proof that they have been validly authorized to act on your behalf in accordance with the CCPA.

▪          You may request to opt out from future selling of your personal information to third parties. Upon receiving an opt-out request, we will act upon the request as soon as feasibly possible, but no later than fifteen (15) days from the date of the request submission.

To exercise these rights, you can contact us or by referring to the contact details at the bottom of this document. If you have a complaint about how we handle your data, we would like to hear from you.

&#x20;

**14. DO WE MAKE UPDATES TO THIS NOTICE?**

&#x20;

***In Short:** Yes, we will update this notice as necessary to stay compliant with relevant laws.*

&#x20;

We may update this privacy notice from time to time. The updated version will be indicated by an updated "Revised" date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy notice, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy notice frequently to be informed of how we are protecting your information.

&#x20;

**15. HOW CAN YOU CONTACT US ABOUT THIS NOTICE?**

&#x20;

If you have questions or comments about this notice, you may email us at <info@holoi.com> or by post to:

&#x20;

Holo Interactive US, Inc.

2807 jackson ave, ste 09131, queens

NY, NY 11101

United States

&#x20;

**16. HOW CAN YOU REVIEW, UPDATE, OR DELETE THE DATA WE COLLECT FROM YOU?**

&#x20;

Based on the applicable laws of your country, you may have the right to request access to the personal information we collect from you, change that information, or delete it. To request to review, update, or delete your personal information, please email us at <info@holoi.com>


# Terms of Service

Thank you for using HoloKit, a product of Holo Interactive US, Inc., which comprises of the hardware HoloKit X(the "HoloKit X") and HoloKit software (the “Software”).By accessing or using HoloKit or any content made available on <https://holokit.io/> (the “Website”), you agree to be bound by these Terms. Any new features, tools or content which are added to the current HoloKit or the Website will also be subject to these Terms. If you do not agree to these Terms, you must not use HoloKit or access or use the Website.

### 1. **Limited License to Use the Services** <a href="#id-1.-limited-license-to-use-the-services" id="id-1.-limited-license-to-use-the-services"></a>

All use of any Website services, content, software and other applications, which link to these Terms, whether accessed directly or through a third party website or application (e.g., a social network or mobile application store) (individually or collectively referred to herein as the “Service(s)”), and the relationship between Holo Interactive, Inc and you, with respect to your use of the Service, is governed by this Agreement.Subject to your compliance with and acceptance of these Terms, you may use, copy, reproduce, transmit, modify, and distribute the Service (excluding the Software and SDK, which has their own terms and conditions) provided that you do not use the Service to derive a commercial benefit or financial gain (including making the Service, Software or SDK available to third parties for a fee). Further, you agree to be bound by any application, forum or software specific rules or license terms published within the Service. This Agreement is in addition to, and does not replace or supplant, any end user license agreement, SDK license agreement, or other software license agreement (collectively, “SLA”) that applies to any software or any other agreement or terms provided by Holo Interactive with respect to the Service or Website.Subject to your compliance with and acceptance of these Terms, you may also use the HoloKit X specifications, design, illustrations, drawings, images, particulars, dimensions, and other information on the Website or made available by Holo Interactive (“HoloKit X Documentation”), to assemble the HoloKit X and make derivative works of the HoloKit X, provided that you do not use the HoloKit X Documentation to derive a commercial benefit or financial gain (including distributing the HoloKit X or a derivative work of the HoloKit X for a fee or other valuable consideration, or charging a fee for using or accessing the HoloKit X Documentation).If you would like to use the Service (including the HoloKit X, the HoloKit X Documentation, and the Software) to derive a commercial benefit or financial gain, please contact <info@holoi.io> to obtain permission under a separate written agreement.By accessing and using the Service, you represent that, if you are a legal resident of the United States, you are at least thirteen (13) years old, or over the age of majority in the country where you are a citizen, and agree to these Terms, on behalf of yourself, or on the behalf of your child or legal ward. If you are between the ages of thirteen (13) and seventeen (17) years old, you represent that your parent or legal guardian has reviewed and agreed to these Terms.

### 2. **Other Notifications** <a href="#id-2.-other-notifications" id="id-2.-other-notifications"></a>

Holo Interactive has the right to obtain certain identification information about your computer and its operating system, including the identification numbers of your hard drives, central processing unit, IP addresses and operating systems, for identification purposes without any further notice to you.Holo Interactive may collect data relating to your usage of the Website in order to improve its Service and understanding of the users of the Website, Service or Software, without any further notice to you.You acknowledge that portions of the Website may contain additional terms and conditions for use of a particular Service or license of particular Software. You agree that you will read and agree to those terms and conditions, including any applicable SLA, before using any such Service or Software. In the event that any terms or conditions of an SLA conflict with these Terms, the terms of the SLA will prevail over these Terms.

### 3. **User Obligations** <a href="#id-3.-user-obligations" id="id-3.-user-obligations"></a>

You may not remove any copyright or attribution notice contained in the Content (defined below). If you are distributing, reproducing, transmitting, publicly performing or publicly displaying the Content pursuant to these Terms, you must clearly and visibly attribute and mark the Content with the words, “Product of HoloKit”. If you are using the HoloKit X Documentation to assemble and distribute the HoloKit X or derivative works of the HoloKit X pursuant to these Terms, you must clearly and visibly mark the HoloKit X or the derivative work of the HoloKit X with the words, “Work with HoloKit” or the HoloKit logo provided in the [Branding Guideline](https://app.gitbook.com/o/mR4uhYDvPFKgusOgXgy0/s/4CSfhrPEf8aWkzGVoBhZ/for-media/branding-guideline).


