(57)【要約】【課題】選択候補を決定する規則を自在に切り替え、多種多様なオブジェクトに対し効率良く選択対象のオブジェクトを決定することができるようにすること。【解決手段】選択候補となるオブジェクトを決定する複数の規則のうち１つを選択する第１のステップと、選択された規則に従い、選択候補とするオブジェクトを決定する第２のステップとを備えることを特徴とする。また、前記第１のステップが、マウスのクリックボタン操作を受け、操作されたクリックボタンに対応付けられた規則を選択するものであることを特徴とする。【選択図】　　　　図５
2004110358.tif 000002
【特許請求の範囲】
【請求項１】
選択操作イベントに対する被選択基準を保持した複数の２次元または３次元オブジェクト群を表示装置に表示させ、その表示されたオブジェクト群への選択操作に対しいずれのオブジェクトを選択候補とするかを制御するオブジェクトの選択制御方法であって、
選択候補となるオブジェクトを決定する複数の規則のうち１つを選択する第１のステップと、
選択された規則に従い、選択候補とするオブジェクトを決定する第２のステップと
を備えることを特徴とするオブジェクトの選択制御方法。
【請求項２】
前記第１のステップが、マウスのクリックボタン操作を受け、操作されたクリックボタンに対応付けられた規則を選択するものであることを特徴とする請求項１に記載のオブジェクトの選択制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータプログラムによって表示装置画面上に表示された２次元または３次元のオブジェクト群のうちユーザの操作対象とするオブジェクトを選択する際に、どのオブジェクトを選択候補オブジェクトとして決定するかを制御するオブジェクトの選択制御方法に関するものである。
【０００２】
【従来の技術】
従来において、２次元または３次元形状オブジェクトを操作するコンピュータグラフィックスのアプリケーションにおいては、通常、マウス操作によって操作対象のオブジェクトを指定する。
従来、このようなアプリケーションにおいては、操作対象とするオブジェクトをユーザが指定するためのインタフェースの多くは、「視点と画面上のマウスイベント発生位置とを結ぶ直線上に存在するオブジェクト群の中から選択候補群が抽出される」というものであった。
したがって、例えば１本のパイプの中に内包されるオブジェクト群のように、論理的には関連の深いオブジェクト間同士であっても、他オブジェクトを排他してそれらに限定して選択候補群となるということはなく、パイプが不透明で内包オブジェクトが可視化されていない等、マウスの反応対象となりにくいオブジェクトは、選択候補になりにくい状況にあった。すなわち「マウスに反応できない状況にあるオブジェクトは選択不可」という規則で固定化されていた。
そこで、従来において、オブジェクトの存在環境に応じて自在に選択候補に含めるといった選択制御方法について本願出願人が提案したものがある（例えば、特許文献１参照）。
【０００３】
【特許文献１】
特願２００１−１７２４１６号
【０００４】
【発明が解決しようとする課題】
しかしながら、上記の従来技術にあっては、選択候補として決定する規則を固定しているために、多種多様のオブジェクトに対し効率良く対応できないという問題があることが判明した。
例えば、人体の内部の観察をシミュレーションする３次元アプリケーションにおいて、血管中に混入したある物質オブジェクト（混入オブジェクト）をマウスで選択して操作したい場合に、血管は種々臓器や骨格、筋肉、皮膚で覆われ、ユーザからはそのオブジェクトが見えていない場合を想定する。このような状況において、混入オブジェクトを選択しようとすると、ユーザから見て手前に位置する臓器等のオブジェクト及び混入オブジェクトを内包している血管オブジェクトを一時的に非表示もしくは半透明にする等して、当該混入オブジェクトを可視化する必要がある。すなわち、「確実に血管内にある。」とわかっているにも拘わらず、混入オブジェクトを選択する操作が非常に面倒になるという問題が生じている。これは、選択候補を決定する規則が一律に固定化され、切り替えることができないために生じている問題である。
【０００５】
本発明の目的は、選択候補を決定する規則を自在に切り替え、多種多様なオブジェクトに対し効率良く選択対象のオブジェクトを決定することができるオブジェクトの選択制御方法を提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、本発明に係るオブジェクトの選択制御方法は、選択候補となるオブジェクトを決定する複数の規則のうち１つを選択する第１のステップと、選択された規則に従い、選択候補とするオブジェクトを決定する第２のステップとを備えることを特徴とする。
また、前記第１のステップが、マウスのクリックボタン操作を受け、操作されたクリックボタンに対応付けられた規則を選択するものであることを特徴とする。
【０００７】
【発明の実施の形態】
以下、本発明を実施する場合の一形態を図面を参照して具体的に説明する。
図１は、本発明を適用したシステムの一実施形態を示す全体構成図である。
図１において、１００は本発明に係るオブジェクトの選択制御方法方を実現する処理を行う計算機である。この計算機１００は、キーボード１０１とディスプレイ１０２、ＣＰＵ１０３、マウス１０４、プログラムメモリ１０５、データメモリ１０６とから構成される。
計算機１００のプログラムメモリ１０５には、計算機全体を制御するオペレーティングシステム１０５ａと、ユーザによるマウス操作などのイベントを各オブジェクトに配送するイベントディスパッチャ１０５ｂ、データメモリ１０６に格納された各種３次元オブジェクト（１）〜（ｎ）１０６ａ〜１０６ｃに対応するオブジェクト（１）〜オブジェクト（ｎ）プログラム１０５ｃ〜１０５ｅが格納されている。オブジェクトｉ（ｉ＝１〜ｎ）プログラムは、オブジェクトの動作を規定するプログラムである。
【０００８】
データメモリ２０６には、３次元オブジェクト（１）１０６ａ、オブジェクト（２）１０６ｂ、．．．オブジェクト（ｎ）１０６ｃといった各種オブジェクトが格納されている。
【０００９】
３次元オブジェクトを表示装置画面に表示する際には、視点から見える視野を設定するが、視点から見て投影面の手前側で見える範囲を前平面の位置で設定し、奥行き方向に見える範囲を後平面の位置で設定する。本実施形態では、図２に示すように、視点位置２０１を基準として、投影面２０３と後平面２０５の位置（ワールド座標系でのＺ軸方向の位置）Ｄ１，Ｄ２を設定し、ローカル座標系で定義された３次元オブジェクトをワールド座標系上の投影面座標系の２次元投影像に透視変換を行って投影面２０３に表示する。前平面２０４と後平面２０５の間の四角錘形状の３次元空間が３次元オブジェクトのビューバリューである。投影面２０３に投影される３次元オブジェクト２０６は注視点２０２を原点とし、ｚ軸を支軸方向とする始点座標系での支軸方向に応じて変化する。
なお、本実施形態で扱う３次元オブジェクトの生成方法については、本願出願人が先に出願した特願２００１−１７２４１６号に詳しく記載しているので、その説明は省略する。
【００１０】
図３は、本発明で用いられるアプリケーション例のオブジェクトの概念図である。３０１はシステムのグローバルなメモリ領域を示す。３０２は、選択対象候補オブジェクト群（以下、選択候補群と称す）を取得するカレントの有効な関数のアドレス領域である。３０３は、３０２の関数により取得された選択候補群オブジェクトを保持しておくための領域である。３０４は現在有効な選択候補群取得規則を定義する関数を設定する関数のアドレス領域である。３０５は選択候補群取得デフォルト関数のアドレスである。３０６ａ、ｂ、ｃはオブジェクトである。
３０７ａ、ｂは選択候補群取得関数定義ボタン（１）、（２）であり、これらが個々にメンバ変数、選択候補群取得関数及びその他のメンバ関数を持っている。
【００１１】
図４は、２次元、３次元グラフィックスアプリケーションにおける選択対象オブジェクトの構造を示す図である。
各オブジェクトは、４０１に示すように色、透明度、座標変換行列、形状データ等の共通属性を有し、４０２で示されるメンバ関数群においてこれら共通属性を参照、更新可能となる。なお、図４に示すオブジェクトの属性や関数については、本願出願人が先に出願した特願２００１−１７２４１６号に詳しく記載しているので、その説明は省略する。
以下、本実施形態における処理の流れについて説明する。
【００１２】
図５は、オペレーティングシステム１０５ａから起動されるイベントディスパッチャ１０５ｂの処理を示すフローチャートである。
まず、イベントディスパッチャ１０５ｂは、オブジェクト選択に関するマウスイベント（ｅ）が発生した場合に、選択候補群取得関数設定関数（ｅ）を実行する（ステップ５０１）。必要に応じて選択候補群取得カレント関数アドレス領域３０２を変更する。
次に、ステップ５０１で設定された選択候補群取得関数設定関数（ｅ）により設定された選択候補群取得関数を用いて選択候補群となるオブジェクトを抽出し、選択候補群保持領域３０３に保持する（ステップ５０２）。
その後、抽出された選択候補群のオブジェクト中から、ある規則に対応したオブジェクト選択関数（ｅ）を実行する、もしくはユーザインタフェース等を介して最終的な選択オブジェクトが１つ決定され（ステップ５０３）、それを返却する（ステップ５０４）。
【００１３】
図６は、デフォルトの選択候補群取得関数の処理を示すフローチャートであり、最も典型的な選択候補群取得ロジックを適用している。
まず、選択候補群保持領域３０３を空にする（ステップ６０１）。そして、ステップ６０２と６０５で形成される以下の処理を、全選択候補群の個々のオブジェクトに対して実行する。
すなわち、個々のオブジェクトａについてマウスカーソルにより貫通されるオブジェクトかどうか判定し（ステップ６０３）、真ならば当該オブジェクトａは選択対象候補となり得るということであり、これを選択候補群に追加する（ステップ６０４）。そして最終的に選択候補群を返却する（ステップ６０６）。
【００１４】
図７は、「自身の内包オブジェクトのみを選択候補群とする。」というオブジェクトに独自に定義された選択候補群取得カレント関数の処理を示すフローチャートである。
まず、選択候補群保持領域３０３を空にする（ステップ７０１）。そして、ステップ７０２と７０５で形成される以下の処理を、全選択候補群の個々のオブジェクトａに対して実行する。
すなわち、個々のオブジェクトａについて、自身に内包されているオブジェクトならば当該オブジェクトは選択対象候補となり得るということであり、これを選択候補群に追加する（ステップ７０４）。そして、最終的に選択候補群を返却する（ステップ７０６）。
【００１５】
図８は、「自身の隣接オブジェクトのみを選択候補群とする。」というオブジェクトに独自に定義された選択候補群取得カレント関数の処理を示すフローチャートである。
まず、選択候補群保持領域３０３を空にする（ステップ８０１）。そして、ステップ８０２と８０５で形成される以下の処理を、全選択候補群の個々のオブジェクトａに対して実行する。個々のオブジェクトａについて、自身に隣接しているオブジェクトならば当該オブジェクトａは選択対象候補となり得るということであり、これを選択候補群に追加する（ステップ８０４）。そして、最終的に選択候補群を返却する（ステップ８０６）。
【００１６】
図９は、カレントの選択候補群取得関数を設定する処理関数（選択候補群取得設定関数（ｅ）の処理を示すフローチャートである。
まず、マウスが押下されているかどうかを判定し（ステップ９０１）、されていなければ関数処理から抜けて、選択候補群取得関数設定処理は行わない（ステップ９０６）。マウスが押下されていた場合は、その時点でマウス直下に選択候補群取得関数ｆを独自に定義しているボタンオブジェクトｐが存在するかを判定し（ステップ９０３）、その選択候補群取得関数のアドレスを選択候補群取得関数アドレス領域３０２に設定し（ステップ９０３）、関数の処理から抜ける（ステップ９０６）。
しかし、そのようなボタンオブジェクトが直下に存在しない場合には、マウス直下に選択候補群取得関数をデフォルトに戻すリセットボタンオブジェクトがあるかどうか判定し（ステップ９０４）、存在しなければ、関数の処理から抜け（ステップ９０６）、存在すればデフォルト選択候補群取得関数アドレスを選択候補群取得カレント関数アドレス領域３０２に設定し、関数の処理から抜ける（ステップ９０６）。
【００１７】
図１０は、人体の観察シミュレーションの例であり、１００１を胃オブジェクト、１００２を大腸オブジェクト、１００３を小腸オブジェクトとする。今、小腸オブジェクト１００３に有害な物質オブジェクト１００４、１００５、１００６が混入されたとして、小腸１００３内に確実に存在するが、どこにあるかはわからないものとする。この場合、選択候補群取得関数定義オブジェクト１００７には、図７のフローチャートで示した選択候補群取得カレント関数が定義されているとすると、１００７をクリックすることにより、この選択候補群取得カレント関数が有効となり、マウスカーソルを小腸オブジェクト１００３上で左クリックすることにより、１００４等の内包オブジェクトが検出され、内包オブジェクト１〜３として一覧表示され、容易にユ外物質オブジェクト１００４を選択することができる。
リセットボタン１００９を押下することにより、変更前の選択候補群取得カレント関数による選択規則に戻すことができる。
【００１８】
図１１も同様の例であり、１１０１を胃オブジェクト、１１０２を大腸オブジェクト、１１０３を小腸オブジェクトとする。今、選択候補群取得カレント関数定義オブジェクトには、図８のフローチャートで示した選択候補群取得カレント関数が定義されているとすると、選択候補群取得カレント関数定義オブジェクト１１０５をマウスクリックすることにより、この選択候補群取カレント関数が有効となり、マウスカーソルを大腸オブジェクト１１０２上で左クリックすることにより、小腸オブジェクト１１０３、胃オブジェクト１１０１等の隣接オブジェクトが検出され一覧表示され、容易に目的オブジェクトを選択することができる。そして、リセットボタン１００６を押下することにより、変更前の選択候補群取得規則に戻すことができる。
【００１９】
図１２および図１３も人体の観察シミュレーションの例であるが、押下するマウスボタンの切り替えにより、有効となる選択候補群取得規則を切り替える例を示す。１２０１、１３０１を胃オブジェクト、１２０２、１３０２を大腸オブジェクト、１２０３、１３０３を小腸オブジェクトとする。
今マウス１２０４の左ボタンクリックにより、その直下のオブジェクトが選択されるとすると、胃オブジェクト１２０１の上にマウスカーソルがある状態で、左ボタンをクリックすると胃オブジェクト１２０１が選択候補群として一覧表示される。
図１３においては、マウスの右クリックにより、当該オブジェクトの内包オブジェクトが選択候補群となる規則が定義されているとすると、マウス右クリックを行うと、マウスカーソルが重なっているオブジェクト内の内包オブジェクト（１）〜（３）が選択候補群として抽出される。
【００２０】
なお、上記の実施形態では、選択候補のオブジェクトを選択する規則を２つの場合について説明したが、本発明では２つ以上の場合にも適用可能であることは言うまでもない。
【００２１】
【発明の効果】
以上の説明から明らかなように、本発明によれば、選択候補となるオブジェクトを決定する複数の規則を用意しておき、その中の１つを選択し、その選択された規則に従い、選択候補とするオブジェクトを決定するようにしたため、選択候補を決定する規則を自在に切り替え、多種多様なオブジェクトに対し効率良く選択対象のオブジェクトを決定することができる。
【図面の簡単な説明】
【図１】本発明を適用したシステムの一実施の形態を示す全体構成図である。
【図２】３次元オブジェクトを表示装置画面に表示する際に設定する投影面と後平面の位置の説明図である。
【図３】本発明の実施形態で使用するオブジェクト選択制御用の関数の例を示す図である。
【図４】本発明の実施形態で使用する選択対象オブジェクトの構造を示す図である。
【図５】イベントディスパッチャの処理を示すフローチャートである。
【図６】選択候補を取得する規則を元に戻すリセットボタンが操作された時に起動されるデフォルト選択候補群取得関数の処理を示すフローチャートである。
【図７】自身の内包オブジェクトを選択候補とする規則の選択候補群取得カレント関数の処理を示すフローチャートである。
【図８】自身の隣接オブジェクトを選択候補とする規則の選択候補群取得カレント関数の処理を示すフローチャートである。
【図９】選択候補を決定する複数の規則のうちいずれを使用するかを設定する選択候補群取得関数設定関数の処理を示すフローチャートである。
【図１０】本発明を使用して人体の内臓オブジェクトを選択して観察する場合に、マウスカーソルが位置するオブジェクトの内包オブジェクトを選択候補として決定し表示した例を示す説明図である。
【図１１】本発明を使用して人体の内臓オブジェクトを選択して観察する場合に、マウスカーソルが位置するオブジェクトの隣接オブジェクトを選択候補として決定し表示した例を示す説明図である。
【図１２】本発明を使用して人体の内臓オブジェクトを選択して観察する場合に、マウス左ボタンによって選択候補として決定する規則を切り替える例を示す説明図である。
【図１３】本発明を使用して人体の内臓オブジェクトを選択して観察する場合に、マウス右ボタンによって選択候補として決定する規則を切り替える例を示す説明図である。
【符号の説明】
１０１…キーボード、１０２…ディスプレイ、１０３…ＣＰＵ、１０４…マウス、３０２…選択候補群取得カレント関数アドレス領域、３０３…選択候補群保持領域、３０４…選択候補群取得関数設定関数アドレス領域、３０５…デフォルト選択候補群取得関数アドレス、３０７ａ…選択候補群取得関数定義ボタン１、３０７ｂ…選択候補群取得関数定義ボタン２。
【図１】
2004110358.tif 000003
【図２】
2004110358.tif 000004
【図３】
2004110358.tif 000005
【図４】
2004110358.tif 000006
【図５】
2004110358.tif 000007
【図６】
2004110358.tif 000008
【図７】
2004110358.tif 000009
【図８】
2004110358.tif 000010
【図９】
2004110358.tif 000011
【図１０】
2004110358.tif 000012
【図１１】
2004110358.tif 000013
【図１２】
2004110358.tif 000014
【図１３】
2004110358.tif 000015