この記事は古いです
UnityARCoreSDKは開発終了しています
現在はARFoundationを用いた開発が主流なためこの記事は参考にならないです。
概要
ARCoreでアプリ開発してる際に「このメッセージ表示している時は平面の検知してほしくないなぁ」というタイミングや垂直面の検知はしてほしくないタイミングが発生してきたので切り替えれる関数を作ることにしました。
ARCoreUnitySDKの1.6で実装してます。
実装
今回はめんどくさかったのでARCoreSessionクラスの中に追加でメソッドを定義しました
ARCoreSession.cs
public void ChangeDetectedPlaneFindingMode(DetectedPlaneFindingMode mode)
{
this.SessionConfig.PlaneFindingMode = mode;
this.OnEnable();
}
とてもシンプルな話でセッションを作成するときに使っているSessionConfigの中のPlaneFindingModeを書き換えてやってからOnEnableを呼びます。
OnEnabnleの中では
LifecycleManager.Instance.EnableSession();
という処理がありこの中でセッション情報の更新をやってくれてるみたいです。
あとはこの関数を好きなところから呼んでやれば平面検知のモードを切り替えることができます。
なお、InstantPreviewではこの関数は実行できません。警告が出ます。
InstantPreview中は平面検知のモード変更はできない模様。
# まとめ
ARCoreは良いぞ。