JP2002352272A - 3次元オブジェクトの生成方法および生成された3次元オブジェクトの選択制御方法並びに3次元オブジェクトのデータ構造 - Google Patents

3次元オブジェクトの生成方法および生成された3次元オブジェクトの選択制御方法並びに3次元オブジェクトのデータ構造

Info

Publication number
JP2002352272A
JP2002352272A JP2001161201A JP2001161201A JP2002352272A JP 2002352272 A JP2002352272 A JP 2002352272A JP 2001161201 A JP2001161201 A JP 2001161201A JP 2001161201 A JP2001161201 A JP 2001161201A JP 2002352272 A JP2002352272 A JP 2002352272A
Authority
JP
Japan
Prior art keywords
dimensional object
selection
dimensional
function
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001161201A
Other languages
English (en)
Other versions
JP2002352272A5 (ja
Inventor
Koichi Sakamoto
浩一 坂本
Yasushi Wakabayashi
泰 若林
Katsutoshi Horii
克敏 堀井
Yusuke Totsuka
裕介 戸塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP2001161201A priority Critical patent/JP2002352272A/ja
Publication of JP2002352272A publication Critical patent/JP2002352272A/ja
Publication of JP2002352272A5 publication Critical patent/JP2002352272A5/ja
Pending legal-status Critical Current

Links

Landscapes

  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

(57)【要約】 【課題】 3次元オブジェクトの存在環境などに応じて
自在に選択対象に含めるといった多様なユーザインタフ
ェースを実現することができる3次元オブジェクトの生
成方法および該方法によって生成された3次元オブジェ
クトの選択制御方法並びに3次元オブジェクトのデータ
構造を提供すること。 【解決手段】 任意の形状を有する複数の3次元オブジ
ェクトを生成した後、表示装置に表示された状態におけ
る選択操作イベントに対し各3次元オブジェクトを操作
対象に含めるかを決める被選択基準を3次元オブジェク
ト毎に個別にまたはまとめて設定し保持させるステップ
を備えることを特徴とする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータプロ
グラムによって表示装置画面上に表示させる3次元オブ
ジェクトの生成方法および生成された3次元オブジェク
トに対するマウスクリック操作などの選択操作イベント
に対する選択制御方法に関するものである。
【0002】
【従来の技術】3次元オブジェクトを操作するコンピュ
ータグラフックスのアプリケーションにおいては、通
常、マウス操作によって操作対象のオブジェクトを指定
する。従来、このようなアプリケーションにおいては、
操作対象のオブジェクトをユーザが指定するためのイン
タフェースは、アプリケーションに固有の指定手段で固
定化されていた。例えば、3次元オブジェクトaの内部
に3次元オブジェクトbが包含されている場合、aが不
透明であれば内部に隠蔽されたbは選択できない、すな
わち「不透明オブジェクトの内部オブジェクトは指定不
可」という指定手段で固定化されていた。
【0003】
【発明が解決しようとする課題】しかしながら、従来技
術にあっては以下のような問題がある。すなわち、建物
の内部を3次元でシミュレーションするアプリケーショ
ンを例に挙げて説明すると、この建物の内部に3次元オ
ブジェクトaが存在する場合、従来技術にあっては、3
次元オブジェクトaが不透明であるかぎり、ユーザはそ
の内部に隠蔽された3次元オブジェクトbを指定するこ
とはできない。そこで、特殊な建物x(X線透視建物)を
追加し、その内部では3次元オブジェクトaが不透明で
あっても内部の3次元オブジェクトbを指定できる、す
なわち「不透明オブジェクトの内部オブジェクトも指定
可」というようにしたいとする。この場合でも、3次元
オブジェクトaが通常の建物に存在する場合には、やは
り当該3次元オブジェクトaが不透明である限り3次元
オブジェクトbは選択できないようにする。すなわち、
アプリケーションが当初想定していなかったような新た
なオブジェクト指定形式を持つ建物を追加し、同じアプ
リケーション内で種々の指定形式をもつ建物が混在でき
るようにしたい。
【0004】しかしながら、従来技術にあっては、どの
オブジェクトが選択されるかはアプリケーションで予め
決められている論理に従って一意に決定されるため、そ
の論理で記述されていないオブジェクトについては常に
選択対象外となったり、規定外のオブジェクトとして常
に同一の選択方法が適用されるなどといった、3次元オ
ブジェクトの存在環境などに応じて自在に選択対象に含
めるといった多様なユーザインタフェースを提供できな
いという問題があった。
【0005】本発明は、このような問題を解決するため
になされたものであり、その目的は、3次元オブジェク
トの存在環境などに応じて自在に選択対象に含めるとい
った多様なユーザインタフェースを実現することができ
る3次元オブジェクトの生成方法および該方法によって
生成された3次元オブジェクトの選択制御方法並びに3
次元オブジェクトのデータ構造を提供することにある。
【0006】
【課題を解決するための手段】上記目的を達成するため
に、本発明の3次元オブジェクトの生成方法は、任意の
形状を有する複数の3次元オブジェクトを生成した後、
表示装置に表示された状態における選択操作イベントに
対し各3次元オブジェクトを操作対象に含めるかを決め
る被選択基準を3次元オブジェクト毎に個別にまたはま
とめて設定し保持させるステップを備えることを特徴と
する。そして、前記被選択基準として、各3次元オブジ
ェクトに関連する他の3次元オブジェクトを操作対象に
するかを決める被選択基準を有することを特徴とする。
また、前記被選択基準として、自オブジェクトまたは他
オブジェクトが優先して操作対象として選択されるよう
に決定する被選択基準を有することを特徴とする。ま
た、前記被選択基準として、選択操作イベントに対し反
応するか否かを決める反応可否基準を有することを特徴
とする。また、前記被選択基準を関数として設定し保持
させることを特徴とする。
【0007】本発明に係る3次元オブジェクトの選択制
御方法は、選択操作イベントに対する被選択基準を保持
した複数の3次元オブジェクトを表示装置に表示させ、
その表示された3次元オブジェクトへの選択操作イベン
トに対しいずれの3次元オブジェクトを選択するかを制
御する3次元オブジェクトの選択制御方法であって、表
示画面上における選択操作イベントを、予め設定された
規則によって当該選択操作イベントの位置に応じて決定
された選択候補オブジェクト群内に存在する全ての3次
元オブジェクトに伝達するステップと、伝達した3次元
オブジェクトからの応答を受け、その応答内容のうち予
め設定した選択条件を満たす1つまたは複数の3次元オ
ブジェクトを操作対象として選択するステップとを備え
ることを特徴とする。そして、前記選択条件として、表
示色が不透明で最も視点側に位置する3次元オブジェク
トを選択する条件が設定されていることを特徴とする。
また、前記選択条件として、表示色に拘わらず最も視点
側に位置する3次元オブジェクトを選択する条件が設定
されていることを特徴とする。また、前記選択条件とし
て、選択操作イベントに対する反応可否基準として反応
可が設定されている3次元オブジェクトのうち最も視点
側に位置する3次元オブジェクトを選択する条件が設定
されていることを特徴とする。
【0008】本発明に係る3次元オブジェクトのデータ
構造は、任意の形状を規定する第1のデータ部と、表示
装置に表示された状態における選択操作イベントに対し
各3次元オブジェクトを操作対象に含めるかを決める被
選択基準の第2のデータ部を保持することを特徴とす
る。そして、前記第2のデータ部を関数として保持する
ことを特徴とする。
【0009】なお、本発明の3次元オブジェクトの生成
方法は、換言すると、任意の形状を有する複数の3次元
オブジェクトを生成した後、表示装置に表示された状態
における選択操作イベントに対し各3次元オブジェクト
を操作対象に含めるかを決める被選択権決定処理を3次
元オブジェクト毎に個別にまたはまとめて設定し保持さ
せるステップを備えることを特徴とするものと言える。
【0010】本発明によれば、例えば、通常の建物オブ
ジェクトには、「不透明オブジェクトの内部オブジェク
トは指定不可」という被選択基準を対応付けておき、新
たに追加する特殊な建物オブジェクトには、「不透明オ
ブジェクトの内部オブジェクトも指定可」という新たな
被選択基準を対応付ける。操作対象を選択するアプリケ
ーションでは、各建物の内部に存在するオブジェクトを
指定する際、これらの建物に対応付けられた被選択基準
に従う選択処理を実行することによって、建物に応じて
異なるユーザインタフェースを提供することができる。
【0011】さらに本発明によれば、被選択基準を持つ
3次元オブジェクトの入れ子構造を実現することもでき
る。例えば、ある建物オブジェクトの内部に部屋オブジ
ェクトが存在し、それぞれ「不透明オブジェクトの内部
オブジェクトは指定不可」、「不透明オブジェクトの内
部オブジェクトも指定可」という被選択基準がそれぞれ
対応しているとする。このとき、建物の内部で部屋の外
に存在するオブジェクトについては「不透明オブジェク
トの内部オブジェクトは指定不可」、部屋の内部に存在
するオブジェクトについては「不透明オブジェクトの内
部オブジェクトも指定可」が適用される。従って、建物
の内部と外部とで各3次元オブジェクトを選択可能また
は選択できないようにするといった異なるユーザインタ
フェースを実現することができる。すなわち、3次元オ
ブジェクト側が主導権を持って多様なユーザインタフェ
ースを提供することができ、アプリケーション側では被
選択基準で選択候補に挙がった3次元オブジェクトのう
ち例えば最も視点側に近いオブジェクトを選択するとい
った簡単なロジックを持たせるだけで済む。
【0012】
【発明の実施の形態】以下、本発明を実施する場合の一
形態を図面を参照して具体的に説明する。まず、本発明
に係る3次元オブジェクトの生成方法について図1〜図
5を参照して説明する。図1は、本発明に係る3次元オ
ブジェクトの生成手順を示す概略フロー図であり、ま
ず、3次元オブジェクト10を生成する(ステップS1
1)。この3次元オブジェクトの生成処理は、例えば
「対話型3Dソフトウェア構築システム−IntelligentB
ox−」(岡田義弘、田中譲 著:コンピュータソフトウ
ェア別冊;Vol.12,No.4(1955),PP.84-94)で提案された
技術を用いて生成する。生成された3次元オブジェクト
10は、共通の属性項目11として、色、透明度、座標
変換行列、形状の各データを備えている。このうち、色
データはR,G,B値で構成され、透明度データは0
(透明)〜255(不透明)の段階値で構成されている。
また、座標変換行列は、ローカル座標系で表現された形
状データをワールド座標系の座標データに変換する行列
式のデータで構成されている。また、形状データは、3
次元オブジェクトの各頂点の座標データ(ローカル座標
系またはワールド座標系)で構成されている。なお、円
筒などの曲面部分を持つ3次元オブジェクトについて
は、多角形近似によって生成する場合、その各頂点座標
データで構成される。
【0013】ローカル座標系とは、図2の説明図に示す
ように、3次元オブジェクト10の形状を単独で表現す
る座標系であり、ワールド座標系とは3次元オブジェク
トを配置する3次元空間を定義する座標系である。ワー
ルド座標系で定義された3次元空間に配置された3次元
オブジェクト10は投影によって2次元図形に変換され
て表示装置画面に表示される。ワールド座標系に配置さ
れた3次元オブジェクト10を投影する投影面を定義す
るのが投影面座標系であり、投影面に投影される3次元
オブジェクト(2次元投影像)は注視点を原点とし、Z
軸を支軸方向とする視点座標系での支軸方向に応じて変
化する。
【0014】3次元オブジェクトを表示装置画面に表示
する際には、視点から見える視野を設定するが、視点か
ら見て投影面の手前側で見える範囲を前平面の位置で設
定し、奥行き方向に見える範囲を後平面の位置で設定す
る。前平面と後平面の間の四画錘形状の3次元空間が3
次元オブジェクトのビューボリュームである。本発明に
係る実施形態では、図3に示すように、視点位置を基準
として、投影面と後平面の位置D1,D2を設定し、ロ
ーカル座標系で定義された3次元オブジェクトをワール
ド座標系上の投影面座標系の2次元投影像に透視変換を
行って投影面に表示する。
【0015】次に、3次元オブジェクト10を生成した
ならば(必要に応じて3次元空間に配置したならば)、
マウス操作による選択操作イベントに対する被選択基準
を設定する。この被選択基準は、後述するように、各オ
ブジェクトが自分自身で被選択権を決める関数を用いた
プログラムとして設定される。被選択基準13とは、図
4(a)の3次元オブジェクト10をY軸方向から見た
場合の平面図に示すように、マウスカーソル位置P1を
投影面(表示画面)DPの任意の位置に位置付けた場合
に、視点Eとマウスカーソル位置P1とに基づいて、ど
の3次元オブジェクトを選択候補にするかどうかを決め
るための基準となる情報である。通常においては、視点
Eとマウスカーソル位置P1(ポインティング位置)と
を結ぶ直線L1が通過(または透過)する3次元オブジ
ェクトが選択候補となり、その選択候補の中から、最終
的に操作対象となる3次元オブジェクトが決定される。
また、図4(b)の平面図に示すように、視点Eとマウ
スカーソル位置P1とを結ぶ直線L1が透過することは
ないが、3次元オブジェクトの外周から所定距離Δdの
範囲で透過する場合には選択候補として決めるための基
準となる情報である。図4(b)においては、3次元オ
ブジェクト10Bに、その外周から所定距離Δdの範囲
で直線L1が透過する場合でも選択対象になるような基
準が設定されていることを示している。
【0016】この場合、Δdは図4(c)に示すよう
に、3次元オブジェクト10Bの内側に向かって設定す
る(−Δd)こともある。この場合には、−Δdの範囲
内で直線L1が透過しても選択候補としないように利用
することができる。なお、直線L1が通過する3次元空
間の位置は、マウスカーソルの2次元座標位置(投影面
での2次元座標位置)を検出し、この検出座標値をワー
ルド座標値に変換し、視点E(ワールド座標値)とを結
ぶ直線L1を求めることによって判明するので、例え
ば、該直線L1が透過する3次元オブジェクトであるか
どうかは当該3次元オブジェクトが該直線L1の3次元
座標値を含む座標値を持っているかどうかによって判定
することができる。
【0017】本実施形態においては、直線L1が透過す
る3次元オブジェクトであった場合に、自オブジェクト
を選択対象にすることを許す(または許さない)ことを
示す基準A、優先選択オブジェクトである(または、な
い)ことを示す基準B、反応可能なオブジェクトである
(または、ない)ことを示す基準Cがある。これらの基
準A,B,Cは、本実施形態では、C++言語で定義し
たselect関数、preselect関数、respondent関数で設定
される。
【0018】被選択基準13の設定が終了したならば、
当該3次元オブジェクトを記憶装置に保存する(ステッ
プS13)。保存された3次元オブジェクトのデータ部
14は、共通の属性項目のデータと被選択基準のデー
タ、その他のデータとで構成される。なお、3次元オブ
ジェクト10に設定されるselect関数、preselect関
数、respondent関数の他のデータとは、図5に示すよう
に、自オブジェクトの色の問い合わせがあった場合に、
自オブジェクトの色データをデータ部14から取得して
返却するgetColor関数などが必要に応じて付加される。
これらの関数としてどのようなものを保持しているかに
よって、3次元オブジェクトの性質が決定される。
【0019】次に、以上のようにして各3次元オブジェ
クトに保持された被選択基準を用いて、マウス操作によ
る選択操作イベントに対し、複数の選択候補オブジェク
トの中からどの3次元オブジェクトを選択するかの選択
制御方法の概要について説明する。マウスカーソル位置
に応じて3次元オブジェクトの1つを操作対象として決
定する際、まず、画面上の全ての3次元オブジェクトに
対し、respondent関数を実行させることによって、当該
マウスカーソル位置に対して反応しうるオブジェクト群
(選択候補オブジェクト群)を求める。次に、求まった選
択候補オブジェクト群を視点Eに近い順に並べ替える。
次に、視点に最も近いオブジェクトに対しpreselect関
数を実行させることによって、優先選択オブジェクトを
抽出する。優先選択オブジェクトとは、選択候補オブジ
ェクト群内において、そのオブジェクトよりも奥行き方
向に位置する3次元オブジェクトが選ばれることはない
ように機能するオブジェクトである。このような優先選
択オブジェクトが複数存在する場合には、視点Eから最
も手前のものが採用される。
【0020】次に、選択候補オブジェクト群の最も手前
の3次元オブジェクトに対し、select関数(オブジェク
ト決定関数)を実行させ、最終的に操作対象となる3次
元オブジェクトの1つを決定する。ただし、このオブジ
ェクトが優先選択オブジェクトよりも奥行き方向に存在
する場合には、優先選択オブジェクトの方を操作対象の
オブジェクトとして決定する。これら3つの関数は、シ
ステム全体のデフォルトのものが規定されているが、各
3次元オブジェクトで独自に定義することが可能であ
る。
【0021】以下、図面を用いて説明する。図6は、本
発明に係る3次元オブジェクトの選択制御方法を実現す
るシステムの一実施形態を示す全体構成図である。図6
において、600は本発明に係る3次元オブジェクトの
選択制御方法を実現する処理を行う計算機である。この
計算機600は、キーボード601とディスプレイ60
2、CPU603、マウス604、プログラムメモリ6
05、データメモリ606とから構成される。計算機6
00のプログラムメモリ605には、計算機全体を制御
するオペレーティングシステム605aと、ユーザによ
るマウス操作などのイベントを各種3次元オブジェクト
に配送し、その応答によって操作対象となる3次元オブ
ジェクトを予め定めた選択条件に従って選択するイベン
トディスパッチャ605b、各種3次元オブジェクト
(1)606a〜(n)606cに対応する3次元オブ
ジェクト(1)プログラム605c、3次元オブジェク
ト(2)プログラム605d、3次元オブジェクト
(n)プログラム605eが格納されている。データメ
モリ606には、3次元オブジェクト(1)606a、
3次元オブジェクト(2)606b、3次元オブジェク
ト(n)606cといった各種3次元オブジェクト群が
格納されている。これらの3次元オブジェクト群は、図
1で説明した共通の属性項目11を保持すると共に、マ
ウス操作による選択操作イベントに対する被選択基準と
なるselect関数等の関数、およびgetColor等のその他の
関数(図5参照)を各オブジェクト毎に保持している。3
次元オブジェクトi(i=1〜n)プログラムは、その
プログラムに対応する3次元オブジェクトのそれぞれに
定義された関数を実行するプログラムである。なお、視
線方向を変えた場合における3次元オブジェクト(1)
〜(3)の挙動や見え方を制御するプログラムは、3次
元オブジェクトi(i=1〜n)プログラムとは別のプ
ログラムとして実装されるが、本発明には直接関係しな
いので図示を省略している。
【0022】図7は、本発明で用いられるアプリケーシ
ョン例における3次元オブジェクトとイベントディスパ
ッチャの概念図である。図7において、701はシステ
ムのグローバルなメモリ領域を示し、702はデフォル
トのselect関数アドレス領域であり、個々の3次元オブ
ジェクトでselect関数が定義されていない場合に実行さ
れるselect関数のアドレス定義領域である。703は、
デフォルトのpreselect関数アドレス領域であり、個々
のオブジェクトでpreselect関数が定義されていない場
合に実行されるデフォルトのpreselect関数のアドレス
定義領域である。704は、デフォルトのrespondent関
数アドレス領域であり、個々のオブジェクトでresponde
nt関数が定義されていない場合に実行されるデフォルト
のrespondent関数のアドレスの定義領域である。705
は、優先選択オブジェクトを保持しておく領域である。
706は、「オブジェクト選択履歴テーブル」であり、
個々のオブジェクトに関して、最近選択された時刻、こ
れまでに選択された回数等を保持している。最近選択さ
れたものを選択するなど、選択履歴情報を選択条件とす
る場合に参照される。707は、respondent関数を実行
させることによって得た選択候補オブジェクト群を保持
する領域である。
【0023】708a〜708cは、3次元オブジェク
トであり、図1で説明した共通の属性項目11を保持す
ると共に、マウス操作イベントに対する操作対象を決定
するためのselect関数、preselect関数、respondent関
数およびその他の関数を個別に保持している。これらの
select関数、preselect関数、respondent関数は、デフ
ォルトのそれらと異なった定義を各オブジェクト毎に記
述可能である。この他に、図2で説明したgetColor等の
関数が保持されている。イベントディスパッチャ605
bは、respondent関数を各3次元オブジェクトに実行さ
せることによって、選択操作イベントに反応し得る選択
候補オブジェクト群取得処理6051、優先選択オブジ
ェクトを取得する優先選択オブジェクト取得処理605
2、最終的に選択対象として採用するオブジェクトを決
定する選択対象決定処理6053といった処理を備えて
いる。
【0024】図8は、オペレーティングシステム605
aから起動されるイベントディスパッチャ605bの処
理を示すフローチャートである。ここでは各デフォルト
関数702〜704として視点Eとマウスカーソル位置P1と
を結ぶ直線L1が透過する選択候補オブジェクト群のう
ち、視点Eに最も近い(最も手前)3次元オブジェクト
を選択する選択条件が設定されている場合について示し
ている。
【0025】まず、オブジェクト選択に関するマウスイ
ベントが発生した場合に、選択候補群取得関数であるデ
フォルトのrespondent関数を用いた選択候補オブジェク
ト群抽出処理が実行される(ステップ801)。これによ
って、視点Eとマウスカーソル位置とを結ぶ直線L1上
の3次元空間で直線L1と交叉する1つまたは複数の3
次元オブジェクトが選択候補オブジェクト群として抽出
される。
【0026】次に、選択候補オブジェクト群の3次元オ
ブジェクトのうち最も手前の選択候補aに対し、デフォ
ルトのpreselect関数を実行させる(ステップ80
2)。これによって、優先選択オブジェクトを取得し、
その取得オブジェクトをxとする。なお、優先選択オブ
ジェクトが存在しない場合には、x=φ(空の意味)と
なる。
【0027】次に、最も手前の選択候補オブジェクトa
についてデフォルトのselect関数を実行させる(ステッ
プ803)。これによって、選択対象のオブジェクトを
取得し、その取得オブジェクトをyとする。次に、オブ
ジェクトxとオブジェクトyを比較し、より手前のオブ
ジェクトを操作対象となるオブジェクトとして決定し
(ステップ804)、それをオペレーティングシステム6
05aに返却する(ステップ805)。
【0028】図9は、ステップ801の選択候補群取得
関数を実行する処理の詳細を示すフローチャートであ
る。まず、選択候補群保持領域707を空にする(ステ
ップ901)。そして、ステップ902と905で形成
される以下の処理を、全ての選択候補オブジェクト群の
個々のオブジェクトに対して実行する。個々のオブジェ
クトについてrespondent関数を実行した結果(ステップ
903)、trueを返した場合は当該オブジェクトは選択
候補となり得るということであり、これを選択候補群保
持領域707に追加する(ステップ904)。そして、最
終的に選択候補群保持領域707に保持された選択候補
群のオブジェクトを視点Eに最も近いものから並べ替え
るソート処理を行い(ステップ906)、その結果をイ
ベントディスパッチャ605bに返却する(ステップ9
07)。
【0029】図10は、本発明のオブジェクト選択制御
方法を説明するための3次元オブジェクトの配置例を示
す説明図である。この図は、表示画面1001内に表示
された3次元オブジェクトを上方から見た平面図であ
る。図において、表示画面1001内には5個の3次元
オブジェクトx01〜x05が存在する。この状態にお
いて、P1で示す位置でオブジェクト選択操作が行われ
たものとする。イベントディスパッチャ605bは、こ
れら5個の3次元オブジェクトx01〜x05に対し、
respondent関数を実行させる。詳しくは、図11に示す
ように、5個の3次元オブジェクトx01〜x05のそ
れぞれに対し、マウスイベント情報及びデフォルトのre
spondent関数アドレス704をパラメータとしてrespon
dent関数を実行し、各オブジェクトからの応答を待つ。
各オブジェクトx01〜x05に保持されたrespondent
関数が、図中で「○印」で示すようにtrueを返すように
定義されている場合は、各オブジェクトx01〜x05
はtrueをイベントディスパッチャ605bに返す。これ
により、イベントディスパッチャ605bは全ての3次
元オブジェクトx01〜x05を選択候補オブジェクト
群として認識する。
【0030】選択候補オブジェクト群が取得できたなら
ば、次に、視点Eとマウスカーソル位置P1とを結ぶ直
線L1と交叉する3次元オブジェクトx01、x03、
x05を抽出し、視点Eに近い順に並べ替える。これに
より、x01、x03、x05の順で3つの3次元オブ
ジェクトが抽出される。なお、選択候補オブジェクトに
したくないオブジェクトについては、respondent関数が
falseを返すように定義しておけばよい。次に、イベン
トディスパッチャ605bは、オブジェクトx01、x
03、x05に対しpreselect関数アドレスをパラメー
タに含むイベント情報を渡し、その応答を待つ。presel
ect関数アドレスは、それぞれの3次元オブジェクトに
固有のものが必ず定義(設定)されるとは限らず、図1
2の定義例に示すように、視点方向を見て1つ手前のオ
ブジェクトから渡すことも可能になっている。
【0031】図12では、自オブジェクトのpreselect
関数アドレスが設定されていなければ、パラメータで渡
されたpreが実行される。
【0032】一方、自オブジェクトに固有のpreselect
関数の定義としては、図12に例示するようなものがあ
る。 定義例(1) イベントディスパッチャ605bからマウスイベント情
報を受け取った際に、無条件で自オブジェクトIDを返
す。 定義例(2) 次オブジェクトがなかったならば、自オブジェクトID
を返す。 定義例(3) 次オブジェクトがなかったならば、空(φ)を返す。 定義例(4) 次オブジェクトがあったならば、次オブジェクトへマウ
スイベント情報(e,pre)を転送する。 定義例(5) 次オブジェクトがあったならば、次オブジェクトへ自オ
ブジェクトaのpreselect関数アドレスをパラメータに
含むマウスイベント情報(e,pre-a)を転送する。 定義例(6) 次オブジェクトがあったならば、次オブジェクトへ自オ
ブジェクトaのデフォルトのpreselect関数アドレスを
パラメータに含むマウスイベント情報(e,def-pre-a)を
転送する。これらの定義例は、1つだけでなく、2つ以
上を同時に定義することもできる。例えば、定義例
(2)と(4)を同時に定義することができる。
【0033】イベントディスパッチャ605bは、以上
のような例のpreselect関数を実行させた結果、例えば
オブジェクトx05が優先選択オブジェクトであること
を認識する。次に、最も手前の選択候補オブジェクトx
01についてselect関数を実行させる。これによって、
当該オブジェクトx01が選択対象とすることを許して
いないオブジェクトであった場合には、その1つ奥に位
置する選択候補のオブジェクトx03についてselect関
数を実行させ、選択対象とすることを許している場合
は、このオブジェクトx03と優先選択オブジェクトx
05との位置を比較し、最も手前(視点に近い)オブジ
ェクトx03を操作対象となるオブジェクトとして決定
し、それをディスパッチャプログラム605bに返却す
る。
【0034】このselect関数についても、それぞれの3
次元オブジェクトに固有のものが必ず定義(設定)され
るとは限らず、図13の定義例に示すように、視点方向
を見て1つ手前のオブジェクトから渡すことも可能にな
っている。図13では、自オブジェクトのselect関数ア
ドレスが設定されていなければパラメータで渡されたse
lect関数が実行される。しかし、自オブジェクトのsele
ct関数アドレスが設定されておらず、かつ1つ手前のオ
ブジェクトaからselect関数アドレスが渡されない場合
には、デフォルトselect関数アドレス領域702に保持
された関数アドレスのselect関数が実行される。
【0035】一方、自オブジェクトに固有のselect関数
の定義としては、図13に例示するようなものがある。 定義例(1) イベントディスパッチャ605bからマウスイベント情
報を受け取った際に、無条件で自オブジェクトIDを返
す。 定義例(2) 次オブジェクトがなかったならば、自オブジェクトID
を返す。 定義例(3) 次オブジェクトがなかったならば、空(φ)を返す。 定義例(4) 次オブジェクトがあったならば、次オブジェクトへマウ
スイベント情報(e,sel)を転送する。 定義例(5) 次オブジェクトがあったならば、次オブジェクトへ自オ
ブジェクトaのselect関数アドレスをパラメータに含む
マウスイベント情報(e,sel-a)を転送する。 定義例(6) 次オブジェクトがあったならば、次オブジェクトへ自オ
ブジェクトaのデフォルトのselect関数アドレスをパラ
メータに含むマウスイベント情報(e,def-sel-a)を転送
する。 定義例(7) 次オブジェクトが不透明ならば、自オブジェクトIDを
返す。 定義例(7) 次オブジェクトが不透明でなければ、次オブジェクトへ
マウスイベント情報(e,sel-a)を転送する。これらの定
義例は、1つだけでなく、2つ以上を同時に定義するこ
ともできる。例えば、定義例(2)と(4)を同時に定
義することができる。
【0036】図14及び図15は、図11で取得された
オブジェクトx01、x03、x05におけるPreselec
t関数の定義の仕方によって、優先選択オブジェクトと
して抽出される結果が異なる様子を示す説明図である。
【0037】図14(a)は、最も手前のオブジェクト
x01に定義例(1)のpreselect関数が設定されてい
ることから、x01のオブジェクトIDが優先選択オブ
ジェクトとしてイベントディスパッチャ605bに返却
されることを示している。図14(b)は、最も手前の
オブジェクトx01に定義例(2)及び(4)のpresel
ect関数が設定されていることから、パラメータ(e,pre)
が次のオブジェクトx03に転送され、このオブジェク
トx03でも定義例(2)及び(4)のpreselect関数
が設定されているが、次のオブジェクトが存在しないた
めに、オブジェクトx03のオブジェクトIDが優先選
択オブジェクトとしてイベントディスパッチャ605b
に返却されることを示している。
【0038】図15(a)は、最も手前のオブジェクト
x01に定義例(2)及び(4)のpreselect関数が設
定されていることから、マウスイベント情報(e,pre)が
次のオブジェクトx03に転送され、このオブジェクト
x03では定義例(2)及び(5)のpreselect関数が
設定されていることから、x03のpreselect関数アド
レスを含むパラメータ(e,pre-x03)が次のオブジェクト
x05に転送されるが、次のオブジェクトx05では定
義例(2)及び(5)のpreselect関数が設定されてい
るが、次のオブジェクトが存在しないために、オブジェ
クトx05のオブジェクトIDが優先選択オブジェクト
としてイベントディスパッチャ605bに返却されるこ
とを示している。
【0039】図15(b)は、最も手前のオブジェクト
x01に定義例(2)及び(6)のpreselect関数が設
定されていることから、x01のデフォルトのpreselec
t関数アドレスdef-pre-x01をパラメータとするマウスイ
ベント情報(e,def-pre-x01)が次のオブジェクトx03
に転送される。x03では、preselect関数が定義され
ていないことから、x01から渡されたpreselect関数
アドレスdef-pre-x01のpreselect関数が実行される。こ
の例では、def-pre-x01のpreselect関数は、定義例
(1)となっていることから、オブジェクトx03のオ
ブジェクトIDが優先選択オブジェクトとしてイベント
ディスパッチャ605bに返却されることを示してい
る。
【0040】図16〜図18は、図11で取得されたオ
ブジェクトx01、x03、x05におけるselect関数
の定義の仕方によって、操作対象オブジェクトとして抽
出される結果が異なる様子を示す説明図である。図16
(a)は、最も手前のオブジェクトx01に定義例
(1)のselect関数が設定されていることから、x01
のオブジェクトIDが優先選択オブジェクトとしてイベ
ントディスパッチャ605bに返却されることを示して
いる。図16(b)は、最も手前のオブジェクトx01
に定義例(2)及び(4)のselect関数が設定されてい
ることから、マウスイベント情報(e,sel)が次のオブジ
ェクトx03に転送され、このオブジェクトx03でも
定義例(2)及び(4)のselect関数が設定されている
ので、マウスイベント情報(e,sel)が次のオブジェクト
x05に転送されることを示している。次のオブジェク
トx05でも定義例(2)及び(4)のselect関数が設
定されているが、次のオブジェクトが存在しないため
に、オブジェクトx05のオブジェクトIDが選択オブ
ジェクトとしてイベントディスパッチャ605bに返却
されることを示している。
【0041】図17(a)は、最も手前のオブジェクト
x01に定義例(2)及び(4)のselect関数が設定さ
れていることから、パラメータ(e,sel)が次のオブジェ
クトx03に転送され、このオブジェクトx03では定
義例(2)及び(5)のselect関数が設定されているこ
とから、x03のselect関数アドレスをパラメータとす
るマウスイベント情報(e,pre-x03)が次のオブジェクト
x05に転送される。次のオブジェクトx05では定義
例(2)及び(5)のselect関数が設定されているが、
次のオブジェクトが存在しないために、オブジェクトx
05のオブジェクトIDが選択オブジェクトとしてイベ
ントディスパッチャ605bに返却されることを示して
いる。
【0042】図17(b)は、最も手前のオブジェクト
x01に定義例(2)及び(6)のselect関数が設定さ
れていることから、x01のデフォルトのselect関数ア
ドレスdef-sel-x01を含むパラメータ(e,def-sel-x01)が
次のオブジェクトx03に転送される。x03では、se
lect関数が定義されていないことから、x01から渡さ
れたselect関数アドレスdef-sel-x01のselect関数が実
行される。この例では、def-sel-x01のselect関数は、
定義例(1)となっていることから、オブジェクトx0
3のオブジェクトIDが選択オブジェクトとしてイベン
トディスパッチャ605bに返却されることを示してい
る。
【0043】図18は、最も手前のオブジェクトx01
に定義例(7)及び(8)のselect関数が設定されてい
るが、x01は透明であるため、パラメータ(e,sel)が
次のオブジェクトx03に転送される。次のオブジェク
トx03でも定義例(7)及び(8)のselect関数が設
定されているが、不透明であるため、オブジェクトx0
3のオブジェクトIDが選択オブジェクトとしてイベン
トディスパッチャ605bに返却されることを示してい
る。
【0044】図19は、図14(a)〜図15(b)の
いずれかのpreselect関数で取得された優先選択オブジ
ェクトと図16(a)のselect関数で取得されたオブジ
ェクトで視点Eに最も近いオブジェクト1901を操作
対象のオブジェクトとして決定した例を示す説明図であ
り、斜線によって当該オブジェクト1901を示してい
る。このオブジェクト1901は図14〜図15のオブ
ジェクトx01に相当する。1902はオブジェクトx
03に相当する。
【0045】図20は、図18のselect関数で取得され
た不透明オブジェクトを操作対象のオブジェクトとして
決定した例を示す説明図であり、斜線によって当該オブ
ジェクト2002を示している。この不透明オブジェク
ト2002の手前のオブジェクト2001は半透明また
は透明であり、図18のオブジェクトx01に相当す
る。
【0046】図21は、図15(b)のpreselect関数
で取得された優先選択オブジェクトと図16(b)のse
lect関数で取得されたオブジェクトで優先選択オブジェ
クト(ブロックオブジェクト)の奥に位置するオブジェ
クト2103は、選択させないように決定した例を示す
説明図であり、斜線によって優先選択オブジェクト21
02を示している。この優先選択オブジェクト2102
の手前のオブジェクト2101は図15(b)のx01
に相当する。
【0047】図22は、3次元オブジェクトが包含関係
にある場合の例を示す説明図であり、3次元オブジェク
トの被選択基準のデフォルトとして、画面上の3次元オ
ブジェクトに対して、マウスカーソル位置と視点とを結
ぶ直線上で最も手前の3次元オブジェクトしか選択でき
ないという基準が設定されているものとする。2201
はディスプレイ画面であり、この内部では、マウスカー
ソル位置で最も手前にあるオブジェクトしか選択できな
いというデフォルトの被選択基準が設定されているもの
とする。2202は建物オブジェクトであり、このオブ
ジェクト2202では「最も手前に存在する不透明のオ
ブジェクトしか選択できない」という被選択基準が設定
されているものとする。2203は部屋オブジェクトで
あり、この部屋オブジェクト2203内ではマウスカー
ソル位置に最も近いオブジェクトが選択可能となる(す
なわち内包されたオブジェクトも選択可能となる)被選
択基準が設定されているものとする。2204は内部に
オブジェクト2205を含むオブジェクトであり、この
オブジェクト2204には被選択基準が設定されていな
いものとする。このため、オブジェクト2204が建物
オブジェクト2202の外部に存在する場合、デフォル
トの被選択基準によって内部オブジェクト2205を選
択することはできない。
【0048】一方、オブジェクト2204が建物オブジ
ェクト2202の内部に存在する場合(2204’の位
置)、部屋オブジェクト2203の外部では、建物オブ
ジェクト2202のもつ被選択基準により、オブジェク
ト2204が不透明であれば、やはり内部のオブジェク
ト2205を選択することができない。ところが、部屋
オブジェクト2203の内部に移動させると(220
4’'の位置)、部屋オブジェクト2203の持つ被選
択基準(内包されたオブジェクトも選択可能という基
準)によって内部のオブジェクト2205''が選択可能
となる。
【0049】ところで、本実施形態においては、オブジ
ェクト指向技術を利用し、各オブジェクトはいずれも共
通の最上位クラスから派生したクラスに属するものとし
ている。図23(a),(b),(c)は、3次元オブ
ジェクトの最上位クラスのselect関数、respondent関
数、preselect関数の処理を示すフローチャートであ
る。図23(a)のselect関数の処理においては、当該
関数について独自に定義されている場合はその定義され
た関数を実行し、定義されていない場合は他のオブジェ
クトから転送されるパラメータselで与えられたselect
関数を、自オブジェクトを対象として実行し(ステップ
2301)、結果を返却する(ステップ2302)。
【0050】図23(b)のrespondent関数の処理におい
ては、当該関数について独自に定義されている場合はそ
の定義された関数を実行し、定義されていない場合は他
のオブジェクトから転送されるパラメータresで与えら
れたrespondent関数を、自オブジェクトを対象として実
行し(ステップ2303)、結果を返却する(ステップ2
304)。
【0051】図23(c)のpreselect関数の処理にお
いては、、当該関数について独自に定義されている場合
はその定義された関数を実行し、定義されていない場合
は他のオブジェクトから転送されるパラメータpreで与
えられたpreselect関数を、自オブジェクトを対象とし
て実行し(ステップ2305)、結果を返却する(ステッ
プ2306)。
【0052】図24(a),(b),(c)は、選択候
補群中から選択オブジェクトを決定する際の、典型的な
選択条件として、最も手前のオブジェクトを操作対象の
オブジェクトとして決定する際に、当該オブジェクトで
定義すべきselect関数、respondent関数、preselect関
数の定義例をフローチャートで示したものである。最も
手前のオブジェクトを操作対象のオブジェクトとして決
定する場合、図24(a)のselect関数の処理において
は、無条件に自オブジェクトを選択候補として返却する
(ステップ2401)ように定義する。
【0053】図24(b)のrespondent関数の処理におい
ては、視点Eとパラメータで受け取ったマウス操作イベ
ントeの発生位置を結ぶ直線L1が3次元オブジェクト
を透過するかどうかの判定を行い(ステップ2402)、
透過するならばtrue(ステップ2403)を、通過しない
ならばfalseを返却する(ステップ2404)ように定義
する。
【0054】図24(c)のpreselect関数の処理におい
ては、選択候補群内に自分の次の候補オブジェクトyが
存在するかどうかの判定を行い(ステップ2405)、存
在するならばy.preselectを実行し、その返却値を返却
する(ステップ2406)。存在しないならば、φ(存在
しないことを示す値)を返却する(ステップ2407)よ
うに定義する。
【0055】図25(a)は、選択候補群の中から最終的
に操作対象となるオブジェクトを決定する際の選択条件
として、最も手前の不透明オブジェクトを最終的な操作
対象として決定する際に、当該オブジェクトで定義すべ
きselect関数の定義例をフローチャートで示したもので
ある。まず、自オブジェクトが不透明かどうかの判定を
共通の属性項目11に定義された透明度のデータに基づ
いて判定し(ステップ2501)、不透明ならばその時点
で、自オブジェクトIDを返却する(ステップ250
2)。不透明でないならば、選択候補オブジェクト群内
に自分の次の候補オブジェクトyが存在するかどうかの
判定を行い(ステップ2503)、存在しないならば、そ
のことを示す値φを返却する(ステップ2505)。存在
するならば、次の候補オブジェクトyについてselect関
数を実行させ、その返却値を返却する(ステップ250
5)。
【0056】図12の例で言えば、3次元オブジェクト
(1)2001は半透明または透明であるので、次の候
補オブジェクト(2)2002にselect関数を実行させ
る。この結果、次の候補オブジェクト(2)2002は
不透明オブジェクトであるのでtrueを返す。これによ
り、次の候補オブジェクト(2)2002が最終的に操
作対象とすべきオブジェクトとして決定される。
【0057】図25(b)は、図22の建物オブジェクト
2202が定義するselect関数の処理を示すフローチャ
ートである。建物オブジェクト2202は、選択候補オ
ブジェクト群内で自オブジェクトの次の候補y(例えば
部屋オブジェクト2203)を取得し(ステップ251
0)、このオブジェクトyのselect関数を起動する(ステ
ップ2511)。ただし、ここで、バラメータselect'
は、図25(a)で定義したselect関数である。すると、
図25(a)の処理が部屋オブジェクト2203で実行
される。この結果、部屋オブジェクト2203が不透明
であれば、この部屋オブジェクト2203が最終的に操
作対象とすべきオブジェクトとして決定される。
【0058】図26(a),(b)は、選択候補群の中
から最終的な操作対象として採用するオブジェクトを決
定する際に、選択条件の特殊な場合として、ブロックオ
ブジェクトのselect関数、preselect関数の定義例をフ
ローチャートで示したものである。いずれの場合も、選
択操作イベントeが渡された場合には、select関数、pr
eselect関数を実行し、自オブジェクトが操作対象であ
ることを返却して終了する(ステップ2601,260
2)。
【0059】図27は、図22の部屋オブジェクト22
03が定義するselect関数の処理を示すフローチャート
であり、選択候補群中から選択オブジェクトを決定する
際の選択基準として、マウスカーソル位置に最も近いオ
ブジェクトを選択オブジェクトとして決定する場合の処
理を示すものである。まず、選択候補群内の自オブジェ
クトより奥行き方向に存在する候補オブジェクトの各頂
点と、パラメータとして渡された選択操作イベントeの
発生位置P1との距離を求める(ステップ2701)。そ
して、ここで最も距離が近い位置にあると判定されたオ
ブジェクトyを取得し(ステップ2702)、返却する
(ステップ2703)。これにより、図28(a)の例で
言えば、図28(b)に示すように、3次元オブジェク
ト(2)2802の頂点が3次元オブジェクト(1)2
801の頂点より選択操作イベントeの発生位置P1に
最も近いので、3次元オブジェクト(2)2802が最
終的に操作対象のオブジェクトとして決定される。
【0060】以上は典型的な選択条件の例であるが、そ
の他考え得る選択条件を説明し、またそのための処理を
フローチャートにて説明する。図29は、respondent関
数を定義した例を示している。視点Eとイベント発生位
置P1とを結ぶ直線L1がオブジェクト2902,29
03の領域と交わらなくても、あるいは交わってもこの
オブジェクト2902,2903に定義された反応領域
2901、2904と交わることで、選択候補オブジェ
クトとして抽出し、登録する例を示している。ここで、
反応領域2901は、3次元オブジェクト(1)290
1の大きさよりも「+10」という値で表される距離だけ
拡大した領域に定義され、また反応領域2903は3次
元オブジェクト(2)2903の中心から「50」とい
う半径の値で表される球状領域に定義されている。この
定義は図30、図31で示すrespondent関数の処理によ
って定義される。
【0061】図30は、図29の3次元オブジェクト
(1)2901に対して定義したrespondent関数の例を
示すフローチャートである。初めに、自オブジェクトの
領域に対して、その領域を例えば「+10」という値で
与えられる距離だけ外側に拡大した領域を反応領域とす
る(ステップ3001)。次に、視点Eと選択操作イベ
ントeの発生位置とを結ぶ直線L1が反応領域と交わっ
ているかどうかを判定し(ステップ3002)、交わっ
ている場合はtrueを返却し(ステップ3003)、交わ
らない場合はfalseを返却し(ステップ3004)、処
理を終了する。
【0062】図31は、図29の3次元オブジェクト
(2)2903に対して定義したrespondent関数の例を
示すフローチャートである。初めに、自オブジェクトの
領域の中心から例えば半径「50」という値で表される
球領域を反応領域とする(ステップ3101)。次に、
視点Eと選択操作イベントeの発生位置P1とを結ぶ直
線L1が反応領域と交わっているかどうかを判定し(ス
テップ3102)、交わっている場合はtrueを返却し
(ステップ3103)、交わらない場合はfalseを返却
し(ステップ3104)、処理を終了する。このように
して、3次元オブジェクトの選択操作イベントに対し、
自オブジェクトが反応するか否かの領域を拡大または縮
小方向に定義したrespondent関数をあるオブジェクトに
実行させることにより、視点Eと選択操作イベントeの
発生位置とを結ぶ直線L1に交差しない場合や、オブジ
ェクト本体の中心近傍で交叉する場合についてのみ選択
候補として抽出し、選択対象にすることができる。これ
は、直線L1に交差しない場合であっても、定期的に膨
張と収縮を繰り返して外形形状が変化しているような3
次元オブジェクトを選択候補として抽出する場合に適用
することができる。また、中心近傍部分のみが3次元オ
ブジェクトとしての実効的な機能を表している場合に、
その3次元オブジェクトを選択候補として抽出する場合
に適用することができる。
【0063】図32は、3次元オブジェクトに選択可能
フラグを付加し、この選択可能フラグがonになってい
るか、offになっているかどうかで選択候補とするか
を決める場合の3次元オブジェクトの例を示すものであ
り、ここでは、3次元オブジェクト(1)3201と3
次元オブジェクト(3)3203の選択可能フラグはo
ff,中間位置の3次元オブジェクト(2)3202の
選択可能フラグはonになっていることを示している。
【0064】図33は、選択可能フラグがonになって
いるか、offになっているかどうかで選択候補とする
かを決める場合のrespondent関数を定義した例を示すフ
ローチャートである。まず、自オブジェクトの選択可能
フラグ(sensibleフラグ)がonになっているかどうか
を判定し(ステップ3301)、offならばfalseを
返す(ステップ3303)。しかし、onになっていた
場合は、視点Eと選択操作イベントeの発生位置P1と
を結ぶ直線が自オブジェクトと交わっているかどうかを
判定し(ステップ3302)、交わっている場合はtrue
を返却し(ステップ3304)、交わらない場合はfals
eを返却し(ステップ3303)、処理を終了する。こ
れにより、図32の例では、中間位置の3次元オブジェ
クト(2)3202が選択候補として抽出される。
【0065】以上のように本実施形態によれば、3次元
オブジェクト自体に、自オブジェクトが選択対象とされ
るか否かの被選択基準を関数として保持させ、マウス操
作による選択操作イベントの発生時に、この関数を実行
させ、その実行結果によって最終的に操作対象となるオ
ブジェクトを決定するようにしたため、建物の内部と外
部とで各3次元オブジェクトを選択可能または選択でき
ないようにするといった異なるユーザインタフェースを
実現することができる。すなわち、3次元オブジェクト
側が主導権を持って多様なユーザインタフェースを提供
することができ、アプリケーション側では被選択基準で
選択候補に挙がった3次元オブジェクトのうち例えば最
も視点側に近いオブジェクトを選択するといった簡単な
ロジックを持たせるだけで済むという効果が得られる。
【0066】なお、実施形態では、視点Eに最も近いオ
ブジェクトを選択候補群の中から選択するようにしてい
るが、手前から見て2番目、3番目といった選択条件に
したり、最も奥行きに存在するオブジェクトといった選
択条件にすることができることは言うまでもない。
【0067】ところで、以上の実施例において、イベン
トディスパッチャ605bに対しては常に1つのオブジ
ェクトIDが返却されるように構成しているが、複数の
オブジェクトIDを返却し、イベントディスパッチャ6
05bでの独自の選択条件にしたがって、操作対象とす
るオブジェクトを決定するように構成することができ
る。以下、この方法について説明する。
【0068】図34(a),(b)は、視点Eとイベン
ト発生位置P1を通る直線と交点を持つオブジェクト群
の内、全ての選択候補オブジェクト群を最終的な選択オ
ブジェクト群とする場合のオブジェクトの例を示す図で
あり、図35(a),(b)は選択候補オブジェクト群
の中で不透明なオブジェクトのみを選択オブジェクト群
とする場合の例を示す図である。なお、図34(a)と
図35(a)は同じオブジェクト配置を表しており、3
次元オブジェクト(1)x01は不透明、3次元オブジ
ェクト(2)x02は透明、3次元オブジェクト(3)
x03は不透明、3次元オブジェクト(4)x04は不
透明、3次元オブジェクト(5)x05は透明、3次元
オブジェクト(6)x06は不透明である例を示してい
る。例えば図34(a)において、3次元オブジェクト
x01、x02、x03、x04、x05、x06が視点Eとイベ
ント発生位置P1を通る直線により交わるとする。この
時、x01、x03、x04、x06は不透明、x02、x05
は透明であり、不透明であるx01、x03、x04、x06
を選択オブジェクトとする場合を考える。なお、本機能
の実現にあたっては、下記に記す変更部分の処理の他、
図9の選択候補群取得関数、図23の最上位クラス、図
24(b)、(c)のシステムデフォルトのpreselect関
数、respondent関数の各処理が関与するが、これらは従
来通り図の処理が適用される。
【0069】図8のイベントディスパッチャ605bの
処理においては、ステップ803で最も手前の選択候補
aについてa.select関数を実行すると、選択候補群中
の選択対象となり得るオブジェクト群が取得される。そ
の後、ステップ804において前記ステップ802で取
得された優先選択オブジェクトxとの位置関係を比較す
るが、複数のオブジェクトIDをイベントディスパッチ
ャ605bに返却する場合には、図36のステップ36
04に示すように、オブジェクト群y中のオブジェクト
の中で、xより手前のオブジェクト群及びxの和集合を
選択オブジェクト群として返却するようにする。なお、
図36において、ステップ3601〜3603は、図8
のステップ801〜803に相当する。
【0070】図24(a)のシステムのデフォルトselect
関数においては、図37に示すように、自オブジェクト
及び自オブジェクトより外にある全ての選択候補群オブ
ジェクトの和集合オブジェクトを返却するようにする。
図34の例においては、この関数がシステムのデフォル
トselect関数として定義され、また選択候補オブジェク
ト群の各オブジェクトにおいては、独自のselect関数は
定義されていない、すなわち全ての選択候補群オブジェ
クトにおいて、システムのデフォルト関数がパラメータ
として、順次前候補オブジェクトより渡され、それが実
行されるようにする。
【0071】図37のselect関数のフローにおいては、
選択候補オブジェクト群内に自オブジェクトの次候補オ
ブジェクトが存在する場合には(ステップ3701)、
次候補オブジェクトのselect関数を実行する(ステップ
3702)ことにより、自オブジェクトより奥側に存在
する全ての選択対象オブジェクト群を取得し、その要素
群にて集合lとする(ステップ3703)。自オブジェ
クトの次候補がない(すなわち自分が一番奥)の場合に
は、集合lを空集合とする(ステップ3703)。いず
れの場合も、得られたlに自オブジェクトを追加し、追
加後のlをイベントディスパッチャ605bに返却する
(ステップ3705)。
【0072】また、図35の例においては、システムの
デフォルトのselect関数として、図25(b)に示すse
lect関数が図39(b)に示すように、自オブジェクト
を含め自オブジェクトより外の不透明オブジェクト群を
取得し(ステップ3910)、選択オブジェクト群とし
て返却するようにが定義され、また選択候補オブジェク
ト群の各オブジェクトにおいては、独自のselect関数は
定義されない。
【0073】図25(a)における不透明オブジェクト
群が選択対象オブジェクト群となる場合のselect関数フ
ローにおいては、図39(a)に示すように、選択候補
群内に自オブジェクトの次候補オブジェクトが存在する
場合には(ステップ3901)、次候補オブジェクトの
select関数を実行することにより、自オブジェクトより
外側に存在する選択対象オブジェクト群を取得し、その
要素群にて集合lとする(ステップ3902)。自オブ
ジェクトの次候補がない(すなわち自分が一番外)の場合
には、lをとする(ステップ3903)。いずれの場合
も、得られたlに自オブジェクトが不透明ならば(ステ
ップ3904)、自オブジェクトを追加し(ステップ3
905)、追加後のlを返却する(ステップ390
6)。透明ならば自オブジェクトを追加せずにlを返却
する(ステップ3906)。
【0074】
【発明の効果】以上説明したように、本発明によれば、
3次元オブジェクト自体に、自オブジェクトが選択対象
とされるか否かの被選択基準を保持させ、マウス操作に
よる選択操作イベントの発生時に、この被選択基準に従
って最終的に操作対象となるオブジェクトを決定するよ
うにしたため、3次元オブジェクト側が主導権を持って
多様なユーザインタフェースを提供することができ、建
物の内部と外部とで各3次元オブジェクトを選択可能ま
たは選択できないようにするといった操作環境を実現す
ることができる。換言すれば、オブジェクト対応に当該
オブジェクトの選択属性を与えておき、当該属性を変更
することによって、イベントディスパッチャのプログラ
ムロジックを変更しなくとも、当該オブジェクトは任意
の選択属性を持つことができる。また、アプリケーショ
ン側では被選択基準で選択候補に挙がった3次元オブジ
ェクトのうち例えば最も視点側に近いオブジェクトを選
択するといった簡単なロジックを持たせるだけで済むと
いう効果が得られる。
【図面の簡単な説明】
【図1】本発明に係る3次元オブジェクトの生成手順を
示す概略フロー図である。
【図2】ローカル座標系、ワールド座標系、投影面座標
系の説明図である。
【図3】3次元オブジェクトを表示装置画面に表示する
際に設定する投影面と後平面の位置D1,D2の説明図
である。
【図4】被選択基準の説明図である。
【図5】本発明における3次元オブジェクトに設定され
る関数の例を示す図である。
【図6】本発明に係る3次元オブジェクトの選択制御方
法を実現するシステムの一実施形態を示す全体構成図で
ある。
【図7】本発明で用いられるアプリケーション例におけ
る3次元オブジェクトの概念図である。
【図8】オペレーティングシステムから起動されるディ
スパッチャプログラムの処理を示すフローチャートであ
る。
【図9】図8におけるステップ801の選択候補群取得
関数を実行する処理の詳細を示すフローチャートであ
る。
【図10】本発明のオブジェクト選択制御方法を説明す
るための3次元オブジェクトの配置例を示す説明図であ
る。
【図11】図10の各オブジェクトに保持されたrespon
dent関数の例とその実行結果の例を示す説明図である。
【図12】各オブジェクトに定義されるpreselect関数
の例を示す説明図である。
【図13】各オブジェクトに定義されるselect関数の例
を示す説明図である。
【図14】preselect関数の定義の仕方によって優先選
択オブジェクトとして抽出される結果が異なる様子を示
す説明図(その1)である。
【図15】preselect関数の定義の仕方によって優先選
択オブジェクトとして抽出される結果が異なる様子を示
す説明図(その2)である。
【図16】select関数の定義の仕方によって操作対象オ
ブジェクトとして抽出される結果が異なる様子を示す説
明図(その1)である。
【図17】select関数の定義の仕方によって操作対象オ
ブジェクトとして抽出される結果が異なる様子を示す説
明図(その2)である。
【図18】select関数の定義の仕方によって操作対象オ
ブジェクトとして抽出される結果が異なる様子を示す説
明図(その3)である。
【図19】preselect関数とselect関数によって決定さ
れるオブジェクトの例を示す説明図である。
【図20】select関数によって不透明オブジェクトを決
定した例を示す説明図である。
【図21】優先選択オブジェクトの奥に位置するオブジ
ェクトを選択させない例を示す説明図である。
【図22】オブジェクトが包含関係にある場合の画面表
示例を示す図である。
【図23】3次元オブジェクトの最上位クラスのselect
関数、respondent関数、preselect関数の処理を示すフ
ローチャートである。
【図24】選択候補群中から最も手前のオブジェクトを
操作対象のオブジェクトとして決定する際に、当該オブ
ジェクトで定義すべきselect関数、respondent関数、pr
eselect関数の処理を示すフローチャートである。
【図25】図22の建物オブジェクトが定義するselect
関数の処理を示すフローチャートである。
【図26】自分より奥のオブジェクトは選択させないと
いうオブジェクトにおけるselect関数およびpreselect
関数の定義例を示すフローチャートである。
【図27】画面上でイベント発生位置との距離が最も小
さい頂点を有するオブジェクトを最終的に操作対象とし
て決定する際のselect関数の定義例を示すフローチャー
トである。
【図28】画面上でイベント発生位置との距離が最も小
さい頂点を有するオブジェクトを最終的に操作対象とし
て決定する際のオブジェクトの例を示す説明図である。
【図29】視点とイベント発生位置とを結ぶ直線がオブ
ジェクトの領域と交わらなくても、respondent関数で再
定義された反応領域と交わる場合は選択候補オブジェク
トとして抽出する例を示す説明図である。
【図30】自オブジェクトの大きさよりも拡大した領域
を反応領域して定義するrespondent関数の例を示すフロ
ーチャートである。
【図31】自オブジェクトの大きさよりも小さい領域を
反応領域として定義するrespondent関数の例を示すフロ
ーチャートである。
【図32】3次元オブジェクトに選択可能フラグを付加
し、この選択可能フラグがonになっているか、off
になっているかどうかで選択候補とするかを決める場合
の3次元オブジェクトの例を示す説明図である。
【図33】選択可能フラグがonになっているか、of
fになっているかどうかで選択候補とするかを決める場
合のrespondent関数を再定義した例を示すフローチャー
トである。
【図34】イベント発生位置を通る直線と交点を持つオ
ブジェクト群のうち全ての選択候補オブジェクト群を最
終的な選択オブジェクト群とする場合のオブジェクトの
例を示す図である。
【図35】選択候補オブジェクト群の中で不透明オブジ
ェクトのみを選択する例を示す図である。
【図36】複数のオブジェクトを選択する場合のイベン
トディスパッチャの処理を示すフローチャートである。
【図37】複数のオブジェクトをイベントディスパッチ
ャに返却する場合のselect関数の処理を示すフローチャ
ートである。
【図38】複数のオブジェクトをイベントディスパッチ
ャに返却する場合のrespondent関数およびpreselect関
数の処理を示すフローチャートである。
【図39】複数のオブジェクトをイベントディスパッチ
ャに返却する場合のデフォルトのselect関数の処理を示
すフローチャートである。
【符号の説明】
10…3次元オブジェクト、11…共通の属性項目、1
3…被選択基準、14…データ部、600…計算機、6
01…キーボード、602…ディスプレイ、603…C
PU、604…マウス、605…プログラムメモリ、6
06…データメモリ、605a…オペレーティングシス
テム、605b…イベントディスパッチャ、605c…
3次元オブジェクト(1)プログラム、605d…3次
元オブジェクト(2)プログラム、605e…3次元オ
ブジェクト(n)プログラム、606a…3次元オブジ
ェクト(1)、606b…3次元オブジェクト(2)、
606c…3次元オブジェクト(n)、701…グロー
バルメモリ領域、707…選択候補群保持領域。
フロントページの続き (72)発明者 若林 泰 神奈川県横浜市中区尾上町6丁目81番地 日立ソフトウエアエンジニアリング株式会 社内 (72)発明者 堀井 克敏 神奈川県横浜市中区尾上町6丁目81番地 日立ソフトウエアエンジニアリング株式会 社内 (72)発明者 戸塚 裕介 神奈川県横浜市中区尾上町6丁目90番地 日立ビジネスソリューション株式会社内 Fターム(参考) 5B050 BA07 BA09 CA07 EA12 EA27 EA28 FA02 FA05 5B080 BA02 BA07 BA08 FA02 FA17 5E501 BA03 BA05 CA02 CB02 CB09 DA04 DA13 EA05 FA14 FA27

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 表示装置に表示させる3次元オブジェク
    トを生成する方法であって、 任意の形状を有する複数の3次元オブジェクトを生成し
    た後、表示装置に表示された状態における選択操作イベ
    ントに対し各3次元オブジェクトを操作対象に含めるか
    を決める被選択基準を3次元オブジェクト毎に個別にま
    たはまとめて設定し保持させるステップを備えることを
    特徴とする3次元オブジェクトの生成方法。
  2. 【請求項2】 前記被選択基準として、各3次元オブジ
    ェクトに関連する他の3次元オブジェクトを操作対象に
    するかを決める被選択基準を有することを特徴とする請
    求項1に記載の3次元オブジェクトの生成方法。
  3. 【請求項3】 前記被選択基準として、自オブジェクト
    または他オブジェクトが優先して操作対象として選択さ
    れるように決定する被選択基準を有することを特徴とす
    る請求項1または2に記載の3次元オブジェクトの生成
    方法。
  4. 【請求項4】 前記被選択基準として、選択操作イベン
    トに対し反応するか否かを決める反応可否基準を有する
    ことを特徴とする請求項1〜3のいずれか一項に記載の
    3次元オブジェクトの生成方法。
  5. 【請求項5】 前記被選択基準を関数として設定し保持
    させることを特徴とする請求項1〜4のいずれか一項に
    記載の3次元オブジェクトの生成方法。
  6. 【請求項6】 表示装置に表示させる3次元オブジェク
    トを生成する方法であって、 任意の形状を有する複数の3次元オブジェクトを生成し
    た後、表示装置に表示された状態における選択操作イベ
    ントに対し各3次元オブジェクトを操作対象に含めるか
    を決める被選択権決定処理を3次元オブジェクト毎に個
    別にまたはまとめて設定し保持させるステップを備える
    ことを特徴とする3次元オブジェクトの生成方法。
  7. 【請求項7】 選択操作イベントに対する被選択基準を
    保持した複数の3次元オブジェクトを表示装置に表示さ
    せ、その表示された3次元オブジェクトへの選択操作イ
    ベントに対しいずれの3次元オブジェクトを選択するか
    を制御する3次元オブジェクトの選択制御方法であっ
    て、 表示画面上における選択操作イベントを、予め設定され
    た規則によって当該選択操作イベントの位置に応じて決
    定された選択候補オブジェクト群内に存在する全ての3
    次元オブジェクトに伝達するステップと、 伝達した3次元オブジェクトからの応答を受け、その応
    答内容のうち予め設定した選択条件を満たす1つまたは
    複数の3次元オブジェクトを操作対象として選択するス
    テップとを備えることを特徴とする3次元オブジェクト
    の選択制御方法。
  8. 【請求項8】 前記選択条件として、表示色が不透明で
    最も視点側に位置する3次元オブジェクトを選択する条
    件が設定されていることを特徴とする請求項7に記載の
    3次元オブジェクトの選択制御方法。
  9. 【請求項9】 前記選択条件として、表示色に拘わらず
    最も視点側に位置する3次元オブジェクトを選択する条
    件が設定されていることを特徴とする請求項7に記載の
    3次元オブジェクトの選択制御方法。
  10. 【請求項10】 前記選択条件として、選択操作イベン
    トに対する反応可否基準として反応可が設定されている
    3次元オブジェクトのうち最も視点側に位置する3次元
    オブジェクトを選択する条件が設定されていることを特
    徴とする請求項7に記載の3次元オブジェクトの選択制
    御方法。
  11. 【請求項11】 表示装置に表示させる3次元オブジェ
    クトのデータ構造であって、 任意の形状を規定する第1のデータ部と、表示装置に表
    示された状態における選択操作イベントに対し各3次元
    オブジェクトを操作対象に含めるかを決める被選択基準
    の第2のデータ部を保持することを特徴とする3次元オ
    ブジェクトのデータ構造。
  12. 【請求項12】 前記第2のデータ部を関数として保持
    することを特徴とする請求項11に記載の3次元オブジ
    ェクトのデータ構造。
JP2001161201A 2001-05-29 2001-05-29 3次元オブジェクトの生成方法および生成された3次元オブジェクトの選択制御方法並びに3次元オブジェクトのデータ構造 Pending JP2002352272A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001161201A JP2002352272A (ja) 2001-05-29 2001-05-29 3次元オブジェクトの生成方法および生成された3次元オブジェクトの選択制御方法並びに3次元オブジェクトのデータ構造

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001161201A JP2002352272A (ja) 2001-05-29 2001-05-29 3次元オブジェクトの生成方法および生成された3次元オブジェクトの選択制御方法並びに3次元オブジェクトのデータ構造

Publications (2)

Publication Number Publication Date
JP2002352272A true JP2002352272A (ja) 2002-12-06
JP2002352272A5 JP2002352272A5 (ja) 2005-04-07

Family

ID=19004514

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001161201A Pending JP2002352272A (ja) 2001-05-29 2001-05-29 3次元オブジェクトの生成方法および生成された3次元オブジェクトの選択制御方法並びに3次元オブジェクトのデータ構造

Country Status (1)

Country Link
JP (1) JP2002352272A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011141699A (ja) * 2010-01-06 2011-07-21 Fujitsu Ltd 部品選択方法、部品選択装置、cad装置及び部品選択プログラム
JP2015503162A (ja) * 2011-12-06 2015-01-29 トムソン ライセンシングThomson Licensing 3次元で表示されるオブジェクトのユーザの選択ジェスチャに応答する方法およびシステム
JP6439132B1 (ja) * 2018-03-09 2018-12-19 株式会社コナミデジタルエンタテインメント 表示システム、表示制御装置、及びプログラム
JP6452014B1 (ja) * 2018-03-09 2019-01-16 株式会社コナミデジタルエンタテインメント 表示システム、表示制御装置、及びプログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011141699A (ja) * 2010-01-06 2011-07-21 Fujitsu Ltd 部品選択方法、部品選択装置、cad装置及び部品選択プログラム
JP2015503162A (ja) * 2011-12-06 2015-01-29 トムソン ライセンシングThomson Licensing 3次元で表示されるオブジェクトのユーザの選択ジェスチャに応答する方法およびシステム
JP6439132B1 (ja) * 2018-03-09 2018-12-19 株式会社コナミデジタルエンタテインメント 表示システム、表示制御装置、及びプログラム
JP6452014B1 (ja) * 2018-03-09 2019-01-16 株式会社コナミデジタルエンタテインメント 表示システム、表示制御装置、及びプログラム
JP2019159614A (ja) * 2018-03-09 2019-09-19 株式会社コナミデジタルエンタテインメント 表示システム、表示制御装置、及びプログラム
JP2019159615A (ja) * 2018-03-09 2019-09-19 株式会社コナミデジタルエンタテインメント 表示システム、表示制御装置、及びプログラム

Similar Documents

Publication Publication Date Title
US5555368A (en) Object-oriented multi-tasking view framework
JP3747404B2 (ja) グラフィックス・イメージ作成装置、及びその方法並びにプログラム
US20060107229A1 (en) Work area transform in a graphical user interface
EP3111318B1 (en) Cross-platform rendering engine
US9424106B2 (en) System for distributed information presentation and interaction
US5689628A (en) Coupling a display object to a viewpoint in a navigable workspace
Itkowitz et al. The openhaptics/spl trade/toolkit: a library for adding 3d touch/spl trade/navigation and haptics to graphics applications
US5621434A (en) Cursor manipulation system and method
JPH10283158A (ja) ウィンドウの立体表示装置及びその方法
US20050060661A1 (en) Method and apparatus for displaying related two-dimensional windows in a three-dimensional display model
US9182938B2 (en) Method for controlling multiple displays and system thereof
JPH07296182A (ja) システム作動方法及びシステム
JPH05210722A (ja) グラフィックス・ディスプレイ・ツール
JPH10507853A (ja) ウィンドウをサービスするためのオブジェクト指向システム
EP0961963A1 (en) User interface and method for maximizing the information presented on a screen
JPH11265462A (ja) 空間視点制御装置
JP2750318B2 (ja) グラフィカル・オブジェクトをインターロックする方法及び装置
JP5442214B2 (ja) 複数の表示画面領域に同時にマウスポインターを表示する方法及び装置、マウスシミュレーションプログラム
JPH11185058A (ja) オブジェクトの選択方法およびそのシステム
JP2002366973A (ja) オブジェクトの生成方法および生成されたオブジェクトの選択制御方法並びにオブジェクトのデータ構造
US20040135974A1 (en) System and architecture for displaying three dimensional data
EP4034999B1 (en) Rendering images using declarative graphics server
JP2002352272A (ja) 3次元オブジェクトの生成方法および生成された3次元オブジェクトの選択制御方法並びに3次元オブジェクトのデータ構造
JP2002366974A (ja) オブジェクトの選択制御方法
US6392662B1 (en) Draw order preservation in a computer-implemented graphics system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040518

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061218

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070416