(58)【調査した分野】(Int.Cl.,DB名)
グラフィカルユーザインターフェイスにおいて表示される複数のオブジェクトの中から1つのオブジェクトのマニピュレータを選択するコンピュータで実行される方法であって、各オブジェクトは、オブジェクト上の機能を実行するオブジェクトである少なくとも1つのマニピュレータを含み、前記方法は、
複数のマニピュレータのセットを提供するステップであって、各マニピュレータは少なくとも1つのピッキングエリアを含み、前記マニピュレータのセットの中の異なるマニピュレータの少なくとも2つのピッキングエリアはオーバーラップしており、マニピュレータエリアのピッキングエリアは、マニピュレータとのインタラクトのための二次元または三次元形状のエリアである、ステップと、
前記グラフィカルユーザインターフェイスとのユーザのインタラクトに応答して、イベントのリスト中のイベントを受け入れるステップであって、前記イベントは前記少なくとも2つのオーバーラップするピッキングエリアに適用され、前記オーバーラップするピッキングエリアの前記マニピュレータは、前記イベントについて登録される、ステップと、
複数のフィルタのセットを順次起動して、前記複数のマニピュレータのセットの中からアクチベートされるべき前記複数のマニピュレータのセットのうちの1つのマニピュレータを選択するステップであって、前記複数のフィルタのセットは、前記イベントについて登録された前記複数のマニピュレータ上において起動される、ステップと
を含み、
前記1つのマニピュレータを選択するための複数のフィルタのセットは、候補マニピュレータのリストの中からマニピュレータのサブセットを取り出すことと、前記サブセットのうちの各マニピュレータの優先度を決定して、最も重要な優先度を有する前記複数のマニピュレータを含む新しいサブセットを演算することと、現在のカーソルと残りの候補マニピュレータとの最小距離を算出することと、前記マニピュレータのそれぞれの前記算出された距離が同一であると判定することに応答して前記ユーザの視点に最も近いマニピュレータを選択することと、を実行する
ことを特徴とするコンピュータで実行される方法。
前記複数のマニピュレータのセットから複数のマニピュレータを選択するステップをさらに含み、各選択されたマニピュレータは前記イベントを受け入れる少なくとも1つのピッキングエリアを有することを特徴とする請求項1記載のコンピュータで実行される方法。
前記第1のリストを検索し、識別子を取り出すステップであって、前記識別子は前記少なくとも2つのオーバーラップするピッキングエリアに対応しており、当該ピッキングエリアは前記第2のリストに記憶されているイベントを受け入れるエリアである、ステップと、
当該取り出された識別子のそれぞれのマニピュレータを識別するステップと
をさらに含むことを特徴とする請求項5記載のコンピュータで実行される方法。
グラフィカルユーザインターフェイスにおいて表示される複数のオブジェクトの中から1つのオブジェクトのマニピュレータを選択する装置であって、各オブジェクトは少なくとも1つのマニピュレータを含み、前記装置は請求項1乃至6のいずれかの方法を実行する手段を含むことを特徴とする装置。
【背景技術】
【0002】
オブジェクトの設計、研究(エンジニアリング)及び製造のための多くのシステム及びプログラムが市場に提供されている。これらオブジェクトは2次元オブジェクトまたは3次元オブジェクトである。
【0003】
CADはComputer−Aided Designの頭文字であり、例えば、オブジェクトを設計するためのソフトウエアソリューションに関する。CAEはComputer−Aided Engineeringの頭文字であり、例えば、未来の製品の物理的動作をシミュレーションするためのソフトウエアソリューションに関する。CAMはComputer−Aided Manufacturingの頭文字であり、例えば、製造プロセス及び製造作業を規定するためのソフトウエアソリューションに関する。このようなCADシステムにおいて、グラフィカルユーザインターフェイスは、技術の効率(化)という観点において重要な役割を果たす。このような技術はプロダクトライフサイクルマネージメント(PLM:Product Lifecycle Management)システムに含まれている場合がある。PLMは、拡張エンタープライズという概念の中で、発想から製品寿命終了までの製品開発のために、企業が製品データを共有し、共通のプロセスを適用し、企業の知識を活用・向上するのに役立つビジネスストラテジ(戦略)を意味する。
【0004】
コンピュータプログラムは、図面及び図形を含むその他の書類を作成する際に広く用いられている。これらプログラムは、コンピュータディスプレイを介してユーザがオブジェクト(例えば、グラフィックス、アイコン、幾何学形状、画像、テキストブロック)を作成して操作する(マニピュレートする)際にユーザを援助する種々のツールを有している(内包している)。CADソリューション(例えば、商標CATIAが付されているDASSAULT SYSTEMSというシステムによって提供されるCADソリューション)では、マニピュレータがあるのでユーザは常にジオメトリ(幾何学的形状)とインタラクト(対話)する。マニピュレータは、また、ハンドルベースのツール(またはハンドル)として知られている。ユーザはポインタをマニピュレータ(またはハンドル)に向けて当該ポインタでクリックしたりドラッグしたり所望の軌道を描いたりすることによって、大きなグラフィカル(図形)オブジェクトに対する処理・作業を行うことができる。インタラククションは、マウス、トラックボール若しくはスタイラスの制御の下でポインタを使用してディスプレイデバイス上で行われる。またインタラクションは、ポインタ(例えば、指またはスタイラス)を使用して接触感知型ディスプレイデバイス上で直接行われることもある。マニピュレータは没入型オブジェクトであり、これによってユーザは所定の機能(例えば、修正すべきオブジェクトが存在しているシーン中の幾何学的形状を直接、変形、移動及び変換すること)を開始できる。マニピュレータは1つ若しくは複数のミニチュア図形またはアイコンを含むことができ、当該図形またはアイコンはこれらより大きな図形オブジェクトに関連づけられて表示される。マニピュレータは四角形、球、メッシュまたはその他の複雑な形状(例えば、ロボット、軸 等)によって表される。
【0005】
このようなマニピュレータとインタラクトするいくつかの方法が存在する。マニピュレータとインタラクトするための動作は、マニピュレータをピッキング(picking)すると表現されることもある。マニピュレータとインタラクトする第1の方法は「画素プレシジョン」法であり、マニピュレータのアクティブエリアはマニピュレータの視覚表現(目に見える表示)とまったく同じである。アクティブエリアはスクリーン上の可視ゾーンであり、このゾーン内でユーザはオブジェクトに適用された機能を開始することができる。これはウィジウィグ(WYSIWYG:What You See Is What You Get)ビヘイビアである。これが
図4に示されており、
図4の左側ではカーソルがマニピュレータ(両方向矢印)に正確に接触していないので、マニピュレータはアクティブではない。
図4の右側では、カーソルがマニピュレータに接触しているので、マニピュレータはアクティブである。
【0006】
マニピュレータとインタラクトするための第2の方法は「拡張されたピッキングエリア」を利用する。ピッキングエリアはイベントをマニピュレータに送ることができる表面を意味する。これは
図5に示されており、
図5にはマニピュレータ(両方向矢印)とそのピッキングエリア(円)が描かれている。
図5の左側では、カーソルはピッキングエリアになく、マニピュレータはアクティブではない。
図5の右側ではカーソルはピッキングエリアにあり、マニピュレータはアクティブである。ピッキングエリアは、ユーザがオブジェクトに適用される機能を開始することができるスクリーンのゾーンである。マニピュレータの視覚表示はアクティブな不可視エリア(ピッキングエリア)によって拡張され、ユーザはたとえオブジェクトから離れていてもマニピュレータをピッキングすることができる。ピッキングエリアは目に見えても見えなくてもよい。
【0007】
マニピュレータとインタラクトする第3の方法は「常にどこでもマニピュレートする」という手法を利用し、全スクリーンがマニピュレータとインタラクトするようになっている。従って、これ以上の選択はできない。
図6に示されたグラフィカルユーザインターフェイスでは、ピッキングエリアが全スクリーンを包含するので、カーソルが常にエリアをピッキングしている。
【0008】
上記したマニピュレータとインタラクトする方法はそれぞれ課題(問題点)を有している。画素プレシジョン法は生産性と人間工学という点で不十分であり、ユーザは可視表示(1つまたは2つの画素の厚さしかない場合もある)を正確にピッキングしなければならないので、スムースに作業をすることができない。拡張ピッキングエリア法は、数個のマニピュレータがスクリーン上でオーバーラップする場合にピッキングにおいて問題を有する(ピッキングがうまくできない)。どのマニピュレータが作動されなければないのか、区別がつかなくなる。その結果、予期しない結果が生じ得る。これが
図7に示されており、カーソルが2つのマニピュレータ(両方向矢印と四角形)の両方のピッキングエリア内に位置している。よって、この方法は、数個のマニピュレータがオーバーラップする場合には不適当である(使用できない)。「常にどこでもマニピュレートする」方法は、不可視表示が全スクリーン上で焦点を合わせているので、他の技術とともに使用することができない。その結果として、1つのマニピュレータだけが必要とされる場合にのみ、当該方法を使用できるということになり、数個の独立したマニピュレータがある場合には使用できない。
【0009】
上記の説明から分かるように、複数のオーバーラップするマニピュレータの中からグラフィカルユーザインターフェイスに表示される1つのマニピュレータを選択する方法の改良が望まれている。
【発明の概要】
【課題を解決するための手段】
【0010】
従って、本発明の1つの態様によれば、グラフィカルユーザインターフェイスにおいて表示される複数のオブジェクトの中から1つのオブジェクトのマニピュレータを選択するためのコンピュータ実行プロセスが提供される。このコンピュータ実行プロセスは、
複数のマニピュレータのセットを提供するステップであって、各前記マニピュレータは少なくとも1つのピッキングエリアを含み、前記マニピュレータのセットの中の異なるマニピュレータの少なくとも2つのピッキングエリアはオーバーラップしている、提供するステップと、
前記グラフィカルユーザインターフェイスとのユーザのインタラクトに応答して、前記少なくとも2つのオーバーラップするピッキングエリアに適用されたイベントを受け入れるステップと、
複数のフィルタのセットを起動して、前記複数のマニピュレータのセットの中からアクチベートされるべき1つのマニピュレータを選択するステップと
を含む。
【0011】
前記プロセスはさらに下記のステップの1つまたは複数を含むことができる。
【0012】
(1)前記マニピュレータのセットから複数のマニピュレータを選択するステップであって、各選択されたマニピュレータは前記イベントを受け入れる少なくとも1つのピッキングエリアを有する、選択するステップ;
【0013】
(2)前記グラフィカルユーザインターフェイス内の1つの位置から光線を発し(投じ)、当該光線と前記少なくとも2つのオーバーラップするピッキングエリアとの交差を判定するステップ;
なお、前記複数のフィルタのセットは下記のフィルタの中の少なくとも2つを含む。
前記イベントが関与しているマニピュレータのサブセットを作るフィルタ;
各マニピュレータの優先度(優先順位)に従って複数のマニピュレータのサブセットを作るフィルタ;
グラフィカルユーザインターフェイスにおける1つの位置から最短距離を有するポイントを持つ複数のマニピュレータのサブセットを作るフィルタ;
ユーザ視点から最も近い距離のマニピュレータを選択するフィルタ;
なお、前記複数のフィルタのセットは順次起動されてもよい。
【0014】
(3)マニピュレータをマニピュレータマネージャに登録するステップ;
前記マニピュレータを登録するステップは、
各マニピュレータについて、それぞれの識別子を、前記マニピュレータマネージャによって管理されている記憶部(ストレージ)に記憶(保存)されている第1のリストに記憶するステップ;
各マニピュレータについて、前記それぞれの少なくとも1つのピッキングエリアを、前記マニピュレータマネージャによって管理されている記憶部に記憶されている第2のリストに記憶するステップ;
を含む。
【0015】
(4)前記第1のリストを検索し、識別子を取り出すステップであって、該識別子は前記少なくとも2つのオーバーラップするピッキングエリアに対応しており、当該ピッキングエリアは前記第2のリストに記憶されているイベントを受け入れるエリアである、取り出すステップおよび当該取り出された識別子のそれぞれのマニピュレータを識別するステップ。
【0016】
また、本発明は、グラフィカルユーザインターフェイスにおいて表示された複数のオブジェクトの中から1つのオブジェクトのマニピュレータを選択する装置を提供する。各オブジェクトは少なくとも1つのマニピュレータを含む。当該装置は、前記した本発明のプロセスを実行する手段を含む。
【0017】
さらに、本発明は、コンピュータによって実行される命令を含むコンピュータプログラムを提供する。当該命令は、前記した本発明のプロセスを実行する手段を含む。
【0018】
また、本発明は、前記コンピュータプログラムを記憶したコンピュータ可読記憶媒体を提供する。
【発明を実施するための形態】
【0020】
グラフィカルユーザインターフェイスにおいて表示される複数のオブジェクトの中から1つのオブジェクトのマニピュレータを選択するコンピュータ実行プロセスが提供(提案)される。各オブジェクトは少なくとも1つのマニピュレータを含む。マニピュレータは1つのオブジェクトに関連付けられており、当該オブジェクトへ所定の機能を発揮する(所定の処理を行う)。マニピュレータそのものがオブジェクトである。マニピュレータは付随するオブジェクトとともにシーン(2次元のシーンまたは3次元のシーン)に埋め込まれる。このシーン内には付随オブジェクトが位置する。よって、マニピュレータはシーンの中の没入型のオブジェクトであるということができ、これにより、ユーザは当該マニピュレータに付随するオブジェクトに適用された機能を起動することができる。前記プロセスは、複数のマニピュレータのセットを提供するステップを含む。各マニピュレータは少なくとも1つのピッキングエリアを含む。マニピュレータのピッキングエリアは当該マニピュレータとインタラクトするための表面であり、ピッキングエリアによって受け入れられたイベントはマニピュレータに送られる。イベントをマニピュレータに送るということは、特定の意味を有する信号がそのピッキングエリアを介して当該マニピュレータによって受信されるということを意味する。ピッキングエリアはユーザに見える場合もあるし見えない場合もある。実際には、ピッキングエリアはマニピュレータのグラフィカル表示より大きな表面を有する。ピッキングエリアは数個の形状を有することができ、当該形状は2次元(2D)形状または3次元(3D)形状である。ピッキングエリアはマニピュレータの一部であり、よって、ピッキングエリアもまた没入型のオブジェクトである。前記方法において、前記マニピュレータのセットの中の異なるマニピュレータの少なくとも2つのピッキングエリアがオーバーラップする。2つのピッキングエリアは当該2つのピッキングエリアが交差すると、オーバーラップする。前記方法は、ユーザがグラフィカルユーザインターフェイスとインタラクトすると、前記少なくとも2つのオーバーラップするピッキングエリアに適用されたイベントを受け入れるステップを含む。よって、少なくとも2つのピッキングエリアは、ユーザの動作に応じて送られたイベントに関連している。次に、フィルタのセットを起動して、前記マニピュレータのセットの中から1つのマニピュレータを選択し、当該選択されたマニピュレータがアクチベート(活性化)される。
【0021】
本発明によるプロセスによれば、数個のマニピュレータが選択される可能性があるときに(典型的な場合として、マニピュレータのそれぞれのピッキングエリアがオーバーラップするとき)1つのマニピュレータを選択することができる。これにより、マニピュレータの選択におけるユーザエクスペリエンス(user experience)及び人間工学性が改善される。特に、ピッキング問題無しに「画素プレシジョン」法、「拡張ピッキングエリア」法及び「常にどこでもマニピュレートする」法を組み合わせることができる。加えて、すべてのマニピュレータが同時にインタラクトすることができるので、スクリーンスペースは最適となる(最適化される)。さらに、前記方法はイベントを送ることができるデバイスの全て(例えば、ペンタブレット、マルチタッチハードウエア、バーチャルリアリティ等)に完全に適合している。また、本発明によれば、全マニピュレータを同時に表示することができるので、動作・処理を並行して行うことができる。その結果、もし数個のインタラクション(例えば、数個のタッチポイント)が検出されたとき、正しい基本のマニピュレータが各ポイント位置において起動されることになる。
【0022】
前記プロセスはコンピュータで実装することができる。これは、前記プロセスのステップ(実質的に全てのステップ)が少なくとも1つのコンピュータによって実行されることを意味する。幾つかの例では、前記プロセスの少なくとも幾つかのステップの起動(開始)は、ユーザとコンピュータのインタラクションによって行われてもよい。必要とされるユーザとコンピュータのインタラクションのレベルは、予想される自動化のレベルに依存し、ユーザの要望を実行する必要性とのバランスを考慮して決められるようにしてもよい。いくつかの例において、このレベルはユーザが決定し、且つ/または、予め決めておいてもよい。
【0023】
例えば、少なくとも2つのピッキングエリアに適用されたイベントを受け入れるステップは、グラフィカルユーザインターフェイスにおけるユーザインタラクションによって起動される。つまり、デザイナはマウス等のポインティングデバイスによって制御されるカーソルを2つのマニピュレータのそれぞれのピッキングエリア上に動かし、イベントをマニピュレータに送るために当該マウスのボタンをクリックする。
【0024】
前記プロセスのコンピュータ実装の典型的な例は、この目的に適したグラフィカルユーザインターフェイス(GUI)を含むシステムで前記プロセスを実行することである。グラフィカルユーザインターフェイスはメモリ及びプロセッサに接続されている。当該メモリはデータベースを有しており、単に、記憶に適した任意のハードウエアである。
【0025】
「データベース」という用語は、検索及び取り出しができるように編成された(まとめられた)データ・情報の任意の集合を意味する。データベースがメモリ上に構成・構築されると(データベースがメモリに記憶されると)、コンピュータによる高速検索及び高速取り出しが可能になる。データベースは、種々のデータ処理動作との関連においてデータの記憶、取り出し、修正・変更及び削除を容易にするように構成されている。データベースは1つのファイルからなる場合もあるし複数のファイルからなる(ファイルのセットからなる)場合もある。このようなファイルは複数のレコードに分解・区分けすることができ、各レコードは1つまたは複数のフィールドからなる。フィールドはデータストレージの基本単位である。ユーザは主にクエリを介してデータを取り出す。ユーザはキーワードを用いコマンドをソートすることにより、多くのレコード(記録)内のフィールドを素早く検索し、並べ替えをし、グループ化し、選択することができ、使用されているデータベース管理システムのルールに基づいてデータの特定の集合に関するレポートを取り出したりレポートを作成することができる。
【0026】
前記プロセスの場合、データベースは各マニピュレータについて、それぞれの識別子を記憶する第1のファイル(または第1のリスト)と、各マニピュレータのそれぞれのピッキングエリア(単数または複数)を記憶する第2のファイル(または第2のリスト)とを含む。これら第1のファイル及び第2のファイルは所定の関係を有する。当該所定の関係により、マニピュレータのピッキングエリア(単数または複数)からマニピュレータの識別子を取り出すことができ、その逆も可能である。
【0027】
前記プロセスはモデル化されたオブジェクトのマニピュレータに適用することができる。モデル化されたオブジェクトはデータベースに記憶されたデータによって定義される任意のオブジェクトである。拡大解釈すれば、「モデル化されたオブジェクト」という用語・表現はデータそのものを示す。システムのタイプに応じて、前記モデル化されたオブジェクトは異なる種類のデータによって定義されてもよい。システムはCADシステム、CAEシステム、CAMシステム及び/またはPLMシステムの任意の組み合わせでよい。
【0028】
このような異なるシステムにおいて、モデル化されたオブジェクトは対応するデータによって定義される。従って、人によっては、CADオブジェクトのことを説明したり、PLMオブジェクトのことを説明したり、CAEオブジェクトのことを説明したり、CAMオブジェクトのことを説明したり、CADデータのことを説明したり、PLMデータのことを説明したり、CAMデータのことを説明したり、CAEデータのことを説明する場合がある。しかしながら、これらシステムは互いを排除するものではない(互いに相容れないものではない)。なぜなら、モデル化されたオブジェクトはこれらシステムの任意の組み合わせに対応するデータによって定義しても良いからである。よって、システムはCADシステムであり且つPLMシステムであって良い。これは、下記において説明されるシステムの定義から明らかになる。
【0029】
CADシステムとは、CATIA等のモデル化されたオブジェクトのグラフィカル表示に基づいて当該モデル化されたオブジェクトをデザインするのに少なくとも適した任意のシステムを意味する。この場合、モデル化されたオブジェクトを定義するデータは、当該モデル化されたオブジェクトの表示を可能にするデータからなる。CADシステムは例えば、エッジやラインを使用してCADでモデル化されたオブジェクトの表示を提供する。この表示は、所定の場合、顔や表面を伴う。ライン、エッジまたは表面は種々の形式・手法(例えば、NURBS(non−uniform rational B−splines:非一様加重Bスプライン))で表現することができる。特に、CADファイルは仕様・明細(specification)を含み、当該仕様・明細から幾何学的形状が作成され、これにより表示を生成することができるようになる。モデル化されたオブジェクトの仕様・詳細は1つのCADファイルまたは複数のCADファイルに記憶(保存)される。CADシステムにおいてモデル化されたオブジェクトを表示するファイルの典型的なサイズは、1つのパーツ毎に1メガバイトの範囲(以下)である。また、モデル化されたオブジェクトは通常、数千個のパーツのアッセンブリ(組み合わされたもの)である。
【0030】
CADの場合、モデル化されたオブジェクトは通常、3Dのモデル化されたオブジェクトである。当該オブジェクトは例えば、1つのパーツまたは複数のパーツのアッセンブリ等の製品を表したり、複数の製品のアッセンブリを表すこともある。「3Dモデル化オブジェクト」という用語はその3D表示を可能にするデータによってモデル化された任意のオブジェクトを意味する。3D表示によって、全ての角度から当該パーツを見ることができる。例えば、3Dモデル化オブジェクトは、3D表示されると、その任意の軸を中心にして掴んだり回転することができ、または、当該表示が表示されるスクリーン内の任意の軸回りに回転することができる。これにより、特に2Dアイコンが不要になる(2Dアイコンは3Dモデル化されていない)。3D表現の表示は設計を容易にする(つまり、デザイナが統計的に自分の任務を果たすスピードを増大する)。これが産業(製造業)における製造プロセスをスピードアップする。なぜなら、製品の設計は製造プロセスの一部であるからである。
【0031】
CADシステムはヒストリ(履歴)ベースのシステムであってもよい。この場合、モデル化されたオブジェクトはさらに、幾何学的特徴(形状、配置)に関するヒストリを含むデータによって定義される。実際、モデル化されたオブジェクトは標準モデリング形状(例えば、突出(押し出し)、外巻き、回転、切断及び/または丸み付け等)及び/または標準面モデリング形状(例えば、スウィープ、ブレンド、ロフト、フィル(fill)、変形、スムージング及び/またはその他)を使用する生身の人間(例えば、デザイナ/ユーザ)によって設計される。このようなモデリング機能をサポートする多くのCADシステムはヒストリベースのシステムである。これは、設計の特徴(形状、配置)の作成履歴が通常、非周期的な(非環式の)データフローを介して保存されることを意味する。当該データフローは、入力リンク及び出力リンクを介して複数の前記幾何学特徴同士を連結するものである。ヒストリベースのモデリング(モデル化)パラダイムは1980年代の初頭から周知である。モデル化されたオブジェクトは2つの永続的なデータ表現によって説明される。それは、ヒストリとバウンダリー表現(B−rep)である。境界表現は、ヒストリ内で規定される計算の結果である。モデル化されたオブジェクトが表現される際にコンピュータのスクリーンに表示されるパーツの形状が境界表現(B−rep)である(境界表現の充填、埋め尽くし、テセレーションである)。パーツの履歴は設計意図である。基本的に、履歴は、モデル化されたオブジェクトが経験した処理に関する情報を集めている。境界表現(B−rep)はヒストリとともに保存されてもよい。そうすれば、複雑なパーツを簡単に表示することができる。設計意図に基づいてパーツの設計変更を可能にするために、ヒストリは境界表現(B−rep)とともに保存されてもよい。
【0032】
PLMシステムという用語は、物理的に製造される製品を表現するモデル化されたオブジェクトのマネージメントに適した任意のシステムを意味する。従って、PLMシステムにおいて、モデル化されたオブジェクトは物理的なオブジェクトの製造に適したデータによって規定される。これらは典型的な場合、寸法値及び/または許容誤差値である。オブジェクトの正しい製造のために、このような値を持っていることが望ましいことは明らかである。
【0033】
CAEシステムという用語は、モデル化されたオブジェクトの物理的なビヘイビア(動き、挙動)の分析に適した任意のシステムを意味する。従って、CAEシステムにおいて、モデル化されたオブジェクトはそのようなビヘイビアの分析に適したデータによって規定される。これは典型的な場合、ビヘイビア特徴のセットである。例えば、ドアに対応するモデル化されたオブジェクトは、ドアが軸回りに回転することを示すデータによって規定される。
【0034】
図2は当該システムのGUI(グラフィカルユーザインターフェイス)の例を示しており、このシステムはCADシステムである。
【0035】
GUI2100は典型的なCAD類似のインターフェースであり、標準的なメニューバー2110、2120を有すると共に底部及び側部のツールバー2140、2150を有している。このようなメニューバー及びツールバーはユーザが選択できるアイコンのセットを含み、従来技術において知られているように、各アイコンには1つ以上の処理または機能が関連付けられている。当該複数のアイコンの幾つかにはソフトウエアツールも関連付けられており、GUI2100に表示された3Dモデル化されたオブジェクト2000に対する編集及び/または作業ができるようになっている。当該ソフトウエアツールはワークベンチにグループ分けされてもよい。各ワークベンチはソフトウエアツールのサブセットからなる。特に、当該ワークベンチの1つは編集ワークベンチであり、モデル化された製品2000の幾何学的特徴(形状、位置)を編集するのに適している。実際の設計においては、デザイナは例えばオブジェクト2000のパーツを予め選択して処理(作業)を開始する(例えば、寸法や色を変える)か、または、適切なアイコンを選択することによって幾何学的制約(条件)を編集・調節する。例えば、典型的なCAD処理はスクリーン上に表示された3Dモデル化されたオブジェクトのパンチング(穴あけ)または折り畳みのモデリングである。
【0036】
GUIは例えば、表示された製品2000に関するデータ2500を表示する。
図2の例においては、データ2500(フィーチャーツリー(feature tree)として表示されている)及びその3D表現2000は、ブレーキキャリパとディスクを含むブレーキアッセンブリに関する。GUIはさらに、種々のタイプのグラフィックツール2130、2070、2080を示し、これらは例えば、オブジェクトの3D配向(向きの変更・決定)を容易にするため、編集された製品の動作のシミュレーションを開始するため、または表示された製品2000の種々の属性を提示するためのツールである。カーソル2060はハプティックデバイスにより制御されてもよく、これによりユーザはグラフィックツールとインタラクトすることができる。
【0037】
図3はクライアントコンピュータシステム(例えば、ユーザのワークステーション)を示している。
【0038】
クライアントコンピュータは、内部通信バスBUS1000に接続されたCPU(中央処理装置)1010と、前記バス1000に接続されたRAM(ランダムアクセスメモリ)1070とを含む。クライアントコンピュータはさらに、画像処理ユニット(GPU:graphical processing unit)1110を備え、当該GPU1110はバス1000に接続されたビデオRAM1100に関連づけられている(付随している)。ビデオRAM1100は当該技術分野ではフレームバッファとしても知られている。大容量記憶装置コントローラ1020は大容量メモリデバイス(例えば、ハードドライブ1030)へのアクセスを管理する。コンピュータプログラム命令及びデータを実体的に具現化する大容量メモリデバイスは全ての形式・形態の不揮発性メモリを含み、例えば、半導体メモリデバイス(例えば、EPROM、EEPROM及びフラッシュメモリデバイス)、磁気ディスク(例えば、内蔵型ハードディスク及び取り外し可能なディスク)、光磁気ディスク、及びCD−ROMディスク1040である。これらメモリデバイスのいずれも、ASIC(application−specific integrated circuits:特定用途向け集積回路)を備えてもよいし、ASICに組み込まれてもよい。ネットワークアダプタ1050はネットワーク1060へのアクセスを管理する。クライアントコンピュータはまた、ハプティックデバイス1090(例えば、カーソル制御デバイス、キーボードその他)を含んでもよい。
図2を参照して説明したように、カーソル制御デバイスはクライアントコンピュータ内で使用されて、ユーザがディスプレイ1080の任意の所望の位置にカーソルを選択的に移動できるようにする。また、カーソル制御デバイスを使用すると、ユーザは種々のコマンド(指令)及びを選択することができると共に制御信号を入力することができる。カーソル制御デバイスは、システムへの入力制御信号のための信号生成装置を多数含む。典型的な場合、カーソル制御デバイスはマウスであり、当該マウスのボタンを使用して信号を生成することができる。
【0039】
コンピュータプログラムはコンピュータの命令(コンピュータによって実行される命令)からなり、当該命令は前記システムに前記プロセスを実行させる手段を含む。本発明は例えば、デジタル電子回路において実装されたり、コンピュータハードウエア、ファームウエア、ソフトウエア若しくはこれらの組み合わせにおいて実装される。本発明の装置はプログラム可能プロセッサによって実行されるように機械読取可能な記憶装置に実体的に具現化されたコンピュータプログラムプロダクトに実装されてよい。また、本発明の方法のステップは、本発明の機能を発揮すべく複数の命令からなるプログラムを実行するプログラム可能なプロセッサによって実行される。本発明の機能の発揮は、入力データの処理及び出力の生成によってなされる。
【0040】
本発明は1つまたは複数のコンピュータプログラムに実装することができると有利であり、当該コンピュータプログラムはプログラム可能なシステム上で実行可能であり、当該システムはデータストレージシステムへデータ及び命令を送受け入れるように接続された少なくとも1つのプログラム可能なプロセッサと、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを含む。アプリケーションプログラムは、ハイレベル手続言語若しくはオブジェクト指向プログラミング言語、または、望まれるのであればアッセンブリ言語若しくはマシン語で実装される。いずれの場合も、当該言語はコンパイルされた言語であっても良いし、機械語に翻訳された言語であってもよい。
【0041】
前記方法の一例が
図1を参照して説明される。ステップS100において、マニピュレータのセットが提供され、各マニピュレータは少なくとも1つのピッキングエリアを含み、前記マニピュレータのセットの中の異なるマニピュレータの少なくとも2つのピッキングエリアはオーバーラップする。マニピュレータは公知のMVC(Model−View−Controller)ソフトウエアアーキテクチャに依存するものでもよい。モデル(Model)はアプリケーションドメインのビヘイビア及びデータを管理し、情報を要求するリクエストに対して応答し、状態を変更する命令(通常、この命令はコントローラ(Controller)から来る)に対して応答する。ビュー(View)はモデルをインタラクションに適した形式・形態(通常、ユーザインターフェースエレメント)にする。コントローラ(Controller)はユーザ入力を受け入れ、モデルオブジェクトを使用することによって応答を開始する。
【0042】
マニピュレータには、
図2に示されたようなグラフィカルユーザインターフェース(GUI)に表示された複数のオブジェクトが設けられている。各オブジェクトは少なくとも1つのマニピュレータを含む。さらに、異なるオブジェクトの少なくとも2つのピッキングエリアがオーバーラップする。つまり、ピッキングエリア同士が交差する。ピッキングエリアはイベントを受け入れ、当該イベントをマニピュレータに送ることができる表面である。ピッキングエリアによって画定されたピッキングゾーンの表面は二次元(2D)または三次元(3D)である。例えば、
図7に示されているように、2つのマニピュレータ(双方向矢印及び四角形)は2D空間内にあり、それぞれの2Dピッキングエリアが重なっている(オーバーラップしている)。また、これら2つのピッキングエリアによって画定される2つの表面(2つの円形)に交差部が存在する。このような状況は3D空間においても起こり得る。3D空間では、マニピュレータのピッキングエリアが交差し、当該ピッキングエリアは2D表面(例えば、円形)か3D表面(例えば、球)である。いずれの場合も、ユーザの視点から第1のピッキングエリアへ投じられた光線が当該第1のピッキングエリア及び少なくとも別のピッキングエリアに交差すると、2つのピッキングエリアはオーバーラップする。
【0043】
マニピュレータのセットを提供するステップは、当該セットのマニピュレータをマニピュレータマネージャに登録(サブスクリプション、レジストレーション)するステップを含んでもよい(S102)。MVCアーキテクチャでは、登録はコントローラによってマニピュレータマネージャに対して行われる。マニピュレータマネージャはマニピュレータを管理する。つまり、マニピュレータマネージャは各マニピュレータを個別に管理し、且つ、マニピュレータ同士の間の関係も管理する。マニピュレータマネージャはクライアント−サーバモデルにおいてサーバとして機能し、マニピュレータはクライアントとして機能する。マニピュレータマネージャが、プログラム可能なシステムで実行可能な1つ以上のコンピュータプログラムに実装されると有利である。
【0044】
登録はマニピュレータの識別子を第1のリストに保存・記憶するという第1のサブステップ(S104)を含む。第1のリストは例えば、メモリまたはデータベースのストレージ(例えば、記憶手段)に保存・記憶される。各マニピュレータの識別子は、好ましくは、マニピュレータが作成されるときに付与される個別の識別子である。あるいは、前記個別の識別子は、登録プロセスの間にマニピュレータマネージャによって付与されてもよい。
【0045】
登録ステップはまた、マニピュレータの少なくとも1つのピッキングエリアを第2のリストに保存・記憶する第2のサブステップ(S106)を含む。ピッキングエリアを第2のリストに記憶するということは、ピッキングエリアを特徴付ける情報(例えば、ピッキングエリアの識別子)が記憶されることを意味する。同様に、第2のリストはメモリ等のストレージ(例えば、記憶手段)またはデータベースに保存・記憶される。好ましくは、マニピュレータのピッキングエリア(単数または複数)はマニピュレータによってマニピュレータマネージャに申告される。
【0046】
第1のリスト及び第2のリストが作られると、マニピュレータの識別子をマニピュレータのピッキングエリア(単数または複数)から取り出すことができ、その逆も可能になる。換言すると、第2のリストにおいて、マニピュレータのピッキングエリア(単数または複数)を第1のリストに記憶されているマニピュレータの識別子から取り出すことができる。また、第1のリストにおいて、マニピュレータの識別子を第2のリストに記憶されているピッキングエリアから取り出すことができる。その後、取り出された識別子のマニピュレータがそれぞれ特定される。第1のリストと第2のリストの間の関係は例えば、当該2つのリストの間のポインタに依存している。従って、第1のリストと第2のリストの間には対応関係がある。尚、第1のリストと第2のリストはテーブルの一部であってもよい。
【0047】
次に
図8及び
図9を参照すると、2つのマニピュレータの登録が図示されている。
図8において、ピッキングエリア200を有する第1のマニピュレータが作成されており、登録要求をマニピュレータマネージャ220に送る。マニピュレータマネージャはピッキングエリア200を有するマニピュレータの識別子とマニピュレータのピッキングエリア200をデータベース250に記憶する。尚、2つのデータベース(または3つ以上のデータベース)を使用して前記情報を記憶してもよい。
図9はピッキングエリア210を有する第2のマニピュレータのための同じステップを示している。
【0048】
図1に戻ると、ポインティングデバイス(例えば、カーソル)が、2つのオーバーラップするピッキングエリアに移動される。カーソルは
図2に示されているカーソル2060のようなものであってよい。カーソル2060はハプティックデバイスによって制御され、よって、ユーザはグラフィックツールとインタラクトすることができる。ポインティングデバイスを2つのオーバーラップするピッキングエリアに移動することは、カーソルと2つのオーバーラップするピッキングエリアとが光線により横切られる(交差する)ことを意味する。
【0049】
その後、光線がカーソルから投じられる(S120)。光線投下は当該技術分野で公知の手法により行われる。典型的な場合、光線はカーソル上の1点(例えば、カーソルの矢印の端部)から投じられる。実際には、光線は、オブジェクト及びマニピュレータが表示されるディスプレイデバイスに垂直である。あるいは、光線投下は、当該技術分野で公知のように、ユーザの視点に基づいて実行されてもよい。光線投下は2D空間または3D空間において2つのマニピュレータに同じように適用されてもよい。
【0050】
光線投下の間、光線が少なくとも2つのオーバーラップするピッキングエリアに交差するか(横切るか)どうか判定される(S130)。
【0051】
好ましくは、光線投下ステップと交差判定ステップは連続的に行われる。システムは、光線が数個のピッキングエリアに交差するかどうかを、その都度知ることができれば有利である。つまり、システムは、ピッキングエリアがカーソルの位置の下でオーバーラップするかどうかを毎回知ることができれば有利である。
【0052】
次に、ステップS140において、第1のリストが検索されて、イベントを受け入れる前記少なくとも2つのオーバーラップするピッキングエリアに対応する識別子を取り出そうとする。前記少なくとも2つのオーバーラップするピッキングエリアは第2のリストに記憶されている。換言すると、第1のリストに記憶されている識別子は、ベースになっているイベントを受け入れるオーバーラップピッキングエリアに従って検索され、マニピュレータの識別子が取り出される。次に、取り出された識別子のマニピュレータがそれぞれ、特定される。既に説明したように、第1のリストと第2のリストの間の関係は例えば、当該技術分野で公知のように、当該2つのリストの間のポインタに依存する。
【0053】
次に、ステップS150において、特定されたマニピュレータによってイベントが受け入れられる。イベントはユーザによってマニピュレータに送られる信号である。このイベントに基づいて、マニピュレータは所定の動作を行うことができる。
【0054】
上記のようにはせずに、マニピュレータマネージャによってイベントを受け入れることもできる。この構成では、マニピュレータマネージャがイベントプロシキ(event proxy)として機能する。つまり、受け入れたイベントをマニピュレータに送るべきかどうかを、マニピュレータマネージャが決定する。換言すると、マニピュレータマネージャはポインティングデバイスとだけ通信する。
【0055】
登録ステップS102の間、マニピュレータはさらに、マニピュレータが登録したいと望むイベントのリストをマニピュレータマネージャに送ることができる。第1のリスト及び第2のリストについては、イベントの当該リストはストレージ(例えば、メモリまたはデータベース)に設けられた第3のリストに記憶され得る。よって、マニピュレータマネージャがイベントを受け入れる度に、マニピュレータマネージャは第3のリストにおいて、マニピュレータが当該イベントのために登録されているかをチェックし、当該チェックの結果に基づいて当該イベントをマニピュレータに送る(または送らない)。
【0056】
前記イベントは下記の複数のイベントの1つであってよい(これらに限定されるわけではないが)。即ち、イベントは、移動(カーソルがGUI内で動く)、マニピュレーションの開始(ユーザがハプティックデバイスのボタンをクリックして、ドラッグ及びドロップ動作を開始するための信号を送る)、マニピュレート(ドラッグ及びドロップ動作)、マニピュレートの終了(ドラッグ及びドロップ動作の終了)、起動(ユーザがハプティックデバイスのボタンをクリックして手を離す)、編集・エディット(ユーザがボタンをダブルクリックする)、コンテクスト処理をする(ユーザが第2のボタンをクリックする)等の1つであってよい。
【0057】
次に、フィルタのセットが起動され、コンピュータ実行プロセスされるべきマニピュレータを見つける(S170)。フィルタを起動させると(またはフィルタを作動させると)、データのテストが行われる(例えば、マニピュレータのテストが行われる)。
【0058】
好ましくは、フィルタのセットを起動する前に、イベントを受け入れる少なくとも1つのピッキングエリアを有するマニピュレータが複数選択される(S160)。マニピュレータマネージャがイベントプロシキとして機能する場合、イベントが関連している少なくとも1つのピッキングエリアを有するマニピュレータは第3のリストに記憶されているイベントに従って選択される。
【0059】
フィルタのセットが作動させられるが(S170)、好ましくは前記選択されたマニピュレータに適用される(S160)。第1のフィルタは、受け入れたイベントに従ってマニピュレータのサブセットを生成する。つまり、イベントに関連がありそうなマニピュレータが特定される。上記したようにマニピュレータマネージャがイベントを受け入れて当該イベントを管理する場合、マニピュレータマネージャは、受け入れたイベントに関連するマニピュレータのセットを直ちに判別することができ、且つ、この際に新たな計算を必要としないならば有利である。よって、フィルタは起動される必要がない。このようにはせずに、マニピュレータマネージャが各登録されたマニピュレータをテストして、当該イベントが当該マニピュレータに関連しているかを調べることにより、現在のイベントに関連しているマニピュレータのサブセットを形成するようにしてもよい。
【0060】
第2のフィルタは各マニピュレータに付随している優先度(優先順位)を利用する。つまり、マニピュレータが作成されるとき、マニピュレータに優先度を付与することができる。優先度はマニピュレータ同士の間の重要度の順位を決める。従って、この重要度はマニピュレータの特性である。実際の場合、マニピュレータの優先度は4つのレベルの優先度から選択され、優先度の各レベルは優先値によって表される。何らかの優先度がマニピュレータに付けられている場合、マニピュレータにはデフォルトとして最低(最小)の優先値が付される。その結果、マニピュレータのサブセットは各マニピュレータに付けられた優先度に従って作られる。
【0061】
第3のフィルタはマニピュレータの特徴点とポインティングデバイスの間の距離を計算する。マニピュレータの特徴点はマニピュレータ上のマーカとしての役割を果たす。実際には、マニピュレータの特徴点は、例えば、当該マニピュレータの開発者によって任意に選択されたマニピュレータの点である。計算された距離の中の最少距離が判別され、当該最少距離を有するマニピュレータとポインティングデバイスが選択される。ポインティングデバイス(例えば、カーソル)と特徴点の間の距離は投影面(例えば、オブジェクトとそのマニピュレータとを表示するコンピュータスクリーン)上に示すことができる。マニピュレータが数個の特徴点を含む場合、ポインティングデバイスと特徴点の間の平均距離を表す距離が計算される。
【0062】
数個のマニピュレータが同じ最少距離を有する場合、第4のフィルタが適用されてもよい。第4のフィルタはユーザ位置に最も近いマニピュレータを特定する。よって、このフィルタは深さ基準(条件)を適用する。つまり、ユーザ視点に最も近い距離を有するマニピュレータが選択される。
【0063】
実際の場合、フィルタは連続的に起動される。その際、各フィルタがマニピュレータのそれぞれのサブセットを生成し、後続の各フィルタは前のフィルタによって生成された前記サブセットについてフィルタリング処理を行う。このようにして、処理はマニピュレータのセットに対してのみ実行される(ステップ100で最初に提供されたマニピュレータのセット全体に対して実行されるのではない)。計算に関与するマニピュレータの数が各フィルタについて減少するので、フィルタを適用するのに必要なコンピューティングリソースが抑制されると有利である。好ましくは、フィルタは上記された順番と同じ順番で(第1のフィルタから第4のフィルタへと)起動される。
【0064】
マニピュレータマネージャはフィルタリング処理を行うことができ、当該連続的なフィルタリング処理から得られるマニピュレータの連続的なサブセットを維持することができる。
【0065】
次にステップS180において、残りのマニピュレータがユーザによって選択される。従って、マニピュレータがコンピュータ実行プロセスされる。つまり、マニピュレータのコンピュータ実行プロセスはマニピュレータマニピュレータによって行われるのが好ましい。よって、当該選択されたマニピュレータの選択が解除されるまで、または、別のマニピュレータが選択されるまで、全てのイベントが当該選択されたマニピュレータに送られる。実際には、受け入れたイベントのルーティング(routing:経路選択、経路制御)がマニピュレータマネージャによって行われる。一旦マニピュレータが選択されると、ユーザはイベントに基づいて当該マニピュレータに付随する機能を起動することができる。この起動は、たとえ残りのマニピュレータのピッキングゾーンが他のマニピュレータの1つ以上のピッキングゾーンにオーバーラップしても行われる。
【0066】
図10は本発明の方法のステップS110−S180を示している。カーソルが第1の位置230aから第2の位置230bに移動される。つまり、カーソルはピッキングエリア200及び210の双方に位置することになる。第1の位置から第2の位置へ移動する際、光線が連続に投じられ、少なくとも2つのピッキングエリアが当該光線(図示せず)によって横切られるか(交差するか)を判定する。カーソルが第2の位置230bに到達すると、当該カーソルがオーバーラップするピッキングエリア230aと230bの上にあると判定される。つまり、光線が当該2つのピッキングエリアを横切っている(交差している)と判定される。その後、データベース250に記憶されている第1のリスト及び第2のリストを使用して、対応するマニピュレータが特定される。つまり、マニピュレータの識別子が取り出され、マニピュレータが特定される。データベース250はマニピュレータの識別子とマニピュレータとの対応関係を提供(提示)する。
【0067】
ユーザの動作に応じて、イベント240はマニピュレータに送られ、イベントのプロキシとして機能するマニピュレータマネージャ220によって受け入れられる。例えば、イベントは、移動を停止するカーソル230bである。イベントがマニピュレータマネージャ220によって受け入れられると、データベース250に対してクエリ検索が行われ、新しい基準(条件)に基づくマニピュレータ(現在のイベントが関与しているマニピュレータ)を選択するために、候補マニピュレータのリストの中からマニピュレータのサブセットを取り出す。これが第1のフィルタの起動である。次に第2のフィルタが、第1のフィルタリング処理によって得られたマニピュレータのサブセットに対して起動される。マニピュレータマネージャは、前記サブセットの各マニピュレータの優先度を調べ、最も重要な優先度(例えば、最も高い優先値)を有するマニピュレータからなる新しいサブセットを演算する(決定する)。その後、第3のフィルタが残りの候補マニピュレータに対して起動される。つまり、マニピュレータマネージャは残りの候補マニピュレータから現在のカーソル230bまでの最少距離を求める。
図11に示されているように、マニピュレータ210だけが残り、このマニピュレータ210がコンピュータ実行プロセスされる。マニピュレータのコンピュータ実行プロセスはユーザに示されてもよく、その際、例えば、マニピュレータの新たな提示(表示)を伴う。尚、もし数個のマニピュレータが依然として候補マニピュレータである場合には、別のフィルタが適用されてもよい。例えば、残りのマニピュレータのサブセット(または候補マニピュレータ)の中から、ユーザ視点から最も近い距離を有するマニピュレータが選択される。つまり、マニピュレータに対するユーザの視点に基づいて当該ユーザに最も近いマニピュレータが選択される。
【0068】
本発明の好適な実施形態が説明された。尚、種々の変更・変形は、本発明の精神及び範囲から離れることなく可能である。従って、その他の実施・実装も特許請求の範囲の技術的範囲内のものである。本発明は任意の種類のカーソルを用いて実施することができる。例えば、タッチ感応画面(タッチスクリーン)において、ユーザはスクリーン上で動作(処理)を直接行うことができる。例えば、ユーザはスクリーンをプレスする(押す)ことによってイベントを送ることができる。この動作はステップS110−S150の実行に対応する。