Open14
HoloLab.Immersalを試してみる
こちらみながら
既存のプロジェクト (HoloLensビルドしたことあり) のUnity2019.4.26をベースにHoloLab.Immersalを導入してみる
Packages\manifest.jsonの "dependencies".に追加
{
"dependencies": {
"jp.co.hololab.immersal": "https://github.com/HoloLabInc/HoloLab.Immersal.git?path=Assets/HoloLab.Immersal",
...
}
PackageManagerからSampleをimport
- Packages/HoloLab Immersal Module/Settings/LocalizationSettingsをAssets以下にコピー
- ImmersalのDeveloper PortalからtokenとMapIdを入力
- ImmersalLocalizationをHierarchyViewに配置
- Localization Settingsを代入
MapOrigin以下に置いてビルド→成功
しかしHoloLensかぶって該当箇所を見ても、位置合わせされず
うまくいかなかったので、まっさらなプロジェクトをゼロから作ってチャレンジ
Unity2019.4.26で新規プロジェクトを作る
MRTK2.7.2をimport
XRPipelineSettingはLegacyXR選択
そのままチェックしてApply
TMP Import
Add to Scene and Configure
Capabilitiesを設定
・WebCam
・Microphone
・Location
・InternetClient
・InternetClientServer
・SpatioalPerception
・GazeInput
にチェック入れたら成功しました。
- MapIDと一致したときのみ反映する実装
- LocalizeしたときにVisibleをenabledする実装
など実装
MyMapLocalizer .cs
public class MyMapLocalizer : MonoBehaviour
{
[SerializeField]
private ImmersalLocalization immersalLocalization = null;
[SerializeField] int MapId;
private void Awake()
{
immersalLocalization.OnLocalized += ImmersalLocalization_OnLocalized;
SetVisibleEnabled(false);
}
private void ImmersalLocalization_OnLocalized(ImmersalLocalization.LocalizeInfo info)
{
if (info.MapId == MapId)
{
SetVisibleEnabled(true);
var mapOriginPose = info.Pose.Inverse().GetTransformedBy(info.CameraPose);
transform.position = mapOriginPose.position;
transform.rotation = mapOriginPose.rotation;
}
}
void SetVisibleEnabled(bool enabled)
{
foreach (var rd in GetComponentsInChildren<Renderer>())
{
rd.enabled = enabled;
}
}
}