Conektonはマルチプラットフォーム、かつマルチユーザ機能を持つARプロダクトを効率的にすばやく開発するために作成されたUnityライブラリです。
ConektonはExtenjectをベースに作成されています。Extenjectをベースに各プラットフォームの機能をインストールすることでマルチプラットフォームを実現しており、使用者は実装したいプラットフォームのSDKを入れるだけですぐに使えるようになっています。
Conektonは数多くのARプロダクトを開発するスタートアップ「MESON」が、社内でのARコンテンツの開発をより効率的に行うことを目的に開発したライブラリです。 MESONでは、iOS ARKitを用いたモバイルARコンテンツから、Nreal Light、Magic Leap 1を利用したARグラスコンテンツなどこれまでさまざまなARコンテンツの制作を行ってきました。
それらの制作の過程で、モバイルARとARグラスの相互運用、および各ARグラスプラットフォーム向けの相互運用も非常に重要なタスクであることに気づきました。 AR体験の重要な要素として同じAR空間を複数人でシェアする「マルチユーザ」の重要性もさらに増してきています。 またARコンテンツ制作におけるプロトタイピングの重要性も認識しており、これらコンテンツ制作における効率的な開発の土台が必要となりました。
そこで開発されたのがこのConektonです。 Conektonでは後述するように、複数のARプラットフォームに対応し、また同時にプロトタイピングを目的としてVR(Oculus)プラットフォームにも対応しています。 Conektonを使用することでARコンテンツのプロトタイピングからプロダクト開発までを迅速に行うことを可能にします。
アーキテクチャは以下の図の通りです。
- Nreal Light
- Magicleap 1
- AR Foundation
- Oculus Quest
Conektonの主な特徴はクロスプラットフォームとマルチユーザ機能をARコンテンツに素早く実装できる点です。 上記図の通り、主要なARグラスプラットフォームに対応し、またARFoundationにも対応することでモバイルARにも対応しています。
上記に加えて、Oculusプラットフォームにも対応しているのがやや特殊に映るかもしれません。 しかしVRはARを手早く開発するためのツールとして、つまりプロトタイピングの場として適切だと考えており、そのため対応プラットフォームに含まれています。
Conekton使用者はVR上でコンテンツを制作し、手頃なVR HMD(主にOculus Quest)を使用してAR体験をプロトタイピングすることが可能です。
各プラットフォームのスイッチングも、プラットフォーム切り替えを行うだけで完了します。
Conektonをご使用頂く前にご確認ください。
詳細についてはこちら
リリースタブから最新版の.unitypackage
をダウンロードし、インポートします。
Conektonは前述の通り、複数のプラットフォームに対応しています。 開発を行いたいプラットフォームに「Switch Platform」してご利用ください。
ConektonではNreal
とOculus
双方に対応しています。どちらもAndroidプラットフォームのため、どちらのプラットフォーム向けなのかを識別するためにScripting Define Symbolsに値を設定することで実現しています。
このSymbolsについては付属のツールより簡単にスイッチすることができるようになっています。
上部メニューのTools > ARUtility > Symbols
よりEditorウィンドウを開き、開発したいプラットフォームのチェックを入れることでSymbolsを編集することができます。
上記メニューより下記ウィンドウが開くので、適宜必要なプラットフォームのチェックを入れて設定してください。
Magic Leap向けに利用する場合にエラーが発生するケースが確認されています。
詳しくはこちらに記載があります。Magic Leap向けに利用される場合は参照ください。
前述の通り、ConektonはExtenjectを利用して構築されているため、別途Extenjectをインポートする必要があります。 Extenjectについてはこちらから最新バージョンをインポートしてください。(開発時点での使用バージョンは9.1.0です)
Conektonのマルチユーザのデフォルトの仕組みではPhotonを利用しています。 しかし任意のネットワーク・インフラを利用することができるように設計されているため、独自のネットワーク・インフラに置き換えて利用することもできるようになっています。
すぐにでも動作を確認したい場合は前述のPhoton SDKをインポートしてください。
Photonを利用したバージョンはオプショナルになっており、ReleaseページのConekton_Photon_v.x.x.x.unitypackageをダウンロードしインポートしてください。
インポートするとPhotonInfraというフォルダがConektonフォルダ以下に配置されるので、その中のデモ用シーンを起動するとPhotonを利用した同期処理が実行されます。
Resources内のPrefabはPhotonから利用されるものです。Photonの制約上、ここにファイルを配置しないとならないためこれらがここにインポートされます。
開発対象のプラットフォームに応じて適切なSDKをインポートしてください。
なおNRSDKについては1.3.0
を、Magic Leapについては0.24.0
での動作を確認しています。
Conektonでは様々な機能が提供されています。前述のように、ConektonはExtenjectをベースに開発されているためExtenjectの作法に則ってご利用ください。
以下に、主要なふたつの機能について紹介します。 詳細については後述するリンクよりご確認ください。
namespace: Conekton.ARUtility.Player.Domain
IPlayer
はARカメラ周りを抽象化したインターフェースです。主にカメラの位置や回転、カメラ自身へのアクセスを提供します。
public interface IPlayer
{
Transform Root { get; }
GameObject CameraRig { get; }
Camera MainCamera { get; }
Vector3 Position { get; }
Vector3 Forward { get; }
Quaternion Rotation { get; }
Pose GetHumanPose(HumanPoseType type);
Pose GetHumanLocalPose(HumanPoseType type);
bool IsActiveHumanPose(HumanPoseType type);
}
e.g.) カメラの前方30cmの位置にオブジェクトを配置する。
[Inject] private IPlayer _player = null;
// ------------------
// カメラの前方30cmの位置にオブジェクトを表示
Vector3 pos = _player.Position + _player.Forward * 0.3f;
_obj.transform.position = pos;
namespace: Conekton.ARUtility.Input.Domain
IInputContoroller
は各プラットフォームのコントローラからの入力を抽象化します。現在定義されているインターフェースは以下です。
public interface IInputController
{
bool IsTriggerDown { get; }
bool IsTriggerUp { get; }
bool IsTouch { get; }
bool IsTouchDown { get; }
bool IsTouchUp { get; }
Vector3 Position { get; }
Vector3 Forward { get; }
Quaternion Rotation { get; }
Vector2 Touch { get; }
void TriggerHapticVibration(HapticData data);
}
e.g.) コントローラの向いている方向にレイを飛ばす
[Inject] private IInputController _inputController = null;
// ----------------------
private Ray GetRay()
{
return new Ray(_inputController.Position, _inputController.Forward);
}
その他の機能や詳細な使い方に関する情報はこちらからご確認ください。
Conektonに関する質問やディスカッションについてはこちらのSlack招待リンクよりSlackに参加ください。
ConektonはMESON, incによって運用・管理されています。
- Site: http://meson.tokyo/ (Japanese)
- Site: http://meson.tokyo/en/ (English)
- Twitter: https://twitter.com/MESON_TOKYO
このライブラリはApache License 2.0ライセンスの下にあります。