MENU

ToF AR
Download

Table of Contents

1. ToF ARとは

ToF AR(Time of Flight Augmented Reality 以下、ToF ARと略します)はToFカメラの機能を核にアプリケーション開発の効率化をサポートするサブ機能を集めたUnity向けツールキットライブラリです。

1.1. ToF ARのシステム要件

1.1.1. ToF ARで開発を行ったアプリケーションの動作環境

ToF AR SDKが利用可能なSony, Samsung, Huawei, Honor, Appleのデバイスのリストについては、SDK対応端末モデル名リストを参照してください。

デバイス毎のカメラIDとデフォルト設定についても上記リストを参照してください。

1.1.2. ToF ARアプリケーション開発の実施に推奨するソフトウェアバージョン

  • Unity 2021.3.31f1, Unity 2022.3.11f1 (Unity 2020以上が必要です)
    Androidビルド、iOSビルドのセットアップを行ってください。

    Androidのセットアップ方法は下記リンクを参照してください。 Android 環境の設定
  • AR Foundation 4.2.8

  • ARCore Extensions for AR Foundation 1.40.0

1.2. ToF ARの3D座標系

ToF ARの3D座標系をカメラ座標系と呼びます。 カメラ座標系はToFカメラを原点とした左手座標系で単位はメートルです。

Illustration of the 3D coordinate system of ToF AR

1.3. Unityワールド座標系とToFカメラ映像座標系

Unityのワールド座標系は左手座標系です。

ToFカメラ映像座標系は端末の回転方向に依存した2次元座標系です。

Illustration of the ToF Image coordinate system for a device in portrait orientation
Illustration of the ToF Image coordinate system for a device in landscape left orientation

2. ToF ARの概要

2.1. システム構成図

ToF ARは、下記の2つで構成されています

  • ToF AR コンポーネントライブラリ : RGBカメラやToFカメラなどのハードウェアへアクセスし、アルゴリズム等を実装する為のライブラリです。

  • ToF AR Unityツールキット : ToF AR コンポーネントライブラリのUnity用ラッパーです。
    これらのうちアプリケーション開発者が直接利用するのはToF AR Unityツールキットです。

System diagram of ToF AR

2.2. コンポーネントとツールキット

ToF ARは、サブ機能を担う各コンポーネントに対して、各コンポーネントを管理するManager Prefabと、各コンポーネントの処理結果を表示する可視化Prefab (Visualization Prefab)をツールキットとして提供しています。コンポーネントの処理結果はストリームを介して、Manager Prefabを通して可視化Prefabやユーザーアプリケーションにわたります。これらの関係を下図に示しています。

System diagram showing ToF AR component streams and prefabs
  • ストリーム
    各コンポーネントで処理されたデータの転送を指します。転送されるデータは、DepthデータやColorデータ、Meshデータ、特徴点の座標データなどコンポーネント毎に異なります。また、複数のデータを含むこともあります。

  • Manager Prefab
    各コンポーネントと、その出力であるストリームへのアクセスを提供します。コンポーネントを利用する場合、対応するManager Prefabのシングルトンインスタンスを取得します。

  • 可視化 Prefab
    各コンポーネントのストリームから取得したデータの画面表示機能を提供します。

ToF AR ツールキットを用いる際、ColorManager PrefabかTofManager Prefabの何れかのインスタンス取得が必要です。取得が必要なインスタンスは、コンポーネントによって異なるため、ToF AR reference articlesのPrefab説明を確認する必要があります。Color / ToF コンポーネント以外のコンポーネントは、Color / ToF コンポーネントからのストリームを処理する事が理由です。

2.3. コンポーネントリスト

ToF ARは下記の機能を有するコンポーネントから構成されます。 ユーザーはそれぞれを単独または組み合わせて利用可能です。

Component Description Package

ToF

Depthデータ、Confidenceデータ, PointCloudデータ取得。 ToFコンポーネントを参照。

Base

Color

RGB Colorデータ取得。 Colorコンポーネントを参照。

Base

Mesh

3D Meshデータ取得。 Meshコンポーネントを参照。

Base

Plane

平面推定データ取得。 Planeコンポーネントを参照。

Base

Coordinate

Depthデータ、Colorデータ、3D座標空間の相互座標変換機能。 Coordinateコンポーネントを参照。

Base

Hand

手(指)位置推定データ取得。 Handコンポーネントを参照。

Base, Hand

MarkRecog

マーク認識。 MarkRecogコンポーネントを参照。

Base, Hand

Modeling

3Dモデリング。 Modelingコンポーネントを参照。

Base

Body

Body認識。 Bodyコンポーネントを参照。

Base

Segmentation

Segmentation認識。 Segmentationコンポーネントを参照。

Base

Face

Face認識。 Faceコンポーネントを参照。

Base

パッケージは、セットアップでインポートが必要なUnityパッケージです。

  • BaseTofAR_Base_xxxx_yyyy.unitypackage

  • HandTofAR_Hand_xxxx_yyyy.unitypackage

xxxxはバージョン番号、 yyyyはビルド対象のプラットフォームとなります

2.4. パッケージ構成

ToF ARのパッケージには下記のものが含まれます。 パッケージは任意の場所に展開し利用できます。

Screenshot of the ToF AR package file layout
Folder Description

01_UnityProject

ToF ARのUnityパッケージファイル

2.5. Unityパッケージ内フォルダ構成

ToF ARをUnityにセットアップした場合のフォルダ構成は下記のようになります。

Screenshot of the directory structure in Unity when ToF AR is set up
Folder Description

TofAr/TofArXXXX

コンポーネントごとのフォルダ。
基本構成は全てのコンポーネントで共通です。

TofAr/TofArXXXX/Plugins

ToF ARの動作に必要なバイナリファイル類。
削除や変更を行ってはいけません。

TofAr/TofArXXXX/V0/Resources

リソースファイル類。Prefabが格納されています。

TofAr/TofArXXXX/V0/Resources/xml

ToF ARの動作に必要な設定ファイル類。
削除や変更を行ってはいけません。

TofAr/TofArXXXX/V0/Scripts

スクリプトが格納されています。

3. セットアップ

ToF ARアプリケーション開発のセットアップを説明します。

3.1. ToF ARのセットアップとアップグレード

3.1.1. ToF ARのセットアップ

ToF AR Unityツールキットは下記手順でセットアップを行います。

  1. Unityで新規プロジェクトを作成します
    Unityプロジェクトは任意の場所を指定可能です

  2. メニューのFile / Build Settings…​ / Player Settings / Android Settings ボタンをクリックし、Other Settings内に下記設定を行います

    • Api Compatibility Level : .NET Framework ( Unity2020以前は .NET4.x ) または .Net Standard 2.1

    • Scripting Backend : IL2CPP

    • Target Architectures : ARM64のみチェックします

      Screenshot in Unity of Player Settings
  3. メニューのFile / Build Settings…​ / Player Settings / iOS Settings ボタンをクリックし、Other Settings内に下記設定を行います

    • Api Compatibility Level : .NET Framework ( Unity2020以前は .NET4.x ) または .Net Standard 2.1

    • Camera Usage Description : カメラの利用方法を説明する任意の文字列です

      Screenshot in Unity of Player Settings
  4. メニューのAssets / ImportPackage / Custom Package…を選択し、TofAR_Base_xxxx_yyyy.unitypackage (xxxxはバージョン番号, yyyyはビルド対象のプラットフォーム)をインポートします

    Screenshot in Unity of importing a custom package
  5. Handコンポーネントを使用する時は、TofAR_Hand_xxxx_yyyy.unitypackage (xxxxはバージョン番号, yyyyはビルド対象のプラットフォーム)も同じ手順でインポートします

  • ToF AR v1.4.0では、Unityパッケージファイルはビルド対象のプラットフォーム(Android iOS)ごとでそれぞれ基本コンポーネントとHandコンポーネントに分割されて提供されます。

  • Android iOS 共にビルド対象とする場合はそれぞれのUnityパッケージをインポートします。

  • また、Handコンポーネントを使用する場合は基本コンポーネントと合わせて両方のUnityパッケージをインポートします。

3.1.2. ToF ARのアップグレード

既存プロジェクトのToF AR Unityツールキットをアップグレードする場合、下記の手順にて行います。

  1. アップグレードするToF ARがサポートしているバージョンのUnityで既存プロジェクトを開きます。これまでと異なるバージョンのUnityで開いた場合はダイアログが表示されるのでContinue を選択します。

    Screenshot of Unity dialog box when an existing project is opened with a different version of Unity
  2. Projectビューの TofAr フォルダを削除します。

  3. メニューの Assets / ImportPackage / Custom Package… を選択し、TofAR_Base_xxxx_yyyy.unitypackage (xxxxはバージョン番号, yyyyはビルド対象のプラットフォーム)をインポートします。

  4. Handコンポーネントを使用する時は、TofAR_Hand_xxxx_yyyy.unitypackage (xxxxはバージョン番号, yyyyはビルド対象のプラットフォーム)も同じ手順でインポートします

  • ToF AR v1.4.0では、Unityパッケージファイルはビルド対象のプラットフォーム(Android iOS)ごとでそれぞれ基本コンポーネントとHandコンポーネントに分割されて提供されます。

  • Android iOS 共にビルド対象とする場合はそれぞれのUnityパッケージをインポートします。

  • また、Handコンポーネントを使用する場合は基本コンポーネントと合わせて両方のUnityパッケージをインポートします。

  • コンパイルエラーが発生する箇所があればコードを修正します。

3.2. AR Foundationのセットアップ

3.2.1. パッケージのインストール

Unity EditorのPackage Managerより下記パッケージをインストールします。

  • AR Foundation

  • ARCore XR Plugin (Android)

  • ARKit XR Plugin (iOS)

  • ARCore Extensions for AR Foundation

AR Foundationの詳細については、 AR Foundationスタートガイド を参照してください。

AR Foundation と ARCore XR Plugin のインストール

AR FoundationのプラグインとしてARCoreを使用する場合のインストール方法を以下に示します。

  1. Window / Package Manager メニューより、Package Managerウィンドウを開きます。

    Screenshot in Unity of Package Manager menu item
  2. Package Managerウィンドウの Packages: Unity Registry を選択します。

    Screenshot in Unity of Unity Registry menu item
  3. 表示されたパッケージのリストから AR Foundation を選択し、インストールします。

    Screenshot in Unity of installing AR Foundation from the package list
  4. 表示されたパッケージのリストから ARCore XR Plugin を選択し、インストールします。

    Screenshot in Unity of installing ARCore XR Plugin from the package list
ARCore Extensions for AR Foundation のインストール

ARCore Extensions for AR Foundationをインストールします。

  1. GoogleのGitHubなどから arcore-unity-extensions-x.x.x.tgz(x.x.xはパッケージのバージョン)を Google AR GitHub から入手します。

  2. Package Managerウィンドウの + ボタンから Add Package from tarball…​ を選択し、arcore-unity-extensions-x.x.x.tgz をインストールします。

    Screenshot in Unity of menu item to Add package from git URL…​

3.2.2. ARFoundationConnectorのインポート

  1. Assets-Import Package-Custom Package…​ メニューを選択し、TofAR.ThirdParty.ARFoundationConnector-vx.x.x.unitypackage(vx.x.xはパッケージのバージョン)を開くと、Import Unity Packageウィンドウが開きます。

  2. Import Unity Packageウィンドウの Import ボタンを選択し、パッケージをインポートします。

    Screenshot in Unity of the Import Unity Package window

ToF ARのセットアップも参照してください。

3.2.3. ARCoreの設定

AR FoundationのプラグインとしてARCoreを使用する場合、次の設定を行う必要があります。

  1. Assets/Plugins/Android/AndroidManifest.xmlapplication タグで android:extractNativeLibs="true" を設定します。

    Screenshot of code from the file AndroidManifest.xml

    AndroidManifest.xml が存在しない場合、ProjectSettings / Publishing Settings / BuildCustomMainManifest のチェックボックスをONにすることで、自動生成されます。

    Screenshot in Unity of build menu item to choose a CustomMainManifest

3.3. Android SDK Platform の API Level 31 以上に対応するためのビルド設定

3.3.1. Unity2021の場合

Gradle設定

Android SDK Platform の API Level 31 以上に対応するためにはGradle6.7.1以上を使用する必要があります。

  1. https://gradle.org/releases/ よりgradleをダウンロードし、インストールを行います。

  2. UnityのPreferences / External Tools にてインストールしたGradleのパスを指定します。

    Screenshot in Unity showing Preferences-External Tools
プロジェクト設定変更
  1. Player Settings / Publishing Settings / Custom Main ManifestPlayer Settings / Publishing Settings / Custom Base Gradle Template のチェックをオンにします。

    Screenshot in Unity showing Project Settings-Player
  2. Assets/Plugins/Android/AndroidManifest.xml ファイル内の<application>タグ配下に下記3つの<uses-native-library>タグを追加します。

    <uses-native-library
        android:name="libOpenCL.so"
        android:required="false" />
    <uses-native-library
        android:name="libOpenCL-car.so"
        android:required="false" />
    <uses-native-library
        android:name="libOpenCL-pixel.so"
        android:required="false" />
    Screenshot of AndroidManifest.xml code
  3. Assets/Plugins/Android/baseProjectTemplate.gradle ファイル内com.android.tools.build:gradle:のバージョンを4.2.0以上とします。

    Screenshot of baseProjectTemplate.gradle code
  4. Player Settings / Other Settings / Target API Levelを31以上に設定します。

    Screenshot in Unity of Target API Level setting in Project Settings-Player

3.3.2. Unity2022の場合

Gradle設定

Android SDK Platform の API Level 31 以上に対応するためにはGradle6.7.1以上を使用する必要があります。

  1. Preferences / External Tools にある Gradle Installed with Unity のチェックをオンにします。

    Screenshot in Unity showing Preferences-External Tools
プロジェクト設定変更
  1. Player Settings / Publishing Settings / Custom Main Manifest のチェックをオンにします。

    Screenshot in Unity showing Project Settings-Player
  2. Assets/Plugins/Android/AndroidManifest.xml ファイル内の<application>タグ配下に下記3つの<uses-native-library>タグを追加します。

    <uses-native-library
        android:name="libOpenCL.so"
        android:required="false" />
    <uses-native-library
        android:name="libOpenCL-car.so"
        android:required="false" />
    <uses-native-library
        android:name="libOpenCL-pixel.so"
        android:required="false" />
    Screenshot of AndroidManifest.xml code
  3. Player Settings / Other Settings / Target API Levelを31以上に設定します。

    Screenshot in Unity of Target API Level setting in Project Settings-Player

3.4. App Store アプリ申請時の TrueDepth API の除外方法

ToF AR を用いて作成したアプリで App Store にアプリ申請する際、「TrueDepth API を使用していなければ除去すべきである」という理由により申請が却下されるケースがあります。
これは、LiDAR センサーのみを使用して TrueDepth カメラを使用しない場合でも、ToF AR 内で TrueDepth API を使用しているために発生します。

この場合、下記方法によりTrueDepth API を使用している部分を削除して対応できます。

  1. Assets/TofAr/TofAr/Plugins/iOS フォルダ内の2つのファイルを削除します。

    • component_tofar_true_depth.framework

    • component_tofar_true_depth.framework.meta

    Screenshot of two files related to truedepth in Folder

4. ToF ARアプリケーション開発

  • ストリームデータアクセス
    ToF ARからはRGBカメラやToFカメラの映像データ、Meshの頂点情報といったRawレベルのストリームデータを取得できます。このストリームデータへのManagerクラスからのアクセスについて説明します。

  • ストリームデータの保存と再生
    ストリームデータのファイル保存方法と、ファイルからのストリームデータ再生方法を説明します。

  • AR Foundationの利用
    AR FoundationとToF ARの機能を同時利用する際の、設定方法とデバッグ方法を説明します。

  • TofARServerを用いたDebug
    TofARServerを用いた、Androidデバイスと接続してのデバッグ方法を説明します。

  • ToF ARデバイス設定
    ToF ARの標準的なToFカメラ設定(デバイスプロファイル)は自動で適用されますが、プロファイルを指定する事もできます。この指定方法を説明します。

  • ToFモード設定
    ToFカメラには、測距レンジの異なる複数のモードを切り替えることができるToFカメラがあります。このモード取得と設定について説明します。

4.1. ストリームデータアクセス

4.1.1. ストリームとチャンネル

各ManagerクラスにはToFカメラの映像データやMeshの頂点情報といったRawレベルのデータをスクリプト経由で取得できるインターフェイスが用意されています。 このデータの流れをストリームと呼びます。ストリームの中には1種類または複数の異なるデータが格納されることがあり、個々は異なるチャンネルに格納されています。 Managerとストリーム、チャンネルの関係は下記の図のようになっています。 例えばTofArTofManagerのストリームはDepthデータ、Confidenceデータ、PointCloudデータの3つのチャンネルを持ちます。

この構造は内部的なものであり、アプリケーション開発者は各チャンネルから自動更新されるManagerクラスの公開データフィールドを参照することで任意のタイミングで最新のデータを取得することができます。

ToF AR system diagram showing the relationships between Manager, Stream, and Channel

4.1.2. イベントドリブンなデータアクセス

Managerクラスには下記のイベントが用意されており、イベントハンドラを登録することでイベントドリブンにデータを扱う事ができます。

EventName Description

OnStreamStarted

ストリームが開始されました

OnStreamStopped

ストリームが停止しました

OnFrameArrived

新たなデータが発生しました

4.1.3. ユーザースクリプトからManagerへのアクセス

ManagerクラスはManager Prefabがシーンにインスタンス化されていれば、どのユーザースクリプトからもManagerクラスのInstanceフィールドより参照可能です。

TofArTofManagerの場合

var instance = TofArTofManager.Instance;

4.1.4. ストリームの開始と終了

Managerクラスには StartStream() メソッドと StopStream() メソッドが用意されており、任意のタイミングでストリームの開始と終了を行うことができます。

4.2. ストリームデータの保存と再生

4.2.1. ストリームデータの保存

パラメータを指定した RecordPropertySetProperty することで、ストリームデータをファイルに保存することができます。

RecordProperty入力パラメータ
Member Type Description

Enabled

bool

true : ファイル保存を行います false : ファイル保存を行いません

Path

string

ファイル保存先ディレクトリ名

Formats

Dictionary<long, string>

データフォーマット名リスト

BufferNum

int

バッファ数

サンプルコード
var recordProperty = new RecordProperty()
{
    Enabled = true,
    Path = recordingPath,
    BufferNum = 5
};
var channelInfo = TofArTofManager.Instance.GetProperty<ChannelInfoProperty>();

foreach (var channel in channelInfo.Channels)
{
    recordProperty.Formats[channel.Key] = "raw";
}

TofArTofManager.Instance.SetProperty(recordProperty);

4.2.2. ストリームデータの再生

TofArTofManager等のManagerクラスの StartPlayback(string path) メソッドをコールすることで、ファイルに保存されたストリームデータを再生することができます。
pathには保存データの格納されたディレクトリへのパスを指定します。

HandやMesh等ToFデータからデータ生成を行うコンポーネントは、TofArTofManagerで保存ファイルからのPlaybackを開始した後に StartPlayback() メソッドをコールすることでToFの再生データからリアルタイムにデータ生成を行い、ストリームデータとして使用することができます

サンプルコード
// playback from saved files.
TofArTofManager.Instance.StartPlayback(path);

// playback from playing Tof data.
TofArHandManager.Instance.StartPlayback();

4.3. AR Foundationの利用

4.3.1. ARFoundationConnector

ARFoundationConnectorを利用すると、Unityの提供する AR Foundation とToF ARの機能を同時利用することができます。
ARFoundationConnectorはAR Foundationが出力するDepthデータ、Colorデータ、Bodyデータを中継し、ToF ARへ入力する拡張機能です。

AR Foundation のセットアップ

こちらのAR Foundation のセットアップを参照してください。

ARFoundationConnectorの有効化
  1. TofAr.ThirdParty / ARFoundationConnector / Prefabs / ARFoundationConnector Prefabをシーンに配置します

  2. 配置した ARFoundationConnector オブジェクトの ARFoundationConnectorManager.autoStartoff に設定します

    Screenshot in Unity showing where to deselect Auto Start
  3. シーン内に ARFoundationConnector / AR Session Origin / AR Camera 以外のCameraが存在する場合は、そのカメラのTagを MainCamera 以外に設定します

  4. Project Settings / XR Plug-in Management で使用する ARKit Plug-inを有効化します

    Screenshot in Unity showing where to enable the ARKit plugin
Prefabs

下記の機能を有するPrefabが用意されています。

Prefab Description

ARFoundationConnectorManager

AR Foundationが出力するDepthデータ、Colorデータ等を中継し、ToF ARへ入力する アプリケーションはTofArTofManager、TofArColorManager等よりデータを取得することができます

ToggleARFoundationBodyUsage

AR FoundationのBody認識機能の有効性を切り替えることができるUIパーツ iOSでAR FoundationのBody認識機能を有効にするとAR Foundationの動作プロファイルがBodyTracking用のものに切り替わります

ToggleARFoundationFaceUsage

AR FoundationのFace認識機能の有効性を切り替えることができるUIパーツ AR FoundationのFace認識機能を有効にするとAR Foundationの動作プロファイルがFaceTracking用のものに切り替わります

4.3.2. AR Foundationを使用したアプリケーションのDebug

こちらのAR Foundationを使用したアプリケーションのDebugを参照してください。

4.4. TofARServerを用いたDebug

TofARServerをデバイス上で実行すると、ToFカメラから取得したデータを用いて、Unity Editor上で実行したアプリケーションのデバッグを行うことができます。

Unity Editor上で使用しているToF ARのバージョンとToF AR Serverで使用されているToF ARのバージョンは、同じバージョンにする必要があります。

4.4.1. TofARServerのセットアップ

環境設定

TofARServerをAndroidデバイス上で使用する場合、PCにインストールされたAndroid SDKのadb(Android Debug Bridge)コマンドを使用します。
TofARServerへの接続ができない場合はUnity Editorの Preference メニューの External Toolsを確認し下記設定を行います。

  1. Android SDK Tools Installed with Unity (recommended) をオフにします。

  2. SDK パス入力欄にインストール済みのAndroid SDKパスを指定します。

TofARServerのビルド、および接続設定
  1. ToF ARのパッケージに含まれる、TofAR_Server Unityプロジェクトをオープンし、ToF ARのセットアップを行います。
    セットアップは、ToF ARのセットアップを参照してください。また、BaseとHand両方のUnityパッケージが必要です。

    ToF ARのセットアップ前にプロジェクトを開くと、設定によってはセーフモードへの移行確認メッセージが表示されます。 セーフモードに移行した場合、セーフモードメニューなどからセーフモードを終了してインポートを行います。
  2. アプリケーションをビルドし、端末にインストールします。

  3. Unity Editorとデバイスの接続設定を行います。

    Screenshot in Unity showing where to configure device connection settings
    • 接続先のOS指定
      TofArManagerのInspectorで Debug Server Device で接続先のOSを指定します。
      接続先がAndroidの場合は、Play時に自動的に adb forward コマンドが実行され、接続のセットアップが行われます。

    • USB接続 / ネットワーク接続の切り替え
      TofArManagerのInspectorで Enable network debugging にチェックを入れ選択することで切り替えることができます。
      ネットワーク接続の場合は接続先のIPアドレスおよびポート番号を指定します。
      通信タイムアウト時間を Server Connection Timeout にミリ秒単位で指定することができます。

      設定変更を行った場合はUnity Editorの再起動が必要です。
  4. TofARServer画面上のポート番号をタップし、サーバー側受信ポートを変更します。

    設定変更を行った場合はTofARServerの再起動が必要です。
    Screenshot in Unity showing where to set the server-side receive port
Debug実行
  1. Unity Editorで Play を実行します。

4.4.2. AR Foundationを使用したアプリケーションのDebug

ARFoundationConnectorをTofARServerへインポートしてビルドすると、 Unity Editor上でAR Foundationが出力するデータを用いたアプリケーションを実行、デバッグを行うことができます。

TofARServerに対するARFoundationConnectorのセットアップ
  1. TofARServer Unityプロジェクトをオープンし、ToF ARとAR Foundation のセットアップを行います。

  2. ARFoundationConnector のセットアップを行います。

  3. /Assets/Samples/Scenes/Main.unity シーンをオープンします。

  4. /Assets/TofAr.ThirdParty/ARFoundationConnector/Prefabs/ARFoundationConnector をシーンに配置します。

  5. 配置した ARFoundationConnector オブジェクトの ARFoundationConnectorManager.autoStarton に設定します。

  6. 配置した ARFoundationConnector オブジェクトの Dont Destroy On Load (Script) のチェックを off (非アクティブ)に設定します。

    Screenshot in Unity showing where to set Auto Start on
  7. シーン内に ARFoundationConnector/AR Session Origin/AR Camera 以外のCameraが存在する場合は、そのカメラのTagを"MainCamera"以外に設定します。

  8. (iOSのみ) /Assets/TofAr.ThirdParty/ARFoundationConnector/Prefabs/ToggleARFoundationBodyUsage をシーンの DebugServerCanvas に配置します。

    ToggleARFoundationBodyUsage
    AR FoundationのBody認識機能の有効性を切り替えることができるUIパーツです
  9. (iOSのみ) 配置した ToggleARFoundationBodyUsage オブジェクトの ToggleARFoundationBodyUsage.ConnectorManager にシーン内の ARFoundationConnector オブジェクトを指定します。

    image
  10. /Assets/TofAr.ThirdParty/ARFoundationConnector/Prefabs/ToggleARFoundationFaceUsage をシーンの DebugServerCanvas に配置します。

    ToggleARFoundationFaceUsage
    AR FoundationのFace認識機能の有効性を切り替えることができるUIパーツです
  11. 配置した ToggleARFoundationFaceUsage オブジェクトの ToggleARFoundationFaceUsage.ConnectorManager にシーン内の ARFoundationConnector オブジェクトを指定します。

    image
  12. (iOSのみ) Unity Package Manager で ARKit Face Tracking パッケージをインストールします。バージョンはARKit XR Pluginと同じとします。

  13. Project Settings / XR Plug-in Management で使用するPlug-inを有効化します。

  14. (iOSのみ) Project Settings / XR Plug-in Management / ARKitFaceTracking を有効化します。

  15. アプリケーションをビルドし、端末にインストールします。

Debug実行を行う時は、Unity Editorで Play を実行する前に、本手順で追加したTofARServer画面上の ToggleARFoundation を切り替える必要があります。

4.5. ToF ARデバイスプロファイル設定

4.5.1. ToF ARデバイス設定

ToF ARはToFカメラ固有の設定をデバイス内の設定ファイルで定義しています。 標準的な設定は自動的に適用されますが、特殊な設定を行いたい場合は下記手順で設定ファイルをデバイスに書き込むことができます。

  1. デバイスをPCにUSB接続する。端末はUSBデバッグが可能な状態である必要があります。

  2. UnityでToF ARを利用するプロジェクトを開きます。

  3. TofArManagerInspector を開きます。

  4. Device Profile に適切な設定ファイルを設定します。

    Screenshot in Unity showing the list of device profiles and the menu item Push to Device
    設定ファイルはUnityプロジェクト内の TofAr\TofAr\V0\Resources\DeviceProfiles フォルダに格納されています。
  5. Push to Device ボタンをクリックします。

4.6. ToFモード設定

4.6.1. ToFモード設定

ToFカメラは複数のモードを持つことがあり、それらはTofArTofManagerクラスのプロパティから取得/設定変更を行うことができます。

4.6.2. ToFモードリスト取得

ToFモードリストは、CameraConfigurationsPropertyを GetProperty() することにより取得できます。 bufferSize はToFカメラにより必要なサイズが異なりますが、8192程度を指定することを推奨します。

ex)
var configurations = TofArTofManager.Instance.GetProperty(new CameraConfigurationsProperty(), 8192);

4.6.3. ToFモード変更

ToFモードは、事前に取得したToFモード情報に含まれるuidをSetConfigurationIdProperty.uidに設定し、 SetProperty() することで変更できます。

ex)
TofArTofManager.Instance.SetProperty(new SetConfigurationIdProperty() \{ uid = TargetUID });

5. チュートリアル

この章では、ToF ARを使った以下のチュートリアルについて記載します。

本チュートリアルでは、アプリケーションの作成にUnity 2021.3.31f1を使用しています。
異なるUnityのバージョンを使用する場合は、Unity Editor上の表示など、若干の違いがあることに注意してください。

  • Depth映像の表示
    ToF AR Unityツールキットを使ったDepth映像表示アプリケーションの作成を通して、アプリケーションの実装からデバッグ迄の一連の流れを説明します。

  • AR Foundation(ARCore)の平面検出とToF ARの手認識を使ったアプリケーション
    このチュートリアルでは、AR Foundationで検出した平面上にCubeを置き、そのCubeをToF ARのHandで操作するアプリケーションを作成します。 このアプリケーション作成を通して、AR Foundation(ARCore)とToF ARの機能の同時利用に必要な、ARFoundationConnectorを使った実装方法を説明します。

  • PointCloudデータをParticle Systemを使って表示するアプリケーション
    Unityに備わっている機能であるParticle Systemを利用して、ToF ARで取得したPointCloudデータを表示するアプリケーションを作成する手順を説明します。
    このチュートリアルでは、ToF ARデータやTofAR_Samples_Basicで提供されているツールバーの使用法について学ぶことが出来ます。

5.1. Depth映像の表示

ToF AR Unityツールキットには、アプリケーションを効率良く開発できるPrefabが用意されています。
これらのPrefabを組み合わせることにより、ToFカメラの基本的な機能を使ったアプリケーションを、比較的簡単に作成することが可能です。

このチュートリアルでは、一例として、ToF AR Unityツールキットを使って、ToFカメラのDepth映像を画面に表示するアプリケーションを作成する手順を示します。

この手順の中で、ToF ARアプリケーションの作成からデバッグまでの一連の流れを説明します。

  • アプリケーションの作成
    ToF ARのManager Prefabの基本的な使い方

  • デバイスでのアプリ実行
    端末でのToF ARアプリの動作確認の方法

  • アプリケーションのデバッグ
    端末を用いた、Unity Editor上のToF ARアプリケーションデバッグの方法

5.1.1. アプリケーションの作成

Unity Editor上でアプリケーションを作成します。

準備

ToF ARのセットアップを参照して、ToF ARのパッケージはUnityプロジェクトにセットアップ済みとします。

Handコンポーネントは本チュートリアルでは使用しないため、Handコンポーネントパッケージのインポートは不要です。
手順
TofArManagerとTofArTofManagerのインスタンス化

TofArManagerはToF ARで共通に使われる機能を提供するクラスで、Prefabとして定義されています。 これはToF ARを利用するアプリケーションに必ず必要となります。

TofArTofManagerはデバイスとの接続を管理するクラスで、Prefabとして定義されています。 これは、ToFカメラからのデータ(DepthデータやConfidenceデータなど)を取得します。

  1. Projectウィンドウの TofAr/TofAr/TofArManager をHierarchyウィンドウへドロップします。

    image
  2. Projectウィンドウの TofAr/TofArTof/TofArTofManager をHierarchyへドロップします。

    image
TofArTofManagerのプロパティ設定

アプリケーションを起動した時に、自動でToFカメラのデータ取得を開始するように設定します。

  1. HierarcyウィンドウでTofArTofManagerを選択します。

  2. InspectorウィンドウでAuto Startプロパティをチェックします。

    image
取得したデータの可視化設定

取得したデータを表示するために、DepthViewRawImage をインスタンス化します。
DepthViewRawImage は、Depthデータを自動的に表示してくれるクラスで、Prefabとして定義されています。 シーンに配置すると、シングルトンであるTofArTofManagerのインスタンスのストリームにアクセスしてDepthデータを取得し、TofArTofManagerのストリーム開始/終了に自動連携し表示を行います。

  1. HierarchyウィンドウのCreateメニューからUI / Panelを選択します。 Panelがインスタンス化され、Canvasの下に配置されます。

    image
  2. HierarchyウィンドウでPanelを選択します。

  3. InspectorウィンドウのRect TransformAnchor Presetsで、Panel が全画面を覆うように設定します。 デフォルトでは全画面表示に設定されています。

  4. Projectウィンドウの TofAr/TofArTof/V0/Resources/Prefabs/DepthViewRawImage を、HierarchyウィンドウのPanel上にドロップします。 これにより、DepthViewRawImageはPanelの子オブジェクトとして追加されます。

    image
  5. HierarchyウィンドウでDepthViewRawImageを選択します。

    image
  6. InspectorウィンドウのRect Transformなどを使って、画像の表示レイアウトを適宜修正します。

5.1.2. アプリケーションの実行

作成したアプリケーションをターゲットとなるデバイスで実行可能な形式にビルドします。
その実行ファイルをデバイス上にインストールし実行します。

準備

開発用のPCと対象となるデバイスをUSBで接続します。

手順
アプリケーションを実行するデバイスの選択
  1. File / Build Settings… メニューよりビルド設定画面を開きます。

  2. アプリケーションを実行するデバイスのプラットフォーム(OS) として、AndroidまたはiOSを選択しSwitch Platformボタンをクリックします。

    image
アプリケーションパッケージの設定
  1. Player Settings…をクリックします。

  2. Inspectorに表示されたPlayerSettings上で、Package Nameなど任意の設定を行います。

    image
アプリケーションの実行
  1. Build And Runボタンをクリックする。 アプリケーションのビルドとデバイスへのインストールが行われます。

    この時、Androidではアプリが直接デバイスにインストールされますが、iOSではXcodeプロジェクトが出力されるので、Xcodeでアプリの署名設定などを行った後、Build And Runボタンをクリックし実行します。

    image
  2. インストール後、デバイス上でアプリケーションが実行されます。

    image

5.1.3. アプリケーションのデバッグ

ToF ARはPC(Windows 10 / macOS 11)とデバイスをUSBまたはネットワーク接続することにより、Unity Editor上でアプリケーションを実行し、デバッグを行うことが出来ます。
この時、ビルドを実施する必要はありません。

ここでは、Androidデバイス用のアプリケーションのデバッグ設定について記述します。
image
準備

開発用のPCと対象となるデバイスをUSBで接続し、デバイスがUSBデバッグ可能な設定になっていることを確認してください。

環境設定

TofARServerをAndroidデバイス上で使用する場合、PCにインストールされたAndroid SDKの adb (Android Debug Bridge)コマンドを使用します。
TofARServerへの接続ができない場合はUnity EditorのPreferenceメニューのExternal Toolsを確認し下記設定を行います。

  1. Android SDK Tools Installed with Unity (recommended)をオフにします。

  2. SDKパス入力欄にインストール済みのAndroid SDKパスを指定します。

接続設定
  1. TofArManagerのInspectorで、Unity Editorとデバイスの接続設定を行います。(以下、例)

    image
    • TofArManagerのInspectorでDebug Server Deviceで接続先のOSを指定します。
      接続先がAndroidの場合は、Play時に自動的に adb forward コマンドが実行され、接続のセットアップが行われます。

    • TofArManagerのInspectorでEnable network debuggingを選択、または非選択することで、ネットワーク接続とUSB接続を切り替えることができます。

    • ネットワーク接続の場合は接続先のIPアドレスおよびポート番号を指定します。

    • 通信タイムアウト時間をServer Connection Timeoutにミリ秒単位で指定することができます。

      設定変更を行った場合はUnity Editorの再起動が必要です。
  2. TofARServer画面上で、サーバー側の受信ポート番号をタップし、編集を行います。

    設定変更を行った場合はTofARServerの再起動が必要です。
    image
手順
Unity Editor上でのデバッグ
  • Unity EditorでPlayを実行します。

デバイス上で実行されているTofARServerのストリームとUnity Editor上で実行しているアプリケーションのストリームが繋がることにより、アプリケーションが画像データを取得出来ます。
これにより、デバイスからデータを取得しながら、デバッグすることが可能となります。

5.2. AR Foundation(ARCore)の平面検出とToF ARの手認識を使ったアプリケーション

ARFoundationConnectorを利用して、Unityの提供するAR FoundationとToF ARの機能を同時に利用したアプリケーションを開発することが出来ます。

このチュートリアルでは、一例として、以下の機能を実現する、Android上で動作するアプリケーションを作成する手順を示します。

  • AR Foundationの機能を使って平面検出を行い、画面に検出平面を表示します。

  • 表示された検出平面を画面上でタッチした位置にCubeを表示します。

  • ToF ARの機能を使って、画面に映った手を認識し、skeleton handを表示します。

  • 平面上に配置されたCubeをskeleton handで触り、倒したり、位置を動かすことが出来ます。

5.2.1. ビルドの設定

アプリケーションをビルドするための環境を設定します。

準備

ToF ARのパッケージをUnityプロジェクトにセットアップ済みとしてください。ToF ARのセットアップを参照してください。

AR FoundationのパッケージをUnityプロジェクトにセットアップ済みとしてください。AR Foundationのセットアップを参照してください。

手順
アプリケーションを実行するデバイスの選択
  1. File / Build Settings…​ メニューよりビルド設定画面を開きます。

  2. アプリケーションを実行するデバイスのPlatform(OS)を選択します。このチュートリアルでは、Androidを選択し、Switch Platformボタンを選択します。

    image
ビルド設定
  1. ビルド設定画面のPlayer Settings…​を選択します。

  2. Project SettingsウィンドウのPlayer設定で以下の設定を行います。

  3. Other Settings / Graphics APIsVulkanが表示されていた場合、Vulkanを選択し、- ボタンで削除します。

    ARCoreがVulkanに対応していないためです。
    image
  1. Other Settings / Identification / Minimum API Levelを"Android 7.0"以上に設定します。

    image
  2. Other Settings / Configuration / Scripting Backendを"IL2CPP"に設定します。

  3. Other Settings / Configuration / API Compatibility Levelを".NET 4.x"に設定します。

  4. Other Settings / Configuration / Target Architecturesを"ARM64"に設定します。

    image
  5. Publishing Settings / Build / Custom Main Manifestにチェックを入れます。
    これにより Assets\Plugins\Android\AndroidManifest.xml ファイルが作成されます。

  6. 作成された AndroidManifest.xml ファイルの <application> タグ内で、attributeとして android:extractNativeLibs="true" を設定します。

    image
  7. Project SettingsウィンドウのXR Plug-in Management設定でARCoreを有効にします。

    image

5.2.2. アプリケーションの作成

Unity Editor上で、AR Foundation、およびToF ARを用いたアプリケーションを作成します。

このチュートリアルの ARFoundationConnectorを利用したAR Foundation Prefabとスクリプトの配置 以下の部分では、AR FoundationとToF ARの同時利用について説明しています。 ARFoundationConnectorのAR Session Originの下に、AR Foundation Prefabやスクリプトを配置する事で、AR FoundationとToF ARの機能を同時に利用できます。

準備

AR Foundation、ARCore、およびToF ARに関連するソフトウェアは、Unityプロジェクトにセットアップ済みとしてください。

手順
ToF AR Manager Prefabの配置
TofArManagerのインスタンス化

TofArManagerは、ToF ARで共通に使われる機能を提供するクラスで、Prefabとして定義されています。
これはToF ARを利用するアプリケーションに必ず必要となります。

  1. Projectウィンドウの TofAr/TofAr/TofArManager をHierarchyウィンドウのシーン上へ配置します。

    image
本アプリケーションで利用するToF AR Manager Prefabのインスタンス化
  1. Projectウィンドウの TofAr/TofArTof/TofArTofManager をHierarchyウィンドウのシーン上へ配置します。TofArTofManagerは、デバイスとの接続を管理するクラスです。

  2. Projectウィンドウの TofAr/TofArColor/TofArColorManager をHierarchyウィンドウのシーン上へ配置します。TofArColorManagerは、RGBカメラとの接続を管理するクラスです。

  3. Projectウィンドウの TofAr/TofArHand/TofArHandManager をHierarchyウィンドウのシーン上へ配置します。TofArHandManagerは、Tof AR Handコンポーネントとの接続を管理するクラスです。

    image
ARFoundationConnectorを利用したAR Foundation Prefabとスクリプトの配置
ARFoundationConnectorのインスタンス化

Unityの提供するAR FoundationとToF ARの機能を同時に利用するために、ARFoundationConnectorを利用します。

  1. Projectウィンドウの TofAr.ThirdParty/ARFoundationConnector/Prefabs/ARFoundationConnector をHierarchyウィンドウのシーン上へ配置します。

    image
  2. 配置したARFoundationConnectorのInspectorウィンドウ上でARFoundationConnectorManagerのAuto Startをoffに設定します。

    image
  3. ARFoundationConnectorはAR Cameraを持っているので、Hierarchyウィンドウのシーン上からMain Cameraを削除します。

AR Session OriginへのAR Plane Managerコンポーネントの追加

ARFoundationConnector配下にあるAR Session OriginAR Plane Managerコンポーネントを追加しますことにより、AR平面の検出が可能になります。

  1. Hierarchyウィンドウ上でAR Session Originを選択します。

  2. Inspectorウィンドウ下部にあるAdd Componentボタンを選択すると、Searchウィンドウが表示されます。

  3. Searchウィンドウ上で、AR Plane Managerを検索し、追加します。

    image
AR Plane Managerの設定

AR Plane ManagerAR Default Planeをセットすることで、検出時に画面にAR平面を表示することが出来ます。

  1. ProjectウィンドウのAssetsフォルダにPrefabsフォルダを作成します。

  2. Unity Editor上部のメニュー、GameObject / XR / AR Default Planeを選択し、Hierarchyウィンドウのシーン上に追加します。

    image
  3. HierarchyウィンドウのAR Default PlaneをPrefabsフォルダに配置し、Prefab化します。

    image
  4. Hierarchyウィンドウ上にある、元となったAR Default Planeは削除します。

  5. Hierarchyウィンドウ上でAR Session Originを選択し、前の操作で作成したAR Default Plane Prefabを、Inspectorウィンドウに表示されているAR Plane ManagerPlane Prefabへ設定します。

    image
  6. Inspectorウィンドウ上に表示されているAR Plane ManagerのDetection ModeをHorizontalに設定します。

    image
AR Session OriginへのAR Raycast Managerコンポーネントの追加

画面上でタッチしたAR平面上の位置を特定するためにAR Raycast Managerを使用します。

  1. Hierarchyウィンドウ上でAR Session Originを選択します。

  2. Inspectorウィンドウ下部にあるAdd Componentボタンを選択すると、Searchウィンドウが表示されます。

  3. Searchウィンドウ上で、AR Raycast Managerを検索し、追加します。

    image
AR平面上にCubeを表示する機能の追加

AR平面の画面上でタッチした位置にCubeを配置するC#スクリプトを作成し、AR Session Originにコンポーネントとして追加します。

  1. ProjectウィンドウのAssetsフォルダにScriptsフォルダを作成します。

  2. Hierarchyウィンドウ上でAR Session Originを選択します。

  3. Inspectorウィンドウ下部にあるAdd Componentボタンを選択し、New scriptメニューから"ObjectPlacement"というスクリプトを作成します。

    image
  4. Projectウィンドウで、作成したスクリプトをScriptsフォルダに移動します。

  5. Inspectorウィンドウ上で、AR Session Originに追加した ObjectPlacement.csEdit Scriptから開きます。

    image
  6. 以下のように実装し、スクリプトを保存します。

    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.XR.ARFoundation;
    
    public class ObjectPlacement : MonoBehaviour
    {
        public Camera MainCamera;
        public GameObject SpawnObjectPrefab;
        public ARRaycastManager arRaycastManager;
    
        public void Update()
        {
            Touch touch;
            if (Input.touchCount > 0 && (touch = Input.GetTouch(0)).phase == TouchPhase.Began)
            {
                List<ARRaycastHit> hitResults = new List<ARRaycastHit>();
    
                if (arRaycastManager.Raycast(touch.position, hitResults, UnityEngine.XR.ARSubsystems.TrackableType.PlaneWithinPolygon))
                {
                    foreach (ARRaycastHit hit in hitResults)
                    {
                        if (Vector3.Dot(MainCamera.transform.position - hit.pose.position, hit.pose.up) > 0)
                        {
                            // Instantiate a new game object on the hit plane
                            Vector3 position = hit.pose.position;
                            position.y += 0.15f;
                            var planeObject = Instantiate(SpawnObjectPrefab, position, hit.pose.rotation);
                        }
                    }
                }
            }
        }
    }
AR画面に表示するCubeの設定

上記で作成したObjectPlacementコンポーネントに対して、以下のような設定を行います。

  • 表示するCubeの設定として、そのCubeについて、大きさの設定、および当たり判定のためにRigidbodyの機能を追加します。

  • 画面でタッチした平面上の位置を特定するために、AR Camera、およびAR Raycast Managerを追加します。

  1. Unity Editor上部のメニュー、GameObject / 3D Object / Cubeを選択し、Hierarchyウィンドウのシーン上へ追加します。

    image
  2. Hierarchyウィンドウ上のCubeを選択し、Inspectorウィンドウ上でCubeTransformを以下の図のように設定します。

    image
  3. Inspectorウィンドウ下部にあるAdd Componentボタンを選択するとSearchウィンドウが表示されます。

  4. Searchウィンドウ上で、Rigidbodyを検索し、追加します。

    image
  5. Hierarchyウィンドウ上のCubePrefabsフォルダに配置し、Prefab化します。

  6. Hierarchyウィンドウ上にある、元となったCubeは削除します。

  7. Inspectorウィンドウ上で、AR Session Originに追加したObjectPlacementのPropertyを以下のように設定します。

    • Main Camera: HierarchyウィンドウからAR Cameraを設定します。

    • Spawn Object Prefab: Prefabフォルダに移動したCubeを設定します。

    • Ar Raycast Manager: HierarchyウィンドウからAR Session Originを設定します。

      image
表示するSkeleton Handの設定
Skeleton handの表示設定

画面に表示された手を認識し、表示するための設定を行います。

  1. Hierarchyウィンドウ上でAR Cameraを選択後、Unity Editor上部のメニュー、GameObject / Create Empty Childを選択し、HierarchyウィンドウのAR Camera上へGameObjectを追加します。

    image
  2. AR Camera上へ追加したGameObjectを選択し、Inspectorウィンドウ上で名前を"RelativePositionContainer"に変更します。

    image
  3. Projectウィンドウの TofAr/TofArHand/V0/Resources/Prefabs/HandModel をHierarchyウィンドウのRelativePositionContainer上へ配置します。

    image
  4. RelativePositionContainer上へ配置したHandModelを選択し、Inspectorウィンドウ上で名前を"RightHandModel"に変更、またHandModelLr Handの設定を"Right Hand"に設定します。

    image
  5. Projectウィンドウから、二つめの TofAr/TofArHand/V0/Resources/Prefabs/HandModel をHierarchyウィンドウのRelativePositionContainer上へ配置します。

  6. RelativePositionContainer上へ配置したHandModelを選択し、Inspectorウィンドウ上で名前を"LeftHandModel"に変更、またHandModelLr Handの設定を"Left Hand"に設定します。

    image
  7. Projectウィンドウの TofAr/TofArHand/V0/Resources/Prefabs/HandCollider をHierarchyウィンドウのRelativePositionContainer上へ配置します。

    image
  8. RelativePositionContainer上へ配置したHandColliderを選択し、Inspectorウィンドウ上で名前を"RightHandCollider"に変更、またHandColliderのLr Handの設定を"Right Hand"に設定します。
    この時、TransformPositionがすべて 0 になっていることを確認します。

    image
  9. Projectウィンドウから、二つめの TofAr/TofArHand/V0/Resources/Prefabs/HandCollider をHierarchyウィンドウのRelativePositionContainer上へ配置します。

  10. RelativePositionContainer上へ配置したHandColliderを選択し、Inspectorウィンドウ上で名前を"LeftHandCollider"に変更、またHandColliderのLr Handの設定を"Left Hand"に設定します。
    この時、TransformPositionがすべて 0 になっていることを確認します。

    image
  11. 画面の向きとSkeleton handの表示向きを合わせるため、RelativePositionContainerに"Reorient Relative Color Camera"コンポーネントを追加します。

    image
AR Cameraの設定
  1. Hierarchyウィンドウ上でAR Cameraを選択し、Inspectorウィンドウ上でTarget Textureに"None"を設定します。

    image

5.2.3. アプリケーションの実行

作成したアプリケーションをターゲットとなるデバイスで実行可能な形式にビルドします。
その実行ファイルをデバイス上にインストールし実行します。

準備

開発用のPCと対象となるデバイスをUSBで接続します。

手順
アプリケーションのビルド、およびデバイス上での実行
  • Build And Runボタンを選択します。

アプリケーションのビルドとデバイスへのインストールが行われます。 Androidではアプリが直接デバイスにインストールされます。 インストール後、デバイス上でアプリケーションが実行されます。

image

5.3. PointCloudデータをParticle Systemを使って表示するアプリケーション

Unityに備わっている機能であるParticle Systemを利用して、ToF ARで取得したPointCloudデータを表示するアプリケーションを作成する手順を示します。
このチュートリアルを実施することにより、ToF ARデータやTofAR_Samples_Basicで提供されているツールバーの使用法について学ぶことが出来ます。

本チュートリアルでは、iOSデバイス上で、以下のような機能を持ったアプリケーションを動作させることを想定しています。

  • PointCloudデータをParticle Systemを使って表示します。

  • Particleを各PointCloudデータの位置に基づいて色付けして表示します。

  • GUIで各種表示設定を変更可能です。

    image

5.3.1. ビルドの設定

アプリケーションをビルドするための環境を設定します。

準備

TofAR_Base_vx.x.x_iOS.unitypackageがUnityプロジェクトにセットアップ済みとしてください。 インポート方法については、ToF ARのセットアップを参照してください。 本チュートリアルでは、Baseコンポーネントパッケージのみを使用します。

ToF AR サンプルプログラムとして提供されているプロジェクト、TofAR_Samples_Basic ProjectがUnityプロジェクトにセットアップ済みとしてください。 セットアップ方法については下記を参照してください。

  1. TofAR_Samples_Basicプロジェクトの Assets フォルダから、TofArSamplesBasic フォルダと TofArSettings フォルダを本プロジェクトの Assets フォルダ内にコピーします。

  2. TofArSamplesBasic フォルダ内の Hand、および MarkRecog フォルダを削除します。

  3. TofArSettings フォルダ内の Scripts/Hand、および Scripts/MarkRecog フォルダを削除します。

手順
アプリケーションを実行するデバイスの選択
  1. File / Build Settings…​メニューよりビルド設定画面を開きます。

  2. アプリケーションを実行するデバイスのPlatform(OS) を選択します。 本チュートリアルでは、iOSを選択し、Switch Platformボタンを選択します。

    image
ビルドの設定
  1. メニューのFile / Build Settings…​ / Player Settings / iOS Settingsボタンをクリックします。

  2. Other Settings / Configuration / Api COmpatibility Levelに、".NET 4.x"をセットします。

  3. Other Settings / Configuration / Camera Usage Descriptionに、"ToF Camera"、またはToFカメラの利用方法を説明する任意の文字列をセットします。

    image

5.3.2. アプリケーションの作成

UnityのParticle SystemとToF ARを使って、PointCloudデータを表示するプログラムを作成します。

準備

ToF ARに関連するソフトウェアは、Unityプロジェクトにセットアップ済みとしてください。

手順
PointCloudデータ表示機能作成

ToFカメラで取得したPointCloudデータをParticle Systemを使って表示する機能を作成します。

TofArManagerのインスタンス化

TofArManagerは、ToF ARで共通に使われる機能を提供するクラスで、ToFカメラからPointCloudデータを取得する機能を持っています。 このクラスはPrefabとして定義されており、ToF ARを利用するアプリケーションに必ず必要となります。

  1. Projectウィンドウの TofAr/TofAr/TofArManager をHierarchyウィンドウのシーン上へ配置します。

    image
TofArTofManagerのインスタンス化

TofArTofManagerは、デバイスとの接続を管理するクラスで、Prefabとして定義されており、DepthやConfidenceデータをを取得する機能を提供します。本アプリケーションでは、PointCloudデータを取得するために使用します。

  1. Projectウィンドウの TofAr/TofArTof/TofArTofManager をHierarchyウィンドウのシーン上へ配置します。

    image
  2. Hierarchyウィンドウ上でTofArTofManagerを選択します。

  3. Inspectorウィンドウ上でAuto StartをOffにし、アプリケーション起動時には処理をスタートしないようにします。

    image
ToFデータの制御設定

ToFカメラから取得するToFデータのFPS値やDelay値の変更、および録画、再生機能の制御を行うための設定を行います。 TofArSettingsでPrefabとして提供されているTofControllerを使うことで、TofArTofManager経由で、ToFデータに関する制御を行うことが出来ます。

  1. Unity Editor上部のメニュー、GameObject / Create Emptyを選択し、Hierarchyウィンドウのシーン上に新規GameObjectを配置します。

  2. 配置したGameObjectを選択し、Inspectorウィンドウ上で名前を"Controllers"に変更します。

  3. Projectウィンドウの TofArSettings/Prefabs/Controllers/TofController をHierarchyウィンドウの Controllers 上へ配置します。

    image
Particle Systemを使った表示設定

Unityが持つParticle System機能を使用し、PointCloudデータの表示設定を行います。

  1. Unity Editor上部のメニュー、GameObject / Effect / Particle Systemを選択し、Hierarchyウィンドウのシーン上にParticle Systemを配置します。

    image
  2. 配置したParticle Systemを選択し、Inspectorウィンドウ上で名前を"PointCloud2ParticleSystem"に変更します。

  3. Transformコンポーネントを、下図のように設定します。

    image
  4. Inspectorウィンドウ上でPointCloud2ParticleSystemのParticle Systemメインモジュールを設定します(下図参照)。

    image
  5. Inspectorウィンドウ上でPointCloud2ParticleSystemのParticle System Rendererモジュール以外をOffにします。

    image
  6. Inspectorウィンドウ上でPointCloud2ParticleSystemのParticle System Rendererモジュールを選択し、設定します(下図参照)。

    image
各PointCloudデータのParticleへの割り当て、およびParticle Systemへのスクリプトの追加

これにより、PointCloudデータを三次元的に表示すること出来ます。

  1. Inspectorウィンドウ下部にあるAdd Componentボタンを選択し、New scriptメニューから"PointCloud2ParticleSystem"というスクリプトを作成します。

    image
  2. Inspectorウィンドウ上で、PointCloud2ParticleSystemオブジェクトに追加した PointCloud2ParticleSystem.csEdit Scriptから開きます。

    image
  3. PointCloudデータをParticle Systemにセットするように実装し、保存します。
    このスクリプトでは、PointCloudデータを元にしてParticleを生成し、Particle Systemにセットする処理を行っています。
    以下に、コードの詳細を説明します。 コード全体は、PointCloud2ParticleSystem.csを参照してください。

    1. 処理に必要な変数を定義します。

      private ParticleSystem particleSystem;
      private ParticleSystem.Particle[] particles;
      
      private object sync = new object();
      
      private bool updated = false;
      
      private Vector3[] vs;

      以下の変数が使われています。

      • particleSystem - ParticleSystemコンポーネント

      • particles - PointCloudデータをセットするParticleデータの配列

      • sync - 排他処理のためのオブジェクト

      • updated - vsが更新されたかどうかを示すフラグ

      • vs - 取得したPointCloudデータの配列

    2. OnEnable() : オブジェクトがアクティブになった際に呼び出され、フレームデータ受信時のコールバックを設定します。

      void OnEnable()
      {
          TofArTofManager.OnFrameArrived += OnTofFrameArrived;
      }
    3. OnDisable() : オブジェクトが無効になった際に呼び出され、フレームデータ受信時のコールバックを解除します。

      private void OnDisable()
      {
          TofArTofManager.OnFrameArrived -= OnTofFrameArrived;
      }
    4. Start() : スクリプト開始時に呼び出され、ParticleSystemコンポーネントを取得します。

      void Start()
      {
          particleSystem = GetComponent<ParticleSystem>();
      }
    5. OnTofFrameArrived : ToFデータを受信する毎に呼び出され、TofArTofManagerからPointCloudデータを取得し、配列 vs にセットします。
      データをセットしたら updated フラグをtrueにします。

      private void OnTofFrameArrived(object stream)
      {
          if (!TofArTofManager.Instantiated)
          {
              return;
          }
      
          var pointCloudData = TofArTofManager.Instance.PointCloudData;
          if (pointCloudData == null || pointCloudData.Points == null)
          {
              return;
          }
      
          lock (sync)
          {
              vs = pointCloudData.Points;
          }
          updated = true;
      }
    6. Update() : Unityのフレーム毎に呼びだされ、updated フラグがtrueの場合、Particle の配列を生成します。
      vs に保持されたPointCloudデータを使ってRGB Colorデータを生成し、Particle にセットします。
      生成された Particle をParticleSystemにセットします。

      void Update()
      {
          if (updated)
          {
              updated = false;
      
              lock (sync)
              {
                  particles = new ParticleSystem.Particle[vs.Length];
                  particleSystem.GetParticles(particles);
      
                  for (int i = 0; i < vs.Length; i++)
                  {
                      particles[i].position = vs[i];
      
                      float r = Mathf.Min(1, Mathf.Max(0, (vs[i].z) / 2));
                      float g = Mathf.Min(1, Mathf.Max(0, (vs[i].y + 1f) / 2));
                      float b = Mathf.Min(1, Mathf.Max(0, (vs[i].x + 1f) / 2));
      
                      particles[i].startColor = new Color(r, g, b);
                      particles[i].startSize = 0.02f;
                  }
      
                  particleSystem.SetParticles(particles);
              }
          }
      }
  1. 作成したスクリプトを保存します。

  2. Inspectorウィンドウ下部にあるAdd Componentボタンを選択すると、Searchウィンドウが表示されます。

  3. Reorient With Deviceを検索し、追加します。

    image
機能設定GUI作成

画面端にツールバー表示し、ユーザーがToFカメラの設定や録画、再生機能の実行を行えるようにボタンを配置します。

image

ツールバーなど、機能を設定するGUI部品を配置し必要な設定を行います。
TofArSettingsで提供されているSettings Prefabには、Toolbar PrefabのようなGUI部品が含まれています。
このSettings Prefabをインスタンス化し、各種機能(ToFカメラ設定/録画機能/再生機能/一般設定)が使用可能になるように設定を行います。
Toolbar Prefabには、デフォルトで各種機能を起動するためのボタンが配置されています。本チュートリアルに不要な機能は非アクティブにします。

  1. Projectウィンドウの TofArSettings/Prefabs/Settings をHierarchyウィンドウのシーン上へ配置します。

    image
  2. Hierarchyウィンドウ上でSettings / Canvas / SafeArea / Panels / CameraSettingsを選択し、Inspectorウィンドウ上でCamera SettingsUse ComponentTofを選択します。

    image
  3. Hierarchyウィンドウ上でSettings / Canvas / SafeArea / Panels / RecordSettingsを選択し、Inspectorウィンドウ上でRecord SettingsUse ComponentTofを選択します。

    image
  4. Hierarchyウィンドウ上でSettings / Canvas / SafeArea / Panels / RecPlayerSettingsを選択し、Inspectorウィンドウ上でRec Player SettingsUse ComponentTofを選択します。

    image
  5. Hierarchyウィンドウ上でSettings / Canvas / SafeArea / Panels / GeneralSettingsを選択し、Inspectorウィンドウ上でGeneral SettingsUse ComponentTofを選択します。

    image
  6. Hierarchyウィンドウ上でSettings / Canvas / SafeArea / DebugInfo / FpsPanelを選択し、Inspectorウィンドウ上でこのオブジェクトをアクティブにします(下図参照)。

    image
  7. Hierarchyウィンドウ上でSettings / Canvas / SafeArea / DebugInfo / FpsPanel /TxFpsTofを選択し、Inspectorウィンドウ上でこのオブジェクトをアクティブにします(下図参照)。

    image
  8. FpsPanelの他のオブジェクトがアクティブだった場合は、非アクティブにします。

ToFカメラ設定

画面の向き、およびユーザーの操作によって、表示画像の向きを変更するための設定を行います。 ToFカメラの画面の向き、およびユーザーが画面に触れて指をスライドすることによって、表示画像の視点を変えて表示することが出来ます。

Main Cameraの設定
  1. Hierarchyウィンドウ上でMain Cameraを選択し、Inspectorウィンドウ上でTransformコンポーネントを設定します(下図参照)。

    image
  2. 同じInspcetorウィンドウ上で、Cameraコンポーネントを設定します(下図参照)。

    image
  3. Inspectorウィンドウ下部にあるAdd Componentボタンを選択すると、Searchウィンドウが表示されます。

  4. Searchウィンドウ上で、Camera Controllerを検索し、追加します。

    image
  5. Inspectorウィンドウ上で、Camera Controllerコンポーネントの設定を行います。

    image
ライト設定
  1. Hierarchyウィンドウ上でDirectional Lightを選択し、Inspectorウィンドウ上でLightコンポーネントのModeを"Realtime"に設定します。

    image

5.3.3. アプリケーションの実行

作成したアプリケーションをターゲットとなるデバイスで実行可能な形式にビルドします。
その実行ファイルをデバイス上にインストールし実行します。

準備

開発用のPCと対象となるデバイスをUSBで接続します。

手順
  1. アプリケーションをビルドするために、Build And Runボタンを選択する。iOSではXcodeプロジェクトが出力されます。

  2. Xcodeでアプリの署名設定などを行い、Build And Runボタンをクリックすると、アプリケーションのビルドとデバイスへのインストールが行われます。 インストール後、デバイス上でアプリケーションが実行されます。

    以下に機能の概要を説明します。

    • 画面左下部のCameraボタンを押下し、使用するToFカメラとそのDepthデータサイズを選択します。

      image
    • 画面左下部のRecordボタンを押下すると、表示画像を録画することが出来ます。

      image
    • 画面左下部のPlayボタンを押下すると、録画した画像を再生することが出来ます。

      image
    • 画面右下部のSettingsボタンを押下すると、機能の設定のためのパネルが表示されます。

      image
    • 画面上を指でタッチしてスライドすると、表示されているParticleデータを三次元的に回転させることが出来ます。

      image

6. ToF AR対応端末モデル名リスト

ToF AR対応端末モデルのリスト、端末モデル毎のカメラIDとデフォルト設定については下記のリストを参照してください。

6.1. SDK対応端末モデル名リスト

ModelGroup Model Json file

Sony Xperia 1 II

SOG01

sony_xperia1-2_v1.4.0.json

Sony Xperia 1 II

SO-51A

sony_xperia1-2_v1.4.0.json

Sony Xperia 1 II

XQ-AT42

sony_xperia1-2_v1.4.0.json

Sony Xperia 1 II

XQ-AT51

sony_xperia1-2_v1.4.0.json

Sony Xperia 1 II

XQ-AT52

sony_xperia1-2_v1.4.0.json

Sony Xperia 1 II

XQ-AT72

sony_xperia1-2_v1.4.0.json

Sony Xperia 1 III

A101SO

sony_xperia1-3_v1.4.0.json

Sony Xperia 1 III

SO-51B

sony_xperia1-3_v1.4.0.json

Sony Xperia 1 III

SOG03

sony_xperia1-3_v1.4.0.json

Sony Xperia 1 III

XQ-BC42

sony_xperia1-3_v1.4.0.json

Sony Xperia 1 III

XQ-BC52

sony_xperia1-3_v1.4.0.json

Sony Xperia 1 III

XQ-BC62

sony_xperia1-3_v1.4.0.json

Sony Xperia 1 III

XQ-BC72

sony_xperia1-3_v1.4.0.json

Sony Xperia 1 IV

A201SO

sony_xperia1-4_v1.4.0.json

Sony Xperia 1 IV

SO-51C

sony_xperia1-4_v1.4.0.json

Sony Xperia 1 IV

SOG06

sony_xperia1-4_v1.4.0.json

Sony Xperia 1 IV

XQ-CT44

sony_xperia1-4_v1.4.0.json

Sony Xperia 1 IV

XQ-CT54

sony_xperia1-4_v1.4.0.json

Sony Xperia 1 IV

XQ-CT62

sony_xperia1-4_v1.4.0.json

Sony Xperia 1 IV

XQ-CT72

sony_xperia1-4_v1.4.0.json

Sony Xperia PRO

XQ-AQ52

sony_xperiaPRO_v1.4.0.json

Sony Xperia PRO

XQ-AQ62

sony_xperiaPRO_v1.4.0.json

Sony Xperia PRO I

XQ-BE42

sony_xperiaPRO-I_v1.4.0.json

Samsung Galaxy Note10+

SC-01M

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SCV45

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N9750

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N9750/DS

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N975C

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N975N

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N975U

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N975U1

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N975W

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N975F

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N975F/DS

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N976B

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N976N

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N9760

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N976Q

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N976V

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy Note10+

SM-N976U

samsung_galaxy_note_10+_v1.4.0.json

Samsung Galaxy S10 5G

SC-03L

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SCV41

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G973F

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G973N

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G9730

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G9738

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G973C

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G973U

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G973U1

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G973W

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G977B

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G977N

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G977P

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G977T

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G977U

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G770F

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G770U1

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SC-04L

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SCV42

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G975F

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G975N

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G9750

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G9758

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G975U

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G975U1

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G975W

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SC-05L

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G970F

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G970N

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G9700

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G9708

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G970U

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G970U1

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G970W

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S10 5G

SM-G9770

samsung_galaxy_s10_v1.4.0.json

Samsung Galaxy S20 Ultra

SCG03

samsung_galaxy_s20_ultra_v1.4.0.json

Samsung Galaxy S20 Ultra

SM-G9880

samsung_galaxy_s20_ultra_v1.4.0.json

Samsung Galaxy S20 Ultra

SM-G988N

samsung_galaxy_s20_ultra_v1.4.0.json

Samsung Galaxy S20 Ultra

SM-G988Q

samsung_galaxy_s20_ultra_v1.4.0.json

Samsung Galaxy S20 Ultra

SM-G988U

samsung_galaxy_s20_ultra_v1.4.0.json

Samsung Galaxy S20 Ultra

SM-G988U1

samsung_galaxy_s20_ultra_v1.4.0.json

Samsung Galaxy S20 Ultra

SM-G988W

samsung_galaxy_s20_ultra_v1.4.0.json

Samsung Galaxy S20 Ultra

SM-G988B

samsung_galaxy_s20_ultra_v1.4.0.json

Samsung Galaxy S20 Plus 4G

SM-G985

samsung_galaxy_s20_plus_4G_v1.4.0.json

Samsung Galaxy S20 Plus 4G

SM-G985F

samsung_galaxy_s20_plus_4G_v1.4.0.json

Samsung Galaxy S20 Plus 4G

SM-G985F/DS

samsung_galaxy_s20_plus_4G_v1.4.0.json

Samsung Galaxy S20 Plus 5G

SC-52A

samsung_galaxy_s20_plus_5G_v1.4.0.json

Samsung Galaxy S20 Plus 5G

SCG02

samsung_galaxy_s20_plus_5G_v1.4.0.json

Samsung Galaxy S20 Plus 5G

SM-G986

samsung_galaxy_s20_plus_5G_v1.4.0.json

Samsung Galaxy S20 Plus 5G

SM-G9860

samsung_galaxy_s20_plus_5G_v1.4.0.json

Samsung Galaxy S20 Plus 5G

SM-G986N

samsung_galaxy_s20_plus_5G_v1.4.0.json

Samsung Galaxy S20 Plus 5G

SM-G986U

samsung_galaxy_s20_plus_5G_v1.4.0.json

Samsung Galaxy S20 Plus 5G

SM-G986U1

samsung_galaxy_s20_plus_5G_v1.4.0.json

Samsung Galaxy S20 Plus 5G

SM-G986W

samsung_galaxy_s20_plus_5G_v1.4.0.json

Samsung Galaxy S20 Plus 5G

SM-G986B/DS

samsung_galaxy_s20_plus_5G_v1.4.0.json

Huawei P30 Pro

HW-02L

huawei_p30_pro_v1.4.0.json

Huawei P30 Pro

VOG-AL00

huawei_p30_pro_v1.4.0.json

Huawei P30 Pro

VOG-AL10

huawei_p30_pro_v1.4.0.json

Huawei P30 Pro

VOG-L04

huawei_p30_pro_v1.4.0.json

Huawei P30 Pro

VOG-L09

huawei_p30_pro_v1.4.0.json

Huawei P30 Pro

VOG-L29

huawei_p30_pro_v1.4.0.json

Huawei P30 Pro

VOG-TL00

huawei_p30_pro_v1.4.0.json

Huawei P40 Pro

ELS-NX9

huawei_p40_pro_v1.4.0.json

Huawei P40 Pro

ELS-AN00

huawei_p40_pro_v1.4.0.json

Huawei P40 Pro

ELS-TN00

huawei_p40_pro_v1.4.0.json

Huawei P40 Pro

ELS-N04

huawei_p40_pro_v1.4.0.json

Huawei P40 Pro

ELS-N29

huawei_p40_pro_v1.4.0.json

Huawei P40 Pro

ELS-N29D

huawei_p40_pro_v1.4.0.json

Huawei P40 Pro+

ELS-AN10

huawei_p40_pro_plus_v1.4.0.json

Huawei P40 Pro+

ELS-TN10

huawei_p40_pro_plus_v1.4.0.json

Huawei P40 Pro+

ELS-N39

huawei_p40_pro_plus_v1.4.0.json

Huawei Mate30 Pro

TAS-AN00

huawei_mate30_pro_5g_v1.4.0.json

Huawei Mate30 Pro

TAS-TN00

huawei_mate30_pro_5g_v1.4.0.json

Huawei Mate30 Pro

LIO-N29

huawei_mate30_pro_5g_v1.4.0.json

Huawei Mate30 Pro

LIO-L09

huawei_mate30_pro_5g_v1.4.0.json

Huawei Mate30 Pro

LIO-AL00

huawei_mate30_pro_5g_v1.4.0.json

Huawei Mate30 Pro

LIO-TL00

huawei_mate30_pro_5g_v1.4.0.json

Huawei Mate30 Pro

LIO-AL10

huawei_mate30_pro_5g_v1.4.0.json

Huawei Mate30 Pro

LIO-TL10

huawei_mate30_pro_5g_v1.4.0.json

Huawei Mate30 Pro

LIO-AN00P

huawei_mate30_pro_5g_v1.4.0.json

Huawei Mate30 Pro

LIO-AN00

huawei_mate30_pro_5g_v1.4.0.json

Huawei Mate40 Pro

NOH-NX9

huawei_mate40_pro_v1.4.0.json

Huawei Mate40 Pro

NOH-AN00

huawei_mate40_pro_v1.4.0.json

Huawei Mate40 Pro+

NOP-NX9

huawei_mate40_pro_plus_v1.4.0.json

Huawei Mate40 Pro+

NOP-AN00

huawei_mate40_pro_plus_v1.4.0.json

Huawei Honor V20

PCT-TL10

huawei_honor_v20_v1.4.0.json

Huawei Honor V20

PCT-AL10

huawei_honor_v20_v1.4.0.json

Huawei Honor V20

PCT-L29

huawei_honor_v20_v1.4.0.json

Honor Magic3 Pro

ELZ-AN10

honor_magic3_pro_v1.4.0.json

Honor Magic3 Pro+

ELZ-AN20

honor_magic3_pro_plus_v1.4.0.json

Honor Magic5 Pro

PGT-N19

honor_magic5_pro_v1.4.0.json

Apple iPhone X

iPhone10,3

iphone_X_v1.4.0.json

Apple iPhone X

iPhone10,6

iphone_X_v1.4.0.json

Apple iPhone XS

iPhone11,2

iphone_XS_v1.4.0.json

Apple iPhone XS Max

iPhone11,4

iphone_XS_max_v1.4.0.json

Apple iPhone XS Max

iPhone11,6

iphone_XS_max_v1.4.0.json

Apple iPhone XR

iPhone11,8

iphone_XR_v1.4.0.json

Apple iPhone 11

iPhone12,1

iphone_11_v1.4.0.json

Apple iPhone 11 Pro

iPhone12,3

iphone_11_pro_v1.4.0.json

Apple iPhone 11 Pro Max

iPhone12,5

iphone_11_pro_max_v1.4.0.json

Apple iPhone 12 mini

iPhone13,1

iphone_12_mini_v1.4.0.json

Apple iPhone 12

iPhone13,2

iphone_12_v1.4.0.json

Apple iPhone 12 Pro

iPhone13,3

iphone_12_pro_v1.4.0.json

Apple iPhone 12 Pro Max

iPhone13,4

iphone_12_pro_max_v1.4.0.json

Apple iPhone 13 mini

iPhone14,4

iphone_13_mini_v1.4.0.json

Apple iPhone 13

iPhone14,5

iphone_13_v1.4.0.json

Apple iPhone 13 Pro

iPhone14,2

iphone_13_pro_v1.4.0.json

Apple iPhone 13 Pro Max

iPhone14,3

iphone_13_pro_max_v1.4.0.json

Apple iPhone 14

iPhone14,7

iphone_14_v1.4.0.json

Apple iPhone 14 Plus

iPhone14,8

iphone_14_plus_v1.4.0.json

Apple iPhone 14 Pro

iPhone15,2

iphone_14_pro_v1.4.0.json

Apple iPhone 14 Pro Max

iPhone15,3

iphone_14_pro_max_v1.4.0.json

Apple iPhone 15

iPhone15,4

iphone_15_v1.4.0.json

Apple iPhone 15 Plus

iPhone15,5

iphone_15_plus_v1.4.0.json

Apple iPhone 15 Pro

iPhone16,1

iphone_15_pro_v1.4.0.json

Apple iPhone 15 Pro Max

iPhone16,2

iphone_15_pro_max_v1.4.0.json

Apple iPad Pro 11-inch(1st generation)

iPad8,1

ipad_pro_11_gen1_v1.4.0.json

Apple iPad Pro 11-inch(1st generation)

iPad8,2

ipad_pro_11_gen1_v1.4.0.json

Apple iPad Pro 11-inch(1st generation)

iPad8,3

ipad_pro_11_gen1_v1.4.0.json

Apple iPad Pro 11-inch(1st generation)

iPad8,4

ipad_pro_11_gen1_v1.4.0.json

Apple iPad Pro 11-inch(2nd generation)

iPad8,9

ipad_pro_11_gen2_v1.4.0.json

Apple iPad Pro 11-inch(2nd generation)

iPad8,10

ipad_pro_11_gen2_v1.4.0.json

Apple iPad Pro 11-inch(3rd generation)

iPad13,4

ipad_pro_11_gen3_v1.4.0.json

Apple iPad Pro 11-inch(3rd generation)

iPad13,5

ipad_pro_11_gen3_v1.4.0.json

Apple iPad Pro 11-inch(3rd generation)

iPad13,6

ipad_pro_11_gen3_v1.4.0.json

Apple iPad Pro 11-inch(3rd generation)

iPad13,7

ipad_pro_11_gen3_v1.4.0.json

Apple iPad Pro 11-inch(4th generation)

iPad14,3

ipad_pro_11_gen4_v1.4.0.json

Apple iPad Pro 11-inch(4th generation)

iPad14,4

ipad_pro_11_gen4_v1.4.0.json

Apple iPad Pro 12.9-inch(3rd generation)

iPad8,5

ipad_pro_12_9_gen3_v1.4.0.json

Apple iPad Pro 12.9-inch(3rd generation)

iPad8,6

ipad_pro_12_9_gen3_v1.4.0.json

Apple iPad Pro 12.9-inch(3rd generation)

iPad8,7

ipad_pro_12_9_gen3_v1.4.0.json

Apple iPad Pro 12.9-inch(3rd generation)

iPad8,8

ipad_pro_12_9_gen3_v1.4.0.json

Apple iPad Pro 12.9-inch(4th generation)

iPad8,11

ipad_pro_12_9_gen4_v1.4.0.json

Apple iPad Pro 12.9-inch(4th generation)

iPad8,12

ipad_pro_12_9_gen4_v1.4.0.json

Apple iPad Pro 12.9-inch(5th generation)

iPad13,8

ipad_pro_12_9_gen5_v1.4.0.json

Apple iPad Pro 12.9-inch(5th generation)

iPad13,9

ipad_pro_12_9_gen5_v1.4.0.json

Apple iPad Pro 12.9-inch(5th generation)

iPad13,10

ipad_pro_12_9_gen5_v1.4.0.json

Apple iPad Pro 12.9-inch(5th generation)

iPad13,11

ipad_pro_12_9_gen5_v1.4.0.json

Apple iPad Pro 12.9-inch(6th generation)

iPad14,5

ipad_pro_12_9_gen6_v1.4.0.json

Apple iPad Pro 12.9-inch(6th generation)

iPad14,6

ipad_pro_12_9_gen6_v1.4.0.json

6.2. 同時起動可能なColor/DepthカメラのIDと向き

Device ColorID R/F DepthID R/F

Sony Xperia 1 II

0

Rear

5

Rear

Sony Xperia 1 III

0

Rear

5

Rear

Sony Xperia 1 IV

0

Rear

5

Rear

Sony Xperia PRO

0

Rear

5

Rear

Sony Xperia PRO I

0

Rear

5

Rear

Samsung Galaxy Note10+

0

Rear

4

Rear

Samsung Galaxy S10 5G(Snapdragon)

0

Rear

4

Rear

Samsung Galaxy S10 5G(Snapdragon)

0

Rear

5

Front

Samsung Galaxy S10 5G(Snapdragon)

1

Front

4

Rear

Samsung Galaxy S10 5G(Snapdragon)

1

Front

5

Front

Samsung Galaxy S10 5G(Snapdragon)

2

Rear

4

Rear

Samsung Galaxy S10 5G(Snapdragon)

2

Rear

5

Front

Samsung Galaxy S10 5G(Snapdragon)

3

Front

4

Rear

Samsung Galaxy S10 5G(Snapdragon)

3

Front

5

Front

Samsung Galaxy S10 5G(Exynos)

0

Rear

4

Rear

Samsung Galaxy S10 5G(Exynos)

1

Front

5

Front

Samsung Galaxy S20 Ultra

0

Rear

4

Rear

Samsung Galaxy S20+ 4G

0

Rear

4

Rear

Samsung Galaxy S20+ 5G

0

Rear

4

Rear

Huawei Honor V20

0

Rear

0

Rear

Huawei P30 Pro

0

Rear

0

Rear

Huawei P40 Pro

0

Rear

0

Rear

Huawei P40 Pro

2

Rear

7

Rear

Huawei P40 Pro+

0

Rear

0

Rear

Huawei Mate30 Pro

0

Rear

0

Rear

Huawei Mate30 Pro

1

Front

1

Front

Huawei Mate30 Pro

2

Rear

0

Rear

Huawei Mate30 Pro

2

Rear

7

Rear

Huawei Mate30 Pro

3

Front

1

Front

Huawei Mate30 Pro

3

Front

5

Front

Huawei Mate30 Pro

4

Rear

0

Rear

Huawei Mate40 Pro

1

Front

1

Front

Huawei Mate40 Pro+

0

Rear

0

Rear

Huawei Mate40 Pro+

0

Rear

8

Rear

Huawei Mate40 Pro+

1

Front

1

Front

Huawei Mate40 Pro+

1

Front

5

Front

Huawei Mate40 Pro+

2

Rear

0

Rear

Huawei Mate40 Pro+

3

Front

1

Front

Huawei Mate40 Pro+

4

Rear

0

Rear

Huawei Mate40 Pro+

6

Rear

0

Rear

Huawei Mate40 Pro+

7

Rear

0

Rear

Honor Magic3 Pro

0

Rear

3

Front

Honor Magic3 Pro

1

Front

3

Front

Honor Magic3 Pro+

0

Rear

3

Front

Honor Magic3 Pro+

1

Front

3

Front

Honor Magic5 Pro

0

Rear

3

Front

Honor Magic5 Pro

1

Front

3

Front

iPhone X

1

Front

1

Front

iPhone XS

1

Front

1

Front

iPhone XR

1

Front

1

Front

iPhone 11

1

Front

1

Front

iPhone 11 Pro

1

Front

1

Front

iPhone 11 Pro Max

1

Front

1

Front

iPhone 12 mini

1

Front

1

Front

iPhone 12

1

Front

1

Front

iPhone 12 Pro

0

Rear

0

Rear

iPhone 12 Pro

1

Front

1

Front

iPhone 12 Pro Max

0

Rear

0

Rear

iPhone 12 Pro Max

1

Front

1

Front

iPhone 13 mini

1

Front

1

Front

iPhone 13

1

Front

1

Front

iPhone 13 Pro

0

Rear

0

Rear

iPhone 13 Pro

1

Front

1

Front

iPhone 13 Pro Max

0

Rear

0

Rear

iPhone 13 Pro Max

1

Front

1

Front

iPhone 14

1

Front

1

Front

iPhone 14 Plus

1

Front

1

Front

iPhone 14 Pro

0

Rear

0

Rear

iPhone 14 Pro

1

Front

1

Front

iPhone 14 Pro Max

0

Rear

0

Rear

iPhone 14 Pro Max

1

Front

1

Front

iPhone 15

1

Front

1

Front

iPhone 15 Plus

1

Front

1

Front

iPhone 15 Pro

0

Rear

0

Rear

iPhone 15 Pro

1

Front

1

Front

iPhone 15 Pro Max

0

Rear

0

Rear

iPhone 15 Pro Max

1

Front

1

Front

Apple iPad Pro 11-inch(1st generation)

1

Front

1

Front

Apple iPad Pro 11-inch(2nd generation)

0

Rear

0

Rear

Apple iPad Pro 11-inch(2nd generation)

1

Front

1

Front

Apple iPad Pro 11-inch(3rd generation)

0

Rear

0

Rear

Apple iPad Pro 11-inch(3rd generation)

1

Front

1

Front

Apple iPad Pro 11-inch(4th generation)

0

Rear

0

Rear

Apple iPad Pro 11-inch(4th generation)

1

Front

1

Front

Apple iPad Pro 12.9-inch(3rd generation)

1

Front

1

Front

Apple iPad Pro 12.9-inch(4th generation)

0

Rear

0

Rear

Apple iPad Pro 12.9-inch(4th generation)

1

Front

1

Front

Apple iPad Pro 12.9-inch(5th generation)

0

Rear

0

Rear

Apple iPad Pro 12.9-inch(5th generation)

1

Front

1

Front

Apple iPad Pro 12.9-inch(6th generation)

0

Rear

0

Rear

Apple iPad Pro 12.9-inch(6th generation)

1

Front

1

Front

6.3. HandライブラリとRuntimeModeのデフォルト設定

Device NeuralNetworkLibrary RuntimeMode RuntimeModeAfter Fallback

Sony Xperia 1 II

TFLite

GPU

GPU

TFLite

Sony Xperia 1 III

TFLite

GPU

GPU

TFLite

Sony Xperia 1 IV

TFLite

GPU

GPU

TFLite

Sony Xperia PRO

TFLite

GPU

GPU

TFLite

Sony Xperia PRO I

TFLite

GPU

GPU

TFLite

Samsung Galaxy Note10+

TFLite

GPU

GPU

TFLite

Samsung Galaxy S10 5G

TFLite

CPU

CPU

TFLite

Samsung Galaxy S20 Ultra

TFLite

GPU

GPU

TFLite

Samsung Galaxy S20+ 4G

TFLite

GPU

GPU

TFLite

Samsung Galaxy S20+ 5G

TFLite

GPU

GPU

TFLite

Huawei Honor V20

TFLite

CPU

CPU

TFLite

Huawei P30 Pro

TFLite

CPU

CPU

TFLite

Huawei P40 Pro

TFLite

CPU

CPU

TFLite

Huawei P40 Pro+

TFLite

CPU

CPU

TFLite

Huawei Mate30 Pro

TFLite

CPU

CPU

TFLite

Huawei Mate40 Pro

TFLite

CPU

CPU

TFLite

Huawei Mate40 Pro+

TFLite

CPU

CPU

TFLite

Honor Magic3 Pro

TFLite

GPU

GPU

TFLite

Honor Magic3 Pro+

TFLite

GPU

GPU

TFLite

Honor Magic5 Pro

TFLite

GPU

GPU

TFLite

Apple iPhone X

TFLite

GPU

GPU

TFLite

Apple iPhone XS

TFLite

GPU

GPU

TFLite

Apple iPhone XS Max

TFLite

GPU

GPU

TFLite

Apple iPhone XR

TFLite

GPU

GPU

TFLite

Apple iPhone 11

TFLite

GPU

GPU

TFLite

Apple iPhone 11 Pro

TFLite

GPU

GPU

TFLite

Apple iPhone 11 Pro Max

TFLite

GPU

GPU

TFLite

Apple iPhone 12 mini

TFLite

GPU

GPU

TFLite

Apple iPhone 12

TFLite

GPU

GPU

TFLite

Apple iPhone 12 Pro

TFLite

GPU

GPU

TFLite

Apple iPhone 12 Pro Max

TFLite

GPU

GPU

TFLite

Apple iPhone 13 mini

TFLite

GPU

GPU

TFLite

Apple iPhone 13

TFLite

GPU

GPU

TFLite

Apple iPhone 13 Pro

TFLite

GPU

GPU

TFLite

Apple iPhone 13 Pro Max

TFLite

GPU

GPU

TFLite

Apple iPhone 14

TFLite

GPU

GPU

TFLite

Apple iPhone 14 Plus

TFLite

GPU

GPU

TFLite

Apple iPhone 14 Pro

TFLite

GPU

GPU

TFLite

Apple iPhone 14 Pro Max

TFLite

GPU

GPU

TFLite

Apple iPhone 15

TFLite

GPU

GPU

TFLite

Apple iPhone 15 Plus

TFLite

GPU

GPU

TFLite

Apple iPhone 15 Pro

TFLite

GPU

GPU

TFLite

Apple iPhone 15 Pro Max

TFLite

GPU

GPU

TFLite

Apple iPad Pro 11-inch(1st generation)

TFLite

GPU

GPU

TFLite

Apple iPad Pro 11-inch(2nd generation)

TFLite

GPU

GPU

TFLite

Apple iPad Pro 11-inch(3rd generation)

TFLite

GPU

GPU

TFLite

Apple iPad Pro 11-inch(4th generation)

TFLite

GPU

GPU

TFLite

Apple iPad Pro 12.9-inch(3rd generation)

TFLite

GPU

GPU

TFLite

Apple iPad Pro 12.9-inch(4th generation)

TFLite

GPU

GPU

TFLite

Apple iPad Pro 12.9-inch(5th generation)

TFLite

GPU

GPU

TFLite

Apple iPad Pro 12.9-inch(6th generation)

TFLite

GPU

GPU

TFLite

7. 制限事項等

7.1. ToF AR v1.4.0

  • Hand認識機能で RecogMode→OneHandHldSmapho, ProcessLevel→HandCenterOnly とした場合、認識結果は常に右手と認識されます。

7.1.1. iOS

  • AR Foundationを利用するアプリではSceneMesh機能がサポートされていません。

  • Modelingコンポーネントはサポートされていません。

  • TofARServerはiOSデバイスとのUSB接続に対応していません。

  • Handコンポーネントの認識モード(RecogMode)はFace2Faceのみ有効です。無効な認識モードを使用すると例外が発生します。

7.1.2. Android

  • ToF、ColorコンポーネントでFPSやExposureをデフォルト値から変更した場合、機種によってはCamera2 APIが停止し映像が更新されなくなる事があります。

  • Huawei P30 ProでRuntime ModeをCPUに設定する場合、HandLibraryのパフォーマンスが落ちます。

  • Coordinateコンポーネント等でToF映像とColor映像の重ね合わせを行う場合、機種によっては位置ずれが発生する事があります。

Appendix A: 用語集

AR

Augmented Realityの略称。現実の映像に、CG等のデジタル情報を重ね合わせる技術です。

ToF

Time of Flightの略称。赤外光の反射時間に基づいて、カメラから物体までの距離を計測する方法です。

ToF AR

本ソフトウェアの製品名称。ToFカメラの情報を利用し、AR用の認識データを生成する特徴に由来します。製品名称はToF ARですが、フォルダ名やパッケージ名では、TofARやTofArを用います。

Confidence

ToFカメラが受像した、赤外反射光の強度。この値をConfidence値と呼び、通常はConfidence値が大きいと測距距離の信頼性が高くなります。この値の情報について、画像として表示される情報をConfidence映像、処理される情報をConfidenceデータと表記しています。

Depth映像とDepthデータ

ToFカメラからの三次元情報について、表示される情報をDepth映像、処理される情報をDepthデータと表記しています。

Color映像とColorデータ

RGBカメラからのRGB情報について、表示される情報をColor映像、処理される情報をColorデータと表記しています。

ストリームとストリームデータ

Depthデータを始めとするToF ARで扱うデータについて、このデータのI/Fをストリーム、またI/Fから取り出したデータをストリームデータと表記しています。

Appendix B: PointCloud2ParticleSystem.cs

using System.Collections;
using System.Collections.Generic;
using TofAr.V0.Tof;
using UnityEngine;

public class PointCloud2ParticleSystem : MonoBehaviour
{
    private ParticleSystem particleSystem;
    private ParticleSystem.Particle[] particles;

    private object sync = new object();

    private bool updated = false;

    private Vector3[] vs;

    // Start is called before the first frame update
    void Start()
    {
        particleSystem = GetComponent<ParticleSystem>();
    }

    void OnEnable()
    {
        TofArTofManager.OnFrameArrived += OnTofFrameArrived;
    }
    private void OnDisable()
    {
        TofArTofManager.OnFrameArrived -= OnTofFrameArrived;
    }

    // Update is called once per frame
    void Update()
    {
        if (updated)
        {
            updated = false;

            lock (sync)
            {
                particles = new ParticleSystem.Particle[vs.Length];
                particleSystem.GetParticles(particles);

                for (int i = 0; i < vs.Length; i++)
                {
                    particles[i].position = vs[i];

                    float r = Mathf.Min(1, Mathf.Max(0, (vs[i].z) / 2));
                    float g = Mathf.Min(1, Mathf.Max(0, (vs[i].y + 1f) / 2));
                    float b = Mathf.Min(1, Mathf.Max(0, (vs[i].x + 1f) / 2));

                    particles[i].startColor = new Color(r, g, b);
                    particles[i].startSize = 0.02f;
                }

                particleSystem.SetParticles(particles);
            }
        }
    }

    private void OnTofFrameArrived(object stream)
    {
        if (!TofArTofManager.Instantiated)
        {
            return;
        }

        var pointCloudData = TofArTofManager.Instance.PointCloudData;
        if (pointCloudData == null || pointCloudData.Points == null)
        {
            return;
        }

        lock (sync)
        {
            vs = pointCloudData.Points;
        }
        updated = true;
    }
}

Appendix C: 変更履歴

Version Changes

v1.4.0

Bodyコンポーネント
  • CoreML のサポートを削除

  • Noise Reduction Level に OFF を追加

  • ToF AR Server 使用時、Body の認識結果が異常になることがある問題を修正

Colorコンポーネント
  • 静止画取得 API をサポート

  • AV Foundation 使用時のデフォルト解像度設定を変更

  • TofArColorManager.UseFrontCameraAsDefault が OFF の際、想定と異なるデフォルト解像度が選択されることがある問題を修正

Handコンポーネント
  • Hand データ単体の録画/再生機能を追加

  • CoreML のサポートを削除

  • Noise Reduction Level に OFF を追加

  • 手認識の検出閾値を追加

Planeコンポーネント
  • Plane Component を iOS 上でも動作するように対応

Segmentationコンポーネント
  • ToF AR Server 接続時に Segmentation 機能の ON/OFF を繰り返すと APIException が発生することがある問題を修正

ToFコンポーネント
  • AV Foundation 使用時のデフォルト解像度設定を変更

  • DepthViewRawImage に重畳して Hand, Body, Face のトラッキング結果を表示できる SkeletonDepthView Prefab の追加

その他
  • 開発に必要なソフトウェアの推奨バージョンを更新

    Unity

    Unity 2021.3.18f1 → Unity 2021.3.31f1
    Unity 2022.2.6f1 → Unity 2022.3.11f1

    AR Foundation

    V4.2.7 → V4.2.8

    ARCore Extensions

    V1.35.0 → V1.40.0

  • 対応端末の追加 ( Honor Magic5 Pro、iPhone15 )

  • Managed ライブラリの Api Compatibility Level 設定を .NET Framework から .NET Standard 2.1 に変更

  • ToF AR Server との再接続機能を追加

  • mac OS 用のライブラリに署名を付与。Unity Editor で ToF AR Server に初回接続する際に表示されていたセキュリティ警告を出さいないように対応

  • iOS にて カメラAPI にアクセスするライブラリファイルを True Depth API にアクセスする部分とそれ以外の部分の2つに分割

  • Unity Editor + Server 実行時、デバイスの向きは端末から、画面の向きは Unity Editor の設定から取得するよう変更

  • TofArXXXManager.Instance やコールバックを呼ぶ箇所などに null チェックを追加

  • Android 端末で Mirroring 機能有効時に Color と Depth の重畳がずれていた問題を修正

  • ストリーム自動開始設定の時、AV Foundation のストリームを開始できなかった問題を修正

  • iPhone SE でクラッシュが発生していた問題を修正

  • Unity プロジェクト名 または プロジェクトを配置しているパス名 にマルチバイト文字を使用すると ToF AR Sever に接続できない問題を修正

  • Framework ファイルにバージョン情報を付与。TestFlight アップロード時にエラーが発生する問題を修正

  • Unity Editor でソースコード変更後のコンパイルが行われる際、Unity Editor がクラッシュする場合がある問題を修正

  • Unity Editor で Play した際に Enter Play Mode Settings の Reload Domain を OFF に設定していたのを変更しないように修正

  • TofArTransform コンストラクタのフィールド初期化処理の不具合を修正

  • その他不具合修正

v1.3.0

全般
  • iOS端末において、Camera API として AVFoundation が利用可能となった

Colorコンポーネント
  • Colorフォーマットに RGBA を指定した時に映像が表示されなかった不具合を修正

Handコンポーネント
  • 両手が近い時の手特徴点認識の精度向上

  • ジェスチャー認識の精度向上

Slamコンポーネント
  • SlamData に端末の重力加速度を追加

その他
  • 開発に必要なソフトウェアの推奨バージョンを更新

    Unity

    Unity 2021.3.11f1 → Unity 2021.3.18f1
    Unity 2022.2.6f1

    AR Foundation

    V4.2.6 → V4.2.7

    ARCore Extensions

    V1.34.0 → V1.35.0

  • フレームの左右反転機能を追加

  • 一部のiOS端末において、デフォルトで選択される解像度を変更

  • ToF AR Server との通信タイムアウト時間が正しく設定されていなかった不具合を修正

  • ToF AR Server を使用時に NullReferenceException がコンソールに表示される不具合を修正

  • Stream 再生中に解像度設定を変更しても CalibrationSettingsProperty の値が更新されなかった不具合を修正

  • ColorViewQuad の初期化時にアスペクト比が正しくなくなる事がある不具合を修正

  • その他不具合修正

v1.2.0

Bodyコンポーネント
  • RuntimeモードにCoreMLを追加

  • DetectorType SV2のRuntimeモードのデフォルト値をGPUに変更

  • DetectorType SV2の録画データの再生速度がColor等と違う不具合を修正

  • DetectorType SV1を非推奨に変更

Faceコンポーネント
  • 「あいうえお」認識の精度向上

  • 画面内の回転とFaceモデルの回転が一致しない事がある不具合を修正

Handコンポーネント
  • 手特徴点認識の精度向上

  • ジェスチャー認識の精度向上

  • RuntimeモードにCoreMLを追加

  • Runtimeモードのデフォルトが一部の機種でGPUになっていなかった不具合を修正

Slamコンポーネント
  • iOS Platform 使用時、Camera Pose Source設定のデフォルト値を 6DoF に変更

ToFコンポーネント
  • iOS Platform 使用時、録画データのtimestampの精度をmsオーダーからnsオーダーに改善

その他
  • 開発に必要なソフトウェアの推奨バージョンを更新

    Unity

    Unity 2020.3.36f1 → Unity 2020.3.40f1
    Unity 2021.3.5f1 → Unity 2021.3.11f1

    AR Foundation

    V4.2.3 → V4.2.6

    ARCore Extensions

    V1.32.0 → V1.34.0

  • 対応端末の追加
    ( Xperia 1 IV、Xperia PRO、iPhone14、iPad Pro 11-inch 4th、iPad Pro 12.9-inch 6th )

  • Manager Prefabの格納場所を上位層に変更

  • Handコンポーネントのストリーミング中にToFコンポーネントのストリーミングを開始した際にエラーとなっていた不具合を修正

  • Apple Silicon 版 Unity Editor で ToF AR Server に接続できない不具合を修正

  • ToF AR Server 使用時、パフォーマンスが低下する事があった不具合を修正

  • ToF AR Server 使用時、未接続となった時にエラーが発生する不具合を修正

  • ToF AR 未対応のiOS端末でエラーが発生する不具合を修正

  • その他不具合修正

v1.1.0

Colorコンポーネント
  • RGBAフォーマットの出力に対応

  • ColorのDelayパラメータのInspector上での設定に対応

Faceコンポーネント
  • 視線方向の認識に対応

  • ノイズ低減処理追加(Android)

  • FaceMeshがcolorと一致しない不具合を修正

Handコンポーネント
  • Hand Runtime のデフォルトを GPUに変更(iOS)

  • 手を近づけすぎるとHandを認識しなくなる不具合を修正

  • 端末の向きがLandscape Rightの時に認識出来なかった不具合を修正

Slamコンポーネント
  • 6DoFに対応(iOS)

Segmentationコンポーネント
  • 使用中のシーンを閉じる際にクラッシュすることがある不具合を修正

ToFコンポーネント
  • AutoExposureをOFF→ONにして、使用中のシーンを閉じる際にクラッシュすることがある不具合を修正

その他
  • 開発に必要なソフトウェアの推奨バージョンを更新

    Unity

    Unity2020.3.28f1 → Unity2020.3.36f1
    Unity2021.2.11f1 → Unity2021.3.5f1

    AR Foundation

    V4.2.2 → V4.2.3

    ARCore Extensions

    V1.29.0 → V1.32.0

  • SDK対応端末の追加(Xperia PRO-I、Xperia 1 IIIの一部のモデル)

  • FPSの動的変更対応(iOS)

  • ARFoundationConnector使用時、ARFoundationのOcclusionManagerを使用したオクリュージョンの品質を改善

  • Plane.StartPlayback()でストリーミング開始していない場合は、ストリーミング開始通知が呼ばれないように修正

  • iPadのフロントカメラでFaceとHandを表示するとモデルがDepthとColor映像より小さく表示される不具合を修正

  • TofArHandManager.RuntimeMode の値と異なる値が取得されることがある不具合を修正

  • TofArTofManager.processDepth/processConfidence/processPointCloudの設定が反映されないことがある不具合を修正

  • 特定バージョンのUnityとVisual Studioの組み合わせでクラッシュする不具合を修正

  • 手認識動作開始後にハンドのトラッキングモードの変更が反映されない不具合を修正

  • ToF AR Server使用時、SimpleARFoundationのModeling機能が使えない不具合を修正

  • その他不具合修正

v1.0.0

ToF AR 初版リリース