説明

3次元オブジェクトのデジタル表現を操作するための方法およびシステム

2次元のカーソルの動きによって3次元仮想ビルディング・ブロック・モデルを操作する、仮想ビルディング・ブロック・モデルが、一組の結合規則に従って仮想ビルディング・ブロックを別の仮想ビルディング・ブロックと結合するためのいくつかの結合要素をそれぞれが含む複数の仮想ビルディング・ブロックを含む、方法であって、前記モデルの2次元射影を表すコンピュータ表示領域内のカーソルの動きによって、構造に結合されるべき第1の仮想ビルディング・ブロックの2次元射影の位置付けを行い、2次元位置をもたらすこと、2次元位置から、3次元座標系における第1の仮想ビルディング・ブロックのいくつかの3次元候補位置を算出すること、結合規則、および所定の一組の位置評定規則に基づき、前記候補位置の1つを選択すること、および選択された候補位置で、第1のビルディング・ブロックを前記構造に結合することを含む方法。


【発明の詳細な説明】
【技術分野】
【0001】
本発明は、3次元オブジェクトのデジタル表現の操作に関する。より詳細には、本発明は、2次元カーソルの動きによる3次元仮想ビルディング・ブロック・モデルのコンピュータによって実施される操作に関し、仮想ビルディング・ブロック・モデルは、一組の結合規則に従って仮想ビルディング・ブロックを別の仮想ビルディング・ブロックと結合するための、いくつかの結合要素をそれぞれが含む、複数の仮想ビルディング・ブロックを含む。
【背景技術】
【0002】
仮想現実のコンピュータ支援モデル化は、コンピュータ・システムにおいて、物理的オブジェクトのモデルを作成する、モデルを操作する、また、それ以外の形で、物理的オブジェクトのモデルを扱う作業である。
【0003】
第1の観点では、仮想現実のモデル化は、アイディアが現実世界で実際に実施される前に、アイディアを視覚化することを可能にするという点で、興味深い主題である。仮想現実モデルが、変更するのが十分に容易である場合、物理的オブジェクトを開発し、改良するプロセスにおいて、同一のプロセスが、現実世界で実行されなければならなかったとした状況と比べて、多くの時間を節約することができる。現実世界でオブジェクトに塗装を施す単純な作業は、容易に数時間かかる可能性がある一方で、コンピュータは、数ミリ秒内、または数秒内でモデルに新たな色を適用することができる。
【0004】
第2の観点では、仮想現実のモデル化は、現実世界に存在するオブジェクトのモデルを作成し、コンピュータを介して、モデルを視覚化して、操作することを可能にするという点で興味深い。このため、オブジェクトのモデルは、異なる目的で、例えば、高度なドキュメンテーションの目的で、格納することができる。
【0005】
コンピュータ支援仮想現実モデル化に関する莫大な量のアプリケーションが存在するが、特別なアプリケーションは、エンターテイメント向け、または教育向けに仮想現実モデル化を使用することである。
【0006】
物理的な組み立て玩具セットの様々なタイプのモデル化概念が、そうしたものとして知られている。特に、モジュールまたは半モジュールの概念を使用する概念が、非常に普及している。通常、それらの概念は、あらかじめ製造された要素のモジュールに従って、何らかの所定の形で互いに結合することができる、一組のあらかじめ製造された要素を提供する。そのような組み立て玩具セットの例が、LEGOという名称の下で入手できる、一組のプラスチック玩具組み立て要素である。
【0007】
コンピュータ上で3次元(3D)のオブジェクトまたはシーンの表現を操作する際、3Dのオブジェクトの位置付け、選択、または動きが、2次元で動作している入力デバイスを使用して、例えば、マウス・パッド上のコンピュータ・マウスの2次元(2D)の動きを使用して実行されることは、一般的な問題である。さらに、コンピュータの表示領域も2次元である。詳細には、コンピュータ・スクリーンの2D表示領域上のすべての選択された位置が、選択された2D位置に対応する2D表示領域上への射影を有する3D空間内の複数の位置に対応する。ユーザの意図と一致する可能性が高い位置の1つを特定することは、問題である。
【0008】
3Dコンピュータ・グラフィックスでオブジェクトを操作するのにより適しているコンピュータ・インタフェース・デバイスを開発する相当な取り組みが行われてきたが、そのようなツールは、依然、広く使用されておらず、特に、ホーム・エンターテイメント向け、教育向けなどに使用されるコンピュータ・システムに関連して広く使用されていない。
【0009】
仮想ビルディング・ブロックの位置付けが行われる既知の組み立てゲームは、通常、オブジェクトの動きおよび回転の自由度、またはオブジェクトを他のオブジェクトと結合する仕方の点で、制限されている。
【0010】
米国特許第6426745号が、3Dの動きが、動きを一度に1つの平面、または1つの方向に制限することによって実行され、それにより、3Dの動きを制限された動きの連続として、例えば、3D座標系のx方向の動き、y方向の動き、最後にz方向の動きの連続として実行する、マウスを使用して3Dグラフィックス・オブジェクトを操作する方法を説明する。
【0011】
慣用のユーザ・インタフェースを使用した、3Dシーンにおけるビルディング・ブロックの配置、および3D構造へのビルディング・ブロックの結合が、高いレベルの技能および訓練を要求する面倒なプロセスであることは、前述した先行技術のシステムの問題である。詳細には、子供およびティーンエージャのエンターテイメントおよび教育の文脈において、これは、問題である。というのは、子供は、しばしば、延々と続く操作プロセスを実行するのに十分な運動技能、または要求される忍耐力がまだ、発達していないからである。その結果、子供は、仮想組み立てゲームへの関心をすぐに失う可能性がある。
【特許文献1】米国特許第6426745号
【特許文献2】米国特許第6389375号
【非特許文献1】David H.Eberly,「3D Game Engine Design」,Morgan Kaufmann,2001
【発明の開示】
【課題を解決するための手段】
【0012】
以上、およびその他の問題が、2次元のカーソルの動きによって3次元仮想ビルディング・ブロック・モデルを操作する、コンピュータによって実施される方法によって解決され、仮想ビルディング・ブロック・モデルは、一組の結合規則に従って仮想ビルディング・ブロックを別の仮想ビルディング・ブロックと結合するためのいくつかの結合要素をそれぞれが含む複数の仮想ビルディング・ブロックを含み、方法は、
−3次元座標系において、いくつかの前記仮想ビルディング・ブロックを含む構造のデジタル表現を提供すること、
−前記構造の射影を表す2次元コンピュータ表示領域内のカーソルの動きにより、構造に結合されるべき第1の仮想ビルディング・ブロックの2次元射影の位置付けを行い、2次元位置座標をもたらすこと、
−2次元位置座標から、3次元座標系における第1の仮想ビルディング・ブロックのいくつかの3次元候補位置を算出すること、および
−結合規則、および所定の一組の位置評定(格付け)規則に基づき、前記候補位置の1つを選択すること、および
−選択された候補位置で、第1のビルディング・ブロックを前記構造に結合することを含む。
【0013】
このため、ユーザに直観的な形で、2D表示領域内の位置を対応する3D位置にするように分解して、ユーザが、3D仮想構造を操作するのを大幅により容易にする、3次元オブジェクトのデジタル表現を操作するための効率的な方法が提供される。ユーザは、単に、2Dスクリーン領域内で新たなビルディング・ブロックの位置付けを行い、これにより、2つの方向に沿って、その新たなビルディング・ブロックの座標を単に調整することができる。次に、2D配置と整合性のある複数の可能な3D位置の適切な1つが、いくつかの結合規則、および一組の位置評定規則に従って自動的に特定される。
【0014】
詳細には、所定の一組の位置評定規則に従って、いくつかの候補位置の1つを選択することにより、プロセスは、ユーザの意図と一致する可能性が高い3Dシーン内の位置に、ビルディング・ブロックを位置付けることをもたらす。
【0015】
結合要素に関する結合規則と矛盾する位置が拒否されることは、さらなる利点である。例えば、組み立てシステムにおいて、相当に様々な異なる結合要素、例えば、異なる形状および/またはサイズの突起部、ならびに突起部の対応するものと連結するための、異なるタイプの空隙が存在することが可能である。
【0016】
新たなビルディング・ブロックが、2D配置と整合性のある候補3D位置に配置されるものと想定して、新たなビルディング・ブロックの結合要素の近くの候補結合要素を選択し、その候補結合要素との有効な結合が可能であるかどうかを試験することにより、コンピュータ・スクリーン上の新たなビルディング・ブロックの2D配置が正しく分解されて、3Dモデル内の3D位置になる。さらに、一組の結合規則に従って、無効な結合を生じさせる、例えば、異なるタイプの空隙に対する突起部の結合を生じさせる2D−3D分解が、回避される。
【0017】
このため、仮想ビルディング・ブロックは、対応する現実世界の組み立てセットの物理的限界と整合性があり、それにより、仮想組み立てゲームの教育的価値が向上させられることは、利点である。詳細には、仮想組み立ては、同一タイプのビルディング・ブロックから物理的モデルを組み立てることにより、物理的モデルに後に移すことができる。
【0018】
方法が、動きおよび結合の大きい自由度を与えることは、さらなる利点である。例えば、ビルディング・ブロックは、任意の方向で位置付け、結合することができる。詳細には、水平面と垂直面の両方において、他のビルディング・ブロックとの結合が可能である。さらに、ビルディング・ブロックは、ビルディング・ブロックが、例えば、垂直軸または水平軸を中心に回転させられた場合でも、正しく位置付けが行われる。
【0019】
好ましくは、グラフィック表現の位置付けは、ポインティング・デバイスなどの適切な入力デバイスを介してユーザから受け取られた、制御コマンドによって制御される。例えば、位置付けは、「ドラッグ・アンド・ドロップ」操作、「クリック・ドラッグ・リリース」操作などの、標準のカーソル操作技術として実行されることが可能である。
【0020】
好ましい実施形態では、いくつかの3次元候補位置を算出する工程は、3次元座標系において、第1の仮想ビルディング・ブロックのいくつかの候補の向きを算出することをさらに含む。回転させられたビルディング・ブロックの候補位置を得るように第1のビルディング・ブロックを回転させることにより、ユーザによって制御された2D位置が分解されて、3D配置、および3次元の向きになり、これにより、単に、2Dスクリーン領域内の単一のカーソル制御に依拠して、3Dシーンにおける配置の6つすべての自由度が算出される。第1のビルディング・ブロックの回転が、ユーザによって選択された向きを中心とした所定の空間角度に制限される場合、ビルディング・ブロックを完全に反転させることなどの、回転を混同することが回避され、これにより、ユーザが、向きが分からなくなることが回避される。この実施形態では、ユーザが、仮想ビルディング・ブロックの向きを選択することを可能にすることにより、さらなる方向づけを実現することができる。
【0021】
好ましい実施形態では、方法は、
−第1の仮想ビルディング・ブロックの結合要素の射影のまわりの所定の近傍内に、2次元表示領域内で射影をそれぞれが有する、前記構造のいくつかの候補結合要素を特定すること、
−結合規則、および所定の一組の位置評定規則に基づき、前記候補結合要素の1つを選択すること、および
−第1の仮想ビルディング・ブロックと前記構造の間の結合が、その一組の結合規則に従って有効である場合、少なくとも選択された候補結合要素を介して、第1の仮想ビルディング・ブロックを構造と結合することをさらに含む。
【0022】
このため、候補位置を検出する計算上、効率的な方法が提供される。というのは、検出は、個々の結合要素の位置および特性だけに依拠するからである。さらに、ユーザの意図と一致する可能性が最も高い3D位置を選択するための効率的な選択機構も提供される。
【0023】
評定が、以下の評定規則の1つまたは複数を含む場合、結合要素の特に有利な評定が提供される。すなわち、
−仮想カメラ位置からの候補結合要素の距離に関して、候補結合要素を評定すること、
−現在の仮想カメラ位置から見えない候補結合要素を破棄すること、および
−第1の仮想ビルディング・ブロックの対応する結合要素の2次元射影までの、候補結合要素の2次元射影の距離に関して、候補結合要素を評定することである。
【0024】
詳細には、信頼できる3D位置付けは、評定規則が、仮想カメラ位置からの距離の組み合わせ、および第1の仮想ビルディング・ブロックの対応する結合要素の2次元射影までの、候補結合要素の2次元射影のそれぞれの距離に基づく場合、達せられる。
【0025】
好ましい実施形態では、前記構造のデジタル表現は、各仮想ビルディング・ブロックに関して、結合要素をそれぞれが表すいくつかの格子点をそれぞれが含む、仮想ビルディング・ブロックの表面の少なくとも1つに対応する、いくつかの規則的な格子を含む。これにより、ビルディング・ブロックが多数の結合要素を有し、異なるタイプの結合要素さえ有している場合でも、多数の異なるビルディング・ブロックの3D位置の正しい分解、および正しい相互結合を可能にする体系的な枠組みが提供される。
【0026】
好ましくは、第1の仮想ビルディング・ブロックの結合要素の射影のまわりの前記所定の近傍は、対応する規則的な格子の近隣の格子点間の距離に相当する、直径などの、直線寸法を有する。その結果、予測可能であり、ユーザにトランスペアレントな3D分解およびビルディング・ブロック結合をもたらす、正確できめ細かい、ユーザによって制御された配置が提供される。
さらなる好ましい諸実施形態は、従属請求項で開示する。
【0027】
本発明は、以上、および以下で説明する方法、データ処理システム、およびさらなる製品手段を含む、異なる形で実施することができ、それぞれが、最初に述べた方法に関連して説明した便益および利点の1つまたは複数をもたらし、それぞれが、最初に述べた方法に関連して説明した、好ましい諸実施形態に対応する、1つまたは複数の好ましい諸実施形態を有する。
【0028】
以上、および以下で説明する方法の特徴は、ソフトウェアで実施することができ、データ処理システム、またはコンピュータ実行可能命令の実行によって生じさせられる、他の処理手段において実行されることが可能であることに留意されたい。命令は、記憶媒体から、またはコンピュータ網を介して別のコンピュータから、RAMなどのメモリの中に読み込まれるプログラム・コード手段であることが可能である。代替として、説明する特徴は、ソフトウェアの代わりに、またはソフトウェアとの組み合わせで、ハードワイヤド回路によって実施してもよい。
【0029】
本発明は、プログラムがコンピュータ上で実行された際、以上、および以下に説明する方法のすべての工程を実行するためのプログラム・コード手段を含むコンピュータ・プログラムにさらに関する。コンピュータ・プログラムは、コンピュータ可読記憶媒体、搬送波などとして実現されたデータ信号などとして実現されることが可能である。
【0030】
本発明は、コンピュータ・プログラムがコンピュータ上で実行された際、以上、および以下に説明する方法を実行するための、コンピュータ可読媒体上に格納されたプログラム・コード手段を含むコンピュータ・プログラム製品にさらに関する。
本発明を、好ましい実施形態に関連し、図面を参照して、以下により完全に説明する。
【発明を実施するための最良の形態】
【0031】
図1a〜図1bは、幾何オブジェクトのコンピュータ可読モデルを生成し、操作するためのデータ処理システムを示す。
図1aは、コンピュータ・システムの実施例の概略図を示す。コンピュータ・システムは、ディスプレイ120、キーボード121、およびコンピュータ・マウス122、および/またはタッチパッド、トラックボール、ライトペン、タッチスクリーンなどの、別のポインティング・デバイスを含む、適切にプログラミングされたコンピュータ101、例えば、パーソナル・コンピュータを含む。
【0032】
101として示されたコンピュータ・システムは、仮想ビルディング・ブロック・モデルの設計、格納、操作、および共有を容易にするように適合されている。コンピュータ・システム101は、スタンドアロン・システムとして、またはクライアント/サーバ・システムにおけるクライアントとして使用することができる。
【0033】
図1bは、コンピュータ可読仮想ビルディング・ブロック・モデルを生成し、操作するためのデータ処理システムのブロック図を示す。コンピュータ101は、一部は揮発性メモリ手段として、一部は不揮発性メモリ手段として、例えば、ランダム・アクセス・メモリ(RAM)およびハードディスクとして、実装することができるメモリ102を含む。メモリは、中央処理装置103によってそれぞれ実行可能な、モデル・コード・インタープリタ107、モデル・コード・ジェネレータ108、UIイベント・ハンドラ109、およびモデル化アプリケーション110を格納している。さらに、メモリは、モデル・データ111、すなわち、物理的オブジェクトのデジタル表現を表す一組のデータ構造、例えば、仮想ビルディング・ブロック・オブジェクトも格納している。仮想ビルディング・モデルを格納するためのデータ・フォーマットの実施例は、米国特許第6389375号で開示している。
【0034】
コード・インタープリタ107は、モデルを定義するコード、すなわち、モデルのビルディング・ブロックのデータ構造を表現するコードを読み取り、解釈するように適合されている。コード・インタープリタの好ましい実施形態は、モデルを読み取り、そのようなモデルを、コンピュータ・ディスプレイ上で提示するための既知のグラフィック・フォーマットに変換するように適合されている。
【0035】
UIイベント・ハンドラ109は、ユーザ・インタフェースとのユーザの対話を、コード・ジェネレータ108が認識できる、適切なユーザ・コマンドに変換するように適合されている。一組の可能で認識可能なコマンドは、以下を含む。すなわち、要素のライブラリからビルディング・ブロックを獲得する、ビルディング・ブロックを別のビルディング・ブロックに結合されるように配置する、ビルディング・ブロックを分離する、ビルディング・ブロックを破棄する、例えば、回転を開始することにより、ビルディング・ブロック、一群のビルディング・ブロックなどを操作する、その他である。各コマンドとともに、一組のそれぞれのパラメータ、例えば、ディスプレイ座標系に対するカーソル座標、ビルディング・ブロックのタイプなどが関連していることが可能である。
【0036】
コード・ジェネレータ108は、ユーザのコマンドに応答して、モデルのデータ構造を変更するように適合されている。同時実行または後続のタスクとして、コード・インタープリタが、コード・ジェネレータの結果を提示するために実行されることが可能である。
モデル化アプリケーション110は、メモリ、ファイル、ユーザ・インタフェースなどを制御するように適合されている。
【0037】
ユーザ105は、好ましくは、コンピュータ・スクリーン上に表示されたグラフィカル・ユーザ・インタフェースを含む、ユーザ・インタフェース106、ならびにキーボードおよび/またはポインティング・デバイスなどの1つまたは複数の入力デバイスを使用して、コンピュータ・システム101と対話することができる。
【0038】
モデル、幾何学的記述、またはその他のデータの読み込み、保存、または通信を行うため、コンピュータ・システムは、入出力ユニット(I/O)104を含む。入出力ユニットは、異なるタイプの記憶媒体、および異なるタイプのコンピュータ網、例えば、インターネットに対するインタフェースとして使用することができる。さらに、入出力ユニット(I/O)104は、他のユーザと、例えば、インタラクティブな形でモデルを交換するために使用することもできる。
【0039】
メモリ102、中央処理装置(CPU)103、ユーザ・インタフェース(UI)106、および入出力ユニット104の間のデータ交換は、データ・バス112を介して達せられる。
【0040】
図2は、仮想ビルディング・ブロック・システムのグラフィカル・ユーザ・インタフェースを示す。
ユーザ・インタフェースは、ベース・プレート202、ならびにいくつかの互いに結合された仮想ビルディング・ブロック204を含む3D構造203を有する3Dシーンのビューを示す、表示領域201を含む。シーンは、所定の視点から示されている。以下に、視点は、表示領域内に示されたグラフィック・ピクチャに対応する現実の構造のピクチャをカメラが記録するであろう位置に対応するため、(仮想)カメラ位置とも呼ぶ。
【0041】
ビルディング・ブロック204のそれぞれは、そのビルディング・ブロックを選択するように、例えば、コンピュータ・マウスを使用してクリックすることにより、アクティブにすることができる、グラフィカル・ユーザ・インタフェースのアクティブな要素に対応する。一実施形態では、選択された仮想ビルディング・ブロックは、外見が変化する。例えば、選択されたビルディング・ブロックは、色、テクスチャなどが変化することが可能であり、つまり、ビルディング・ブロックは、選択されたビルディング・ブロックのまわりにバウンディング・ボックスを示すことなどにより、強調表示されることが可能である。ユーザは、選択されたビルディング・ブロックを操作する、例えば、ブロックの特性を変えること、例えば、ブロックの色を変えること、ブロックを削除すること、コピーおよび貼り付けの操作を実行すること、ブロックを異なる位置までドラッグすることなどを行うことができる。
【0042】
ユーザ・インタフェースは、ユーザが選択することができる、いくつかの異なるビルディング・ブロック206を含む、パレット・パネル205をさらに含む。例えば、ユーザは、マウスを使用して、ビルディング・ブロック206の1つの上でクリックして、そのビルディング・ブロックを選択し、選択されたビルディング・ブロックを表示領域210の中にドラッグして、そのブロックを構造203に、またはベース・プレート202に結合することができる。
【0043】
ユーザ・インタフェースは、様々な機能またはツールをアクティブにするための、いくつかのメニュー・ボタン208を含む、メニュー・バー207をさらに含む。例えば、ツール・バーは、仮想カメラ位置を変更して、ユーザが、異なる方向から組み立て領域を見ることができるようにするための、回転ツールを含むことが可能である。メニュー・バーは、3Dシーンにズームインするため、および3Dシーンからズームアウトするためのズーム・ツールをさらに含むことが可能である。ツールのその他の実施例には、異なる一組のビルディング・ブロックをそれぞれが含む、異なるパレット205を選択するためのパレット・ツール、構造の諸部分に着色を行うための着色ツール、ビルディング・ブロックを消去するための消しゴム・ツールなどが含まれる。
【0044】
メニュー・バー207は、モデルを保存するための機能、以前に保存済みのモデルを開くための機能、モデルのイメージを印刷するための機能、ヘルプ機能などの、標準の諸機能をさらに提供することが可能である。
【0045】
図3a〜図3dは、ビルディング・ブロック、ならびにビルディング・ブロックの結合要素の実施例を示す。
図3aは、ビルディング・ブロック301の透視図を示す。ビルディング・ブロック301は、別のビルディング・ブロックの対応する穴、例えば、別のビルディング・ブロックの底面上の穴と連結することが可能な、8つのノブ303a〜303hを備えた、上面302を有する。相応して、ビルディング・ブロック301は、対応する穴を有する底面(図示せず)を含む。ビルディング・ブロック301は、結合要素を全く含まない側面304をさらに含む。
【0046】
一般に、結合要素は、異なるクラスの結合要素に、例えば、コネクタ、レセプタ、および混合要素にグループ化することができる。コネクタは、別のビルディング・ブロックのレセプタによって受けられて、ビルディング・ブロック間の結合を提供することが可能な結合要素である。例えば、コネクタは、別の要素の部分の間、穴の中などにはまることが可能である。レセプタは、別のビルディング・ブロックのコネクタを受けることができる結合要素である。混合要素は、他方のビルディング・ブロックの協働する結合要素のタイプに通常、依存して、レセプタとしても、コネクタとしても機能することが可能な部品である。
【0047】
図3bは、下から見たビルディング・ブロック310の透視図を示す。ビルディング・ブロック310は、長方形でない上面および底面を有する。底面は、他の1つまたは複数のビルディング・ブロック、例えば、図3aのビルディング・ブロック301の対応するノブを受けるための、穴311、312、および313を含む。穴は、端部314、2次ピン315、ならびにコーナ316および317によって定義される。このため、以上の要素群のすべての要素の特性により、ビルディング・ブロック310の底面の結合特性が決まる。
【0048】
図3cは、ビルディング・ブロック321に結合されて、複合ビルディング・ブロックを形成するビルディング・ブロック320を示す。ビルディング・ブロック320は、別のビルディング・ブロックの対応する穴にはまるノブ322を上面に含む。しかし、図3cに示すとおり、他のタイプの結合も達することができる。すなわち、ノブの間の間隙323が、ブロック321の側面324などの、他のコネクタに対するレセプタとして機能する。物理的ビルディング・ブロックの場合、この特性は、間隙の寸法、およびビルディング・ブロック321の寸法、すなわち、ブロック321の側部の幅325によって決まる。しかし、デジタル表現では、以上の特性は、以下により詳細に説明するとおり、規則的な格子上の結合点の対応する属性によって表される。
【0049】
図3dは、2つのビルディング・ブロック331および332を示す。ビルディング・ブロック331は、上面に4つのノブ333を有し、底面(図示せず)に対応する4つの穴を有するれんがである。れんが332は、互いに直角でない平面を含む面を有するビルディング・ブロックの実施例である。具体的には、ビルディング・ブロック332は、傾斜面334を有する。図3dに示すとおり、現在の位置では、ビルディング・ブロック331とビルディング・ブロック332は結合しない。というのは、図示する位置では、互いに連結する結合要素が全く存在しないからである。
以上のビルディング・ブロックは、単に、可能なビルディング・ブロックの実施例の役割をするものと理解されたい。
【0050】
図4a〜図4cは、物理的ビルディング・ブロックのデジタル表現の実施形態を示す。物理的ビルディング・ブロックのデジタル表現は、コンピュータのメモリの中に格納されたデータ構造を含み、ただし、デジタル表現は、ビルディング・ブロックの特性を表す。この実施形態によれば、ビルディング・ブロックの結合要素は、性質、形状、結合特性などが異なる可能性がある。しかし、ビルディング・ブロック上の結合要素の位置は、一組の規則に従う。
【0051】
ビルディング・ブロックは、関連するいくつかの平面、例えば、ビルディング・ブロックのバウンディング・ボックスの表面によって定義される平面を有する。ビルディング・ブロックの結合要素は、各結合要素が、関連する軸を有するように、それらの平面に配置される。同一平面におけるすべての結合要素の軸は、近隣の格子点の間に既定の距離がある、規則的な格子の、例えば、直交格子のそれぞれの格子点、いわゆるノットと一致する。好ましくは、ビルディング・ブロックに関連する平面は、例えば、ビルディング・ブロックの上面と底面に対応する一組の水平面、ならびにビルディング・ブロックの側面に対応する、いくつかの垂直面を定義することにより、ペアで互いに平行である。好ましくは、近隣の格子点の間の距離は、すべての水平面で同一である。一実施形態では、垂直面における近隣の格子点間の距離は、水平面における近隣の格子点間の距離とは異なる。
【0052】
図4a〜図4bは、データ構造の実施形態が、どのように図3aのビルディング・ブロック301の特性を記述するかを概略で示す。図4a〜図4bでは、ビルディング・ブロック301は、それぞれ上面および底面の対応する直交格子405および406を有するのが示されている。図4aが、ビルディング・ブロックの透視図を示すのに対し、図4bは、ビルディング・ブロックの上面図を示す。図4a〜4bで、ビルディング・ブロック301の側面上の格子は、図示されていない。ビルディング・ブロック、例えば、ビルディング・ブロック301の一部の実施例は、面のいくつか、例えば、側面上には、結合要素を全く有さない。ビルディング・ブロックの他の実施例は、すべての側面上に結合要素を有する。
【0053】
直交格子は、結合格子とも呼ばれ、格子点は、結合点とも呼ばれる。結合点は、円407a〜407kで典型的に示される円で例示される。このため、結合点407a〜407hはそれぞれ、ノブ303a〜303hに対応する。側面304は、結合要素を全く有さないので、側面304に関して結合格子は、全く定義される必要がない。代替の実施形態では、無効なレセプタだけを含む結合格子が、すなわち、他の結合要素を結合することも、はねのけることもしないレセプタだけが、側面に関して定義されてもよい。
【0054】
ビルディング・ブロックのデジタル表現は、内部右手座標系408に関して記述される。座標系の選択、特に、座標系の原点の位置、および軸の方向は、任意の適切な慣行に従って選択してよいものと理解されたい。このため、対応するデータ構造の中で、3Dシーンにおけるビルディング・ブロックの位置および向きは、外部座標系に対する、例えば、別のビルディング・ブロックの座標系、またはグローバル「世界」座標系に対する座標系408の原点の座標、および軸の向きによって表されることが可能である。
【0055】
図4aから見て取ることができるとおり、規則的な格子の中に配置された結合点によるビルディング・ブロックの結合要素の表現により、物理的ビルディング・ブロック上の結合要素の物理的配置に、ある制約が課せられる。格子405は、ノブ303が延びる、ビルディング・ブロックの上面の平面に配置されている。
【0056】
図4a〜図4bの実施例では、格子点は、正方格子の中に配置され、ただし、各正方形は、任意の長さ単位(LU)の5×5単位の寸法を有する。このため、この形状では、結合要素も、対応する正方格子上に配置され、ビルディング・ブロックの平面における結合要素間の距離は、10LUの倍数である。図4の実施例では、ビルディング・ブロックの上面および下面は、長方形であり、20LU×40LUの寸法を有し、近隣の結合要素は、10LUだけ離間している。他方、垂直方向では、結合要素は、12LUだけ離間している。
【0057】
結合点の位置は、ビルディング・ブロックの内部座標系408に対して定義される。各格子点は、結合要素が、対応する結合要素といずれの方向で連結するかを示す、関連する方向をさらに有する。格子点の方向は、平面に直角に、バウンディング・ボックスから出るようにポイントし、すなわち、図4bで、図面の平面から出るようにポイントする。
【0058】
一実施形態では、結合点の格子を表すデータ構造は、各結合点に関して、以下を含む。すなわち、座標系408に対する結合点の座標、結合要素の方向、および結合タイプである。
【0059】
一実施形態では、ビルディング・ブロックを表すデータ構造は、ビルディング・ブロックIDと、ビルディング・ブロックのバウンディング・ボックスの位置、向き、および寸法を記述するデータ構造と、それぞれの格子、および対応する結合点を記述する、いくつかのデータ構造とを含む。結合点の格子を表すデータ構造は、以下を含む。すなわち、
−ローカル格子座標系の原点として使用される格子点の座標系408に対する座標。格子405の実施例では、格子点307iが、LU単位で、座標P=(−5,12,−15)を有する原点として使用される。
−結合要素の方向。格子405の実施例では、これは、(0,1,0)であり、すなわち、座標系408のy軸の方向である。
−x方向およびz方向における格子点の数。格子405の実施例では、それぞれ、n=9およびn=5である。
−対応する結合点の結合特性をそれぞれが含む、n×nデータ構造のアレイ。各格子点のデータ構造は、結合点の結合タイプ、例えば、「穴」、「端部」、「ノブ」などを含む。
一実施形態では、各結合点は、結合点のまわりの近傍を定義する、関連するボリューム要素をさらに有する。
【0060】
図4cは、結合点のまわりのボリューム要素の実施例を示す。一実施形態では、各結合点には、中心が結合点である球体が関連している。図4cで、これが、上記のビルディング・ブロック301の結合格子405の結合点407gおよび407jによって典型的に示される。結合点407gおよび407jに関して、対応する球体410gおよび410jがそれぞれ、示されている。球体は、隣接する結合点間の距離の半分に、例えば、図4a〜図4bの実施例では、2.5LUに等しい半径を有する。代替の諸実施形態では、球体は、より小さくても、より大きくてもよい、すなわち、球体は、交差しても、隣接する球体の球体間に間隙があってもよく、これにより、小さい間違った配置に対する、位置付け方法の感度の制御が可能になるものと理解されたい。
【0061】
異なる種類のボリューム要素も使用することができることを、さらに理解されたい。例えば、ボリューム要素は、結合点407cのまわりの円筒410cで典型的に示されるとおり、結合要素のまわりの円筒であってもよい。この実施例では、円筒は、2.5LUの半径、および5LUの高さを有する。ボリューム要素のさらなる実施例には、立方体、楕円体などが含まれる。
【0062】
一部の実施形態では、異なるタイプの結合要素が、異なるボリューム要素に、例えば、異なるサイズの、例えば、異なる半径および/または異なる高さのボリューム要素に、あるいは異なる幾何形状のボリューム要素にさえ関連することが可能であることを、さらに理解されたい。そのような実施形態では、結合点を表すデータ構造は、関連するボリューム要素のタイプおよび/または寸法を明らかにする、1つまたは複数のパラメータをさらに含むことが可能である。
【0063】
ディスプレイ上で、例えば、コンピュータ・スクリーン上でビルディング・ブロックをグラフィックスで表現する際、バウンディング・ボリューム、座標系、ボリューム要素、および格子は、示される必要がないものと理解されたい。好ましくは、グラフィック表現は、ビルディング・ブロック自体のグラフィックスのレンダリングだけを含む。
以下に、新たな仮想ビルディング・ブロックを、3D構造を含むシーンの中に配置するプロセスをより詳細に説明する。図5、ならびに図6a〜図6bを参照する。
【0064】
図5は、3Dシーンの中でビルディング・ブロックを位置付け、そのシーンの中に既に存在するビルディング・ブロックの構造に、そのブロックを結合するプロセスの流れ図を示す。
【0065】
工程501で、新たなビルディング・ブロックが、例えば、パレット上でビルディング・ブロックを選択し、ビルディング・ブロックのグラフィック表現を、マウスの動きに従って、2D表示領域の中のユーザによって選択された位置までドラッグすることによって、シーンの中に配置され、ただし、2D表示領域は、3Dシーンの2D射影を表す。一実施形態では、マウスの動きが、少なくとも所定の時間にわたって、例えば、GUIイベント・ハンドラによって検出される時間にわたって停止すると、プロセスが、工程503に進む。
【0066】
図6a〜図6bは、以前に配置済みのビルディング・ブロックの上に新たなビルディング・ブロックを位置付けることの実施例を示す。新たなビルディング・ブロック601は、前述したとおり、結合格子の、全体的に603として示す、いくつかの結合点をそれぞれが含む上面621および底面622を有する、バウンディング・ボックス620として示される。同様に、以前に配置済みのビルディング・ブロック602も、全体的に604として示す、いくつかの結合点を有する。ビルディング・ブロック601および602の側面の結合格子および結合点は、図6aには示していない。この実施例では、3Dシーンが、1つだけの以前に配置済みのビルディング・ブロック602を含む。
【0067】
図6aは、2Dディスプレイ座標系630に対応する、コンピュータ・スクリーンの2D表示領域600上で見られる、ビルディング・ブロック601および602の2D射影を示す。
【0068】
図6bは、表示領域600内の2D射影と、3D座標系640におけるビルディング・ブロック601および602の3D位置の間の関係を示す。新たなビルディング・ブロック601が、スクリーン600上に配置されると、2D座標系630におけるブロック601の座標だけが算出され、射影601aをもたらすいずれの3D位置も、破線の射影線631で示される、その射影と整合性がある。このため、スクリーン上へのビルディング・ブロックのユーザによって制御された配置は、表示領域に直交する第3の次元についての情報をもたらさない。図6bで、射影は、平行射影であり、すなわち、射影線631が、射影平面600から無限遠の仮想カメラ位置632に対応して、互いに平行である。
【0069】
図5を再び参照すると、工程503で、プロセスは、新たなビルディング・ブロックの各結合点に関して、その新たなビルディング・ブロックのその結合点の射影の所定の近傍内に2D射影を有する、シーンの中に既に存在するいずれかのビルディング・ブロックに(または、ベース・プレートに)属する結合点が存在するかどうかを判定する。一実施形態では、新たなビルディング・ブロックの各結合要素に関して、表示領域内の結合要素のまわりの円が算出される。同様に、シーンの中に既に存在する結合要素の対応する円も算出される。それらの円のいずれかが、新たなビルディング・ブロックの結合要素の円と重なり合う場合、対応する結合要素が、候補結合要素として選択される。
【0070】
図6aで、上記の工程が、新たなビルディング・ブロック601の結合点605に関して示されている。符号606は、結合要素605のまわりの円を示す。同様に、符号608、610、および612は、円605と重なり合うビルディング・ブロックの結合要素607、609、および611のまわりの円をそれぞれ示す。このため、この実施例では、結合要素607、609、および611が、候補結合要素として特定される。この実施例では、さらなる結合要素が選択されるものと理解されたい。しかし、それらの結合要素の円は、図6bに示していない。
【0071】
円606、608、610、および612は、結合要素605、607、609、および611のまわりの対応する球体の射影にそれぞれ対応することに留意されたい。代替の諸実施形態では、いずれの結合要素が、新たなビルディング・ブロックの結合要素の近傍内に射影を有するかを判定するために、異なるタイプのボリューム要素の射影を使用してもよいものと理解されたい。ボリューム要素のさらなる実施例は、上記に図4cに関連して説明した。球体を使用する場合、対応する射影の特定は、特に効率的である。というのは、球体の射影は、視点に関わらず、常に円であるからである。
好ましい実施形態では、円の直径は、格子のそれぞれの中の近隣の結合点間の距離と一致する。
【0072】
一部の実施形態では、候補結合要素の探索は、シーンの中に既に存在するビルディング・ブロックの結合要素のサブセットに限定されて、探索を完了するのに必要な時間が短縮され、候補結合要素の結果リストのサイズが縮小されることが可能であるものとさらに理解されたい。例えば、探索は、別の結合要素に既に結合されてはいない結合要素に限定されてもよい。別の実施形態では、探索は、適切な結合特性を有する結合要素に、すなわち、以下により詳細に説明するとおり、新たなビルディング・ブロックの結合要素に実際に結合することができる結合要素に限定される。
【0073】
工程503は、シーンの中に既に存在するビルディング・ブロックの候補結合要素のリスト520をもたらす。その結果、候補結合要素の3D座標が分かる。一実施形態では、リスト520の中の各エントリは、シーンの中に既に存在するビルディング・ブロックの候補結合点の3D座標、対応するビルディング・ブロックを明らかにする識別子、新たなビルディング・ブロックの識別子、および/または新たなビルディング・ブロックの対応する結合要素を明らかにする座標を含む。
【0074】
工程505で、候補結合要素のリスト520が、所定の一組の評定規則に従って候補結合要素を評定することによって並べ替えられる。
【0075】
一実施形態では、候補結合要素は、仮想カメラからの要素の距離に従って、すなわち、表示領域600に対応する射影平面からの要素の相対的距離に従って評定され、候補位置とユーザによって選択された配置の2D距離に従って、すなわち、新たなビルディング・ブロックのグラフィック表現の位置からの、候補位置の表示領域内における射影のずれに従って評定される。例えば、候補位置がカメラ位置により近い結合要素は、より高く評定されること、すなわち、ユーザが意図する位置と一致する可能性がより高いことが可能である。同様に、3Dでユーザによって選択された位置からのずれが大きい候補結合点は、より低く評定されることが可能である。
【0076】
一部の実施形態では、順序付けは、以上の条件に加えて、または以上の条件の代替として、他の基準に従って実行される。そのような位置評定規則の実施例には、以下の1つまたは複数が含まれることが可能である。すなわち、
−カメラ位置からの相対的距離
−ユーザによって選択された2D位置からのずれ
−候補結合要素との結合を可能にするための、ビルディング・ブロックの必要な回転度
−可視性試験、例えば、候補結合要素が、現在のカメラ位置から見えるかどうか。一部の実施形態では、現在のカメラ位置から見えない候補結合要素は、リストから破棄される。
【0077】
一部の実施形態では、例えば、以上の諸条件が寄与する費用関数を、オプションとして、それぞれの重み付け係数を伴って定義することにより、以上の基準のいくつか、またはすべてを組み合わせで使用してもよい。他の諸実施形態では、評定はまず、以上の規則の1つに従って、例えば、必要な2D移動に従って実行される。2つ以上の候補結合要素が、同一の評定を有する場合、さらなる規則、例えば、カメラからの相対的距離、必要な回転などを使用して、それらの要素を区別することができる。
【0078】
このため、特定の候補結合要素の評定が達せられ、順序付けられたリスト520は、以上の評定による順序付けられたリストに相当する。その時点で、順序付けられたリスト520は、以上の位置評定規則に基づいて破棄されていない、すべての候補結合点を含む。
【0079】
工程508で、順序付けられたリスト520が空であるかどうかが判定される。リストが空である、すなわち、新たなビルディング・ブロックの結合要素に対して、十分に小さい射影された距離を有する結合要素が全く存在しなかった場合、3D配置は、拒否される(工程509)、すなわち、プロセスは、終了し、それ以外の場合、プロセスは、工程510に進む。
【0080】
プロセスが、3D配置を拒否することで終了した場合(工程509)、そのことは、好ましくは、例えば、視覚的指示を与えることにより、ユーザに示される。例えば、マウスの動きに応答して動かされるビルディング・ブロックのグラフィック表現が、ビルディング・ブロックがまだ配置されていないことを示す形態で示されてもよい。3D配置が見出された場合にだけ、グラフィック表現は切り替わり、配置が完了したことをユーザに示す。例えば、3D配置がうまく完了していない限り、ビルディング・ブロックは、トランスペアレントに、かつ/または可視のバウンディング・ボックスとともに、かつ/または点滅して、かつ/または他の任意の適切な形態で示されることが可能である。
【0081】
工程510で、最高の評定を有する候補結合要素が選択され、新たなビルディング・ブロックが、選択された候補結合点の座標と、その新たなビルディング・ブロックの対応する結合点の座標が一致するように、3D座標系において配置される。このため、最高の評定による候補位置が選択される。この配置は、暫定的であるに過ぎない、すなわち、コンピュータ・スクリーン上にはまだ表示されないものと理解されたい。
【0082】
工程511で、プロセスは、結合が、所定の一組の結合規則に従っているかどうか、例えば、新たなビルディング・ブロックのそれら、およびその他の結合点における結合要素が、その新たなビルディング・ブロックが結合されるべきビルディング・ブロックの結合要素との結合を可能にするかどうかを検証する。実施形態を以下により詳細に説明する、この試験は、結合性検証とも呼ぶ。好ましい実施形態では、プロセスは、新たなビルディング・ブロックが、候補結合要素に結合された場合、カメラ位置から見えるか、または既存の構造によって完全に視界から遮られるかをさらに検証する。結合が拒否された、またはビルディング・ブロックが見えない場合、暫定的な3D配置は拒否され、プロセスは、工程512に進み、そうではなく、プロセスが結合を検証することに成功した場合、プロセスは、工程513に進む。
【0083】
工程512で、結合が拒否された候補結合点が、順序リスト520から除去され、プロセスは、工程508に戻る、すなわち、次の候補結合点が、存在する場合、選択される。
【0084】
工程513で、すなわち、結合試験が合格であった場合、3D配置は、受け入れられ、すなわち、構造のグラフィック表現が、受け入れられた位置に新たなビルディング・ブロックを「パチンとはめ込み」、ビルディング・ブロックの外見を変更することによって更新される。一実施形態では、ユーザは、例えば、ビルディング・ブロック上でマウスを使用してクリックして、配置プロセスを完了させることにより、位置を受け入れることができる。ユーザは、ビルディング・ブロックを別の位置に配置することを所望する場合、単に、ビルディング上でクリックすることなしに、マウスを動かして、元の外見に戻るように、新たなビルディング・ブロックの外見を変更し、ビルディング・ブロックを2D表示領域の別の位置に移すことができる。
【0085】
プロセスは、例えば、図4a〜図4bに関連して説明したとおり、3Dシーン内に配置されたビルディング・ブロックをそれぞれが表す、一組のデータ構造を保持する。新たなビルディング・ブロックの3D配置を受け入れる際、プロセスは、その新たなビルディング・ブロックに対応するデータ構造の新たなインスタンスを、その一組のデータ構造の一部として追加することにより、その一組のデータ構造を更新する。
【0086】
図7a〜図7bは、スクリーン上のグラフィック表現のわずかに異なる2D配置からもたらされる、図6a〜図6bの新たなビルディング・ブロックの2つの位置を示す。図7aでは、ビルディング・ブロック701が、構造702の上に配置される。他方、図7bでは、ビルディング・ブロック701は、構造702の背後のベース・プレート703上に位置付けられる。このため、新たなビルディング・ブロックの2D位置の小さな調整により、ユーザが、3Dシーン内の2つのいくぶん異なる配置を差別化することができるようになる。図7a〜図7bは、構造702のビルディング・ブロック群704と比較した、新たなビルディング・ブロック701がユーザによって操作されている間の、ブロック701の異なる外見をさらに示す。
【0087】
図8は、暫定的な3D配置における新たなビルディング・ブロックの結合性検証を行うサブプロセス511の実施形態の流れ図を示す。このため、プロセスは、新たなビルディング・ブロックが、既存の構造の少なくとも1つの他のビルディング・ブロックに結合されることが可能であるかどうかを検証する。他のビルディング・ブロックは、第2のビルディング・ブロックと呼ぶ。
【0088】
初期工程801で、プロセスは、衝突検出および可視性試験、すなわち、新たなビルディング・ブロックが、シーンの中に既に存在する他のいずれかのビルディング・ブロックと交差するかどうかの検出、および新たなビルディングが、既存の構造によって完全に視界から遮られ、現在のカメラ位置から見えなくなるかどうかについての試験を実行する。衝突検出は、任意の適切な衝突検出方法によって、好ましくは、ビルディング・ブロックのバウンディング・ボリュームに基づく衝突検出方法によって実行されることが可能である。そのようなアルゴリズムの実施例は、例えば、David H.Eberly,「3D Game Engine Design」,Morgan Kaufmann,2001において開示されている。同様に、可視性試験も、当技術分野で知られている任意の適切な方法によって実行されることが可能である。無効な交差が検出された、すなわち、ビルディング・ブロックのバウンディング・ボリュームが交差する場合、またはビルディング・ブロックが、現在のカメラ位置から見えない場合、その位置および向きにおけるビルディング・ブロックの配置が拒否され、そうではなく、ビルディング・ブロックが、少なくとも部分的に可視であり、有効な交差が検出された場合、すなわち、バウンディング・ボックスの表面の少なくとも一部が交差するが、バウンディング・ボックスのボリュームは交差しない場合、プロセスは、工程802に進む。
【0089】
工程802で、バウンディング・ボックスの表面の検出された交差に属する、新たなビルディング・ブロック、および第2のビルディング・ブロックのすべての結合点が特定される。既に結合されてはいない結合点だけが、考慮される必要があり、それらの結合点を、関係のある結合点と呼ぶ。
【0090】
工程803で、新たなビルディング・ブロックの第1の関係のある結合点が、例えば、任意に選択された結合点が選択される。
工程804で、新たなビルディング・ブロックの選択された結合点に関して、プロセスは、選択された結合点と同一の座標を有する、第2のビルディング・ブロックの関係のある結合点が存在するかどうかを調べる。一実施形態では、ビルディング・ブロックは、別個のボリューム基準格子の中に入れられ、すべての座標は、任意の長さ単位の倍数であり、座標の厳密な一致が要求されることが可能である。連続的な、または準連続的な基準座標系において、格子点が、所定の限度内で一致することを要求されることも可能である。
そのような一致する結合点が全く見出されない場合、プロセスは、工程814に進む。
【0091】
工程814で、選択された結合点の所定の近傍内に、他の関係のある結合点が存在するかどうかが検出される。例えば、2つの隣接する結合要素間の距離が10LUである実施形態において、所定の近傍は、(x,y,z)における選択された結合点のまわりの立方体(x±5LU,y±5LU,z±5LU)となるように選択することができる。選択された結合点の所定の近傍内に、他の関係のある結合点が存在する場合、その2つのビルディング・ブロックの結合は拒否され(工程811)、アルゴリズムは、終了する。このため、この実施形態における結合点が、規則的な格子上に配置された場合、ビルディング・ブロックの無効な配置が、効率的に検出されることが可能である。すなわち、第2のビルディング・ブロックの関係のある結合点との不一致が、新たなビルディング・ブロックの関係のある結合点の1つに関して見出された場合、新たなビルディング・ブロックの残りの結合点は、調べられる必要がなく、検出プロセスの速度が高められる。
工程814で、競合する関係のある結合点が全く見出されなかった場合、プロセスは、工程809に進む。
【0092】
工程804で、一致する結合点が見出された場合、プロセスは、工程805に進み、選択された結合点の所定の近傍内に、例えば、前述した、(x,y,z)における選択された結合点のまわりの立方体(x±5LU,y±5LU,z±5LU)内に、他の関係のある結合点が存在するかどうかが検出される。別の結合点が、所定の近傍内で見出された場合、その位置は、拒否され(工程811)、見出されなかった場合、プロセスは、工程806に進む。
代替の諸実施形態では、以上の制限は、望ましくない可能性がある。さらに、さらなる別の実施形態では、以上の制限は、ある結合タイプに限定されることが可能である。
【0093】
工程806で、プロセスは、選択された結合点と検出された一致する結合点が、反対の方向を有するかどうか、すなわち、それらの結合点の関連する軸が、共通の線上にあるが、反対の向きであるかどうかを検出する。このため、結合要素が連結するのに適した相対的な向きに位置付けられた結合要素だけが、受け入れられる。
【0094】
代替の諸実施形態では、この制限は、例えば、結合要素が、ある範囲の向きを受け入れる諸実施形態において、ある範囲の向きを受け入れることにより、緩和されてもよいことに留意されたい。
結合点の相対的方向が受け入れられた場合、プロセスは、工程807に進み、受け入れられなかった場合、その位置は、拒否される(工程811)。
【0095】
工程807で、選択された結合点の結合タイプと、対応する検出された、一致する結合点の結合タイプが比較される。一実施形態では、各結合点は、関連する結合タイプ、例えば、「ノブ」、「穴」、「端部」、「コーナ」、「ヒンジ」、「ピン」、「小型ピン」などを有する。プロセスは、メモリの中に格納された結合テーブル813へのアクセスを有する。結合テーブルは、結合タイプの特定のペアが、2つのビルディング・ブロックの結合にどのように影響を与えるかを示す、結合タイプのすべてのペアに関する結合性タイプを含む。例えば、結合タイプのすべてのペアは、「真」、「偽」、または「無効」という結合性タイプに関連することが可能である。「真」という結合性タイプは、結合が有効であることを示し、対応する結合要素は、2つのビルディング・ブロックを結合するように連結し、例えば、ノブが、対応する穴と連結する。「偽」という結合性タイプは、結合が許されないことを示す。例えば、ノブとノブの間の結合は、可能ではない。すなわち、ノブとノブは、結合をもたらすように連結しないだけでなく、妨げになり/衝突さえして、結合を不可能にする。最後に、「無効」という結合性タイプは、結合を妨げるものは何も存在しないが、実際に結合するものも何も存在しないことを示す。例えば、穴と穴の場合に、これが該当する。このため、結合点の所与のペアに関して、プロセスは、格納された結合テーブル813から、対応する結合性タイプを取り出すことができる。
【0096】
後続の工程808では、結合性結果が「偽」であるかどうか、すなわち、対応する結合タイプ間で、有効な結合が全く不可能であるのかどうかが試験される。結合性結果が「偽」であった場合、新たなビルディング・ブロックの位置は、拒否され(工程811)、それ以外の場合、結合性結果は、格納され、プロセスは、工程809に進む。
【0097】
工程809で、新たなビルディング・ブロックのすべての関係のある結合点が処理済みであるかどうかが試験される。処理済みではない場合、未処理の関係のある結合点が、選択され(工程812)、現時点で選択された結合点に対して、上記の工程804、805、806、807、および808を実行することにより、処理される。
【0098】
新たなビルディング・ブロックのすべての関係のある結合点が処理され、位置が拒否されなかった場合、その位置は、受け入れられ、プロセスは、工程810に進む。工程810で、格納された結合性結果に基づき、どのようにビルディング・ブロックが結合するかが判定され、ビルディング・ブロックのそれぞれのデータ構造が、それに相応して更新される。
【0099】
最初、すべての結合性結果が「無効」であるかどうかが調べられる。「はい」である場合、すなわち、ビルディング・ブロックの位置を妨げるものは何も存在しないが、結合要素のいずれも、ビルディング・ブロックを結合するように実際に連結しない場合、新たなビルディング・ブロックは、現在の位置に許される。一実施形態では、追加のアルゴリズムが、例えば、バウンディング・ボリュームに基づき、その位置に配置された物理的ビルディング・ブロックが、倒れるかどうか、傾くかどうかなどを判定し、それに相応して、その位置を許すか、または拒否することができる。
【0100】
「無効」ではない場合、すなわち、1つまたは複数の結合性結果が真である場合、プロセスは、ビルディング・ブロックがどのように結合されるか、すなわち、ビルディング・ブロックが固定して結合されるか、または結合が、相対的な回転、並進、および/またはそれに類する動きを許すかを判定する。
データ構造が更新されると、サブプロセスは、終了し、図5の全体的なプロセスに戻る。
【0101】
図9a〜図9bは、回転を含むビルディング・ブロックの結合を示す。一部の実施形態では、結合点は、スクリーン上で見える新たなビルディング・ブロックの向きに関してだけ、すなわち、ユーザによって選択された向き、または既定の向きに関してだけ調べられる。ユーザが、新たなビルディング・ブロックを、そのビルディング・ブロックの回転の後に結合することを所望する場合、向きは、例えば、適切なユーザ・インタフェース・コントロールによって、例えば、グラフィカル・ユーザ・インタフェースのメニューの中で選択されることが可能な回転ツール、キーボード・コマンドなどを介して制御されることが可能である。例えば、ユーザは、例えば、異なる軸を中心とする90度回転に相当する、一連の個々の向きを順に進むように、新たなビルディング・ブロックの向きを制御することができる。例えば、図9aおよび図9bで、ビルディング・ブロック901は、ビルディング・ブロック901のユーザによって選択された向きに応じて、異なる形で構造902に結合される。
【0102】
図9aでは、ビルディング・ブロック901が、構造902の上に結合されている。図9bでは、ビルディング・ブロック901は、垂直面に配置された、構造902のノブ群903に結合されている。
【0103】
代替の実施形態では、ビルディング・ブロックの自動的な向き変更が許される。例えば、図5の工程510および511で候補位置を分析する際、新たなビルディング・ブロックの異なる回転が、追加の候補位置として考慮され、実施される評定、および後の結合性検証に従って分析されることが可能である。例えば、新たなビルディング・ブロックが、何らかの任意の角度でヒンジに結合されるべき場合、ユーザが、新たなビルディング・ブロックをヒンジの軸と完全に揃えることは必要ない。プロセスは、回転させられた位置を評価し、回転の後に新たなビルディング・ブロックを結合する。一部の実施形態では、自動的向き変更は、所定の空間角度に、例えば、45度、30度などに制限されて、ユーザを混乱させ、意図しない結果をもたらす可能性がある大きい回転が回避される。
【0104】
ユーザが、新たなビルディング・ブロックがどこに配置され、結合されるかについての明確な指示を受け取ることは、前述したプロセスの別の利点である。さらに、ユーザによって制御される、スクリーン上の新たなビルディング・ブロックの2D位置の小さな訂正が、即時に考慮に入れられ、滑らかで自然なワークフローの印象がもたらされる。
【0105】
当業者は、本発明の範囲内で、以上の方法の変形形態を実施することができるものと理解されたい。例えば、以上の工程のいくつかの順序を変更すること、工程を組み合わせることなどができる。
【0106】
例えば、3Dシーンの中に新たなビルディング・ブロックを配置した後、ユーザは、類似した位置を探索するために探索ツールをアクティブにすることができる。一実施形態では、探索ツールは、ユーザが、図5の順序付けられたリスト520の位置を順に進むことを可能にし、それにより、ユーザが、可能な位置の1つを選択することが可能になる。
【0107】
オブジェクトのデジタル表現を「操作する」という言葉は、デジタル表現の任意の、ユーザによって制御された操作を指すこと、例えば、新たなビルディング・ブロックの結合、既存のビルディング・ブロックを1つの位置から別の位置に動かすこと、または3Dシーンの中でビルディング・ブロックの位置を変更する他の任意の操作を指すことを意図している。
【図面の簡単な説明】
【0108】
【図1a】幾何オブジェクトのコンピュータ可読モデルを生成し、操作するためのデータ処理システムを示す図である。
【図1b】幾何オブジェクトのコンピュータ可読モデルを生成し、操作するためのデータ処理システムを示す図である。
【図2】仮想ビルディング・ブロック・システムのグラフィカル・ユーザ・インタフェースを示す図である。
【図3a】ビルディング・ブロック、およびビルディング・ブロックの結合要素の実施例を示す図である。
【図3b】ビルディング・ブロック、およびビルディング・ブロックの結合要素の実施例を示す図である。
【図3c】ビルディング・ブロック、およびビルディング・ブロックの結合要素の実施例を示す図である。
【図3d】ビルディング・ブロック、およびビルディング・ブロックの結合要素の実施例を示す図である。
【図4a】物理的ビルディング・ブロックのデジタル表現の実施形態を示す図である。
【図4b】物理的ビルディング・ブロックのデジタル表現の実施形態を示す図である。
【図4c】結合点のまわりのボリューム要素の実施例を示す図である。
【図5】3Dシーンにおいてビルディング・ブロックを位置付け、そのシーンの中に既に存在するビルディング・ブロックの構造にそのブロックを結合するプロセスを示す流れ図である。
【図6a】以前に配置済みのビルディング・ブロックの上に新たなビルディング・ブロックを位置付けることの実施例を示す図である。
【図6b】以前に配置済みのビルディング・ブロックの上に新たなビルディング・ブロックを位置付けることの実施例を示す図である。
【図7a】スクリーン上のグラフィック表現のわずかに異なる2D配置からもたらされる、ビルディング・ブロックの2つの位置を示す図である。
【図7b】スクリーン上のグラフィック表現のわずかに異なる2D配置からもたらされる、ビルディング・ブロックの2つの位置を示す図である。
【図8】暫定的な3D配置における新たなビルディング・ブロックの結合性検証を行うサブプロセスの実施形態を示す流れ図である。
【図9a】回転を含むビルディング・ブロックの結合を示す図である。
【図9b】回転を含むビルディング・ブロックの結合を示す図である。

【特許請求の範囲】
【請求項1】
2次元のカーソルの動きによって3次元仮想ビルディング・ブロック・モデルを操作する、前記仮想ビルディング・ブロック・モデルが、一組の結合規則に従って仮想ビルディング・ブロックを別の仮想ビルディング・ブロックと結合するためのいくつかの結合要素をそれぞれが含む複数の仮想ビルディング・ブロックを含む、コンピュータによって実施される方法であって、
3次元座標系において、いくつかの前記仮想ビルディング・ブロックを含む構造のデジタル表現を提供する工程と、
前記構造の射影を表す2次元コンピュータ表示領域内のカーソルの動きにより、前記構造に結合されるべき第1の仮想ビルディング・ブロックの2次元射影の位置付けを行い、2次元位置座標をもたらす工程と、
前記2次元位置座標から、前記3次元座標系における前記第1の仮想ビルディング・ブロックのいくつかの3次元候補位置を算出する工程と、
前記結合規則、および所定の一組の位置評定(格付け)規則に基づき、前記候補位置の1つを選択する工程と、
前記選択された候補位置で、前記第1のビルディング・ブロックを前記構造に結合する工程とを含む方法。
【請求項2】
いくつかの3次元候補位置を算出する前記工程は、前記3次元座標系における前記第1の仮想ビルディング・ブロックのいくつかの候補の向きを算出する工程をさらに含む請求項1に記載の方法。
【請求項3】
前記第1の仮想ビルディング・ブロックの結合要素の射影のまわりの所定の近傍内に、前記2次元表示領域内で射影をそれぞれが有する、前記構造のいくつかの候補結合要素を特定する工程と、
前記結合規則、および前記所定の一組の位置評定規則に基づき、前記候補結合要素の1つを選択する工程と、
前記第1の仮想ビルディング・ブロックと前記構造の間の結合が、前記一組の結合規則に従って有効である場合、少なくとも前記選択された候補結合要素を介して、前記第1の仮想ビルディング・ブロックを前記構造と結合する工程とをさらに含む請求項1または2に記載の方法。
【請求項4】
前記候補結合要素の1つを選択する前記工程は、前記候補結合要素を、仮想カメラ位置からの該候補結合要素の距離に関して評定する工程をさらに含む請求項3に記載の方法。
【請求項5】
前記候補結合要素の1つを選択する前記工程は、現在の仮想カメラ位置から見えない候補結合要素を破棄する工程をさらに含む請求項3または4に記載の方法。
【請求項6】
前記候補結合要素の1つを選択する前記工程は、前記候補結合要素を、前記第1の仮想ビルディング・ブロックの前記対応する結合要素の前記2次元射影までの、該候補結合要素の2次元射影の距離に関して評定する工程をさらに含む請求項3乃至5のいずれか1項に記載の方法。
【請求項7】
前記構造の前記デジタル表現は、各仮想ビルディング・ブロックに関して、前記仮想ビルディング・ブロックの前記表面の少なくとも1つに対応する、結合要素をそれぞれが表すいくつかの格子点をそれぞれが含むいくつかの長方形格子を含む請求項3乃至6のいずれか1項に記載の方法。
【請求項8】
前記第1の仮想ビルディング・ブロックの結合要素の射影のまわりの前記所定の近傍は、前記対応する長方形格子の近隣の格子点間の距離に相当する直径を有する請求項7に記載の方法。
【請求項9】
前記いくつかの候補位置を特定する前記工程は、前記第1のビルディング・ブロックを回転させて、回転させられたビルディング・ブロックの候補位置を獲得する工程をさらに含む請求項1乃至8のいずれか1項に記載の方法。
【請求項10】
前記第1のビルディング・ブロックの前記回転は、ユーザによって選択された向きを中心とする所定の空間角度に制限される請求項9に記載の方法。
【請求項11】
前記第1の仮想ビルディング・ブロックのユーザによって選択された向きを制御するユーザ・コマンドを受け取る工程をさらに含む請求項1乃至10のいずれか1項に記載の方法。
【請求項12】
前記ユーザによって選択された向きは、一組の個別の向きの1つに制限される請求項11に記載の方法。
【請求項13】
前記2次元射影は、平行射影である請求項1乃至12のいずれか1項に記載の方法。
【請求項14】
データ処理システム上でコンピュータ・プログラムが実行されると、請求項1乃至13のいずれか1項に記載のすべての工程を実行するためのプログラム・コード手段を含む該プログラムを格納している記憶媒体を含むデータ処理システム。
【請求項15】
コンピュータ上でコンピュータ・プログラムが実行されると、請求項1乃至13のいずれか1項に記載のすべての工程を実行するためのプログラム・コード手段を含むコンピュータ・プログラム。
【請求項16】
コンピュータ上でコンピュータ・プログラム製品が実行されると、請求項1乃至13のいずれか1項に記載の方法を実行するためのコンピュータ可読媒体上に格納されたプログラム・コード手段を含むコンピュータ・プログラム製品。
【請求項17】
コンピュータ上でコンピュータ・プログラムが実行されると、請求項1乃至13のいずれか1項に記載のすべての工程を実行するためのプログラム・コード手段を含む該プログラムを格納しているコンピュータ可読記憶媒体。
【請求項18】
コンピュータ上でプログラム・コード手段が実行されると、請求項1乃至13のいずれか1項に記載のすべての工程を実行するための該プログラム・コード手段を含む、搬送波として実現されたデータ信号。

【図1a】
image rotate

【図1b】
image rotate

【図2】
image rotate

【図3a】
image rotate

【図3b】
image rotate

【図3c】
image rotate

【図3d】
image rotate

【図4a】
image rotate

【図4b】
image rotate

【図4c】
image rotate

【図5】
image rotate

【図6a】
image rotate

【図6b】
image rotate

【図7a】
image rotate

【図7b】
image rotate

【図8】
image rotate

【図9a】
image rotate

【図9b】
image rotate


【公表番号】特表2007−500906(P2007−500906A)
【公表日】平成19年1月18日(2007.1.18)
【国際特許分類】
【出願番号】特願2006−529637(P2006−529637)
【出願日】平成16年5月13日(2004.5.13)
【国際出願番号】PCT/DK2004/000341
【国際公開番号】WO2004/104811
【国際公開日】平成16年12月2日(2004.12.2)
【出願人】(594012623)レゴ エー/エス (19)
【Fターム(参考)】