説明

オブジェクト操作装置、オブジェクト操作方法、およびオブジェクト操作プログラム

【課題】簡易な操作で操作対象オブジェクトの3次元移動の自由度を向上させる。
【解決手段】オブジェクト操作装置100は、操作対象オブジェクトを3次元移動操作する際の基準となる基準オブジェクトの周囲に設定される複数の点それぞれに対して、ローカル座標系を生成する座標系生成部110を備える。また、オブジェクト操作装置100は、座標系生成部110によって生成された複数の点それぞれのローカル座標系に基づいて、入力装置200から入力される操作対象オブジェクトの移動指令値に対応する移動先座標を算出する移動先座標算出部112を備える。また、オブジェクト操作装置100は、移動先座標算出部112によって算出された移動先座標に操作対象オブジェクトを移動させる移動処理部114を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、オブジェクト操作装置、オブジェクト操作方法、およびオブジェクト操作プログラムに関する。
【背景技術】
【0002】
従来、表示装置の2次元画面上に表示された操作対象のオブジェクト(以下、「操作対象オブジェクト」という。)を、マウスなどの入力装置を用いて3次元移動操作することが行われている。操作対象オブジェクトの3次元移動操作は、例えば仮想カメラを操作対象オブジェクトとして、観察対象のオブジェクト(以下、「基準オブジェクト」という。)を様々な位置から観察する場合に適用される。つまり、仮想カメラを基準オブジェクトの周囲または内部で3次元移動させて視点位置を変えることにより、基準オブジェクトを様々な位置から観察することができる。
【0003】
マウスなどの2次元入力装置で操作対象オブジェクトの3次元移動操作を行う場合には、例えばxy平面およびxz平面の2つの画面を使って操作対象オブジェクトの移動操作を行うことが知られている。これは、xy平面およびxy平面それぞれに操作対象オブジェクトを表示し、まずxy平面上で操作対象オブジェクトを2次元移動させ、続いてxz平面上で操作対象オブジェクトを2次元移動させることで、3次元の移動操作を実現するものである。
【0004】
この手法は、操作対象オブジェクトの正確な操作には向いているが、2つの画面上で操作を行うため、特に操作対象オブジェクトを複雑に移動操作する場合には、操作量が膨大となって操作に時間がかかる。
【0005】
これに対して、基準オブジェクトの周囲にローカル座標系を生成して操作対象オブジェクトの移動用のパスを定めておいて、マウスの移動量に応じて操作対象オブジェクトをパスに沿って移動させることが知られている。これによれば、比較的少ない操作量で操作対象オブジェクトの3次元移動操作を行うことができる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平10−232943号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来技術は、操作対象オブジェクトの3次元移動の自由度が制限される場合がある。
【0008】
すなわち、従来技術は、あらかじめ設定されて固定された移動用のパスに沿って操作対象オブジェクトを移動させることしかできないため、パスから外れた位置に操作対象オブジェクトを移動させることが困難である。したがって、従来技術では、2次元画面上で操作対象オブジェクトを基準オブジェクトの周囲または内部の任意の位置に3次元移動させることによって、様々な位置から基準オブジェクトを観察することが難しい。
【0009】
開示の技術は、上記に鑑みてなされたものであって、簡易な操作で操作対象オブジェクトの3次元移動の自由度を向上させることができるオブジェクト操作装置、オブジェクト操作方法、およびオブジェクト操作プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本願の開示するオブジェクト操作装置は、一つの態様において、操作対象のオブジェクトを3次元移動操作する際の基準となる基準オブジェクトの周囲に設定される複数の点それぞれに対して、ローカル座標系を生成する座標系生成部を備える。また、オブジェクト操作装置は、前記座標系生成部によって生成された前記複数の点それぞれのローカル座標系に基づいて、入力装置から入力される前記操作対象のオブジェクトの移動指令値に対応する前記操作対象のオブジェクトの移動先座標を算出する移動先座標算出部を備える。また、オブジェクト操作装置は、前記移動先座標算出部によって算出された移動先座標に前記操作対象オブジェクトを移動させる移動処理部を備える。
【発明の効果】
【0011】
本願の開示するオブジェクト操作装置の一つの態様によれば、簡易な操作で操作対象オブジェクトの3次元移動の自由度を向上させることができる。
【図面の簡単な説明】
【0012】
【図1】図1は、本実施形態のオブジェクト操作装置の全体構成を示す図である。
【図2】図2は、入力装置の一例を示す図である。
【図3】図3は、基準オブジェクトを飛行機とし、操作対象オブジェクトを仮想カメラとした場合の主翼の観察例を示す図である。
【図4】図4は、シーングラフの一例を示す図である。
【図5】図5は、オブジェクト操作方法の全体の処理を示すフロー図である。
【図6】図6は、ローカル座標系を生成する処理のフロー図である。
【図7】図7は、影響関数を用いたポテンシャル値の算出の一例を示す図である。
【図8】図8は、ローカル座標系を算出する処理のフロー図である。
【図9】図9は、Structured Grid上のポテンシャル値と等値面の説明をするための図である。
【図10】図10は、Structured Grid上の各点でのZ´軸ベクトルの算出について説明するための図である。
【図11】図11は、Structured Grid上の各点でのX´軸ベクトルの算出について説明するための図である。
【図12】図12は、操作対象オブジェクトの移動先座標を算出する処理のフロー図である。
【図13】図13は、仮想臓器と仮想内視鏡について説明するための図である。
【図14】図14は、基準オブジェクトがLineDataである場合のローカル座標系を算出する処理のフロー図である。
【図15】図15は、基準オブジェクトがLineDataである場合のローカル座標系の一例について説明するための図である。
【図16】図16は、仮想内視鏡の移動先座標を算出する処理のフロー図である。
【発明を実施するための形態】
【0013】
以下に、本願の開示するオブジェクト操作装置、オブジェクト操作方法、およびオブジェクト操作プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例により開示技術が限定されるものではない。
【実施例】
【0014】
図1は、本実施形態のオブジェクト操作装置の全体構成を示す図である。図1に示すように、オブジェクト操作装置100は、座標系生成部110と、移動先座標算出部112と、移動処理部114と、オブジェクト設定部115とを備える。また、オブジェクト操作装置100は、グラフィック処理部116と、通信インターフェース部118と、HDD(Hard Disk Drive)120と、メモリ122と、入出力インターフェース部124とを備える。座標系生成部110、移動先座標算出部112、移動処理部114、オブジェクト設定部115、グラフィック処理部116、通信インターフェース部118、HDD120、メモリ122、および入出力インターフェース部124は、通信バス126を介して相互に接続される。また、オブジェクト操作装置100には、入力装置200と、表示装置300とが通信ケーブル128を介して接続される。
【0015】
座標系生成部110は、操作対象オブジェクトを3次元移動操作する際の基準となる基準オブジェクトの周囲に設定される複数の点それぞれに対して、ローカル座標系を生成する。移動先座標算出部112は、座標系生成部110によって生成された複数の点それぞれのローカル座標系に基づいて、入力装置200から入力される操作対象のオブジェクトの移動指令値に対応する操作対象オブジェクトの移動先座標を算出する。移動処理部114は、移動先座標算出部112によって算出された移動先座標に操作対象オブジェクトを移動させる。オブジェクト設定部115は、操作対象オブジェクトの設定を行うとともに、基準オブジェクトの設定を行う。座標系生成部110、移動先座標算出部112、移動処理部114およびオブジェクト設定部115の詳細については後述する。
【0016】
グラフィック処理部116は、操作対象オブジェクトと基準オブジェクトとを表示装置300に表示するとともに、操作対象オブジェクトが仮想カメラや仮想内視鏡の場合には、仮想カメラや仮想内視鏡からの視線方向に映る画像を表示装置300に表示する。通信インターフェース部118は、オブジェクト操作装置100と他の装置との有線通信または無線通信のインターフェースである。HDD120およびメモリ122は、オブジェクト操作装置100で実行されるオブジェクト操作プログラム、その他の各種ソフトウェアプログラム、およびオブジェクト操作プログラムと各種ソフトウェアプログラムで用いられるデータを格納する記憶媒体である。入出力インターフェース部124は、入力装置200から入力される各種指令の入力インターフェースであるとともに、表示装置300に表示する画像データを表示装置300に出力する出力インターフェースである。
【0017】
入力装置200は、操作対象オブジェクトの3次元移動指令値を入力する各種の入力デバイスである。また、表示装置300は、グラフィック処理部116で生成された各種の画像を表示する2次元表示デバイスである。図2は、入力装置200の一例を示す図である。図2に示すように、操作用画像202を表示装置300に表示して、キーボード等の入力デバイスを用いてX軸、Y軸、Z軸それぞれの移動量を入力することができる。また、マウス204を用いてX軸、Y軸、Z軸それぞれの移動量を入力することもできる。マウス204を使って操作対象オブジェクトを3次元操作する場合には、XYZ軸に対する移動量をそれぞれ独立して入力できるように、あらかじめXYZ軸に対する入力方法を設定しておく。例えば、マウス204を左クリックしながらドラッグするとX軸方向の移動、マウス204を右クリックしながらドラッグするとY軸方向の移動、マウス204をセンターホイールクリックしながらドラッグするとZ軸方向への移動と設定することができる。
【0018】
図3は、基準オブジェクトを飛行機とし、操作対象オブジェクトを仮想カメラとした場合の主翼の観察例を示す図である。図3に示すように、本実施例は、基準オブジェクトを飛行機400とし、操作対象オブジェクトを仮想カメラ500とした例である。しかし、これに限らず、基準オブジェクトは、仮想カメラ500によって観察される対象となる仮想物体を任意に設定することができる。また、操作対象オブジェクトは、仮想カメラ500に限らず、例えば基準オブジェクトを照らす仮想照明など、基準オブジェクトの周囲または内部で3次元移動させる仮想物体を任意に設定することができる。
【0019】
図3に示すように、主翼402の周囲で仮想カメラ500を3次元移動操作しながら、仮想カメラ500からの視線方向に映る主翼402の観察画像504を表示装置300に表示することができる。この場合、仮想カメラ500は、主翼402の周囲を3次元移動しながら様々な角度および距離からの主翼402の観察画像504を表示する。例えば、主翼402から一定の距離だけ離れた軌道上で仮想カメラ500を旋回させながら、様々な方向から主翼402を観察することができる。また、軌道上から外れて主翼402に近づくまたは遠ざかる方向に仮想カメラ500を移動させることにより主翼402の特定部分を詳細に観察したり主翼402の全体を観察したりすることができる。また、図3に示すように、主翼402の周囲で仮想カメラ500を3次元移動操作しながら、主翼402に対する空気などの流体の流れを流体解析ツールによって解析して、解析画像506を表示装置300に表示することができる。図3に示すように、表示装置300には、主翼402の断面502における空気の流れの解析結果が表示される。
【0020】
図4は、シーングラフの一例を示す図である。シーングラフとは、仮想カメラ500を移動操作しながら基準オブジェクトの可視化を行う際に、表示対象を管理するための概念となるツリー構造であり、オブジェクト操作装置100の開発者によって利用されるものである。シーングラフでは、カメラ、照明、飛行機など情報の塊をオブジェクトと呼び、親オブジェクトと子オブジェクトは従属関係で結ばれる。例えば、環境602を親オブジェクトとした場合、カメラ606および照明608が子オブジェクトとなる。また、物体604を親オブジェクトとした場合、飛行機610およびBackground612が子オブジェクトとなる。また、飛行機610を親オブジェクトとした場合、本体614、主翼616、および尾翼618が子オブジェクトとなる。また、主翼616を親オブジェクトとした場合、主翼本体620、フラップ622、スポイラー624、およびエルロン626が子オブジェクトとなる。
【0021】
例えば飛行機610の位置が変化したら、それに追従して本体614、主翼616、および尾翼618の位置も変化するように、親オブジェクトに与えられた操作は子オブジェクトに影響を与える。このため、親オブジェクトと子オブジェクトは、Transfer Function630(座標変換関数)を介して結ばれ、一方のオブジェクトの位置座標の変化に応じて他方のオブジェクトの位置座標が変わる。また、シーングラフでは、オブジェクトごとに位置操作指令などのinteraction632を与えることができる。Transfer Function630とinteraction632の間に座標変換モジュール634を挿入することで、任意のオブジェクトに対してローカル座標系を仮想的に持たせることができる。本実施例では、interaction632とカメラ606のTransfer Function630との間に座標変換モジュール634を挿入するだけで、操作対象オブジェクトであるカメラ606に対してローカル座標系を与えることができる。ローカル座標系の詳細については後述する。
【0022】
図5は、オブジェクト操作方法の全体の処理を示すフロー図である。まず、オブジェクト設定部115は、操作対象オブジェクトを設定する(S101)。具体的には、オブジェクト設定部115は、表示装置300に表示されたオブジェクトのうち、操作対象オブジェクトの設定モード中に、入力装置200を介して選択されたオブジェクトを、操作対象オブジェクトとして設定する。ここでは、仮想カメラ500が選択されて、操作対象オブジェクトに設定されたとする。続いて、オブジェクト設定部115は、基準オブジェクトを設定する(S102)。具体的には、オブジェクト設定部115は、表示装置300に表示されたオブジェクトのうち、基準オブジェクトの設定モード中に、入力装置200を介して選択されたオブジェクトを、基準オブジェクトとして設定する。ここでは、飛行機400が選択されて、飛行機400のSurface Dataが基準オブジェクトに設定されたとする。
【0023】
次に、座標系生成部110は、設定された基準オブジェクトの種類がSurface Data、Line Data、Point Dataのいずれであるかを確認する(S103)。本実施例では基準オブジェクトの種類はSurface Dataであるので、座標系生成部110は、Surface Data用のローカル座標系を生成する(S104)。続いて、移動先座標算出部112は、Surface Data用の座標変換モジュールを作成する(S105)。そして、移動先座標算出部112は、作成された座標変換モジュールをシーングラフに追加する(S110)。なお、座標系生成部110は、基準オブジェクトがLine Dataの場合には、Line Data用のローカル座標系を生成し(S106)、移動先座標算出部112は、Line Data用の座標変換モジュールを作成する(S107)。また、座標系生成部110は、基準オブジェクトがPoint Dataの場合には、Point Data用のローカル座標系を生成し(S108)、移動先座標算出部112は、Point Data用の座標変換モジュールを作成する(S109)。
【0024】
図6は、ローカル座標系を生成する処理のフロー図である。座標系生成部110は、まず、基準オブジェクトから影響範囲を設定する(S201)。影響範囲とは、基準オブジェクトの周囲のどの程度離れた領域までローカル座標系を生成するかを表す範囲である。影響範囲は、初期値をあらかじめ設定しておいてもよいし、入力装置200を介して任意に設定することもできる。続いて、座標系生成部110は、影響範囲内にグローバル座標系によるStructured Gridを生成する(S202)。Structured Gridとは、基準オブジェクトの周囲に設定される3次元格子である。Structured Gridは、影響範囲を覆うように生成される。
【0025】
次に、座標系生成部110は、基準オブジェクトに対する影響関数を用いて、Structured Gridの各ノード(格子点)におけるポテンシャル値を求める(S203)。ポテンシャル値は、基準オブジェクトからの距離に応じて算出される値で、例えば、基準オブジェクトに最も近い位置では「1」になり、基準オブジェクトから遠ざかるにつれて「0」に近づき、影響範囲の外延で「0」になる値である。続いて、座標系生成部110は、Structured Gridの各ノードに、算出したポテンシャル値を格納する(S204)。
【0026】
次に、影響関数を用いたポテンシャル値の算出について説明する。図7は、影響関数を用いたポテンシャル値の算出の一例を示す図である。図7は、2つの基準オブジェクト700,702の周囲のある点Pにおけるポテンシャル値を算出する一例である。点Pにおける基準オブジェクト700に対するポテンシャル値φは、基準オブジェクト700に対する影響関数fを用いて以下の数1式で求められる。
[数1]
φ=f(x,y,z)=(D−C/D
ここで、Dは点Pと基準オブジェクト700との間の最小ユークリッド距離であり、Cは基準オブジェクト700と基準オブジェクト700に対する影響範囲の外延704との距離である。ただし、D>Cの場合にはfは「0」になる。
【0027】
また、点Pにおける基準オブジェクト702に対するポテンシャル値φは、基準オブジェクト702に対する影響関数fを用いて以下の数2式で求められる。
[数2]
φ=f(x,y,z)=(D−C/D
ここで、Dは点Pと基準オブジェクト702との間の最小ユークリッド距離であり、Cは基準オブジェクト702と基準オブジェクト702に対する影響範囲の外延706との距離である。ただし、D>Cの場合にはfは「0」になる。
【0028】
そして、点Pにおけるポテンシャル値φは、基準オブジェクト700および基準オブジェクト702に対する影響関数fを用いて以下の数3式で求められる。
[数3]
φ=f(x,y,z)=f(x,y,z)+f(x,y,z)
本実施例のように、影響関数の和によりポテンシャルを求めることにより、複雑な形状の基準オブジェクトにも対応した滑らかな等値面を生成することができる。なお、本実施例に限らず、影響関数は、基準オブジェクトとの距離が影響範囲の外延に近づくにつれてポテンシャル値が低くなる減衰関数であれば採用することができる。例えば、基準オブジェクトからの距離に応じたポテンシャル値を生成するfast marching法を用いることができる。fast marching法は、位相変化が可能な動的輪郭モデルであり、濃度分布空間で、ある時間tにおける境界面を求める方法である。(J.A.Sethian,Level set method and fast marching method,Cambridge University Press(1999))
【0029】
次に、ローカル座標系の生成について説明する。図8は、ローカル座標系を算出する処理のフロー図である。座標系生成部110は、Structured Gridのn個のノード(格子点)それぞれについてローカル座標系を生成する。そのため、座標系生成部110は、まずn回ループ処理を行うための変数iを「0」に初期化する(S301)。続いて、座標系生成部110は、i<nであるか否かを判定する(S302)。座標系生成部110は、i<nである場合(S302でYES)、つまりStructured Gridのn個のノードすべてに対して処理が終わっていない場合は、Structured Gridのノードiのポテンシャル値を閾値と設定する(S303)。続いて、座標系生成部110は、ノードiの周囲8つのノードを選択する(S304)。そして、座標系生成部110は、マーチンキューブ法を用いて、閾値に対して面を生成する(S305)。これにより、Structured Gridのポテンシャル値が等しいノードを結んだ等値面が形成される。
【0030】
ただし、例えばあるノードのポテンシャル値が、周囲8つのノードのポテンシャル値のいずれとも異なる場合は等値面が生成されない。そこで、座標系生成部110は、等値面が1つ以上算出されたか否かを判定する(S306)。座標系生成部110は、等値面が1つも算出されない場合には(S306でNO)、そのノードと基準オブジェクトを最短で結ぶ線分に対して直交する面を等値面として生成する(S307)。
【0031】
一方、ノードによっては等値面が複数生成される場合もあるので、座標系生成部110は、等値面が1つ以上算出された場合には(S306でYES)、基準オブジェクトから最も近い等値面を選択する(S308)。続いて、座標系生成部110は、等値面に直交する第1の軸と等値面上で互いに直交する第2,第3の軸とに基づいてX´軸ベクトル、Y´軸ベクトル、およびZ´軸ベクトルを生成する(S309)。具体的には、座標系生成部110は、等値面に直交する第1の軸をZ´軸ベクトルとする。また、座標系生成部110は、グローバル座標系におけるXY平面と等値面との交線方向をX´軸ベクトルとする。また、座標系生成部110は、等値面上でX´軸に直交する方向をY´軸ベクトルとする。なお、以下の説明では、グローバル座標系とローカル座標系とを区別するために、グローバル座標系をX軸、Y軸、Z軸といい、ローカル座標系をX´軸、Y´軸、Z´軸という。
【0032】
続いて、座標系生成部110は、ノードiにおけるX´Y´Z´軸ベクトルをStructured Gridに格納する(S310)。続いて、座標系生成部110は、iをインクリメントして(S311)、S302に戻り、Structured Gridの次のノードに対する処理を行う。座標系生成部110は、S302でi<nでない場合(S302でNO)、つまりStructured Gridのn個のノードすべてに対して処理が終わった場合には、処理を終了する。これにより、Structured Gridの複数のノードそれぞれに、X´Y´Z´軸ベクトルが格納される。
【0033】
図9は、Structured Grid上のポテンシャル値と等値面の説明をするための図である。図9は、Structured Gridのグローバル座標系におけるXY平面を示すものである。図9に示すようにStructured Grid上の各ノードには、例えば「0.3」、「0.5」、「1」等のポテンシャル値が格納される。そして、ポテンシャル値が等しいノードを結ぶことによって、等値面750が生成される。ここで、等値面750は、各ノードに対して生成されるものであるので、必ずしも連続した面が生成されなくてもよい。
【0034】
図10は、Structured Grid上の各点でのZ´軸ベクトルの算出について説明するための図であり、図11は、Structured Grid上の各点でのX´軸ベクトルの算出について説明するための図である。図10に示すように、Structured Gridの各ノードに対して、等値面750に直交する方向にZ´軸ベクトル752が生成される。また、図11に示すように、等値面750とグローバル座標系におけるXY平面との交線方向にX´軸ベクトル754が生成される。なお、Y´軸ベクトルは、等値面750上でX´軸ベクトルに直交する方向に生成される。
【0035】
図12は、操作対象オブジェクトの移動先座標を算出する処理のフロー図である。まず、移動先座標算出部112は、入力装置200からX´軸,Y´軸,Z´軸それぞれに対する移動量を取得する(S401)。続いて、移動先座標算出部112は、操作対象オブジェクトの現在の座標を取得する(S402)。続いて、移動先座標算出部112は、X´軸,Y´軸,Z´軸の順に以下の移動処理を実行する。そのため、移動先座標算出部112は、X´軸のループ処理を行うための変数j,Y´軸のループ処理を行うための変数k,Z´軸のループ処理を行うための変数mを「0」に初期化する(S403)。
【0036】
続いて、移動先座標算出部112は、操作対象オブジェクトの座標が影響範囲内であるか否かを判定する(S404)。移動先座標算出部112は、操作対象オブジェクトの座標が影響範囲内である場合は(S404でYes)、操作対象オブジェクトの座標の最も近傍のStructured Gridのノードを取得する(S405)。これは、操作対象オブジェクトが必ずしもStructured Gridのノード上に位置しているとは限らないため、最も近傍のStructured Gridのノードを取得するものである。仮に、操作対象オブジェクトがStructured Gridのノード上に位置している場合は、操作対象オブジェクトが位置するStructured Gridのノードが取得される。
【0037】
続いて、移動先座標算出部112は、取得したStructured Gridのノードのローカル座標系の単位ベクトルを生成する(S406)。具体的には、移動先座標算出部112は、ローカル座標系のX´軸ベクトルの方向の単位ベクトルを生成する。一方、移動先座標算出部112は、S404で操作対象オブジェクトの座標が影響範囲内でない場合には(S404でNo)、Structured Gridから外れた場所に位置しており、ローカル座標系が存在しないので、グローバル座標系の単位ベクトルを生成する(S407)。具体的には、移動先座標算出部112は、グローバル座標系のX軸ベクトルの方向の単位ベクトルを生成する。続いて、移動処理部114は、S406またはS407で生成した単位ベクトルにしたがって、操作対象オブジェクトを移動させる(S408)。
【0038】
次に、移動先座標算出部112は、X´軸の移動処理が終了したか否かを判定する(S409)。具体的には、移動先座標算出部112は、変数jがX´軸方向の移動量より大きくなった場合にX´軸の移動処理が終了したと判定する。移動先座標算出部112は、X´軸の移動処理が終了していない場合には(S409でNo)、jをインクリメントして(S410)、S404に戻る。すなわち、移動先座標算出部112は、操作対象オブジェクトを一度に大きく移動させるのではなく、X´軸の移動処理が終了するまで、操作対象オブジェクトの単位ベクトル分の移動を繰り返す。
【0039】
移動先座標算出部112は、X´軸の移動処理が終了した場合には(S409でYes)、Y´軸の移動処理が終了したか否かを判定する(S411)。移動先座標算出部112は、Y´軸の移動処理が終了していない場合には(S411でNo)、kをインクリメントして(S412)、S404に戻り、X´軸と同様に、S404〜S408の処理を繰り返す。
【0040】
移動先座標算出部112は、Y´軸の移動処理が終了した場合には(S411でYes)、Z´軸の移動処理が終了したか否かを判定する(S413)。移動先座標算出部112は、Z´軸の移動処理が終了していない場合には(S413でNo)、mをインクリメントして(S414)、S404に戻り、X´軸と同様に、S404〜S408の処理を繰り返す。移動先座標算出部112は、Z´軸の移動処理が終了した場合には(S413でYes)、操作対象オブジェクトの移動処理を終了する。これにより、操作対象オブジェクトを簡易な操作で任意の位置に3次元移動させることができる。また、例えばZ´軸の基準オブジェクトから離れる方向をZ´軸の正の方向と仮定した場合に、操作対象オブジェクトである仮想カメラの視線方向をZ´軸の負の方向に設定することができる。これにより、仮想カメラの視線方向は、仮想カメラを任意の位置に3次元移動させたとしても、常に基準オブジェクトの方向に向くので、仮想カメラを3次元移動させながら常に基準オブジェクトの観察画像を得ることができる。また、仮想カメラの視線方向を所定の方向に固定するのではなく、任意に設定可能とすることもできる。
【0041】
次に、基準オブジェクトを仮想臓器とし、操作対象オブジェクトを仮想内視鏡とした場合の実施例について説明する。図13は、仮想臓器と仮想内視鏡について説明するための図である。仮想内視鏡技術では、まず、CT(Computed Tomography)やMRI(Magnetic Resonance Imaging)などの医療画像装置を用いて、被検体の血管や大腸などの管状データが撮像される。そして、仮想内視鏡技術は、図13に示すように、管状データである仮想臓器800の内部の例えば管中心を通る中心軸804に沿って仮想内視鏡802を移動操作しながら、仮想内視鏡802の視線方向に映る血管や大腸の内壁面等を観察するものである。この仮想内視鏡技術では、血管や大腸などの細い管に沿って、操作対象オブジェクトである仮想内視鏡802をウォークスルーするため、操作対象オブジェクトの簡易かつ自由度の高い操作が求められる。
【0042】
図14は、基準オブジェクトがLineDataである場合のローカル座標系を算出する処理のフロー図である。仮想内視鏡技術の場合、仮想臓器800の周囲で仮想内視鏡802を3次元移動させるのではなく、仮想臓器800の内部で仮想内視鏡802を3次元移動させる。そこで、オブジェクト設定部115は、図5のS101,S102で操作対象オブジェクトに仮想内視鏡802が選択され、基準オブジェクトに仮想臓器800が選択された場合には、仮想臓器800の管中心を通るLineDataを基準オブジェクトに設定する。また、Structured Gridの各ノードそれぞれのポテンシャル値を求めて各ノードに格納する点については、図6のS201〜S204と同様である。
【0043】
座標系生成部110は、Structured Gridのn個のノードそれぞれについてローカル座標系を生成する。そのため、座標系生成部110は、まずn回ループ処理を行うための変数rを「0」に初期化する(S500)。続いて、座標系生成部110は、Structured Gridのノードiの位置が、LineData上か、管境界面上か、管境界面内か、管境界外かを確認する(S501)。座標系生成部110は、ノードrの位置が、LineData上である場合には、LineDataの正方向をX´軸ベクトルとする(S502)。続いて、座標系生成部110は、グローバル座標系のXY平面におけるX´軸ベクトルに直交する方向をY´軸ベクトルとする(S503)。続いて、座標系生成部110は、X´軸ベクトルおよびY´軸ベクトルの双方に直交する方向をZ´軸ベクトルとする(S504)。続いて、座標系生成部110は、X´軸ベクトル、Y´軸ベクトル、およびZ´軸ベクトルを、Structured Gridの該当するノードに格納する(S505)。
【0044】
座標系生成部110は、ノードiの位置が、管境界面上である場合には、LineDataの正方向をX´軸ベクトルとする(S506)。続いて、座標系生成部110は、X´軸ベクトルに直交する直交面上における管境界面の接線方向をY´軸ベクトルとする(S507)。続いて、座標系生成部110は、管境界面の法線方向をZ´軸ベクトルとする(S508)。続いて、座標系生成部110は、X´軸ベクトル、Y´軸ベクトル、およびZ´軸ベクトルを、Structured Gridの該当するノードに格納する(S505)。
【0045】
座標系生成部110は、ノードiの位置が、管境界面内である場合には、ノードiのポテンシャル値を閾値と設定する(S509)。続いて、座標系生成部110は、ノードiの周囲8つのノードを選択する(S510)。そして、座標系生成部110は、マーチンキューブ法を用いて、閾値に対して面を生成する(S511)。これにより、Structured Gridの各ノードのポテンシャル値が等しい点を結んだ等値面が形成される。
【0046】
ただし、例えばあるノードのポテンシャル値が、周囲8つのノードのポテンシャル値のいずれとも異なる場合は等値面が生成されない。そこで、座標系生成部110は、等値面が1つ以上算出されたか否かを判定する(S512)。座標系生成部110は、等値面が1つも算出されない場合には(S512でNo)、そのノードと基準オブジェクトを最短で結ぶ線分に対して直交する面を等値面として生成する(S513)。
【0047】
一方、ノードによっては等値面が複数生成される場合もあるので、座標系生成部110は、等値面が1つ以上算出された場合には(S512でYes)、基準オブジェクトから最も近い等値面を選択する(S514)。続いて、座標系生成部110は、等値面に直交する第1の軸と等値面上で互いに直交する第2,第3の軸とに基づいてX´Y´Z´軸のローカル座標系を生成する(S515)。具体的には、座標系生成部110は、等値面に直交する第1の軸をZ´軸ベクトルとする。また、座標系生成部110は、グローバル座標系におけるXY平面と等値面との交線方向をX´軸ベクトルとする。また、座標系生成部110は、等値面上でX´軸に直交する方向をY´軸ベクトルとする。続いて、座標系生成部110は、X´軸ベクトル、Y´軸ベクトル、およびZ´軸ベクトルを、Structured Gridの該当するノードに格納する(S505)。
【0048】
一方、座標系生成部110は、ノードiの位置が、管境界外である場合には、ローカル座標系を生成せずに、以降の処理を実行する。座標系生成部110は、Structured Gridのすべてのノードに対するローカル座標系の生成処理が終了したか否かを判定する(S518)。具体的には、座標系生成部110は、r<nであるか否かを判定する。座標系生成部110は、Structured Gridのすべてのノードに対するローカル座標系の生成処理が終了していない場合には(S518でNo)、rをインクリメントして(S519)、S501に戻る。一方、座標系生成部110は、Structured Gridのすべてのノードに対するローカル座標系の生成処理が終了したら(S518でYes)、ローカル座標系の生成処理を終了する。
【0049】
図15は、基準オブジェクトがLineDataである場合のローカル座標系の一例について説明するための図である。図15に示すように、Structured Gridのノードのうち、LineData上に存在するノードと管境界外に存在するノードを除くノードについては、LineDataに沿った方向がX´軸ベクトル804として設定される。また、X´軸ベクトルに直交する直交面上でLineDataから遠ざかる方向がZ´軸ベクトル808として設定される。また、直交面上でLineDataの周囲を回転する方向がY´軸ベクトル806として設定される。
【0050】
次に、仮想内視鏡の移動先座標を算出する処理について説明する。図16は、仮想内視鏡の移動先座標を算出する処理のフロー図である。まず、移動先座標算出部112は、入力装置200からX´軸,Y´軸,Z´軸それぞれに対する移動量を取得する(S601)。続いて、移動先座標算出部112は、操作対象オブジェクト(仮想内視鏡802)の現在の座標を取得する(S602)。移動先座標算出部112は、X´軸,Y´軸,Z´軸の順に以下の移動処理を実行するため、X´軸のループ処理を行うための変数s,Y´軸のループ処理を行うための変数u,Z´軸のループ処理を行うための変数vを「0」に初期化する(S603)。
【0051】
続いて、移動先座標算出部112は、操作対象オブジェクトの座標が管境界面内であるか否かを判定する(S604)。移動先座標算出部112は、操作対象オブジェクトの座標が管境界面内である場合は(S604でYes)、操作対象オブジェクトの座標の最も近傍のStructured Gridのノードを取得する(S605)。これは、操作対象オブジェクトが必ずしもStructured Gridのノード上に位置しているとは限らないため、最も近傍のStructured Gridのノードを取得するものである。仮に、操作対象オブジェクトがStructured Gridのノード上に位置している場合は、操作対象オブジェクトが位置するStructured Gridのノードが取得される。
【0052】
続いて、移動先座標算出部112は、取得したStructured Gridのノードのローカル座標系の単位ベクトルを生成する(S606)。一方、移動先座標算出部112は、S604で操作対象オブジェクトの座標が管境界面内でない場合には(S604でNo)、X´軸ベクトルに関してはStructured Gridのノードにおけるローカル座標系のX´軸ベクトルの方向に単位ベクトルを生成する(S607)。続いて、移動処理部114は、S606またはS607で生成した単位ベクトルにしたがって、操作対象オブジェクトを移動させる(S608)。すなわち、移動先座標算出部112は、Structured Gridの各ノードに設定されたローカル座標系に基づいて操作対象オブジェクトの移動先座標を算出し、移動処理部114は、算出された移動先座標に基づいて操作対象オブジェクトを移動させる。
【0053】
次に、移動先座標算出部112は、X´軸の移動処理が終了したか否かを判定する(S609)。具体的には、移動先座標算出部112は、sがX´軸方向の移動量より大きくなった場合にX´軸の移動処理が終了したと判定する。移動先座標算出部112は、X´軸の移動処理が終了していない場合には(S609でNo)、sをインクリメントして(S610)、S604に戻る。すなわち、移動先座標算出部112は、操作対象オブジェクトを一度に大きく移動させるのではなく、X´軸の移動処理が終了するまで、操作対象オブジェクトの単位ベクトル分の移動を繰り返す。
【0054】
移動先座標算出部112は、X´軸の移動処理が終了した場合には(S609でYes)、Y´軸の移動処理が終了したか否かを判定する(S611)。移動先座標算出部112は、Y´軸の移動処理が終了していない場合には(S611でNo)、uをインクリメントして(S612)、S604に戻り、X´軸と同様に、S604〜S608の処理を繰り返す。
【0055】
移動先座標算出部112は、Y´軸の移動処理が終了した場合には(S611でYes)、Z´軸の移動処理が終了したか否かを判定する(S613)。移動先座標算出部112は、Z´軸の移動処理が終了していない場合には(S613でNo)、vをインクリメントして(S614)、S604に戻り、X´軸と同様に、S604〜S608の処理を繰り返す。ただし、Z´軸方向の移動処理に関しては、S607の処理がX´軸,Y´軸の場合と異なる。すなわち、移動先座標算出部112は、S604で操作対象オブジェクトの座標が管境界面内でない場合には、Z´軸方向の移動量が正の場合には移動量を「0」にする。これは、Z´軸方向の正の移動によって、操作対象オブジェクトを仮想臓器800である管から離れるのを防ぐためである。また、移動先座標算出部112は、S604で操作対象オブジェクトの座標が管境界面内でない場合であって、Z´軸方向の移動量が負の場合には、操作対象オブジェクトを管に近づく方向へ移動させるために、移動量をそのまま(負の移動量)にする。移動先座標算出部112は、Z´軸の移動処理が終了した場合には(S613でYES)、操作対象オブジェクトの移動処理を終了する。
【0056】
以上、本実施例のオブジェクト操作装置は、基準オブジェクトの周囲に設定される複数の点それぞれに対してローカル座標系を生成し、各点のローカル座標系に基づいて操作対象オブジェクトを3次元移動させる。したがって、本実施例のオブジェクト操作装置によれば、2つの画面上で操作を行わなくてもよいため、簡易に操作対象オブジェクトの3次元移動操作を行うことができる。また、本実施例のオブジェクト操作装置によれば、操作対象オブジェクトの移動用のパスをあらかじめ設定するのではなく、基準オブジェクトの周囲の複数の点それぞれにローカル座標系を生成するので、操作対象オブジェクトを任意の位置に3次元移動させることができる。
【0057】
また、本実施例のオブジェクト操作装置は、基準オブジェクトの周囲の複数の点それぞれのポテンシャル値に基づいて形成された等値面に直交する第1の軸と、等値面上で互いに直交する第2,第3の軸とに基づいてローカル座標系を生成する。すなわち、第1の軸は基準オブジェクトに近づくまたは遠ざかる方向の軸となり、第2,第3の軸は基準オブジェクトから一定の距離だけ離れた面上を移動する軸となる。したがって、本実施例のオブジェクト操作装置によれば、基準オブジェクトから一定の距離だけ離れた面上で仮想カメラなどの操作対象オブジェクトを移動させながら、様々な方向から基準オブジェクトを観察することができる。また、操作対象オブジェクトを、基準オブジェクトに近づく方向または遠ざかる方向に移動させながら、基準オブジェクトの特定の箇所を詳細に観察したり基準オブジェクトを全体的に観察したりすることができる。
【0058】
また、本実施例のオブジェクト操作装置は、基準オブジェクトがラインデータである場合には、基準オブジェクトの周囲の複数の点それぞれについて、ラインデータに沿った方向の第1の軸と、ラインデータに直交する直交面上でラインデータから遠ざかる方向の第2の軸と、直交面上でラインデータの周囲を回転する方向の第3の軸とに基づいてローカル座標系を生成する。したがって、本実施例のオブジェクト操作装置によれば、例えば血管や大腸などの管状データの内部で仮想内視鏡を3次元移動させる場合に、簡易かつ自由度の高い3次元移動操作を行うことができる。
【0059】
また、本実施例のオブジェクト操作装置は、入力装置から入力される操作対象オブジェクトのローカル座標系における移動指令値を、グローバル座標系における移動指令値に変換して、変換した移動指令値に基づいて操作対象オブジェクトの移動先座標を算出する。したがって、本実施例のオブジェクト操作装置によれば、直感的な操作によって操作対象オブジェクトの3次元移動操作を実現することができる。
【0060】
なお、本実施例は、主にオブジェクト操作装置およびオブジェクト操作方法を中心に説明したが、これに限らず、あらかじめ用意されたオブジェクト操作プログラムをコンピュータで実行することによって、上述の実施例と同様の機能を実現することができる。すなわち、オブジェクト操作プログラムは、コンピュータに、操作対象のオブジェクトを3次元移動操作する際の基準となる基準オブジェクトの周囲に設定された複数の点それぞれに対して、ローカル座標系を生成する処理を実行させる。また、オブジェクト操作プログラムは、コンピュータに、ローカル座標系を生成する処理によって生成された複数の点それぞれのローカル座標系に基づいて、入力装置から入力される操作対象のオブジェクトの移動指令値に対応する操作対象のオブジェクトの移動先座標を算出する処理を実行させる。また、オブジェクト操作プログラムは、コンピュータに、移動先座標を算出する処理によって算出された移動先座標に操作対象のオブジェクトを移動する処理を実行させる。なお、オブジェクト操作プログラムは、インターネットなどの通信ネットワークを介してコンピュータに配布することができる。また、オブジェクト操作プログラムは、コンピュータに設けられたメモリ、ハードディスク、その他のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出すことによって実行することもできる。
【符号の説明】
【0061】
100 オブジェクト操作装置
110 座標系生成部
112 移動先座標算出部
114 移動処理部
115 オブジェクト設定部
200 入力装置
300 表示装置
634 座標変換モジュール
750 等値面

【特許請求の範囲】
【請求項1】
操作対象のオブジェクトを3次元移動操作する際の基準となる基準オブジェクトの周囲に設定される複数の点それぞれに対して、ローカル座標系を生成する座標系生成部と、
前記座標系生成部によって生成された前記複数の点それぞれのローカル座標系に基づいて、入力装置から入力される前記操作対象のオブジェクトの移動指令値に対応する前記操作対象のオブジェクトの移動先座標を算出する移動先座標算出部と、
前記移動先座標算出部によって算出された移動先座標に前記操作対象のオブジェクトを移動させる移動処理部と、
を備えたことを特徴とするオブジェクト操作装置。
【請求項2】
前記座標系生成部は、前記基準オブジェクトの周囲に格子状に設定された複数の点それぞれについて、前記基準オブジェクトからの距離に応じたポテンシャル値を求め、該求められたポテンシャル値が等しい点を結んで形成される等値面に直交する第1の軸と前記等値面上で互いに直交する第2,第3の軸とに基づいて前記ローカル座標系を生成する
ことを特徴とする請求項1に記載のオブジェクト操作装置。
【請求項3】
前記座標系生成部は、前記基準オブジェクトがラインデータである場合には、前記基準オブジェクトの周囲に格子状に設定された複数の点それぞれについて、前記ラインデータに沿った方向の第1の軸と、前記ラインデータに直交する直交面上で前記ラインデータから遠ざかる方向の第2の軸と、前記直交面上で前記ラインデータの周囲を回転する方向の第3の軸とに基づいて前記ローカル座標系を生成する
ことを特徴とする請求項1に記載のオブジェクト操作装置。
【請求項4】
前記移動先座標算出部は、入力装置から入力される前記操作対象のオブジェクトのローカル座標系における移動指令値を、グローバル座標系における移動指令値に変換して、該変換した移動指令値に基づいて前記操作対象のオブジェクトの移動先座標を算出する
ことを特徴とする請求項1に記載のオブジェクト操作装置。
【請求項5】
操作対象のオブジェクトを3次元移動操作する際の基準となる基準オブジェクトの周囲に設定された複数の点それぞれに対して、ローカル座標系を生成する座標系生成手順と、
前記座標系生成手順によって生成された前記複数の点それぞれのローカル座標系に基づいて、入力装置から入力される前記操作対象のオブジェクトの移動指令値に対応する前記操作対象のオブジェクトの移動先座標を算出する移動先座標算出手順と、
前記移動先座標算出手順によって算出された移動先座標に前記操作対象のオブジェクトを移動させる移動処理手順と、
を備えたことを特徴とするオブジェクト操作方法。
【請求項6】
前記座標系生成手順は、前記基準オブジェクトの周囲に格子状に設定された複数の点それぞれについて、前記基準オブジェクトからの距離に応じたポテンシャル値を求め、該求められたポテンシャル値が等しい点を結んで形成される等値面に直交する第1の軸と前記等値面上で互いに直交する第2,第3の軸とに基づいて前記ローカル座標系を生成する
ことを特徴とする請求項5に記載のオブジェクト操作方法。
【請求項7】
前記座標系生成手順は、前記基準オブジェクトがラインデータである場合には、前記基準オブジェクトの周囲に格子状に設定された複数の点それぞれについて、前記ラインデータに沿った方向の第1の軸と、前記ラインデータに直交する直交面上で前記ラインデータから遠ざかる方向の第2の軸と、前記直交面上で前記ラインデータの周囲を回転する方向の第3の軸とに基づいて前記ローカル座標系を生成する
ことを特徴とする請求項5に記載のオブジェクト操作方法。
【請求項8】
前記移動先座標算出手順は、入力装置から入力される前記操作対象のオブジェクトのローカル座標系における移動指令値を、グローバル座標系における移動指令値に変換して、該変換した移動指令値に基づいて前記操作対象のオブジェクトの移動先座標を算出する
ことを特徴とする請求項5に記載のオブジェクト操作方法。
【請求項9】
コンピュータに、
操作対象のオブジェクトを3次元移動操作する際の基準となる基準オブジェクトの周囲に設定された複数の点それぞれに対して、ローカル座標系を生成し、
前記ローカル座標系を生成する処理によって生成された前記複数の点それぞれのローカル座標系に基づいて、入力装置から入力される前記操作対象のオブジェクトの移動指令値に対応する前記操作対象のオブジェクトの移動先座標を算出し、
前記移動先座標を算出する処理によって算出された移動先座標に前記操作対象のオブジェクトを移動させる、
処理を実行させることを特徴とするオブジェクト操作プログラム。
【請求項10】
前記ローカル座標系を生成する処理は、前記基準オブジェクトの周囲に格子状に設定された複数の点それぞれについて、前記基準オブジェクトからの距離に応じたポテンシャル値を求め、該求められたポテンシャル値が等しい点を結んで形成される等値面に直交する第1の軸と前記等値面上で互いに直交する第2,第3の軸とに基づいて前記ローカル座標系を生成する
ことを特徴とする請求項9に記載のオブジェクト操作プログラム。
【請求項11】
前記ローカル座標系を生成する処理は、前記基準オブジェクトがラインデータである場合には、前記基準オブジェクトの周囲に格子状に設定された複数の点それぞれについて、前記ラインデータに沿った方向の第1の軸と、前記ラインデータに直交する直交面上で前記ラインデータから遠ざかる方向の第2の軸と、前記直交面上で前記ラインデータの周囲を回転する方向の第3の軸とに基づいて前記ローカル座標系を生成する
ことを特徴とする請求項9に記載のオブジェクト操作プログラム。
【請求項12】
前記移動先座標を算出する処理は、入力装置から入力される前記操作対象のオブジェクトのローカル座標系における移動指令値を、グローバル座標系における移動指令値に変換して、該変換した移動指令値に基づいて前記操作対象のオブジェクトの移動先座標を算出する
ことを特徴とする請求項9に記載のオブジェクト操作プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2012−79182(P2012−79182A)
【公開日】平成24年4月19日(2012.4.19)
【国際特許分類】
【出願番号】特願2010−225243(P2010−225243)
【出願日】平成22年10月4日(2010.10.4)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】