(A)第1の実施形態
以下、本発明による測定装置、測定プログラム及び測定方法の第1の実施形態を、図面を参照しながら詳述する。
(A−1)第1の実施形態の構成
図1は、この実施形態に係る測定装置10と被測定物について示した図である。
測定装置10は、測定装置10を所持するユーザ(以下、単に「ユーザ」と呼ぶ)の操作に応じて被測定物TOの外形に係るパラメータ(例えば、各部の寸法)を測定する装置である。
図2は、この実施形態の測定装置10の全体構成を示すブロック図である。
図2に示すように、測定装置10は、タッチパネルディスプレイ11、カメラ12、制御部13、及びセンサ部14を有している。
制御部13は、測定装置10の全体を制御する機能を担っており、被測定物TOの外形の寸法を測定する測定処理部131を有している。
制御部13は、図示しないコンピュータにプログラム(実施形態に係る測定プログラムを含む)をインストールすることによりソフトウェア的に構成するようにしてもよいし、ハードウェア的に構成(例えば、専用の半導体チップ等を用いて構成)するようにしてもよい。この実施形態では、制御部13は、コンピュータを用いてソフトウェア的に構成されているものとして説明する。
カメラ12は、被測定物TOが配置された現実空間を撮像することが可能な撮像手段である。
タッチパネルディスプレイ11は、ユーザに画像(例えば、操作画面等の画像)を表示出力(提示)することが可能な表示手段(ディスプレイ機能)と、ユーザからの操作を受け付けることが可能な操作手段(タッチパネル機能)を備えている。
センサ部14は、当該測定装置10の動きを検知するためのセンサ群である。センサ部14には、例えば、加速度センサやジャイロセンサを含むセンサ群を適用することができる。
以上のように、測定装置10は、ハードウェア的には、例えば、スマートホンやタブレットPC等のタッチパネル、カメラ、及び各種センサを備える情報処理装置を用いて構成することができる。この実施形態では、測定装置10は、スマートホンを用いて構成されているものとして説明する。すなわち、測定処理部131は、スマートホンにインストール可能なアプリケーションプログラムであるものとして説明する。
次に、測定処理部131の概要について説明する。
測定処理部131は、AR(Augmented Reality;拡張現実)技術により、カメラ12で撮像された現実空間の画像(以下、「撮像画像」と呼ぶ)に、現実空間の座標が紐づけられた仮想オブジェクト(いわゆるARオブジェクト)をレンダリング(合成)した画像を生成してタッチパネルディスプレイ11に表示させる処理を行う。ここでは、測定処理部131は、被測定物TOの寸法(例えば、幅、高さ、及び奥行)を測定するための仮想オブジェクトである測定用仮想オブジェクトMOを生成して配置する処理を行う。また、測定処理部131は、測定用仮想オブジェクトMOについて、ユーザの操作に応じて編集(例えば、辺や頂点の移動を伴う形状の変更や、位置及び姿勢の変更等)を行う。このとき、タッチパネルディスプレイ11上に表示(レンダリング)される画像には、測定装置10の位置や姿勢によっては、測定用仮想オブジェクトMOと共に、被測定物TOを撮像した画像(以下、「被測定物画像GT」と呼ぶ)も表示される。これにより、測定装置10(測定処理部131)では、ユーザから、タッチパネルディスプレイ11上で、測定用仮想オブジェクトMOの位置姿勢及び形状を、被測定物画像GTに合わせる(フィットさせる)操作を受け付けることができる。
したがって、ユーザの操作により測定用仮想オブジェクトMOの位置姿勢及び形状が、被測定物画像GTと合致したとき(フィットしたとき)、測定用仮想オブジェクトMOの形状(現実空間上での形状)と被測定物画像GTの形状が等しくなる。
さらに、測定装置10(測定処理部131)では、測定用仮想オブジェクトMOの現実空間における形状(例えば、各頂点の3D座標)を保持しているため、測定用仮想オブジェクトMOが現実空間に存在した場合における形状に係るパラメータ(例えば、幅、高さ、及び奥行等)を把握することができる。そこで、この実施形態の測定装置10(測定処理部131)は、測定用仮想オブジェクトMOが現実空間に存在した場合における形状に係るパラメータをリアルタイムにタッチパネルディスプレイ11上に表示するものとする。
以上のように、測定装置10(測定処理部131)では、ユーザの操作により測定用仮想オブジェクトMOの編集を受け付けつつ、測定用仮想オブジェクトMOが現実空間に存在した場合における形状に係るパラメータをリアルタイムで表示することで、被測定物TOの形状に係るパラメータ(例えば、幅、高さ、及び奥行等)を測定することが可能となる。測定処理部131の詳細処理については後述する。
測定処理部131では、ARに関する画像処理や情報処理等を行う構成要素としてAR処理部131aを備えている。この実施形態の例では、AR処理部131aには、種々のARシステム(ミドルウェア/プラットフォーム)を適用することができるものとして説明する。具体的には、この実施形態の例では、AR処理部131aにARシステムとしてARkit(登録商標)が適用されるものとして説明する。なお、AR処理部131aに適用するARのシステムはARkitに限定されず種々の環境を適用することができる。例えば、測定装置10のOSがAndroid(登録商標)であればARCore(登録商標)を用いてもよいことは当然である。すなわち、測定処理部131(AR処理部131a)において、ARの基本的な機能については種々のARシステムを適用することができるため、本明細書ではARに関する基本的な処理(例えば、ARkitやARCOREを用いて実現可能な画像処理等)自体については詳しい説明を省略する。
また、測定処理部131は、種々のソフトウェアの統合開発環境(ARシステムを用いたソフトウェア開発が可能なソフトウェア統合開発環境)を用いて構築するようにしてもよい。この実施形態では、例として、測定処理部131は、Unityを用いて開発されたものとして説明する。したがって、測定処理部131の処理説明において、Unity上のライブラリ等で定義されるオブジェクト(後述するコライダー等)を用いて説明する場合があるが、同様のオブジェクトについて他の統合開発環境を用いて構築してもよいことは当然である。
AR処理部131aは、センサ部14、タッチパネルディスプレイ11、及びカメラ12から得られる情報や画像を用いて種々のARに関する処理を実行する。なお、センサ部14については、少なくともArkitやARCore等のARシステムで必要とされるセンサ群(例えば、加速度センサやジャイロセンサを含むセンサ群)を備えているものとし、詳しい説明を省略する。
(A−2)第1の実施形態の動作
次に、以上のような構成を有するこの実施形態の測定装置10の動作(実施形態に係る測定方法の各手順)を説明する。
ここでは、ユーザが、測定装置10を用いて、被測定物TOの寸法を測定する際の測定処理部131の動作(測定プログラムの動作)を中心に説明する。
図3、測定装置10(測定処理部131)が、起動する際の動作(起動シーケンス)について示したフローチャートである。
ここでは、まず、ユーザの操作に応じて、測定装置10(制御部13)が、測定処理部131に対応するアプリケーションを起動したものとする(S101)。アプリケーション起動の操作については、種々のスマートホンやタブレットPCの基本操作を適用することができるため、詳しい説明を省略する。
測定処理部131は、起動すると、AR処理部131aを用いて、カメラ12の視野内に写る画像から平面(例えば、床や机の上面等の平面)を検出する処理(以下、「平面検出処理」と呼ぶ)を行う(S102)。平面検出処理自体については、種々のARシステムにおけるライブラリを適用することができるため、詳しい説明は省略する。
次に、測定処理部131は、AR処理部131aを用いて、検出した平面上にマーカのオブジェクト(3Dモデル)を表示させる(S103)。
図4は、測定処理部131が起動した際に、タッチパネルディスプレイ11に表示される操作画面の遷移について示した図である。
具体的には、測定処理部131は、AR処理部131aを用いて、タッチパネルディスプレイ11の画面中央からカメラの光軸方向にレイを飛ばしてヒットする平面(ステップS102で検出した平面)の上にマーカのオブジェクトを配置させるものとする。この時ユーザにより、被測定物TOが配置されている平面がタッチパネルディスプレイ11の画面中央に位置するように測定装置10を操作されたものとする。
ここでは、図4(a)に示すように、被測定物TOが設置された床面FにマーカのオブジェクトM(下向きの円錐形状の3Dモデル)が配置された表示となっている。
ここで、ユーザ(ユーザの手UH)により、タッチパネルディスプレイ11の画面操作(タッチ)が検出されたものとする(S104)。
そうすると、測定処理部131は、AR処理部131aを用いて、マーカMの位置に、所定の初期形状の測定用仮想オブジェクトMOを配置する(S105)。測定処理部131は、初期形状の測定用仮想オブジェクトMOを配置すると、ユーザの操作に応じて、測定用仮想オブジェクトMOの形状を、同じ画面上に写っている被測定物画像GT(被測定物TO)の形状(外形)と一致(フィット)させる処理(以下、「フィッティング処理」と呼ぶ)に移行する。
言い換えると、測定処理部131において、測定用仮想オブジェクトMOは、ユーザの操作(主としてタッチパネルディスプレイ11上の操作)に応じて、形状が変更するような設定となっている。
ここで、測定用仮想オブジェクトMOが図4(b)に示すような直方体であるものとすると、測定処理部131は、フィッティング処理において、測定用仮想オブジェクトMOに対して、位置(床面F上の位置)、姿勢(床面F上の向き)、及び各寸法(幅、高さ、及び奥行)の変更を受け付ける必要がある。測定処理部131が、測定用仮想オブジェクトMOのフィッティング処理については、種々の3Dモデルの位置、姿勢及び各寸法の変更を受け付けることが可能なGUI(3Dモデルの編集を受け付けるGUI)を適用することができる。しかしながら、一般的な3Dモデルの編集を受け付けるGUIでは、ユーザの思い通りの位置にユーザの思い通りの形状を設置することは難しい場合がある。そのため、この実施形態の測定用仮想オブジェクトMOでは、以下のような構成を適用するものとする。なお、測定用仮想オブジェクトMOの構成については、以下の構成に限定されないものである。
この実施形態では、測定用仮想オブジェクトMOの形状は、直方体であるものとするが、測定用仮想オブジェクトMOの形状は被測定物TOと一致する形状であれば、他の形状(例えば、円錐形状や円柱形状等)であってもよい。
図4(b)では、図4(a)においてマーカMの配置されていた位置に、測定用仮想オブジェクトMOが配置されている。この実施形態の例では、図4(b)に示すように、初期状態において、測定用仮想オブジェクトMOは、1辺がタッチパネルディスプレイ11の画面上で正対(カメラ12の光軸と正対)するように配置されるものとする。
この実施形態では、図示の都合上、測定用仮想オブジェクトMOは各辺が点線で描かれ、各面は透明となっているが、測定用仮想オブジェクトMOを構成する辺や面の描画方法(描画パターン)は限定されないものである。例えば、測定用仮想オブジェクトMOの各面を半透明(透過;メッシュ)のパターンとするようにしてもよい。
以下では、図4(b)に示すように、測定用仮想オブジェクトMOにおいて、初期状態で手前に写っている面を正面FFと呼び、正面FFの上側の面を上面FUと呼ぶものとする。また、以下では、測定用仮想オブジェクトMOにおいて、正面FFの下側の面(床面Fに接地する面)を下面FS、正面FFと対向する面を背面FB、正面FFの方から見て左側の面を左面FL、正面FFの方から見て右側の面をFRとそれぞれ呼ぶものとする。
図5〜図8は、測定用仮想オブジェクトMOの構成の例について示した図である。
図5は、測定用仮想オブジェクトMOを構成する各辺及び各面を特定する符号について示した図である。
図5(a)は、測定用仮想オブジェクトMOを正面FF側から見た場合の斜視図である。また、図5(b)は、測定用仮想オブジェクトMOを背面FB側から見た場合の斜視図である。
図5に示すように、以下では、測定用仮想オブジェクトMOにおいて、上面FUと正面FFとの間の辺をS_UF、上面FUと背面FBとの間の辺をS_UB、上面FUと左面FLとの間の辺をS_UL、上面FUと右面FRとの間の辺をS_UR、正面FFと左面FLとの間の辺をS_FL、正面FFと右面FRとの間の辺をS_FR、背面FBと左面FLとの間の辺をS_BL、背面FBと右面FRとの間の辺をS_BR、上面FUと正面FFとの間の辺をS_UF、上面FUと背面FBとの間の辺をS_UB、上面FUと左面FLとの間の辺をS_UL、上面FUと右面FRとの間の辺をS_URとそれぞれ呼ぶものとする。
また、図5に示すように、以下では、測定用仮想オブジェクトMOにおいて、正面FF/背面FBの水平方向の寸法を幅LW、正面FF/背面FBの垂直方向の寸法を高さLH、左面FL/右面FRの水平方向の寸法を奥行LDと呼ぶものとする。
測定処理部131は、フィッティング処理の際、測定用仮想オブジェクトMOを構成する各辺についてドラッグ(タッチパネルディスプレイ11上で指を画面に触れたままま、目的の場所まで移動する動作)の操作により、変形(幅LW、高さLH、奥行LDの変更)を受け付けることが可能であるものとする。しかしながら、測定用仮想オブジェクトMOを構成する各辺は線の分の幅しかなくドラッグ操作(タッチした位置からレイを飛ばして辺にヒットさせる操作)が成功し難い。そのため、この実施形態の測定処理部131では、に示すように、測定用仮想オブジェクトMOでドラッグ操作を受け付ける辺の周辺に、所定の形状のコライダーを設けるものとする。コライダーは、当たり判定(タッチした位置からレイを飛ばした際の衝突判定)により操作を受け付けることが可能な不可視のオブジェクト(操作用オブジェクト)である。コライダーはUnity/ARkit等の開発環境で定義可能なオブジェクトである。
この実施形態では、測定用仮想オブジェクトMOの各辺に対応するコライダーが、測定用仮想オブジェクトMOの各面に配置(面形状のコライダー)されているものとする。例えば、測定用仮想オブジェクトMOでは、各コライダーは、測定用仮想オブジェクトMOの各面において、各辺を底辺とする三角形の形状としてもよい。
図6は、この実施形態に測定用仮想オブジェクトMOにおけるコライダーの配置構成の例について示した図である。
図6(a)は、測定用仮想オブジェクトMOについて正面FF側から見た斜視図であり、図6(b)は測定用仮想オブジェクトMOについて背面FB側から見た斜視図である。
図6の例では、測定用仮想オブジェクトMOの各面上で、対角線により分割(四角形の面上で2本の対角線により4つに分割)された各領域によりコライダーが形成されるものとする。言い換えると、この実施形態において、測定用仮想オブジェクトMOを構成する各コライダーの形状は、測定用仮想オブジェクトMOの各面において、各辺により一辺(底辺)が形成され、さらに残りの2辺が当該面の対角線により形成された三角形(二等辺三角形)の形状であるものとする。
したがって、この実施形態において、測定用仮想オブジェクトMOでは、各面において4辺それぞれに対応するコライダーが形成されるため、合計で24個のコライダーが形成されることになる。
図6に示すように、測定用仮想オブジェクトMOにおいて、正面FF上には、辺S_UF、S_SF、S_FL、S_FRのそれぞれに対応するコライダーC_FU、C_FS、C_FL、C_FRが配置されている。また、背面FB上には、辺S_UB、S_SB、S_BL、S_BRのそれぞれに対応するコライダーC_BU、C_BS、C_BL、C_BRが配置されている。さらに、上面FU上には、辺S_UF、S_UB、S_UL、S_URのそれぞれに対応するコライダーC_UF、C_UB、C_UL、C_URが配置されている。さらにまた、下面FS上には、辺S_SF、S_SB、S_SL、S_SRのそれぞれに対応するコライダーC_SF、C_SB、C_SL、C_SRが配置されている。また、左面FL上には、辺S_UL、S_SL、S_FL、S_BLのそれぞれに対応するコライダーC_LU、C_LS、C_LF、C_LBが配置されている。さらに、右面FR上には、辺S_UR、S_SR、S_FR、S_BRのそれぞれに対応するC_RU、C_RS、C_RF、C_RBが配置されている。それぞれのコライダーは、測定用仮想オブジェクトMOにおいて、当該コライダーが形成された面上で、当該コライダーが対応する辺と直交する方向の寸法変更(測定用仮想オブジェクトMOの寸法変更)を受け付けるオブジェクト(操作オブジェクト)として機能する。
図7は、測定用仮想オブジェクトMOに配置されるコライダーの構成例について示した図である。
FF上に配置された辺S_FRに対応するコライダーC_FR(辺S_FRと正面FF上の対角線により囲われた三角形状の領域)にハッチ(斜線のパターン)を付して図示している。この場合、このコライダーC_FRは、形成された正面FF上で、コライダーC_FRが対応する辺S_FRと直交する方向は幅方向となるため、コライダーC_FRは幅LHの寸法変更を受け付けるコライダーとして機能することになる。
各コライダーは、対応する辺と対角線により囲われた領域内であれば、その形状や配置位置は限定されないものである。例えば、図8に示すように、各コライダーは、対応する辺と対角線により囲われた領域内であれば、円形や四角形等のその他の図形(多角形)状であってもよい。
次に、測定処理部131が、フィッティング処理を行う際の処理の例について、図9のフローチャートを用いて説明する。
測定処理部131は、フィッティング処理を開始すると、まず、タッチパネルディスプレイ11の画面上に必要なオブジェクトを配置してフィッティング処理の画面(以下、「フィッティング処理画面」と呼ぶ)を構成する(S201)。
図10は、フィッティング処理画面の構成例について示した図である。
図10に示すフィッティング処理画面では、測定用仮想オブジェクトMOの回転(姿勢変更)を受け付けるための2つのボタンBL、BRと、現在の測定用仮想オブジェクトMOが現実世界に存在した場合の各パラメータ(以下、「測定用仮想オブジェクトパラメータ」と呼ぶ)を表示するためのフィールドFPと、現在のフィッティング処理を完了することを受け付けるためのボタンBFEと、が表示されている。
この実施形態の例では、測定用仮想オブジェクトパラメータとして、測定用仮想オブジェクトMOの幅LW、高さLH、奥行LD、及び体積(LW×LH×LD)のパラメータが表示されている。フィールドFPに表示する測定用仮想オブジェクトパラメータの数や組み合わせについては限定されないものであり、種々の組み合わせを適用することができる。測定処理部131は、測定用仮想オブジェクトMOが現実空間にあったとした場合における測定用仮想オブジェクトパラメータ(幅LW、高さLH、奥行LD、及び体積)を計算し、フィールドFPに表示する。図10に示すフィッティング処理画面では、初期状態ではフィールドFPに、初期状態の測定用仮想オブジェクトMOに関する各パラメータが表示されている。測定処理部131(AR処理部131a)では、測定用仮想オブジェクトMOの現実空間における座標(グローバル座標/3D座標)が把握されているため、測定用仮想オブジェクトパラメータの算出は可能である。
そしてその後、測定処理部131は、フィッティング処理画面において、タッチパネルディスプレイ11に対する所定の操作を検出するまで待機し(S202)、その操作の内容に応じたフィッティング処理(測定用仮想オブジェクトMOの編集処理)に移行する。
具体的には、この実施形態の測定処理部131は、フィッティング処理画面において、少なくとも以下の3つの操作のうち、いずれかを検出した場合に対応するフィッティング処理(測定用仮想オブジェクトMOの編集処理)に移行する。
測定処理部131は、フィッティング処理画面において、2点のタッチ(2本指)でのドラッグ操作が発生した場合、測定用仮想オブジェクトMOの位置を移動させる処理(以下、「位置移動処理」と呼ぶ)を行う(S203)。位置移動処理の詳細については後述する。測定処理部131は、位置移動処理の実行後、ステップS202に戻って次の操作検出まで待機する。
また、測定処理部131は、フィッティング処理画面において、いずれかの回転ボタンBL、BRのタッチが発生した場合、測定用仮想オブジェクトMOの姿勢を回転(タッチされたボタンに応じた方向に回転)させる処理(以下、「回転処理」と呼ぶ)を行う(S204)。回転処理の詳細については後述する。測定処理部131は、回転処理の実行後、ステップS202に戻って次の操作検出まで待機する。
さらに、測定処理部131は、フィッティング処理画面において、1点のタッチ(1本指)で、測定用仮想オブジェクトMOのいずれかのコライダーがドラッグ操作された場合に、測定用仮想オブジェクトMOのいずれかの寸法を変更する処理(以下、「寸法変更処理」と呼ぶ)を行う(S205)。寸法変更処理の詳細については後述する。測定処理部131は、ステップS205の寸法変更処理の後、変更した寸法に基づいて測定用仮想オブジェクトパラメータを更新し、フィールドFPに更新後の測定用仮想オブジェクトパラメータを表示させる(S206)。測定処理部131は、測定用仮想オブジェクトパラメータの更新処理の後、ステップS202に戻って次の操作検出まで待機する。
さらにまた、測定処理部131は、フィッティング処理画面において、ボタンBFEが押下されると、現在の被測定物TOに対するフィッティング処理を終了し、当該被測定物TOに関するフィッティング処理の結果を含む情報(以下、「被測定物情報」と呼ぶ)を登録(保持)して(S207)、当該被測定物TOに関する一連の処理を終了する。
測定処理部131は、フィッティング処理画面において、以上のような操作をユーザから繰り返す受け付けることで、フィッティング処理を行う。
次に、位置移動処理の詳細について説明する。
図11は、測定処理部131が、フィッティング処理画面において位置移動処理が行われる際の画面遷移の例について示した図である。
図11(a)は位置移動処理の前のフィッティング処理画面の状態について示しており、図11(b)はユーザの手UHの操作に応じて位置移動処理を行った後の状態について示している。
図11に示すように、フィッティング処理画面において、2点のタッチ(2本指)でのドラッグ操作が発生した場合、測定処理部131は、測定用仮想オブジェクトMOの位置(例えば、測定用仮想オブジェクトMOの中心位置)を、当該ドラッグ操作の方向(指を滑られた方向)に、当該ドラッグ操作の距離(指を滑らせた距離)に応じた分移動させる処理を行う。2点タッチの場合、測定処理部131は、2点の中間点の位置の移動に応じて、測定用仮想オブジェクトMOの位置移動処理を行う。
次に、回転処理の詳細について説明する。
図12は、測定処理部131が、フィッティング処理画面において回転処理が行われる際の画面遷移の例について示した図である。
図12(a)は回転処理の前のフィッティング処理画面の状態について示しており、図12(b)はユーザの手UHの操作に応じて回転処理を行った後の状態について示している。
図12に示すように、フィッティング処理画面において、回転ボタンBL、BRのいずれかが押下された場合、測定処理部131は、測定用仮想オブジェクトMOを床面F上で中心点として押下された回転ボタンの方向に回転させる処理を行う。測定処理部131は、左回転ボタンBLが押下された場合は測定用仮想オブジェクトMOを左方向(時計回り)に回転させ、右回転ボタンBRが押下された場合は測定用仮想オブジェクトMOを右方向(半時計回り)に回転させる。このとき、測定処理部131は、回転ボタンがタッチされる度に一定の角度だけ測定用仮想オブジェクトMOを回転させるようにしてもよいし、回転ボタンが継続してタッチされた時間に応じた分の角度、測定用仮想オブジェクトMOを回転させるようにしてもよい。
次に、寸法変更処理の詳細について説明する。
以下ではドラッグ操作されているコライダーを「操作コライダー」と呼び、操作コライダーに対応する辺を「操作辺」とも呼ぶものとする。また、以下では、操作コライダーが配置されてる面から見て、操作辺を挟んで隣接する面を「操作面」と呼ぶものとする。操作面は、操作コライダーの操作により寸法変更される際に移動する面となる。
フィッティング処理画面において、測定用仮想オブジェクトMOのいずれかのコライダーで、1点のタッチ(1本指)によるドラッグ操作が発生した場合(タッチされた位置からレイを飛ばしていずれかのコライダーで衝突が発生した場合)、測定処理部131は、操作された操作コライダーが配置された面上で、操作コライダーに対応する辺と直交する方向(操作面と直交する方向)の寸法について、当該ドラッグ操作の方向(指を滑られた方向)に、当該ドラッグ操作の距離(指を滑らせた距離)に応じた分寸法を変更させる処理を行う。言い換えると、測定処理部131は、操作コライダーに対応する操作辺を、当該操作面と直交する方向(法線方向又は法線方向と逆の方向)に移動させる処理を行うことになる。
次に、寸法変更処理の詳細について説明する。
図13、図14、図15は、測定処理部131が、フィッティング処理画面において寸法変更処理が行われる際の画面遷移の例について示した図である。
図13、図14、図15は、それぞれ、測定用仮想オブジェクトMOについて、幅方向の寸法LW、高さ方向の寸法LH、奥行方向の寸法LDについて寸法変更処理が行われた場合の画面遷移について示している。
そして、図13(a)、図14(a)、図15(a)はそれぞれ寸法変更処理の前のフィッティング処理画面の状態について示しており、図13(b)、図14(b)、図15(b)はそれぞれユーザの手UHの操作に応じて寸法変更処理を行った後の状態について示している。
まず、図13を用いて、幅方向の寸法LWを変更する際の寸法変更処理について説明する。図13では、面FF上で辺S_FRに対応するコライダーC_FRがドラッグ操作された場合における寸法変更処理について示している。
図13(a)では、手前側に面FFが正対するカメラ視点で、コライダーC_FRがドラッグ操作されている。
操作コライダーがコライダーC_FRの場合、コライダーC_FRが形成された正面FF上で、コライダーC_FRが対応する辺S_FRと直交する方向は幅方向となるため、コライダーC_FRは幅LHの寸法変更を受け付ける操作コライダーとして機能することになる。
コライダーC_FRが、操作辺S_FRを基準として、測定用仮想オブジェクトMOの中心位置(面FFの中心位置)から遠ざかる方向(図13(a)では+LW方向と図示)にドラッグ操作された場合、測定処理部131は、+LW方向に、当該ドラッグ操作の距離(+LW方向に指を滑らせた距離)に応じた分だけ測定用仮想オブジェクトMOの幅方向の寸法LWを増加させる寸法変更処理を行う。このとき、正面FF上で操作辺S_FRと対向する辺S_FLの位置は固定したままとする。
コライダーC_FRが、操作辺S_FRを基準として、測定用仮想オブジェクトMOの中心位置(面FFの中心位置)に近づく方向(図13(a)では−LW方向と図示)にドラッグ操作された場合、測定処理部131は、−LW方向に、当該ドラッグ操作の距離(−LW方向に指を滑らせた距離)に応じた分だけ測定用仮想オブジェクトMOの幅方向の寸法LWを減少させる寸法変更処理を行う。このときも、正面FF上で操作辺S_FRと対向する辺S_FLの位置は固定したままとする。
言い換えると、この場合、コライダーC_FRは、測定用仮想オブジェクトMOの幅方向の寸法LWを変動させるスライダーとして機能しているともいえる。
そして、ここでは、図13(b)に示すように、コライダーC_FRが、−LW方向に被測定物画像GTの右端の位置までドラッグ操作され、測定用仮想オブジェクトMOの幅方向の寸法LWが被測定物TO(被測定物画像GT)と一致した状態となったものとする。
次に、図14を用いて、高さ方向の寸法LHを変更する際の寸法変更処理について説明する。図14では、面FF上で、辺S_UFに対応するコライダーC_UFがドラッグ操作された場合における寸法変更処理について示している。
操作コライダーがコライダーC_UFの場合、コライダーC_UFが形成された正面FF上で、コライダーC_UFが対応する辺S_UFと直交する方向は高さとなるため、コライダーC_UFは高さLHの寸法変更を受け付けるコライダーとして機能することになる。
コライダーC_UFが、操作辺S_UFを基準として、測定用仮想オブジェクトMOの中心位置(面FFの中心位置)から遠ざかる方向(図14(a)では+LH方向と図示)にドラッグ操作された場合、測定処理部131は、+LH方向に、当該ドラッグ操作の距離(+LH方向に指を滑らせた距離)に応じた分だけ測定用仮想オブジェクトMOの高さ方向の寸法LHを増加させる寸法変更処理を行う。
そして、ここでは、図14(b)に示すように、コライダーC_UFが、−LH方向に被測定物画像GTの上端の位置までドラッグ操作され、測定用仮想オブジェクトMOの高さ方向の寸法LHが被測定物TO(被測定物画像GT)と一致した状態となったものとする。
次に、図15を用いて、奥行方向の寸法LDを変更する際の寸法変更処理について説明する。図15では、上面FU上で、辺S_UBに対応するコライダーC_UBがドラッグ操作された場合における寸法変更処理について示している。
操作コライダーがコライダーC_UBの場合、コライダーC_UBが形成された上面FU上で、コライダーC_UBが対応する辺S_UFと直交する方向は奥行となるため、コライダーC_UBは奥行LDの寸法変更を受け付けるコライダーとして機能することになる。
コライダーC_UBが、操作辺S_UBを基準として、測定用仮想オブジェクトMOの中心位置(面FUの中心位置)から遠ざかる方向(図15(a)では+LD方向と図示)にドラッグ操作された場合、測定処理部131は、+LD方向に、当該ドラッグ操作の距離(+LD方向に指を滑らせた距離)に応じた分だけ測定用仮想オブジェクトMOの奥行方向の寸法LDを増加させる寸法変更処理を行う。このとき、上面FU上で操作辺S_UBと対向する辺S_UFの位置は固定したままとする。
また、コライダーC_UBが、操作辺S_UBを基準として、測定用仮想オブジェクトMOの中心位置(面FUの中心位置)に近づく方向(図15(a)では−LD方向と図示)にドラッグ操作された場合、測定処理部131は、−LD方向に、当該ドラッグ操作の距離(−LD方向に指を滑らせた距離)に応じた分だけ測定用仮想オブジェクトMOの奥行方向の寸法LDを減少させる寸法変更処理を行う。なお、このときも、上面FU上で操作辺S_UBと対向する辺S_UFの位置は固定したままとする。
そして、ここでは、図15(b)に示すように、コライダーC_UBが、−LD方向に被測定物画像GTの上端の位置までドラッグ操作され、測定用仮想オブジェクトMOの奥行方向の寸法LDが被測定物TO(被測定物画像GT)と一致した状態となったものとする。すなわち、図15(b)の状態において、フィールドFPに表示された測定用仮想オブジェクトパラメータは、現実空間の被測定物TOと一致していることを示すことになる。
次に、寸法変更処理の際の測定用仮想オブジェクトMOの変形処理の詳細について説明する。
上述の通り、測定処理部131は、測定用仮想オブジェクトMO上に配置されたいずれかのコライダーで受け付けたドラッグ操作の距離(指を滑らせた距離)に応じて、測定用仮想オブジェクトMOの幅、高さ、又は奥行のいずれかについて増減させる。また、上述の通り、測定用仮想オブジェクトMOについて寸法変更処理を受け付ける際には、図13〜図15に示す通り、操作コライダーに対応する操作辺だけを移動させ、操作辺と対向する辺については固定したままとする方が、操作性が高い(よりユーザの意図に合致した寸法変更を受け付けることができる)。例えば、図15に示すように、コライダーC_UBを操作して、測定用仮想オブジェクトMOの奥行方向の寸法を変更する際には、辺S_UBに対向する辺S_UF(正面FF)の位置を固定したままとし、コライダーC_UBに対応する辺S_UB(背面FB)のみを移動させることになる。
しかしながら、3Dオブジェクトの変形を受け付けるGUIにおいて、一辺に対して移動のドラッグ操作を受け付けた場合、3Dオブジェクトの中心位置を固定したままとする処理が一般的である。その場合、3Dオブジェクトの中心位置を固定したまま一辺に対して移動の操作を受け付けると、移動の操作を受け付けた辺だけでなく、その辺に対向する辺についても同じ距離だけ移動することになる。例えば、ARkitやUnityにおいて3Dオブジェクトを処理する際に標準的に用いられるライブラリ(以下、「3Dオブジェクト処理ライブラリ」と呼ぶ)を用いてフィッティングのGUIを構成する場合も同様に、3Dオブジェクトの一辺に対してドラッグ操作を受け付けた場合、基本的には当該3Dオブジェクトの中心位置を固定したままとする処理が行われる。この実施形態の測定処理部131においても、同様の処理を行う3Dオブジェクト処理ライブラリが適用されているものとする。
そのため、この実施形態の測定処理部131は、測定用仮想オブジェクトMOの一辺に対して寸法変更の操作(ドラッグ操作)を受け付けた場合、測定用仮想オブジェクトMOの中心位置を、当該寸法変更に応じた位置に移動させる処理を行うものとする。具体的には、測定処理部131は、測定用仮想オブジェクトMOの一辺に対して寸法変更の操作(ドラッグ操作)を受け付けた場合、測定用仮想オブジェクトMOの中心位置を、操作コライダーC_UBに対応する第1の辺が移動する方向と同じ方向(寸法変更する方向)に、第1の辺が移動する距離の半分の距離(2分の1の距離)だけ移動させる処理を行うものとする。
図16、図17は、それぞれ測定用仮想オブジェクトMOの上面FUのコライダーC_UBがドラッグ操作され、測定用仮想オブジェクトMOの奥行方向の寸法が変更(減少)される例について示した図である。図16は寸法変更の際に中心位置を固定とした場合の例を示しており、図17は、測定用仮想オブジェクトMOの寸法変更の際に寸法変更に応じて中心位置を移動させる場合の例について示している。
図16、図17は、それぞれ測定用仮想オブジェクトMOを上側(上面FU)から見た状態の図(平面図)となっている。図16(a)、図17(a)はそれぞれ測定用仮想オブジェクトMOがドラッグ操作される前の状態について示しており、図16(b)、図17(b)はそれぞれ測定用仮想オブジェクトMOが、内側の方向(奥行方向の寸法が減少する方向)にドラッグ操作された後の状態について示している。図16、図17の例では、測定用仮想オブジェクトMOについてP201からP202の位置までドラッグ操作された例について示している。図16では、寸法変更前の測定用仮想オブジェクトMOの奥行方向の寸法をLD1、ドラッグ操作された距離(P201からP202までの距離)をLD2としている。
また、図16、図17では、ドラッグ操作前の測定用仮想オブジェクトMOの中心位置をP101としている。さらに、図17の例では、ドラッグ操作に伴って、測定用仮想オブジェクトMOの中心位置がP102の位置まで移動している。
図16の例では、ドラッグ操作の前後で、測定用仮想オブジェクトMOの中心位置は固定されているので、操作されたコライダーC_UBに対応する辺S_UBだけでなく、対向する辺S_UFについてもドラッグ操作された距離LD2の分だけ内側に移動した状態となっている。
一方、図17の例では、ドラッグ操作されたコライダーC_UBに対応する辺S_UBが内側に距離LD2移動すると、測定用仮想オブジェクトMOの中心位置がその距離LD2の半分の距離(LD2/2)だけ同じ方向に移動している。図17(b)に示すように、ドラッグ操作(寸法変更)後の測定用仮想オブジェクトMOの中心位置はP102となっている。これにより、図17の例では、一般的な3Dオブジェクト処理ライブラリ(一辺に対して移動のドラッグ操作を受け付けた場合、3Dオブジェクトの中心位置を固定したままとする処理を行うライブラリ)を用いて処理された場合でも、辺S_UB(ドラッグ操作されたコライダーC_UBに対応する辺)に対向する辺S_UFの位置は固定されたままとなる。
以上のように、測定処理部131は図9のフローチャートに従って、ユーザの操作に応じたフィッティング処理(測定用仮想オブジェクトパラメータの更新処理を含む)を繰り返すことで、ユーザに対して被測定物TOの形状に係る測定値を提示することが可能となる。
次に、測定処理部131により、被測定物TOについてフィッティング処理が完了し、当該被測定物TOに関する被測定物情報を登録する処理(上述のステップS207の処理)の詳細について説明する。
フィッティング処理画面で、フィッティング処理の完了を受け付けるためのボタンBFEが押下されると、測定処理部131は、現在フィッティング処理中の被測定物TOについてフィッティングが完了し、測定用仮想オブジェクトMOの形状が被測定物TOと一致/対応していると見なし、現在の測定用仮想オブジェクトMOの形状(寸法)に関する情報を被測定物TOの形状に関する情報(以下、「形状情報」として取得する。
ここでは、測定処理部131は、少なくとも測定用仮想オブジェクトMOの形状情報及び、当該被測定物TOの属性に関する情報(以下、「属性情報」と呼ぶ)を取得する。
当該被測定物TOの属性に関する情報は、撮像された画像から推定(例えば、AI等を用いた画像認識処理により推定)して取得するようにしてもよいし、ユーザからの操作入力により取得するようにしてもよい。
例えば、測定処理部131は、タッチパネルディスプレイ11から、当該被測定物TOの属性情報の入力を受けつけるための操作画面(以下、「属性情報入力画面」と呼ぶ)を表示させて、ユーザから属性情報の入力を受け付けるようにしてもよい。
図18は、属性情報入力画面の構成例について示した図である。
図18では、ユーザから属性情報の選択を受け付けるためのボタンB101、B102、B103、B104、・・・が配置されている。属性情報入力画面に配置されたボタンは、それぞれ対応する属性情報の値に対応するボタンとなっている。例えば、図18では、ボタンB101は「段ボール箱」、ボタンB102は「冷蔵庫」、ボタンB103は「テレビ」、ボタンB104は「ソファ」に対応する値の入力を受け付けるボタンとして機能することを示している。例えば、図18に示す属性情報入力画面で、ボタンB101が押下されると、当該被測定物TOの属性情報は「段ボール箱」であることの入力を受け付けることになる。
以上のように、測定処理部131は、当該被測定物TOの形状情報及び属性情報を取得する。ここでは、測定処理部131は、当該被測定物TOの形状情報及び属性情報を含む情報を被測定物情報として取得する。
以上のように、この実施形態の測定処理部131は、1又は複数の被測定物TOについて被測定物情報を取得することができる。
ここでは、測定処理部131は、複数の被測定物TO(例えば、1つのコンテナに積み込む予定の複数の荷物のセット)について連続してフィッティング処理を行うことが可能であるものとする。
例えば、測定処理部131は、1つの被測定物TOについてフィッティング処理及び被測定物情報の取得が完了すると、ユーザに次の被測定物TOのフィッティング処理に移行するか、全ての被測定物TOのフィッティング処理を完了するかの選択を受け付ける操作画面(以下、「選択画面」と呼ぶ)を表示して、ユーザから次の操作の選択を受け付けるようにしてもよい。
図19は、選択画面の構成例について示した図である。
図19に示す選択画面では、次の被測定物TOのフィッティングの処理への意向を受け付けるためのボタンB201と、全ての被測定物TOについてフィッティング処理が完了したことを受け付けるためのボタンB202が配置されているものとする。
測定処理部131は、選択画面でボタンB201が押下された場合は、上述の図3のフローチャートのステップS102に戻って動作を再開し、次の被測定物TOのフィッティング処理に移行し、選択画面でB202が押下された場合には、フィッティング処理を行った1又は複数の被測定物TOを収納庫(例えば、荷物を運搬するためのコンテナ等)に収納する際の配置のシミュレーションを行う処理(以下、「収納庫配置シミュレーション処理」と呼ぶ)に移行する。
次に、測定処理部131による収納庫配置シミュレーション処理について説明する。
測定処理部131は、コンテナ配置シミュレーション処理を開始すると、各被測定物TO(フィッティング処理により被測定物情報を取得した被測定物TO)を収納庫に収納する際のシミュレーションを行うための操作画面(以下、「収納庫配置シミュレーション画面」と呼ぶ)をタッチパネルディスプレイ11に表示させる。
図20は、収納庫配置シミュレーション画面の構成例について示した図である。
図20に示す通り、収納庫配置シミュレーション画面では、4つの被測定物TOのそれぞれに対応する3DオブジェクトOB201〜OB204と、被測定物TOを収納する予定の収納庫に対応する3DオブジェクトOB201が配置されている。図20に示す収納庫配置シミュレーション画面では、各3Dオブジェクトを床面の上に載置し、斜め上の視点から見た状態をモデリングした画像となっている。
この実施形態では、図示の都合上、収納庫の3DオブジェクトOB201は、各辺が点線で描かれ、各面は透明となっているが、収納庫の3DオブジェクトOB201を構成する辺や面の描画方法(描画パターン)は限定されないものである。例えば、収納庫の3DオブジェクトOB201の各面を半透明(透過;メッシュ)のパターンとするようにしてもよい。
また、この実施形態では、4つの被測定物TOの属性情報がいずれも段ボール箱であるものとする。そして、図20に示す収納庫配置シミュレーション画面では、被測定物の3DオブジェクトOB201〜OB204では、属性情報に対応する画像(ここでは段ボール画像のテクスチャ)が表面に描画(レンダリング)されている。被測定物の3Dオブジェクトに描画するテクスチャの画像は、属性情報ごとに対応する画像を予め保持しておくようにしてもよいし、フィッティング処理等の際に撮影した画像を適用するようにしてもよい。
測定処理部131は、各被測定物TOの3Dオブジェクトについて、形状情報(フィッティング処理により取得した、幅、高さ及び奥行)に応じた形状をモデリングして画面上に描画(レンダリング)する。また、測定処理部131は、モデリングする収納庫の3Dオブジェクトの形状(例えば、幅、高さ及び奥行)の情報について、予め取得しておくようにしてもよいし、ユーザから入力を受け付けるようにしてもよい。
図20では、収納庫配置シミュレーション画面の初期状態を示している。図20では、それぞれの被測定物TOの3DオブジェクトOB201〜OB204は、収納庫の3DオブジェクトOB101の外側に配置されている。
図21、図22は、収納庫配置シミュレーション画面の遷移の例について示した図である。
そして、収納庫配置シミュレーション画面では、ユーザからの操作(例えば、ドラッグ操作等)により、それぞれの被測定物TOの3DオブジェクトOB201〜OB204について移動を受け付けることが可能であり、図21に示すように収納庫の3Dオブジェクトの内側への移動が可能となっているものとする。
また、収納庫配置シミュレーション画面では、図22に示すように視点(各3Dオブジェクトを見た場合の視点)の変更を受け付けることも可能であるものとする。
このとき、測定処理部131は、ユーザが収納庫の3DオブジェクトOB101の内側と外側の境界上にいずれかの被測定物TOの3Dオブジェクトを移動させようとした場合(ドラッグ操作(ドロップ)させようとした場合)、当該被測定物TOの3Dオブジェクトの位置を、収納庫の3DオブジェクトOB101の境界からはずれた位置(例えば、ドラッグ操作(ドロップ)前の位置)に移動させる処理を行うようにしてもよい。
図20〜図22に示すように、収納庫配置シミュレーション画面では、ユーザに対して、全ての被測定物TO(3DオブジェクトOB201〜OB204)について、収納庫(3DオブジェクトOB101)の内部に収まるか否かや、収納庫内における各被測定物TOのレイアウト等のシミュレーション環境を提供することができる。
以上のように、ユーザは、各被測定物TOについてフィッティング処理を行い、収納庫配置シミュレーション画面上で操作するだけで、容易に、必要な収納庫の数や収納庫内における被測定物TOのレイアウト等を把握することができる。
(A−3)第1の実施形態の効果
この実施形態によれば、以下のような効果を奏することができる。
この実施形態の測定装置10では、タッチパネルディスプレイ11に、カメラ12の撮像画像と共に測定用仮想オブジェクトMOを表示し、ユーザの操作に応じて測定用仮想オブジェクトMOの編集(フィッティング処理)を行うことで、ユーザに対して被測定物TOの形状に係る測定値を取得して提示することができる。
これにより、測定装置10では、ユーザの目測によりフィッティングの操作を受け付けるため、メジャー等を用いた精密な測定を行うことはできないが、引越しや宅配の業務において荷物の大きさに基づいた費用の見積もり等を行う際には十分な精度を確保することができる。
また、測定装置10では、スマートホンにアプリケーションをインストールするだけであるため、メジャー等の器具を用いずに測定可能であり、利便性が高い。
さらに、測定装置10では、測定用仮想オブジェクトMOを複数の視点からカメラ12で撮像可能であれば、サイズの大きい物(例えば、本棚や冷蔵庫等)であっても、長尺なメジャーを用いることなく容易に測定することが可能である。
(B)第2の実施形態
以下、本発明による測定装置、測定プログラム及び測定方法の第1の実施形態を、図面を参照しながら詳述する。
(B−1)第2の実施形態の構成及び動作
第2の実施形態の全体構成及び第2の実施形態の測定装置10の構成についても、上述の図1及び図2を用いて示すことができる。
以下では、第2の実施形態について第1の実施形態との差異点について説明する。
第2の実施形態では、測定処理部131の処理の一部が追加されている点で、第1の実施形態と異なっている。
具体的には、第2の実施形態では、フィッティング処理において、一部の処理を測定処理部131が自動的に処理(以下、「オートフィット処理」と呼ぶ)の機能(以下、「オートフィット機能」と呼ぶ)が追加されている点で異なっている。
図23は、第2の実施形態におけるフィッティング処理画面の構成例について示している。
第2の実施形態のフィッティング処理画面では、オートフィット機能のオン/オフの切替を受け付けるためのボタンBAが追加されている点で第1の実施形態と異なっている。図23(a)では、フィッティング処理画面で、オートフィット機能がオフの状態(ボタンBA内が「off」の表示となった状態)を示しており、図23(b)では、フィッティング処理画面で、オートフィット機能がオンの状態(ボタンBA内が「on」の表示となった状態)を示している。
以下では、第2の実施形態の測定処理部131が行うフィッティング処理の例について図24のフローチャートを用いて説明する。
図24は、第2の実施形態において、測定処理部131がフィッティング処理を行う際の処理の例について示したフローチャートである。
図24では、第1の実施形態(図9)と同様の処理を行うステップには、同一のステップ番号(符号)を付している。
第2の実施形態のフローチャートでは、オートフィット機能がオン状態の場合におけるオートフィット処理(ステップS208)が追加されている点で、第1の実施形態と異なっている。
すなわち、図24のフローチャートでは、ステップS202の操作検出でオートフィット機能のオンの操作を検出(例えば、ボタンBAの押下によりオートフィット機能がオンとなった場合)した場合、オートフィット処理を開始し、ステップS208の処理が行われる。
なお、オートフィット機能のオンオフのトリガとなる要素は、上記のボタンに限定されないものであり、種々の方式を適用することができる。例えば、測定処理部131は、測定用仮想オブジェクトMOの一部が長押しされた場合にオートフィット機能のオンオフを受け付けるようにしてもよい。以下では、測定処理部131において、オートフィット機能がオンになっている状態を、「オートフィットオン状態」と呼び、オートフィット機能がオフになっている状態を「オートフィットオフ状態」と呼ぶものとする。
なお、第2の実施形態の測定処理部131では、上述の通り、オートフィット機能のオンオフが可能であるため、測定用仮想オブジェクトMOの一部の面のフィッティング処理についてのみオートフィット処理を適用し、その他の面のフィッティング処理について手動による処理を適用するようにしてもよい。
測定処理部131によるオートフィット処理の手法については複数挙げられる。以下では、測定処理部131によるオートフィット処理について3つの事例を挙げる。
[第1のオートフィット処理]
まず、測定処理部131による第1のオートフィット処理について、図25のフローチャートを用いて説明する。
測定処理部131は、オートフィットオン状態となると、平面(被測定物TOの平面;すなわち床面F以外の平面)上の代表点の探索を試みる処理を行い(S301)、代表点の探索が成功した場合は後述するステップS301から動作し探索が失敗した場合は最初にもどってループし、再度代表点の探索を試みる。具体的には、測定処理部131は、タッチパネルディスプレイ11の画面中央からカメラの光軸方向にレイを飛ばして、平面(ARシステムにより検出される被測定物TOの平面;すなわち床面以外の平面)にヒットした場合、当該平面の中心位置を代表点として取得するものとする。
このとき、測定処理部131は、ARシステムの平面検出により検出された平面のうち最も高さの低い平面(Y座標が最も小さい平面)を床面Fと推定して処理(平面探索処理から除外)するようにしてもよい。
測定処理部131は、測定用仮想オブジェクトMOの代表点探索が成功すると、測定用仮想オブジェクトMOについて拡大縮小(移動)させる際に目標となる面(以下、「目標面」と呼ぶ)、及び寸法を拡大縮小させる方向(以下、「拡大縮小方向」と呼ぶ)を設定する(S302)。
ここでは、測定処理部131は、ステップS301で代表点を探索した平面を目標面と決定し、目標面として決定した平面の法線方向を軸とした方向(目標面に直交する方向)を拡大縮小方向として決定するものとする。
次に、測定処理部131は、測定用仮想オブジェクトMOで操作対象(移動対象)となる面(この実施形態において、以下、「操作面」と呼ぶ)を決定する(S303)。
例えば、測定処理部131は、測定用仮想オブジェクトMOから、最も目標面と向きが近い(回転角が近い;回転角の差分が少ない)面を操作面として選択するようにしてもよい。
例えば、測定処理部131は、目標面の法線ベクトル(例えば、ワールド座標系の単位ベクトル)を、測定用仮想オブジェクトMOのローカルベクトル(測定用仮想オブジェクトMOにおけるローカル座標系のベクトル)に変換し、最も大きい成分に応じた面を操作面として決定するようにしてもよい。また、例えば、測定処理部131は、測定用仮想オブジェクトMOの各面の法線ベクトルについて目標面の法線ベクトルとの内積を算出し、最も内積の値が大きい面(すなわち、最も操作面と向きの近い面)を操作面として選択するようにしてもよい。
次に、測定処理部131は、現在の目標面が、被測定物TOであるか否か(目標として妥当であるか否か)を判断し(S304)、被測定物TOである(目標として妥当である)と判断した場合には後述するステップS305から動作し、そうでない場合はステップS301に戻ってループする。
ステップS304のような判断処理は必須ではないが、挿入することで、ユーザがフィッティング対象として意図していない物体(例えば、非測定物TOの周辺の荷物や壁等)についてまでオートフィット処理を行ってしまうことを避けるためである。
例えば、測定処理部131は、現在の目標面が最も測定用仮想オブジェクトMOから近い平面である場合に、現在の目標面が被測定物TOであると判断するようにしてもよい。具体的には、例えば、測定処理部131は、測定用仮想オブジェクトMOの中心位置から、ステップS302で決定した拡大縮小方向に応じた方向(例えば、目標面の法線方向と同じ方向)にレイを飛ばして最初に当たる平面が目標面であった場合は、目標面が被測定物TOである(目標として妥当である)と判断するようにしてもよい。
現在の目標面が、被測定物TOである(目標として妥当である)と判定した場合、測定処理部131は、測定用仮想オブジェクトMOを回転(水平方向に回転)させて、測定用仮想オブジェクトMOの操作面と、被測定物TOの目標面の向きを一致(並行)させる(S305)。
例えば、測定処理部131は、操作面の法線ベクトルの方向が、目標面の法線ベクトルの方向と一致するように測定用仮想オブジェクトMOを回転させる。
ステップS305において、測定処理部131は、測定用仮想オブジェクトMOについて回転させようとする際に、その回転量(回転する角度)が所定以下(例えば、2度以下)の場合には、当該回転処理を中止(キャンセル)して次の処理に移行するようにしてもよい。これは、測定処理部131による過度な頻度の回転処理(例えば、ユーザの手振れ等により発生する誤差に基づく回転処理)を抑制して、安定的且つ効率的なオートフィット処理を行うためである。
次に、測定処理部131は、測定用仮想オブジェクトMOの操作面を拡大縮小方向に移動(測定用仮想オブジェクトMOの寸法を拡大縮小方向に調整(拡大又は縮小))させる(操作する)ことで、操作面と被測定物TOの目標面の位置を一致させ(S306)、上述のステップS301に戻ってループする。
ステップS306において、測定処理部131は、例えば、目標面の代表点(上述のステップS301で探索した代表点)が、操作面又は操作面の延長上に位置するように、測定用仮想オブジェクトMOの操作面を拡大縮小方向に移動させるようにしてもよい。
ステップS306において、測定処理部131は、操作面について移動させようとする際に、その移動量(調整量、操作量)が所定以下(例えば、実空間上で2cm相当以下)の場合には、当該移動処理(調整処理、操作処理)を中止(キャンセル)して次の処理に移行するようにしてもよい。これは、測定処理部131による過度な頻度の移動処理(例えば、ユーザの手振れ等により発生する誤差に基づく回転処理)を抑制して、安定的且つ効率的なオートフィット処理を行うためである。
以上のように、第1のオートフィット処理では、測定装置10(カメラ12、タッチパネルディスプレイ11)の中央に写った被測定物TOの平面を目標面とし、測定用仮想オブジェクトMOから目標面に対応する1面を操作面として選択し、目標面を操作面と並行となるように測定用仮想オブジェクトMOを回転させ、目標面と操作面の位置が一致(操作面と目標面が直線上に並ぶことも含む)するように、操作面を移動(測定用仮想オブジェクトMOの拡大縮小方向の寸法を調整)することを繰り返している。
次に、測定処理部131が、上述の図25のフローチャートに従って第1のオートフィット処理を行った場合の具体例について説明する。
ここでは、被測定物TOと測定装置10(カメラ12)とが図26のような位置関係にある場合におけるオートフィット処理の例について説明する。
図26では、測定装置10(カメラ12)の光軸は、被測定物TOの一側面に向けられているものとする。図26では、測定装置10(カメラ12)の光軸は、被測定物TOの正面T_FFに向けられているものとする。以下では、正面T_FFに対向する面を背面T_FB、正面T_FFの上側に隣接する面を上面T_FU、正面T_FFの下側に隣接する面を下面T_FS、正面T_FFに向かって左側に隣接する面を左面T_FL、正面T_FFに向かって右側に隣接する面を右面T_FRと呼ぶものとする。
図26では、測定装置10(カメラ12)の光軸は、被測定物TOの正面T_FFに対してやや斜めから向けられている。ここでは、被測定物TOと測定装置10(カメラ12)とが図26のような位置関係にあるときに、測定処理部131でフィッティング処理が開始され、オートフィットオン状態となったものとする。
このとき、測定装置10(タッチパネルディスプレイ11)に表示されるフィッティング処理画面は、図27のような状態となる。
このとき、測定処理部131は、ステップS301の処理において、タッチパネルディスプレイ11の画面中央からカメラの光軸方向にレイを飛ばすと、被測定物TOの正面T_FFにヒットするため、代表点として被測定物TOの正面T_FFの中央位置PRを取得することになる。
このとき、被測定物TOと測定用仮想オブジェクトMOとを上側からみると図28のような状態となる。
図28は、オートフィット処理における被測定物TOと測定用仮想オブジェクトMOとの初期の位置関係を示している。
図28において、被測定物TOの正面T_FFの法線ベクトルの矢印をV_T_FF、測定用仮想オブジェクトMOの正面FFの法線ベクトルの矢印をV_FFと図示している。
したがって、このとき、測定処理部131は、ステップS302の処理において、目標面として正面T_FFと設定し、拡大縮小方向の軸として正面T_FFの法線方向(法線ベクトルV_T_FFの方向)を選択することになる。
また、このとき、ステップS303の処理において、目標面である正面T_FFの法線ベクトルV_T_FF(ワールド座標系の単位ベクトル)を取得して、測定用仮想オブジェクトMOのローカルベクトル(ローカル座標系のベクトル)に変換し、最も大きい成分に応じた面を操作面として決定する。
図28では、右下に測定用仮想オブジェクトMOにおけるローカル座標系について図示している。
測定用仮想オブジェクトMOのローカル座標系では、中心位置PCから見て、奥行方向をZ軸、幅方向をX軸、高さ方向をY軸とする。また、測定用仮想オブジェクトMOのローカル座標系では、中心位置PCから見て、正面T_FFへの方向を+Z方向(Z座標の値が増える方向)、背面T_FBへの方向を−Z方向(Z座標の値が減る方向)、上面T_FUへの方向を+Y方向(Y座標の値が増える方向)、下面T_FSへの方向を−Y方向(Y座標の値が減る方向)、左面T_FLへの方向を−X方向(X座標の値が減る方向)、右面T_FRへの方向を+X方向(X座標の値が増える方向)とそれぞれ設定されているものとする。なお、図28では説明を簡易とするため上側から見た図となっているので高さ方向のY軸は省略して図示している。
そして、このとき、測定処理部131が、正面T_FFの法線ベクトルV_T_TF(ワールド座標系において絶対値が1の単位ベクトル)を、測定用仮想オブジェクトMOのローカル座標系の座標(図28に示す幅X、高さY、奥行Zの各座標値で表される座標)に変換した結果、ベクトルV_T_TFは幅X=−0.5、高さY=0、奥行Z=+0.87という値となったものとする。この場合、ベクトルV_T_TFでは、+Z方向が最も大きな成分であることが分かるので、測定処理部131は、操作面として+Z方向に対応する正面FFを選択することになる。
なお、図28から、測定用仮想オブジェクトMOの各面の法線ベクトルのうち、目標面の法線ベクトルV_T_FFと最も向きの近いもの(例えば、最も内積の大きいもの)に対応する面を選んでも、同様に正面FFという結果となることが分かる。
さらに、このとき、ステップS304の処理において、測定処理部131は、測定用仮想オブジェクトMOの中心位置PCから、ステップS302で決定した拡大縮小方向に応じた方向(例えば、目標面の法線方向)にレイを飛ばすと、最初に当接する平面が被測定物TOの正面T_FFとなるため、現在の操作面は、真に被測定物TOの平面である(最も測定用仮想オブジェクトMOと近く、被測定物TOの面として相応しい)と認定し、ステップS305以後の処理に移行することになる。ここでは、測定用仮想オブジェクトMOの中心位置PCは被測定物TOの内部に位置するため、被測定物TOの周囲に他の平面(例えば、壁等)が存在したとしても、正面T_FFが最も近い平面ということになる。
次に、測定処理部131は、ステップS305の処理により、図28の状態から、操作対称面である正面FFの法線ベクトルV_FFが、目標面である正面T_FFの法線ベクトルV_T_FFと一致するように(並行となるように)、測定用仮想オブジェクトMOを回転させる。
このとき、被測定物TOと測定用仮想オブジェクトMOとの位置関係は、図28から図29のような状態となる。
図29では、操作対称面である正面FFの法線ベクトルV_FFが、目標面である正面T_FFの法線ベクトルV_T_FFと一致(並行)している。
次に、測定処理部131は、ステップS306の処理により、測定用仮想オブジェクトMOの操作面である正面FFを、拡大縮小方向(法線ベクトルV_FF/V_T_TFの方向)に移動(縮小する方向に移動)させることで、図30に示すように目標面の代表点(被測定物TOの正面T_FF上の代表点PR)を、測定用仮想オブジェクトMOの操作面(正面FF)上に位置させる。
以上のように、測定装置10(カメラ12)を、オートフィットオン状態で動作させ、被測定物TOの正面T_FFが中央に写るように(タッチパネルディスプレイ11の中央に写るように)配置することで、図30に示すように、自動的に測定用仮想オブジェクトMOの正面FFと被測定物TOの正面T_FFとを一致させることができる。
以後、ユーザの操作が測定装置10を把持し、被測定物TOの各面(右面T_FR、背面T_FB、左面T_FL、及び上面T_FU)のそれぞれが中央に写るように配置することで、図31に示すように、自動的に測定用仮想オブジェクトMOの全ての面を被測定物TOにフィットさせることができる。
[第2のオートフィット処理]
次に、測定処理部131による第2のオートフィット処理について説明する。
第1のオートフィット処理では、ARシステムにおける物体の平面検出処理を用いて被測定物TOの外形を認識していたが、第2のオートフィット処理ではARシステムにおける物体の特徴点検出処理を用いて被測定物TOの外形を認識するものとする。
AR処理における特徴点とは、カメラ画像等から物体を追跡(トラッキング)するためのマーカとして機能する要素であり、例えば、鋭角な形状/模様等が挙げられる。一般的なARシステムでは、カメラ画像やセンサデータ等から特徴点(特徴点の3D座標)の群(点群)を検出し、検出した特徴点の点群から所望の物体の追跡等を行うことが可能となっている。
例えば、Unity/ARkitでは、AR開発用フレームワークとしてARFoundationが存在し、このARFoundationでは、カメラ画像等から特徴点の点群を処理するクラスとして、ARPointCloudManagerというクラスが存在する。種々のARシステムでは、このような特徴点の点群を検出可能なクラスが存在している。なお、この実施形態において、特徴点を検出する具体的手法については限定されないものである。
すなわち、測定処理部131において、ARシステムで検出される特徴点の点群(以下、「特徴点群」と呼ぶ)は、カメラ12の視野内に存在する物体の外形(表面)に沿った位置を示している。そこで、第2のオートフィット処理は、取得した特徴点群の中から、被測定物TOの表面となる特徴点を推定して目標(目標点)として取得し、当該代表点を目標として測定用仮想オブジェクトMOで対応する面を操作することでオートフィット処理を行うものとする。ここでは、AR処理部131aに、カメラ12で撮像された画像やセンサ部14のセンサデータに基づき測定装置10の周辺における特徴点群の検出を行うことが可能なARシステムが搭載されているものとして説明する。
以上のような第2のオートフィット処理は、例えば、図32のフローチャートのように示すことができる。
次に、測定処理部131による第2のオートフィット処理について、図32のフローチャートを用いて説明する。
測定処理部131は、オートフィットオン状態となると、最新にAR処理部131a(ARシステム)で取得された特徴点群のデータ(各特徴点の3D座標等)を取得する(S401)。
次に、測定処理部131は、取得した特徴点群から、被測定物TOの表面/外形上の特徴点として相応しいものを選択し、目標点として取得する(S402)。
測定処理部131が特徴点群から目標点を選択する手法については限定されないものであるが、例えば、以下のような処理を適用するようにしてもよい。例えば、測定処理部131は、カメラ12の光軸に最も近い特徴点(フィッティング処理画面上で中央部分に最も近い特徴点)を目標点として選択するようにしてもよい。また、このとき、測定処理部131は、床面F上と推定される特徴点や、フィッティング処理画面で現在写っている視野の外側に存在する特徴点については、目標点の候補から除外することが望ましい。例えば、測定処理部131は、ARシステムの平面検出により検出された平面のうち最も高さの低い平面(Y座標が最も小さい平面)を床面Fと推定し、床面Fと同じか所定範囲内の高さ(例えば、床面FとY座標の差分が3cm相当以下)の特徴点についは床面F上の特徴点として認識するようにしてもよい。
次に、測定処理部131は、測定用仮想オブジェクトMOから操作面を選択する(S403)。
測定処理部131が操作面を選択する手法については限定されないものであるが、例えば、以下のような処理を適用するようにしてもよい。
例えば、測定処理部131は、カメラ12の光軸方向と逆方向(つまり、測定装置10から見て目標点から手前側の方向)に存在する測定用仮想オブジェクトMOの面を操作面として選択するようにしてもよい。例えば、測定用仮想オブジェクトMOが初期状態において、被測定物TOを内包するような位置大きさであるとすれば、測定処理部131は、上記のような処理で、代表点に対応する適切な操作面を取得することができる。
次に、測定処理部131は、測定用仮想オブジェクトMOについて拡大縮小方向を選択する(S404)。
測定処理部131が拡大縮小方向を選択する手法については限定されないものであるが、例えば、以下のような処理を適用するようにしてもよい。
例えば、測定処理部131は、操作面について、カメラ12の光軸の反対の側(カメラ12から見て手前側)を拡大縮小方向とするようにしてもよい。例えば、測定用仮想オブジェクトMOが初期状態において、被測定物TOを内包するような位置/大きさであるとすれば、測定処理部131は、上記のような処理で、オートフィット処理に最適な拡大縮小方向を取得することができる。
また、例えば、測定処理部131は、目標点を、拡大縮小対象面上又は操作面の延長線上に位置するようにするためには、操作面をいずれの方向に移動させる必要があるかを判断し、判断した方向に応じた拡大縮小方向を選択するようにしてもよい。例えば、測定処理部131は、測定装置10(カメラ12)から見て操作面の手前側に目標点が存在する場合は、操作面を手前側に移動させる方向(操作面と直交する方向に測定用仮想オブジェクトMOの寸法を拡大する方向)を拡大縮小方向として選択し、測定装置10(カメラ12)から見て操作面の奥側に目標点が存在する場合は、操作面を奥側に移動させる方向(操作面と直交する方向に測定用仮想オブジェクトMOの寸法を縮小する方向)を拡大縮小方向として選択するようにしてもよい。
次に、測定処理部131は、カメラ12が測定用仮想オブジェクトMOのいずれかの面と正対しているか否かを確認し(S405)、正対していると判断した場合には後述するステップS406から動作し、そうでない場合には上述のステップS401に戻ってループする。
例えば、測定処理部131は、タッチパネルディスプレイ11の画面中央からカメラ12の光軸方向にレイを飛ばし、当該レイが測定用仮想オブジェクトMOに当たった場合、当該レイと当該レイが当たった面が成す角度(以下、「交差角度」と呼ぶ)を取得し、取得した交差角度が90度±α(αは例えば3度〜5度)の範囲内の場合に、カメラ12が測定用仮想オブジェクトMOのいずれかの面と正対していると判断するようにしてもよい。
そして、カメラ12が測定用仮想オブジェクトMOのいずれかの面と正対していると判断された場合、測定処理部131は、測定用仮想オブジェクトMOの操作面を選択した拡大縮小方向に移動(測定用仮想オブジェクトMOの寸法を拡大縮小方向に調整)させ、操作面と被測定物TOの目標点の位置を一致させ(S406)、上述のステップS401に戻ってループする。
次に、測定処理部131が、上述の図32のフローチャートに従って第2のオートフィット処理を行った場合の例について説明する。
ここでは、被測定物TOと測定装置10(カメラ12)とが図33のような位置関係にある場合におけるオートフィット処理の例について説明する。
図33では、測定装置10(カメラ12)の光軸は、被測定物TOの一側面に向けられているものとする。図33では、測定装置10(カメラ12)の光軸は、被測定物TOの正面T_FFに概ね正対するように向けられているものとする。
ここでは、被測定物TOと測定装置10(カメラ12)とが図33のような位置関係にあるときに、測定処理部131でフィッティング処理が開始され、オートフィットオン状態となったものとする。
このとき、測定装置10(タッチパネルディスプレイ11)に表示されるフィッティング処理画面は、図34のような状態となる。
このとき、測定処理部131が、ステップS401の処理において、特徴点群を取得すると、その特徴点は図35のような分布となったものとする。
そうすると、測定処理部131は、カメラ12の光軸に最も近い特徴点(フィッティング処理画面上で中央部分に最も近い特徴点)として、面T_FF上の点PTを目標点として取得することになる。
このとき、被測定物TOと測定用仮想オブジェクトMOとを上側からみると図36のような状態となる。
図36は、オートフィット処理における被測定物TOと測定用仮想オブジェクトMOとの初期の位置関係を示している。
また、このとき、測定用仮想オブジェクトMOにおいて、カメラ12の光軸方向と逆方向(つまり、測定装置10から見て目標点から手前側の方向)は、正面FFとなる。したがって、測定処理部131は、ステップS403の処理において、カメラ12の光軸方向と逆方向に存在する正面FFを操作面に選択することになる。
さらに、このとき、測定装置10(カメラ12)から見て操作面(正面FF)の奥側に目標点PTが存在するため、測定処理部131は、ステップS404において、操作面(正面FF)を奥側に移動させる方向(奥行方向の寸法を縮小させる方向)を拡大縮小方向として選択することになる。
さらにまた、このとき、タッチパネルディスプレイ11の画面中央からカメラ12の光軸方向にレイを飛ばした場合、当該レイは操作面(正面FF)に当節し、当該レイと正面FFとが成す角度が所定範囲内(例えば、90度±3度)であったものとする。そうすると、測定処理部131は、ステップS405において、カメラ12が測定用仮想オブジェクトMOの操作面(正面FF)と正対していると判断することになり、ステップS406の処理に移行することになる。
そして、測定処理部131は、ステップS406において、測定用仮想オブジェクトMOの操作面である正面FFを、選択した拡大縮小方向(測定用仮想オブジェクトMOの奥行方向の寸法を縮小させる方向)に移動させることで、図37に示すように被測定物TOの目標点と測定用仮想オブジェクトMOの操作面(正面FF)の位置を一致(フィット)させる。
以後、ユーザの操作が測定装置10を把持し、被測定物TOの各面(右面T_FR、背面T_FB、左面T_FL、及び上面T_FU)のそれぞれが中央に写るように配置することで、図31に示すように、自動的に測定用仮想オブジェクトMOの全ての面を被測定物TOにフィットさせることができる。
[第3のオートフィット処理]
上述の通り、第1のオートフィット処理では平面検出結果を用いたオートフィット処理が行われ、第2のオートフィット処理では特徴点群の検出結果を用いたオートフィット処理が行われる。
一般的に、平面検出よりも特徴点群の検出処理の方が少ない処理量で高速に実行可能であるため、第2のオートフィット処理の方がオートフィット処理の処理量が少なくより高速な処理(効率的な処理;より短時間での処理)が可能となる。
また、第2のオートフィット処理では、平面検出結果を用いないため、被測定物TOの形状が多面体でない場合(例えば、一部又は全部に曲面が形成された物体)や、ある程度複雑な形状であってもオートフィット処理を行うことができる。
さらに、第2のオートフィット処理では、第1のオートフィット処理よりも精度が悪かったり、オートフィット処理の対象として狙った被測定物TO以外に対してオートフィット処理を試みてしまう等の問題(第2のオートフィット処理の方が処理精度が低い)がある。これは、本来特徴点群は平面を検出するための要素ではないために発生する問題である。
そこで、第3のオートフィット処理では、第1のオートフィット処理と第2のオートフィット処理を使い分ける方式を採用することで、第1のオートフィット処理と第2のオートフィット処理の両方のメリットを発生させることができる。
上述の通り、第2のオートフィット処理では、認識速度は速いものの精度に関しては第1のオートフィット処理よりも劣る。したがって、例えば、第3のオートフィット処理では、被測定物TOの平面検出ができない場合に第2のオートフィット処理を適用し、被測定物TOの平面検出ができた場合には第1のオートフィット処理を採用するようにしてもよい。
具体的には、例えば、測定処理部131は、第3のオートフィット処理において、図38のフローチャートに基づいて、第1のオートフィット処理と第2のオートフィット処理を切り換えるようにしてもよい。
図38は、測定処理部131で第3のオートフィット処理が行われる際の動作の例について示したフローチャートである。
この場合、測定処理部131は、オートフィットオン状態となると、ARシステムにより平面検出を試みる(S501)。
このとき、測定処理部131は、平面検出ができない場合は再度ステップS501の処理に戻ってループする。また、このとき、タッチパネルディスプレイ11の画面中央に床面を検出した場合には後述するステップS502の処理に移行する。さらに、このとき、測定処理部131は、タッチパネルディスプレイ11の画面中央に床面以外の平面を検出した場合には当該平面を被測定物TOの平面と推定できるため、後述のステップS503の処理に移行して第1のオートフィット処理を行う。
一方、ステップS501で、タッチパネルディスプレイ11の画面中央に床面が検出された場合、測定処理部131は、カメラ12が測定用仮想オブジェクトMOのいずれかの面と正対しているか否かを確認し(S502)、正対していると判断した場合には後述するステップS504に移行して第2のオートフィット処理を行い、そうでない場合には上述のステップS501に戻ってループする。
このとき、測定処理部131において、カメラ12が測定用仮想オブジェクトMOのいずれかの面と正対しているか否かを判断する処理については、第2のオートフィット処理(上述のステップS405の処理)と同様の処理を適用することができるため、詳しい説明を省略する。
(B−2)第2の実施形態の効果
第2の実施形態によれば、以下のような効果を奏することができる。
第2の実施形態の測定装置10(測定処理部131)では、オートフィット処理に対応することで、ユーザの操作負担を軽減させることができる。
また、第2の実施形態の測定装置10(測定処理部131)では、第1〜第3のオートフィットモードのいずれかを適用することで、上述したそれぞれのオートフィットモードのメリットを発生させることができる。
(C)他の実施形態
本発明は、上記の各実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
(C−1)上記の実施形態では、測定装置10は、操作手段及び表示手段として、タッチパネルディスプレイ11を備えているが、他のデバイスを用いるようにしてもよい。例えば、表示手段としてディスプレイを適用し、操作手段としてトラックパッドやマウス等の種々のポインティングデバイスを適用するようにしてもよい。
(C−2)上記の実施形態では、被測定物TOは平面(例えば、床面F)に載置されているが、被測定物TOは平面に載置されていない物体(例えば、空中に浮かんでいる物体)であってもよい。
また、上記の実施形態では、説明を簡易とするため被測定物TOの形状を直方体の段ボール箱等としたが、被測定物TOの形状は直方体に限定されず他の形状(例えば、ソファや地球儀等)であってもよいことは当然である。
(C−3)上記の各実施形態では、測定用仮想オブジェクトMOの各面上にコライダーを設ける構成となっていたが、図39〜図42に示すように、測定用仮想オブジェクトMOの各辺の周囲に、所定の断面形状のコライダーを設けるようにしてもよい。ここで、各辺に対応するコライダーの長さ(対応する辺の方向の寸法)やコライダーの断面の形状については限定されないものであるが、測定用仮想オブジェクトMOの形状(各寸法)に応じた(比例した)寸法としてもよい。この実施形態では、コライダーの断面は、測定用仮想オブジェクトMOの形状(各寸法)に応じた(比例した)寸法の矩形であるものとして説明するが、コライダーの断面は、円形等の他の形状であってもよい。
なお、以下では、図39〜図42に示す変形例を「本変形例」と呼ぶものとする。
本変形例では、辺S_UF、S_UB、S_UL、S_UR、S_FL、S_FR、S_BL、S_BR、S_SF、S_SB、S_SL、S_SRに対応するコライダーを、それぞれC_UF、C_UB、C_UL、C_UR、C_FL、C_FR、C_BL、C_BR、C_SF、C_SB、C_SL、C_SRと呼ぶものとする。
図39、図40では、辺S_FRの周囲に配置されたコライダーC_FRの構成について示した図である。図39、図40では説明を簡易とするためコライダーC_FR以外のコライダーの図示を省略している。
図39は、測定用仮想オブジェクトMOを正面FFの側から見た場合の図(斜視図)であり、図40は測定用仮想オブジェクトMOを上面FFの方から見た場合の図(上面図)となっている。
図39、図40に示すように、コライダーC_FRは、対応する辺S_FRを中心軸とする棒形状(断面が矩形の棒形状)のオブジェクトとなっている。図39、図40では、コライダーC_FRの高さ方向の寸法をLCH、幅方向の寸法をLCW、奥行方向の寸法をLCDと図示している。
図39、図40に示すように、コライダーC_FRは、辺S_FRの両端の部分(すなわち頂点の周辺)は除外して設置されている。これは、測定処理部131について、操作性の向上やプログラミングの単純化(プログラミングコストの低減)を目的とし、一度の操作で測定用仮想オブジェクトMOに係る3つの寸法(幅LW、高さLH、奥行LD)のうち、1つの寸法だけの操作を受け付けることを容易とするための措置である。例えば、測定用仮想オブジェクトMOにおいて、頂点部分のドラッグ操作(頂点の移動操作)を受け付けると、実装の仕方によっては、ユーザの思い通りに変形せず、かえって形状を被測定物画像GTにフィットさせる操作が難しくなる場合がある。
そのため、上述の通り、各辺のコライダーは両端の部分は除外して設置されている。各辺について、設置するコライダーの長さは限定されないものであるが、例えば、対応する辺の80%程度の長さとしてもよい。この場合、当該辺の両端にそれぞれ当該辺の10%程度の長さの空隙(コライダーが設置されない区間)が発生することになる。
また、各辺について、設置するコライダーの断面の寸法については限定されないものであるが、それぞれ並行となる辺に応じた寸法としてもよい。例えば、コライダーの断面の寸法については、それぞれ並行となる辺の10%程度の寸法としてもよい。具体的には、例えば、図39、図40に示すコライダーC_FRは、高さ方向の辺であるため、高さ方向の寸法LCHが寸法LHの80%、幅方向の寸法LCWが寸法LWの10%、奥行方向の寸法が寸法LCDの10%となっている。
次に、本変形例における寸法変更処理について説明する。
本変形例のフィッティング処理画面において、測定用仮想オブジェクトMOのいずれかのコライダーで、1点のタッチ(1本指)によるドラッグ操作が発生した場合(タッチされた位置からレイを飛ばしていずれかのコライダーで衝突が発生した場合)、測定処理部131は、当該コライダーに隣接する2つの面のいずれかを選択し、選択した面と直交する方向の寸法について、当該ドラッグ操作の方向(指を滑られた方向)に、当該ドラッグ操作の距離(指を滑らせた距離)に応じた分寸法を変更させる処理を行う。言い換えると、測定処理部131は、当該コライダーに隣接する2つの面のいずれかを選択し、選択した面を当該面と直交する方向(法線方向又は法線方向と逆の方向)に移動させる処理を行うことになる。
本変形例のフィッティング処理画面において、コライダーがドラッグ操作された場合、当該コライダーに隣接する2面のうち、ユーザがいずれの面に対応する寸法を変更しようとしているかを検討する。この実施形態では、ユーザは現在のカメラ視点から見て、手前側に写っている方の面(より正対している方の面)に対応する寸法を変更しようとしていると推定するものとする。
いずれかのコライダーが操作された場合、当該コライダーと隣接する第1の面と第2の面のうち、カメラ視点から見て手前側の面を認識する方法は限定されないものである。
例えば、測定処理部131は、現在のカメラ視点(例えば、カメラ12のカメラモデル上の原点/タッチパネルディスプレイ11の中心点)から、操作されたコライダーに対応する辺上の任意の位置(ここでは、当該辺の中間点であるものとする)へレイを飛ばした場合に、当該レイと第1の面の延長線との成す角度(以下、「角度θ1」と呼ぶ)と、当該レイと第2の面の延長線との成す角度(以下、「角度θ2」と呼ぶ)を比較し、より大きい角度に対応する面を、手前に存在する面と認識して選択する(以下、この選択した面を「選択面」と呼ぶ)ようにしてもよい。
図41は、測定処理部131が、フィッティング処理画面において寸法変更処理が行われる際の画面遷移の例について示した図である。
図41は、測定用仮想オブジェクトMOについて、幅方向の寸法LW、高さ方向の寸法LH、奥行方向の寸法LDについて寸法変更処理が行われた場合の画面遷移について示している。
そして、図41(a)は寸法変更処理の前のフィッティング処理画面の状態について示しており、図41(b)はユーザの手UHの操作に応じて寸法変更処理を行った後の状態について示している。
まず、図41を用いて、幅方向の寸法LWを変更する際の寸法変更処理について説明する。図41では、面FFと面FRとの間の辺S_FRの周囲に配置されたコライダーC_FRがドラッグ操作された場合における寸法変更処理について示している。
以下ではドラッグ操作されているコライダーを「操作コライダー」と呼び、操作コライダーに対応する辺を「操作辺」とも呼ぶものとする。
図41(a)では、手前側に面FFが正対するカメラ視点で、コライダーC_FRがドラッグ操作されている。
このとき、第1の面を面FF、第2の面を面FRとして、角度θ1、θ2を算出した場合、図42に示すように、当該視点から見ると正面にあたる第1の面FFに対応する角度θ1よりも、当該視点から見ると側面に当たる第2の面FRに対応する角度θ2の方が大きくなる。
図42では、図41(a)におけるカメラ視点PEから辺S_FRレイ(PE−S_FR)を飛ばした場合に、当該レイを含む平面上での角度θ1、θ2を図示している。
したがって、図41(a)(図42)の例では角度θ1、θ2との比較から、測定処理部131は、面FF(第1の面)と面FR(第2の面)のうち、面FRを選択面として選択し、選択面FRと直交する方向(幅方向)寸法LWについて、寸法変更処理を行うことになる。
コライダーC_FRが、操作辺S_FRを基準として、測定用仮想オブジェクトMOの中心位置(面FFの中心位置)から遠ざかる方向(図41(a)では+LW方向と図示)にドラッグ操作された場合、測定処理部131は、+LW方向に、当該ドラッグ操作の距離(+LW方向に指を滑らせた距離)に応じた分だけ測定用仮想オブジェクトMOの幅方向の寸法LWを増加させる寸法変更処理を行う。このとき、選択面FF上で操作辺S_FRと対向する辺S_FLの位置は固定したままとする。
コライダーC_FRが、操作辺S_FRを基準として、測定用仮想オブジェクトMOの中心位置(面FFの中心位置)に近づく方向(図41(a)では−LW方向と図示)にドラッグ操作された場合、測定処理部131は、−LW方向に、当該ドラッグ操作の距離(−LW方向に指を滑らせた距離)に応じた分だけ測定用仮想オブジェクトMOの幅方向の寸法LWを減少させる寸法変更処理を行う。このときも、選択面FF上で操作辺S_FRと対向する辺S_FLの位置は固定したままとする。
言い換えると、この場合、コライダーC_FRは、測定用仮想オブジェクトMOの幅方向の寸法LWを変動させるスライダーとして機能しているともいえる。
そして、ここでは、図41(b)に示すように、コライダーC_FRが、−LW方向に被測定物画像GTの右端の位置までドラッグ操作され、測定用仮想オブジェクトMOの幅方向の寸法LWが被測定物TO(被測定物画像GT)と一致した状態となったことを示している。