JP2008305347A - 干渉判定情報の生成方法及び装置 - Google Patents

干渉判定情報の生成方法及び装置 Download PDF

Info

Publication number
JP2008305347A
JP2008305347A JP2007154436A JP2007154436A JP2008305347A JP 2008305347 A JP2008305347 A JP 2008305347A JP 2007154436 A JP2007154436 A JP 2007154436A JP 2007154436 A JP2007154436 A JP 2007154436A JP 2008305347 A JP2008305347 A JP 2008305347A
Authority
JP
Japan
Prior art keywords
interference
pixel
information
polygon
data
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.)
Granted
Application number
JP2007154436A
Other languages
English (en)
Other versions
JP4948273B2 (ja
JP2008305347A5 (ja
Inventor
Hideo Noro
英生 野呂
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2007154436A priority Critical patent/JP4948273B2/ja
Priority to US12/132,940 priority patent/US8217933B2/en
Publication of JP2008305347A publication Critical patent/JP2008305347A/ja
Publication of JP2008305347A5 publication Critical patent/JP2008305347A5/ja
Application granted granted Critical
Publication of JP4948273B2 publication Critical patent/JP4948273B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3323Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S345/00Computer graphics processing and selective visual display systems
    • Y10S345/949Animation processing method
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S345/00Computer graphics processing and selective visual display systems
    • Y10S345/949Animation processing method
    • Y10S345/958Collision avoidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

【課題】 仮想物体間の干渉を高速に判定可能とするための干渉判定情報の生成方法及び装置を提供する。
【解決手段】 干渉対象群CGデータの描画処理を行ないながら、描画される画素毎に、その画素を描画するCGデータの識別情報を記録した干渉対象情報として、干渉対象マップ及び干渉対象LUTを生成する。次いで被干渉対象群CGデータの描画処理を行ないながら、描画画素に対応する干渉対象情報を参照する。干渉対象情報に干渉対象群CGデータが含まれている場合、描画処理中の仮想物体との干渉判定を行うべきものと判断し、干渉判定情報を生成する。
【選択図】 図10

Description

本発明は、仮想空間内における複数の仮想物体間の干渉判定を行うための干渉判定情報の生成方法及び装置に関する。
3次元(3D)コンピュータグラフィックス(CG)技術は、その発展に伴い、様々な分野で利用されてきている。近年では、3D−CAD(Computer-Aided Design)はもとより、VR(仮想現実;Virtual Reality)やMR(複合現実;Mixed Reality)の分野での利用も活発である。
これらの分野のアプリケーションの一部では、仮想物体をCGによって三次元的に表現するだけでなく、仮想物体同士の干渉を考慮する必要がある。
例えば、3D−CADを利用した設計では、仮想物体として表される部品が他の部品と干渉(同空間を複数の部品が占有)していると、実際には製造ができない。そのため、部品同士が干渉していないかを設計時にチェックする。具体的には、特定の部品配置にした上で、干渉箇所を一気に調べる方法が用いられ、この方法は静的干渉チェックと呼ばれる。また、可動部が存在する装置の場合、可動部の機構シミュレーションを行いながら他の部品との干渉箇所を調べる方法もあり、この方法は動的干渉チェックと呼ばれる。
動的干渉チェックの場合、可動部品が取りうる位置姿勢は限られている。そのため、時間をかけて干渉箇所を計算し、その結果を履歴として保存しておき、全計算が終わった後、ユーザに提示することが可能である。これは前述の静的干渉チェックでも同様である。
特開平11−328445号公報
3D−CADを利用した設計アプリケーションにおいては、干渉の有無を調べる対象となる物体(以下、対象物体という)が装置の部品であり、取りうる位置姿勢は固定であったり、たとえ可動部位であっても十分限定されているのが通例である。そのため、対象物体が取り得る位置姿勢について網羅的に干渉チェックを行なうことも可能である。
しかし、VRやMRアプリケーションでは、対象物体の一方が例えばユーザが手に持って操作する道具であったり、ユーザの手そのものであるなど、対象物体の取りうる位置姿勢が3D−CADにおける対象物体である部品と比べて非常に多い。
例えば製品の組立教育を目的としたVR又はMRアプリケーションの場合、組み立て作業をユーザに体感させるため、ユーザが手に持つ工具と、部品などの組立対象物との干渉をチェックし、その結果をユーザにフィードバックする場合がある。
この場合、ユーザが手に持つ工具の取りうる位置姿勢は、平行移動成分3自由度と、回転成分3自由度の合計6自由度を有し、仮想空間内での位置姿勢に実質的な制限はない。そのため、対象物体が取りうる全ての位置姿勢について予め干渉チェックを行うのは現実的に不可能である。
従って、その時点時点において、対象物体の位置姿勢をもとに、実時間で干渉チェックを行う必要がある。
干渉チェックのための計算(干渉計算)は非常に計算負荷が高いため、実時間で計算を行うための手法が提案されている。最もよく用いられている手法のひとつは、「明らかに干渉しない物体同士については、干渉計算を行わない」というものである。不要な計算を行わないので、実時間での干渉計算を実現する上で非常に効果がある。
この手法の一つとして、Sweep and Prune(SAP)という手法がよく知られている。このSAPは、複数の仮想物体(CG物体)をある世界座標に配置したときに、仮想物体のバウンディングボックス同士が明らかに重なっていない組み合わせを干渉計算の候補から除外する手法である。 また、Sweep and Prune(SAP)という手法もよく知られている。これは、複数の仮想物体(CG物体)をある世界座標に配置したときに、仮想物体のバウンディングボックス同士が明らかに重なっていない組み合わせを干渉計算の候補から除外する手法である。
世界座標がXYZ直交座標系で表されるとすると、まず、バウンディングボックスのX軸への投影が、明らかに重なっていない仮想物体同士は干渉の可能性がゼロなので、干渉計算の候補から除外する。次いで、Y軸への投影、Z軸への投影についても同様のチェックを行う。全ての軸についてバウンディングボックスの重なりが認められた仮想物体の組み合わせのみを、干渉計算の対象とする。
バウンディングボックスは実際の仮想物体を囲むボックスであるため、実際の仮想物体よりも大きい。そのため、バウンディングボックスの干渉有無に基づいて干渉計算の要否を決定するSAP手法では、実際には干渉しない仮想物体の組み合わせについての干渉計算を除去しきれないことが多い。
このような、干渉計算を行う対象を絞り込む手法の他に、干渉計算そのものを高速化する手法も提案されている。計算を高速化するための手法の多くは、対象物体は全て凸物体であると仮定している。なぜ凸物体同士であると、干渉計算が高速に行えるかについては、本発明と直接関係がないため詳細な説明は割愛する。なお、実際には凹物体の仮想物体も存在するため、本手法を利用した干渉計算手法を用いるためには、対象物体を凸物体に分解する比較的重い前処理が必要となる。
このように、対象物体を凸物体と仮定して干渉計算を高速化する手法においては、対象物体を凸物体へ分解する比較的重い前処理が必要となる。さらに、この前処理後のデータ量は、処理前に匹敵するデータ量となるため、このことが問題となる場合には、データの持ち方に特別の工夫が必要となる。
また、最終的に画面に描画される範囲内での干渉計算がなされればよい、という条件での干渉計算を行う方法が特許文献1に記載されている。この手法では、仮想物体のレンダリング処理中に干渉計算を行えるため、GPU(Graphics Processing Unit)内で計算を行うことにより、高速な干渉計算が可能である。しかしながら、特許文献1記載の手法は、投影像の画素毎に物体の奥行き値の配列を保持し、投影像の重なりの画素の奥行き値のリストを用い、衝突判定手段により各画素ごとに、衝突判定を行っており、適用可能範囲が狭い。そのため、一般的な仮想物体群同士の干渉判定に適用するのは困難である。
本発明はこのような従来技術の課題に鑑みなされたものであり、その目的は、仮想物体間の干渉を高速に判定可能とするための干渉判定情報の生成方法及び装置を提供することにある。
上述の目的は、複数の仮想物体のうち、干渉判定を行うべき仮想物体の組み合わせを特定する干渉判定情報を生成する方法であって、複数の仮想物体のうち第1のグループに属する仮想物体について、フレームバッファへの描画処理を行ないながら、フレームバッファの各画素について、その画素を含む仮想物体を特定する情報を記録した干渉対象情報を生成し、記憶手段に記憶するステップと、複数の仮想物体のうち第2のグループに属する仮想物体について、フレームバッファへの描画処理を行ないながら、描画する各画素について干渉対象情報を参照し、既に第1のグループに属する仮想物体を特定する情報が記録されている画素である場合には、描画処理中の仮想物体を特定する情報と、記録されている情報により特定される第1のグループに属する仮想物体との組み合わせについて干渉判定を行うべきものとして、当該組み合わせを特定する情報を干渉判定情報として記憶手段に記憶するステップとを有することを特徴とする方法によって達成される。
また、上述の目的は、複数の仮想物体のうち、干渉判定を行うべき仮想物体の組み合わせを特定する干渉判定情報を生成する装置であって、複数の仮想物体のうち第1のグループに属する仮想物体について、フレームバッファへの描画処理を行ないながら、フレームバッファの各画素について、その画素を含む仮想物体を特定する情報を記録した干渉対象情報を生成し、記憶手段に記憶する手段と、複数の仮想物体のうち第2のグループに属する仮想物体について、フレームバッファへの描画処理を行ないながら、描画する各画素について干渉対象情報を参照し、既に第1のグループに属する仮想物体を特定する情報が記録されている画素である場合には、描画処理中の仮想物体を特定する情報と、記録されている情報により特定される第1のグループに属する仮想物体との組み合わせについて干渉判定を行うべきものとして、当該組み合わせを特定する情報を干渉判定情報として記憶手段に記憶する手段とを有することを特徴とする装置によっても達成される。
このような構成により、仮想物体間の干渉を高速に判定可能とするための干渉判定情報を生成することができる。
以下、添付図面を参照して、本発明を好適な実施形態に基づき詳細に説明する。
(第1の実施形態)
図1は本発明の第1の実施形態に係る干渉判定情報の生成装置の機能構成例を表すブロック図である。ここで、干渉判定情報は、複数の仮想物体のうち、干渉判定を行うべき仮想物体の組み合わせを特定する情報である。
本実施形態の干渉判定情報の生成装置100は、仮想空間(複合現実空間を含む)中に存在する複数の仮想物体を、第1のグループである干渉対象群(1つの仮想物体でも可)と、第2のグループである被干渉対象群(1つの仮想物体でも可)に分ける。そして、これら2グループに属する仮想物体間の干渉判定を行うための干渉判定情報を生成する。
干渉対象群に含まれる仮想物体のCGデータは干渉対象群CGデータ112として、被干渉対象群に含まれる仮想物体のCGデータは被干渉対象群CGデータ114として、CGデータ記憶部110に保持される。CGデータ記憶部110は、例えばハードディスクドライブから読み出されたCGデータが記憶されるRAMのような記憶装置であってよい。
これら2種のCGデータ112,114には、最終的に仮想物体をCGによって描画するのに十分なデータが収められている。本実施形態に係る干渉判定情報の生成装置100は、後述のレンダリング部120が用いるレンダリング手法に制限はないが、例えば描画単位の一例としてポリゴンを用いる手法であると仮定する。この場合、干渉対象群CGデータ112(114も同様)は、複数の干渉対象CGデータから構成される。各々の干渉対象CGデータは、ひとつ、または複数のポリゴンから構成される。各ポリゴン(ポリゴンデータ)は、最低3つの頂点を識別するデータ、マテリアル情報等を含む。さらに各ポリゴンデータには、後述する干渉判定部170が用いる、当該ポリゴンデータが含まれる干渉対象CGデータを特定する識別情報がポリゴン毎に関連付けられている。ここで、頂点データとは、頂点の3次元位置を指定する座標値である。
レンダリング部120は、CGデータ112,114に基づく最終的な描画イメージをフレームバッファ152にレンダリングする。一般にレンダリング部120は、ポリゴンデータから、描画すべきフレームバッファ上の画素の位置を計算し、次いでその画素の色を計算する。そして、フレームバッファ上の計算された位置の画素を、計算された色に対応する値で更新する。この処理をポリゴンデータが表すポリゴンに対応するフレームバッファ上の全画素について行う。これで、ひとつのポリゴンの描画が終了する。このポリゴン描画処理を、全ポリゴンデータに対して行うことにより、シーン全体の描画処理が完了する。
なお、本発明とは直接関係がないため、ここでは隠面処理やアルファブレンディング等の処理についての説明は割愛する。重要なことは、ポリゴン毎に、描画すべき全画素のフレームバッファ上の位置が順に計算されるということである。
本実施形態におけるレンダリング部120は、前述の一般的なレンダリング部が行う処理に加えて、描画すべき画素の、フレームバッファ上の位置を、干渉対象マップ作成部130、または干渉判定表作成部140に対して通知する。この動作を図2を参照して説明する。
レンダリング部120は、干渉対象群CGデータ112を処理し、次いで被干渉対象群CGデータ114を処理する。図2は、レンダリング部120のこれら各々のCGデータ112,114に対する処理手順を示す図である。
本実施形態の干渉判定情報の生成装置100は、例えば汎用コンピュータ装置によって実現可能であり、この場合、CGデータ記憶部110はハードディスク等の不揮発性記憶装置、一時記憶部150は例えばRAMにより実現できる。また、レンダリング部120、干渉対象マップ作成部130及び干渉判定表作成部140は、CPUがROMやハードディスク、半導体メモリ等の不揮発性記憶装置に記憶されたプログラムを実行することによってソフトウェア的に実現することができる。もちろん、レンダリング部120の動作実行にGPUなどのハードウェアを用いることによって処理の高速化を図ることも可能である。
まず、干渉対象群CGデータ112の処理手順について説明する。
干渉対象群CGデータ112に含まれる全ポリゴンデータについて、以下の処理を行う。もし全ポリゴンの処理が終了したのであれば(S201)、干渉対象群CGデータの処理は終了したことになり、被干渉対象群CGデータの処理を行うことになる。
S202以降の手順により、未処理ポリゴンの各々に対する処理を行なう。
S203では、処理中のポリゴンデータに基づいて描画すべき全画素の処理が終了しているかどうか判断する。描画すべき全画素の処理が終了していれば、処理中のポリゴンに対する処理は終了し、次の未処理ポリゴンの処理を行う。
未処理画素があれば、描画すべき画素のフレームバッファ上での位置の計算を行う(S204)。この計算では、モデリング変換、視野変換、投影変換、ビューポート変換といった、一連の座標変換を行うビューイングパイプラインでの処理を経ることになるが、これら変換は、CG分野では一般的な技術であるため詳細についての説明は割愛する。
次いで、一般的なレンダリング部と同様にして、描画すべき画素の色を計算し(S208)、フレームバッファを更新する(S209)。また、これらの処理と並行して、処理中のポリゴンデータが、干渉対象群CGデータ112に属するか否かを判断する(S205)。前述の通り、ここでは干渉対象群CGデータ112の処理を行っている。そのため、レンダリング部120は、干渉対象マップ作成部130に対し、S204で計算された、描画すべき画素のフレームバッファ上での位置と、処理中のポリゴンに関連付けられたCGデータを特定する識別情報とを通知する。
上記処理を干渉対象群CGデータ112に対して行った後、被干渉対象群CGデータ114に対して行う。処理内容は干渉対象群CGデータ112に対するものとほぼ同様である。ただし、S204で計算された、描画すべき画素のフレームバッファ上での位置と、処理中のポリゴンに関連付けられたCGデータを特定する識別情報の通知先が、干渉対象マップ作成部130ではなく、干渉判定表作成部140となる点で異なる。
一連のレンダリング部120での処理が完了すると、フレームバッファ152には最終的に表示される画面データが保持されている。この画面データに基づき、干渉判定情報の生成装置100に接続された表示部160によって描画結果が表示され、ユーザに提示される。
なお、フレームバッファ152は、後述する干渉対象マップ158、干渉対象LUT156、干渉判定表154とともに、一時記憶部150の一部によって構成される。一時記憶部150は例えば半導体記憶装置であり、そのアドレス空間をこれらの各種用途に応じて割り当てている。干渉対象情報は、干渉対象マップ158と干渉対象LUT156とで構成される。
さて、干渉対象マップ作成部130では、画素単位で、干渉対象群CGデータ112の識別情報を記録した干渉対象マップ158を作成する。干渉対象マップ158は具体的にはビットマップ情報(ビットマップデータ)であり、通常、フレームバッファ152と共通の画素座標を有する。換言すれば、干渉対象マップ158を、フレームバッファ152と同じサイズ(縦横画素数)にする。こうすることにより、レンダリング部120から通知される、フレームバッファ上の画素の位置は、そのまま干渉対象マップ158上の画素の位置として用いることができる。もちろん、干渉対象マップ158のサイズがフレームバッファ152より大きくても良い。また、各画素あたり数ビットから十数ビット程度のデータを保持できるものとする。
干渉対象マップ158の各画素の値は、フレームバッファ152において対応する位置の画素を、描画すべき画素として有するCGデータを特定する値である。
例えば、干渉対象マップ158の画素(a,b)の値がCGデータαとCGデータβを特定する値であれば、画素(a,b)は干渉対照群CGデータであるCGデータαとCGデータβによって描画されることを意味する。被干渉対象群CGデータであるCGデータγによっても画素(a,b)が描画されるとすると、CGデータγによって表される仮想物体と干渉する可能性のある仮想物体は、CGデータαとCGデータβで表される仮想物体に限定される。つまり、CGデータαとCGデータβ以外の干渉対象群CGデータとは干渉しないことが保証される。
図4に示す、フローチャートを用いて、本発明の第1の実施形態における干渉対象マップ作成部の動作を説明する。なお、以下の説明では、ポリゴンに関連付けられた識別情報によって特定されるCGデータは、そのポリゴンを表すポリゴンデータであるものとして、説明を行う。
例として、干渉対象群CGデータ112は、図3に示す立方体形状の仮想物体を表すCGデータ1つのみであるとする。この立方体を横16×縦12画素の画面(フレームバッファ152)に、一部がはみ出すように描画する場合を考える。
この場合、干渉対象群CGデータ112には、A,B,C,D,E,Fの面(ポリゴン)に対応する6つのポリゴンデータが含まれる。そして、これらのポリゴンデータは、A〜Fのポリゴンの順に描画され、また、各ポリゴンは、縦方向位置の小さい画素から、同じ縦方向位置の場合には横方向位置の小さい画素から描画されるものとする。また、干渉対象マップ158の各画素の値は、予めゼロに初期化されているものとする。干渉対象マップ158における画素値”0”は、その画素に描画を行うCGデータが無いこと、すなわち、本例においてはどのポリゴンにも含まれないことを示す。
まず、レンダリング部120が、図2のS202以降の処理をポリゴンAについて実行し、フレームバッファにポリゴンAを描画しながら、干渉対象マップ作成部130へ画素の描画位置とポリゴンデータの識別情報を通知する。
図5は、CGデータが表す立方体の描画位置と干渉対象マップ158中の画素位置の対応および、ポリゴンAを描画し終わったときの干渉対象マップ158の画素値と干渉対象LUT156の内容の例をそれぞれ模式的に示す図である。
図において、干渉対象マップ158の各画素は正方形で表されており、太枠の正方形はポリゴンの描画によって更新される画素を示している。また、正方形内の数は画素値を表し、空白の正方形は値”0”の画素を示す。干渉対象LUT156は、干渉対象マップ158の画素値と、対応するCGデータを特定する情報とを対応付けた表(テーブル情報)である。
ポリゴンAの描画処理中、干渉対象マップ作成部130は、描画位置を受信する(S301)。そして、描画位置に対応する干渉対象マップの画素の値を参照する(S303)。値が”0”であれば(S305,Y)、干渉対象マップ作成部130は、その値を描画処理中のCGデータに応じた固有値、ここでは値”1”で更新する(S307)。また、干渉対象LUT156には、画素値”1”に対応するレコードがないため(S311,N)を新規レコードを追加し、画素値”1”を設定する。さらに干渉対象マップ作成部130は、画素値”1”のレコードに、通知された識別情報に基づいて、CGデータ(本例では処理中のポリゴンAを表すポリゴンデータ)を特定する情報(本例では「A」)を設定する(S313)。
ポリゴンAの描画処理が終了すると、レンダリング部120は処理を図2のS201へ戻し、次の未処理ポリゴンBを描画する(S315→S301)。
図6は、図5の状態からさらにポリゴンBを描画し終わったときの干渉対象マップ158の画素値と干渉対象LUT156の内容の例をそれぞれ模式的に示す図である。
図に示す通り、干渉対象マップ作成部130は、ポリゴンBの描画時に描画される画素に対応する干渉対象マップ158中の画素について、値”2”に更新する。また、干渉対象マップ作成部130は干渉対象LUT156に画素値”2”に対応するレコードを追加し、ポリゴンBを表すポリゴンデータを特定する情報「B」を格納する。
次にレンダリング部120はポリゴンCの描画処理を行なうが、ポリゴンCは干渉対象マップ158(すなわち、フレームバッファ152)に描画する必要がない。そのため、レンダリング部120から描画位置と識別情報が干渉対象マップ158作成部に通知されることもない。そのため、ポリゴンCの描画処理が終了しても、干渉対象マップ158および干渉対象LUT156に変化はない。
図7は、図6の状態からさらにポリゴンDを描画し終わったときの干渉対象マップ158の画素値と干渉対象LUT156の内容の例をそれぞれ模式的に示す図である。
例えば、ポリゴンDの描画処理において描画される、横方向に左から10番目、縦方向に上から4番目の画素、画素(10,4)に注目する。干渉対象マップ158における画素(10,4)は、ポリゴンAの描画処理において描画されているため、値は1である。従って、ポリゴンDの描画処理中、描画位置(10,4)がレンダリング部120から通知されてきた場合、干渉対象マップ作成部130は、干渉対象マップの画素(10,4)の値から干渉対象LUT156を参照する。そして、画素(10,4)には「ポリゴンAとポリゴンD」のポリゴンデータを特定する値を格納する必要性を認識する。しかし、このようなポリゴンデータの組合せは干渉対象LUT156に存在しない。
そのため、干渉対象マップ作成部130は、画素値を「ポリゴンAとポリゴンD」のポリゴンデータを特定する値、ここでは値”3”で更新する(S309)。そして、ポリゴンAとポリゴンDのポリゴンデータの組み合わせを特定する情報(ここでは、「A,D」)と、対応する新たな画素値”3”とを対応付けたレコードを干渉対象LUT156に追加する(S313)。
同様に、干渉対象マップ作成部130は、ポリゴンBとポリゴンDの両方で描画される画素が最初に通知された際に、画素値”4”と、ポリゴンB,Dのポリゴンデータの組み合わせを特定する情報「B,D」とを対応付けたレコードを追加する。本例では、干渉対象マップ158における画素(10,7)が通知された場合に該当する。
このように、干渉対象マップ作成部130は、ポリゴンDの描画処理中に通知される描画画素位置に対応する干渉対象マップ158中の画素の値を、既存の値”1”の画素については値”3”に、既存の値”2”の画素については値”4”に更新する。
図8は、図7の状態からさらにポリゴンEを描画し終わったときの干渉対象マップ158の画素値と干渉対象LUT156の内容の例をそれぞれ模式的に示す図である。
ポリゴンEの描画処理中においては、既に値”3”を有する、干渉対象マップ158における画素(16,6)がポリゴンEについても描画対象となる。そのため、干渉対象マップ作成部130は、ポリゴンA,D,Eのポリゴンデータの組み合わせを特定する情報(「A,D,E」)と、対応する新たな画素値(ここでは5)とを対応付けたレコードを干渉対象LUT156に追加する。さらに、干渉対象マップ作成部130は、干渉対象マップ158の画素(16,6)の値を”5”に更新する。
同様に、干渉対象マップ作成部130は、ポリゴンB,D,Eのポリゴンデータの組み合わせを特定する情報(「B,D,E」)と、対応する新たな画素値(ここでは6)とを対応付けたレコードを干渉対象LUT156に追加する。そして、干渉対象マップ158において、ポリゴンB,D,Eのいずれにおいても描画される画素(16,7),(16,8),...,(16,12)を値”6”に更新する。
図9は、図8の状態からさらに干渉対象群CGデータの最後のCGデータ(ポリゴンデータ)により、ポリゴンFを描画し終わったときの干渉対象マップ158の画素値と干渉対象LUT156の内容の例をそれぞれ模式的に示す図である。
本例では干渉対象群CGデータが図3に示す立方体を表すCGデータのみであるため、この時点で干渉対象マップ158および干渉対象LUT156が完成する。干渉対象群CGデータに他のCGデータが存在する場合は、同様にして順次全てのポリゴンの描画処理が終了するまで、干渉対象マップ作成部130は干渉対象マップ158の画素値更新と、干渉対象LUT156のレコード追加を行う。干渉対象群CGデータの全ての描画処理が終了すると(S315,Y)、干渉対象マップ作成部130は処理を終了する。
なお、図9から明らかなように、ポリゴンFを描画し終わった段階で、値”1”と値”2”の画素は干渉対象マップ158には存在しなくなる。そのため、これらの画素値に対応するレコードを干渉対象LUT156から削除しても良い。
被干渉対象群CGデータの描画処理時に、干渉対象情報である干渉対象LUT156と干渉対象マップ158を用いて、最終的な干渉判定情報としての干渉判定表154を生成する。
(被干渉対象群CGデータの描画処理)
次に被干渉対象群CGデータの描画処理並びに干渉判定表の作成処理について説明する。
ここでは簡単のため、被干渉対象群CGデータにはポリゴンXとポリゴンYを表す2つのポリゴンデータのみが含まれるものとする。図2のS207で説明したように、レンダリング部120は、被干渉対象群CGデータの描画処理では、描画位置と識別情報を干渉判定表作成部140へ通知する。
図10は、図9に示す干渉対象マップ158及び干渉対象LUT156が作成されている状態における、ポリゴンXの描画画素と干渉対象マップ158の画素との対応関係の例を示す図である。
ポリゴンXの描画処理が開始されると、レンダリング部120から、ポリゴンXの描画画素の位置が干渉判定表作成部140へ通知される。図10では、ポリゴンXの描画画素位置に対応する干渉対象マップ158中の画素を、太枠で示している。
以下、図11に示すフローチャートも参照して、本発明の第1の実施形態における干渉判定表作成部140の動作を説明する。
最初の描画画素(4,4)の位置が通知されると(S401)、干渉判定表作成部140は干渉対象マップ158の対応画素(4,4)の値を参照する(S403)。この場合、値は”0”である(S405,Y)。そして、干渉判定表作成部140は、干渉対象LUT156の画素値”0”のレコードの識別情報フィールドを参照すると、空き状態である。この時点で、ポリゴンXのこの画素は干渉対象群CGデータで描画される仮想物体のいずれとも干渉しないことが明らかになる。
レンダリング部120によるポリゴンXの描画を行いながら、同様の処理を続けていく。そして画素(7,6)の位置が通知されると、干渉判定表作成部140は干渉対象マップ158の画素(7,6)の値を参照する。値は”7”であり(S405,N)、干渉対象LUT156の画素値”7”のレコードの識別情報フィールドの値は”A,F”である。これは、被干渉対象群CGデータ114のポリゴンXの画素(7,6)は、干渉対象群CGデータ112で描画される仮想物体のポリゴンA,Fと干渉する可能性があることを示す。
干渉判定表作成部140は、描画処理中のCGデータであるポリゴンXに対応するレコードが干渉判定情報の一例である干渉判定表154に存在するか調べる(S407)。ここでは存在していない。
そのため、干渉判定表作成部140は、ポリゴンXを特定する情報(例えば”X”)と、干渉の可能性があるポリゴンA,Fのポリゴンデータを特定する情報(ここでは、”A,F”)とを対応付けたレコードを干渉判定表154に追加する(S411)。
さらに処理を続け、レンダリング部120から画素(7,7)の位置が通知されると、干渉判定表作成部140は、干渉対象マップ158の画素(7,7)の値”1”を参照する。干渉対象LUT156の画素値”1”のレコードの識別情報フィールドの値は”B,F”である。干渉判定表154には、ポリゴンXに関するレコードが既に存在している(S407,Y)。従って、干渉判定表作成部140は、干渉の可能性があるポリゴンデータを特定する情報に、ポリゴンB,Fのポリゴンデータを特定する情報(ここでは”B,F”)を追加する(S411)。この場合、”B”は既にレコード中に存在するので、干渉判定表作成部140は、重複しない”F”のみを追加する。結果として”A,B,F”がポリゴンXと対応付けられる値となる。
ポリゴンYについても、同様にして処理を行なう。ポリゴンYについては、画素(9,4)の描画時にポリゴンYに対応したレコードが干渉判定表154に追加される。図12に示すように、干渉対象マップ158において、ポリゴンYの描画画素に対応する画素の値は”0”,”7”,”8”,”1”である。従って、対応する識別情報フィールドの値”A,F”、”A,D,F”及び”B,F”に基づき、ポリゴンYの描画終了時には、ポリゴンYに干渉の可能性のあるポリゴンのポリゴンデータを特定する情報”A,B,D,F”が関連付けられている。
このようにして、干渉判定表154が被干渉対象群CGデータ114に含まれるポリゴンデータに対して生成される。被干渉対象群CGデータ114の全ての描画処理が終了すると(S413,Y)、干渉判定表作成部140は処理を終了する。
例えば、VR(又はMR)アプリケーションにおいて、位置姿勢の自由度が高い仮想物体(例えばユーザの手を表すモデルや、ユーザが手に持つ工具のモデルなど)を表すポリゴンデータを被干渉対象群CGデータとする。そして、部品などの、操作される仮想物体を表すポリゴンデータを干渉対象群CGデータとする。
そして、ユーザの手や工具の位置姿勢を例えば位置姿勢センサで測定し、その位置姿勢に応じて、干渉対象群CGデータ中の干渉対象CGデータを用いて、ポリゴンを描画して、干渉判定表を作成若しくは更新する。そして、完成した干渉判定表によって特定される仮想物体の組み合わせに対して、従前の干渉判定手法を適用する干渉判定部170により、最終的な干渉判定を行うことができる。なお、図1において干渉判定部170は外部接続された別装置として記載されているが、これは干渉判定部170が本発明に必須な構成ではないためである。
以上説明したように、本実施形態では、干渉対象群CGデータの描画処理を行ないながら、描画される画素毎に、その画素を描画するCGデータの識別情報を記録した干渉対象情報として、干渉対象マップ及び干渉対象LUTを生成する。次いで被干渉対象群CGデータの描画処理を行ないながら、描画画素に対応する干渉対象情報を参照する。干渉対象情報に干渉対象群CGデータが含まれている場合、描画処理中の仮想物体との干渉判定を行うべきものと判断し、干渉判定情報を生成する。
本実施形態による干渉対象マップ、干渉対象LUT及び干渉判定表はいずれも、仮想物体の描画処理と並行して、フレーム単位で、かつ簡単に得ることができる。そのため、VR(MR)アプリケーションのように、位置姿勢の自由度が高い仮想物体について、実時間で干渉判定を行う必要がある場合にも適用することができる。また、干渉の可能性がある組み合わせを画素単位での重なりから判断するので、実際には行う必要のない干渉判定処理を実行してしまう頻度を低減可能であり、ひいては干渉判定処理全体の処理時間を短縮することができる。
(第2の実施形態)
第1の実施形態においては、干渉対象マップ158に存在しない画素値に対応するレコードを削除しなければ、干渉対象LUT156には使用されないレコードが蓄積されていく。
これに対し、本実施形態では、このようなレコードの再利用を可能とすることで、干渉対象LUT156のサイズの肥大化を抑制するものである。
なお、干渉対象LUT156のレコードの追加、および干渉対象マップ158の更新後の画素値の算出は、どのように行っても良いが、例えば、干渉対象LUT156の各レコードに、「遷移後画素値」のフィールドを追加することにより容易に実現できる。また、干渉対象LUT156中のレコードのうち、再利用も、例えば各レコードに「画素数」のフィールドを追加することで、容易に実現できる。
これらの具体例を、上述の描画処理に関して説明する。
図13は、干渉対象群CGデータ112の描画処理開始時における干渉対象LUT156の内容を模式的に示す図である。ここで、干渉対象LUT156のレコードには、画素値フィールド及び、画素値に対応するCGデータを特定する情報(識別情報)のフィールドに加え、画素数フィールド及び遷移後画素値フィールドが設けられている。
画素数フィールドは、対応する画素値を持つ画素が干渉対象マップ158中にいくつあるかを示す。遷移後画素値フィールドについては後述する。
この時点では、まだポリゴン描画を開始しておらず、干渉対象マップ作成部130は描画画素の位置の通知をレンダリング部120から受けていない。そのため、干渉対象マップ158中の画素値は全てゼロに初期化されたままの状態であり、干渉対象LUT156も画素値”0”のレコードのみを有している。
干渉対象群CGデータの描画処理開始時は、全画素とも値”0”である。そのため、画素値”0”のレコードの画素数フィールドには干渉対象マップ158の全画素数に等しい値(本例では16×12=192)が格納され、識別情報フィールド並びに遷移後画素値フィールドは空き(又は空きを表す値)となる。
なお、ここでも、干渉対象群CGデータは、ポリゴンA〜Fの順に描画され、また各ポリゴンは、縦方向位置の小さい画素から、同じ縦方向位置の場合には横方向位置の小さい画素から描画されるものとする。
図14(a)はポリゴンAの描画処理において最初に描画される画素(9,4)(図5参照)の描画後の干渉対象LUT156の内容を示している。
レンダリング部120から、ポリゴンAの最初の描画画素の位置が通知されると、干渉対象マップ作成部130は、干渉対象マップ158内の対応画素(9,4)の値を取得する。そして、干渉対象マップ作成部130は、画素(9,4)の値”0”に基づいて干渉対象LUT156から画素値”0”のレコードを参照する。
干渉対象マップ作成部130は、画素値”0”のレコード内の遷移後画素値フィールドの値を参照するが、何も格納されていない(あるいは、空きを表す値である)。干渉対象マップ作成部130は、参照した遷移後画素値フィールドの空き状態を検出すると、新しいレコードを作成する。この際、生成するレコードの画素値フィールドには、干渉対象LUT156に使用されていない最も小さな値を設定されるものとする。従って、ここでは1が設定される。また、識別情報フィールドにはポリゴンAのポリゴンデータを特定する情報「A」が設定される。
そして、干渉対象マップ作成部130は、新しいレコードの画素値フィールドに設定した値を、新しいレコードの作成のきっかけとなった空き状態の遷移後画素値フィールドに設定する。
そして、干渉対象マップ作成部130は、再度、画素値”0”のレコードの遷移後画素値を参照する。この時点では1が設定されている。また、遷移後画素値フィールドの値に対応する画素値”1”のレコードも存在する。そこで、干渉対象マップ作成部130は、画素値”0”のレコードの画素数フィールドの値を1減じ、一方で画素値”1”のレコードの画素数フィールドの値を1増やす。
次に、干渉対象マップ作成部130は、レンダリング部120から画素(10,4)の通知を受ける。干渉対象マップ作成部130は、画素(10、4)の値”0”に基づいて干渉対象LUT156の画素値”0”のレコードの遷移後画素値フィールドを参照する。この時点で遷移後画素値フィールドには1が設定されており、画素値”1”のレコードも存在する。従って、干渉対象マップ作成部130は、画素値”0”のレコードの画素数フィールドの値を1減じ、一方で画素値”1”のレコードの画素数フィールドの値を1増やす。
このような動作をポリゴンAの全画素について繰り返す。ポリゴンAの描画終了時の干渉対象LUT156の内容を図14(b)に示す。図5に示すように、ポリゴンAの描画により、画素(9,4)〜(16,4)、画素(8,5)〜(16,5)及び画素(7,6)〜(16,6)の合計27画素が値”1”に更新される。従って、干渉対象LUT156の画素値”1”のレコードの画素数フィールドの値が”27”に、画素数0のレコードの画素数フィールドの値は192−27=165になる。
次にポリゴンBの描画時に同様の処理を行うが、それに先立ち、干渉対象マップ作成部130は、干渉対象LUT156の全レコードの遷移後画素値フィールドを空にする。
図15(a)は、ポリゴンBで最初に描画される画素(7,7)(図6参照)を描画した直後の干渉対象LUT156の内容を示す。
上述のように、干渉対象マップ作成部130は、画素(7,7)の値”0”から、画素値”0”のレコードの遷移後画素値フィールドを参照するが、空きであるため、新たなレコードを生成する。このレコードの画素値フィールドには2が、識別情報フィールドにはポリゴンBのポリゴンデータを特定する情報「B」が設定される。そして、干渉対象マップ作成部130は画素値”0”のレコードの遷移後画素値フィールドに「2」を設定し、画素値”2”のレコードの画素数フィールドの値を1増加させ、画素値”0”のレコードの画素数フィールドの値を1減少させる。
このような動作をポリゴンBの全画素について繰り返す。ポリゴンBの描画終了時の干渉対象LUT156の内容を図15(b)に示す。
ポリゴンBの描画が終了すると、干渉対象マップ作成部130は、ポリゴンCの描画に先立ち、干渉対象LUT156の全レコードの遷移後画素値フィールドを空にする。
しかし、上述のようにポリゴンCは画面内に描画されないため、ポリゴンCの描画処理終了時の干渉対象LUT156は、図15(b)に示す干渉対象LUT156において、画素値”0”のレコードの遷移後画素値フィールドが空きの状態に等しい。
干渉対象マップ作成部130は、干渉対象LUT156の全レコードの遷移後画素値フィールドを空き状態とし、ポリゴンDの描画処理を干渉対象LUT156に反映させる。ポリゴンDの描画処理において最初に描画される画素(10,4)がレンダリング部120から通知される。
干渉対象マップ作成部130は、まず干渉対象マップ158の画素(10,4)の値を取得する。その値は1であるので、干渉対象LUT156の画素値”1”のレコードの遷移後画素値フィールドを参照する。
この時点では遷移後画素値フィールドはクリアされていて、空き状態であるため、干渉対象マップ作成部130は、新たに画素値”3”のレコードを生成する。そして、識別情報フィールドには、画素値”1”のレコードの識別情報の内容「A」に、現在処理中の画素の識別情報であるポリゴンDのポリゴンデータを特定する情報「D」を追加した、「A,D」を設定する。
さらに干渉対象マップ作成部130は、画素値”1”のレコードの遷移後画素値フィールドに3を設定する。そして、画素値”1”のレコードの画素数フィールドの値を1減じて26に、画素値”3”のレコードの画素数フィールドの値を1増やし1に設定する。この時点の干渉対象LUT156を図16(a)に示す。このようにしてポリゴンDの全画素の描画結果を反映させた干渉対象LUT156を図16(b)に示す。
同様にして、ポリゴンEの全画素の描画結果を反映させた干渉対象LUT156を図17に示す。
最後にポリゴンFの描画を行う。これまでの処理と同様に画素(9,4)を描画した後の干渉対象LUT156を図18(a)に、画素(9,6)を描画した後の干渉対象LUT156を図18(b)に示す。
この時点で、画素値”1”のレコードの画素数フィールドの値が0になる。画素数フィールドの値が0のレコードはもはや不要であるので、次に新たにレコードを作成する際には再利用可能である。
ポリゴンFの描画処理が進み、画素(7,7)が通知された際、干渉対象マップ158の画素(7,7)の値は2だが、画素値”2”のレコードの遷移後画素値フィールドは空き状態である。
従って、干渉対象マップ作成部130は新たにレコードを作成することになるが、この時点で画素値”1”のレコードの画素数フィールドの値が”0”であることを検出する。これにより、干渉対象マップ作成部130はレコードを追加する代わりに、画素値”1”のレコードを再利用する。
すなわち、干渉対象マップ作成部130は、画素値”1”のレコードの識別情報フィールドに、ポリゴンB,Fのポリゴンデータを特定する情報「B,F」を設定し、遷移後画素値フィールドを空き状態にする。そして画素値”2”のレコードの遷移後画素値フィールドの値を”1”に設定する。画素(7,7)の描画を反映した後の干渉対象LUT156を図19(a)に示す。
さらに描画処理を継続し、ポリゴンFの全画素の描画を完了したときの干渉対象LUT156の状態は図19(b)のようになる。
画素値フィールドの値が”0”となったレコードを再利用することにより、再利用を行わない場合と比較し、干渉対象LUT156のレコード数が少なくて済む。
図20は、レコードを再利用した場合について、図9と同様に、ポリゴンFを描画し終わったときの干渉対象マップ158の画素値と干渉対象LUT156の内容の例をそれぞれ模式的に示す図である。
図9と図20との比較から明らかなように、レコードの再利用により、干渉対象LUT156のレコード数が削減されていることがわかる。
被干渉対象群CGデータの描画処理については第1の実施形態と同様に行うことが可能であり、それにより同様の干渉判定表が作成される。
このように本実施形態によれば、第1の実施形態における効果に加え、干渉対象LUTのレコード数の肥大化を抑制することが可能となる効果が実現できる。
(第3の実施形態)
本実施形態は、干渉判定表の作成処理をより効率的に行うものである。
具体的には、干渉対象LUT156のレコードに処理済フラグフィールドを追加することにより、同じ画素値に対応する識別情報を、同じデータで更新する処理を不要とするものである。
図21は、本実施形態に係る干渉対象LUTの構成例と、本実施形態における干渉判定表の更新処理について説明する図である。
ここでは、干渉対象群CGデータの描画処理終了時の干渉対象LUT156が、第2の実施形態で説明した方法で生成されている(すなわち、図19(b)に示す状態である)ものとする。
図21に示すように、本実施形態に係る干渉対象LUT156は、少なくとも画素値フィールド、識別情報フィールド及び処理済フラグフィールドを有する。
干渉判定表作成部140は、まず、干渉対象LUT156の全レコードの処理済フラグフィールドを未処理状態を表す値(ここでは「未」)に設定する。
そして、干渉判定表作成部140は、上述のポリゴンXのポリゴンデータによる最初の描画画素位置(4,4)がレンダリング部120から通知されると、干渉対象マップ158の画素(4,4)の値を参照する。そして、干渉判定表作成部140は、画素(4,4)の値”0”に対応する干渉対象LUT156のレコードの処理済フラグフィールドを参照する。画素値”0”のレコードの処理済フラグフィールドは未処理状態を示す値である「未」となっているため、干渉判定表作成部140はその値を、処理済を表す値(ここでは「済」)に書き換える。
さらに、干渉判定表作成部140は、画素値”0”のレコードの識別情報フィールドを参照する。空き状態であるため、干渉判定表に対する処理(レコードの作成、更新)は行わない。この処理は第1の実施形態と同様である。
しかし、次の描画画素(5,4)が通知された際には、画素値”0”のレコードの処理済フィールドの値が「済」となっているため、その時点で描画画素(5,4)についての処理は打ち切る。
その後、画素(7,6)がレンダリング部120から通知されるまでは干渉対象マップ158の対応画素の値は”0”である。そして、描画画素(7,6)が通知されると、干渉対象マップ158の対応画素(7,6)の値は”7”である。従って、干渉判定表作成部140は、干渉対象LUT156の画素値”7”のレコードの処理済フラグフィールドを参照する。値は「未」であるため、干渉判定表作成部140はそれを「済」に書き換えた後、同レコードの識別情報フィールドを参照する。今度は値が”A,F”であるため、第1の実施形態で説明したように、干渉判定表154にポリゴンXについてのレコードを追加する処理を行う。
次に画素(7,7)では、干渉対象マップ158の画素(7,7)の値が1となる。干渉対象LUT156における画素値”1”のレコードの処理済フラグフィールドの値は「未」であるため、干渉判定表作成部140はそれを「済」に書き換えた後、同レコードの識別情報フィールドを参照する。今度は値が”B,F”であるため、第1の実施形態で説明したように、干渉判定表154にポリゴンXについてのレコードに、識別情報を追加する処理を行なう。このようにして、ポリゴンXの全ての描画画素について処理を行う。
次に、ポリゴンYの描画時においても同様の処理を行うが、ポリゴンYの描画処理に先立ち、干渉判定表作成部140は、干渉対象LUT156の全レコードの処理済フラグフィールドを「未」としておく。
こうしてポリゴンYの全画素の処理を終えると、第1の実施形態と同様な干渉判定表が得られる。
このように、本実施形態によれば、第1の実施形態と同様の干渉判定表を、より効率的に作成することが可能になる。
(他の実施形態)
なお、上述の実施形態では、干渉対象情報を、干渉対象マップと干渉対象LUTとの組み合わせによって構成した。しかし、フレームバッファの各画素について、その画素を含む(描画する)仮想物体を特定する情報が記録できれば、干渉対象情報の形式はどのようなものであってもよい。例えば、干渉対象マップの各画素あたりのビット数が十分多い場合には、各画素に直接CGデータの識別情報を記憶するようにしてもよい。
なお、上述の実施形態では、干渉判定表は、被干渉対象群CGデータ(具体的にはポリゴンデータ)の識別情報をキーとし、干渉対象群CGデータ(ポリゴンデータ)の識別情報群を値とするレコードの集合であった。しかし、逆に、干渉対象群CGデータの識別情報をキーとし、被干渉対象群CGデータの識別情報群を値とするレコードの集合としてもよい。
また、上述の実施形態では、被干渉対象群CGデータの全てについて、1フレーム分の干渉判定表を作成してから、実際の干渉判定を行うものとして説明した。こうすることにより、レンダリング処理終了後に、干渉判定処理を一括して行えるため、比較的複雑な干渉判定処理を行うことができる。
しかし、実施形態で例示したような、ポリゴン同士の干渉判定であれば、より簡単な処理で実現することが可能である。GPUの進歩により、最近ではレンダリング処理はグラフィックボード(GPUとその周辺回路)で行われることが多くなった。グラフィックボードで複雑な干渉計算を行うのは困難であるが、ポリゴン同士の干渉判定であれば可能である。
そのため、ポリゴン同士の干渉判定をグラフィックボードで行う場合などでは、干渉判定表の完成を待たずに、レコードが生成若しくは更新される毎に干渉判定を行うことが有効である。
上述の実施形態と同様の状況を例にとって説明する。
この場合、被干渉対象群CGデータ毎に干渉判定を行うため、被干渉対象群CGデータの識別情報を干渉判定表154に含める必要はない。換言すれば、干渉判定表154には、描画処理中のCGデータに関して干渉可能性のある干渉対象群CGデータの識別情報のみが含まれていれば十分であり、キーによる検索機能は不要である。
従って、上述の実施形態では画素(7,6)が通知された際に、干渉判定表作成部140はキーをポリゴンXとし、値をA,Fとするレコードを生成したが、本実施形態では、干渉判定表154にポリゴンA,Fのポリゴンデータの識別情報を設定するだけでよい。次いで、画素(7,7)が通知された際に、ポリゴンB,Fのポリゴンデータの識別情報を追加設定するが、既にFは設定済みであるので、Bのみを追加し、結果として干渉判定表にはポリゴンA,B,Fのポリゴンデータの識別情報が保持される。ポリゴンXの描画処理が終了すると、干渉判定部170が、干渉判定表154を用いて干渉判定を行う。
この時点で干渉判定表にはポリゴンXの描画処理が反映されているので、干渉判定を行うべきポリゴンの組は(X,A),(X,B)、(X,F)の3つのみである。干渉判定処理を終えると、次はポリゴンYの描画処理を行うが、それに先立ち、干渉判定表154の内容を消去する。そして、ポリゴンXの描画時と同様の処理を行なうと、干渉判定表154はポリゴンA,B,D,Fのポリゴンデータの識別情報を持つことになる。そこで干渉判定部170は、(Y,A),(Y,B),(Y,D),(Y,F)の4通りのポリゴンの組み合わせについて干渉判定処理を行う。以上の処理によって、干渉対象群と被干渉対象群の間の干渉判定は終了する。
また、上述の実施形態では、CGデータの識別情報はポリゴンデータを特定するものとして用いたが、仮想物体を特定するものとして用いてもよい。例えば、凸物体同士の干渉判定を行う干渉判定部170が接続される干渉判定情報の生成装置の場合、凸物体を特定するものとして識別情報を定義することができる。
上述の実施形態は、システム或は装置のコンピュータ(或いはCPU、MPU等)によりソフトウェア的に実現することも可能である。
従って、上述の実施形態をコンピュータで実現するために、該コンピュータに供給されるコンピュータプログラム自体も本発明を実現するものである。つまり、上述の実施形態の機能を実現するためのコンピュータプログラム自体も本発明の一つである。
なお、上述の実施形態を実現するためのコンピュータプログラムは、コンピュータで読み取り可能であれば、どのような形態であってもよい。例えば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等で構成することができるが、これらに限るものではない。
上述の実施形態を実現するためのコンピュータプログラムは、記憶媒体又は有線/無線通信によりコンピュータに供給される。プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記憶媒体、MO、CD、DVD等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
有線/無線通信を用いたコンピュータプログラムの供給方法としては、コンピュータネットワーク上のサーバを利用する方法がある。この場合、本発明を形成するコンピュータプログラムとなりうるデータファイル(プログラムファイル)をサーバに記憶しておく。プログラムファイルとしては、実行形式のものであっても、ソースコードであっても良い。
そして、このサーバにアクセスしたクライアントコンピュータに、プログラムファイルをダウンロードすることによって供給する。この場合、プログラムファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに分散して配置することも可能である。
つまり、上述の実施形態を実現するためのプログラムファイルをクライアントコンピュータに提供するサーバ装置も本発明の一つである。
また、上述の実施形態を実現するためのコンピュータプログラムを暗号化して格納した記憶媒体を配布し、所定の条件を満たしたユーザに、暗号化を解く鍵情報を供給し、ユーザの有するコンピュータへのインストールを許可してもよい。鍵情報は、例えばインターネットを介してホームページからダウンロードさせることによって供給することができる。
また、上述の実施形態を実現するためのコンピュータプログラムは、すでにコンピュータ上で稼働するOSの機能を利用するものであってもよい。
さらに、上述の実施形態を実現するためのコンピュータプログラムは、その一部をコンピュータに装着される拡張ボード等のファームウェアで構成してもよいし、拡張ボード等が備えるCPUで実行するようにしてもよい。
本発明の第1の実施形態に係る干渉判定情報の生成装置の機能構成例を表すブロック図である。 本発明の第1の実施形態におけるレンダリング部120の動作を説明する図である。 干渉対象群CGデータが表す仮想物体の一例としての立方体を示す図である。 本発明の第1の実施形態における干渉対象マップ作成部の動作を説明するフローチャートである。 本発明の第1の実施形態において、CGデータが表す立方体の描画位置と干渉対象マップ158中の画素位置の対応および、ポリゴンAを描画し終わったときの干渉対象マップ158の画素値と干渉対象LUT156の内容の例をそれぞれ模式的に示す図である。 本発明の第1の実施形態において、図5の状態からさらにポリゴンBを描画し終わったときの干渉対象マップ158の画素値と干渉対象LUT156の内容の例をそれぞれ模式的に示す図である。 本発明の第1の実施形態において、図6の状態からさらにポリゴンDを描画し終わったときの干渉対象マップ158の画素値と干渉対象LUT156の内容の例をそれぞれ模式的に示す図である。 本発明の第1の実施形態において、図7の状態からさらにポリゴンEを描画し終わったときの干渉対象マップ158の画素値と干渉対象LUT156の内容の例をそれぞれ模式的に示す図である。 本発明の第1の実施形態において、図8の状態からさらに干渉対象群CGデータの最後のCGデータにより、ポリゴンFを描画し終わったときの干渉対象マップ158の画素値と干渉対象LUT156の内容の例をそれぞれ模式的に示す図である。 干渉対象マップ158及び干渉対象LUT156が作成されている状態における、ポリゴンXの描画画素と干渉対象マップ158の画素との対応関係及び、及び、干渉対象LUT、干渉判定表の例を示す図である。 本発明の第1の実施形態における干渉判定表作成部の動作を説明するフローチャートである。 図10の状態からさらにポリゴンYを描画した際の描画画素と干渉対象マップ158の画素との対応関係及び、干渉対象LUT、干渉判定表の例を示す図である。 本発明の第2の実施形態において、干渉対象群CGデータ112の描画処理開始時における干渉対象LUT156の内容を模式的に示す図である。 本発明の第2の実施形態における干渉対象LUT156の内容を模式的に示す図である。 本発明の第2の実施形態における干渉対象LUT156の内容を模式的に示す図である。 本発明の第2の実施形態における干渉対象LUT156の内容を模式的に示す図である。 本発明の第2の実施形態における干渉対象LUT156の内容を模式的に示す図である。 本発明の第2の実施形態における干渉対象LUT156の内容を模式的に示す図である。 本発明の第2の実施形態における干渉対象LUT156の内容を模式的に示す図である。 本発明の第2の実施形態において、ポリゴンFを描画し終わったときの干渉対象マップ158の画素値と干渉対象LUT156の内容の例をそれぞれ模式的に示す図である。 本発明の第3の実施形態における干渉対象LUTの構成例と、本実施形態における干渉判定表の更新処理について説明する図である。

Claims (6)

  1. 複数の仮想物体のうち、干渉判定を行うべき仮想物体の組み合わせを特定する干渉判定情報を生成する方法であって、
    前記複数の仮想物体のうち第1のグループに属する仮想物体について、フレームバッファへの描画処理を行ないながら、前記フレームバッファの各画素について、その画素を含む仮想物体を特定する情報を記録した干渉対象情報を生成し、記憶手段に記憶するステップと、
    前記複数の仮想物体のうち第2のグループに属する仮想物体について、前記フレームバッファへの描画処理を行ないながら、描画する各画素について前記干渉対象情報を参照し、既に前記第1のグループに属する仮想物体を特定する情報が記録されている画素である場合には、描画処理中の仮想物体を特定する情報と、前記記録されている情報により特定される前記第1のグループに属する仮想物体との組み合わせについて前記干渉判定を行うべきものとして、当該組み合わせを特定する情報を干渉判定情報として記憶手段に記憶するステップとを有することを特徴とする方法。
  2. 前記干渉対象情報が、前記フレームバッファと共通の画素座標を有するビットマップ情報と、当該ビットマップ情報の画素値と前記第1のグループに属する仮想物体を特定する情報との関係を表すテーブル情報とから構成されることを特徴とする請求項1記載の方法。
  3. 前記仮想物体がポリゴンで構成されることを特徴とする請求項1又は請求項2記載の方法。
  4. さらに、前記干渉判定情報により特定される仮想物体の組み合わせについて干渉判定を行う干渉判定ステップを有し、
    当該干渉判定ステップが、前記第2のグループに属する仮想物体が複数ある場合、それぞれの仮想物体についての前記干渉判定情報が生成される毎に、前記干渉判定を行うことを特徴とする請求項3記載の方法。
  5. 複数の仮想物体のうち、干渉判定を行うべき仮想物体の組み合わせを特定する干渉判定情報を生成する装置であって、
    前記複数の仮想物体のうち第1のグループに属する仮想物体について、フレームバッファへの描画処理を行ないながら、前記フレームバッファの各画素について、その画素を含む仮想物体を特定する情報を記録した干渉対象情報を生成し、記憶手段に記憶する手段と、
    前記複数の仮想物体のうち第2のグループに属する仮想物体について、前記フレームバッファへの描画処理を行ないながら、描画する各画素について前記干渉対象情報を参照し、既に前記第1のグループに属する仮想物体を特定する情報が記録されている画素である場合には、描画処理中の仮想物体を特定する情報と、前記記録されている情報により特定される前記第1のグループに属する仮想物体との組み合わせについて前記干渉判定を行うべきものとして、当該組み合わせを特定する情報を干渉判定情報として記憶手段に記憶する手段とを有することを特徴とする装置。
  6. コンピュータに、請求項1乃至請求項4のいずれか1項に記載の方法の各ステップを実行させるプログラム。
JP2007154436A 2007-06-11 2007-06-11 情報処理方法及び情報処理装置 Expired - Fee Related JP4948273B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007154436A JP4948273B2 (ja) 2007-06-11 2007-06-11 情報処理方法及び情報処理装置
US12/132,940 US8217933B2 (en) 2007-06-11 2008-06-04 Method and apparatus for detecting between virtual objects

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007154436A JP4948273B2 (ja) 2007-06-11 2007-06-11 情報処理方法及び情報処理装置

Publications (3)

Publication Number Publication Date
JP2008305347A true JP2008305347A (ja) 2008-12-18
JP2008305347A5 JP2008305347A5 (ja) 2010-07-22
JP4948273B2 JP4948273B2 (ja) 2012-06-06

Family

ID=40095444

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007154436A Expired - Fee Related JP4948273B2 (ja) 2007-06-11 2007-06-11 情報処理方法及び情報処理装置

Country Status (2)

Country Link
US (1) US8217933B2 (ja)
JP (1) JP4948273B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101368177B1 (ko) * 2012-08-08 2014-02-27 한국과학기술정보연구원 가상현실 멀티뷰 제공 방법 및 시스템
JP2016186726A (ja) * 2015-03-27 2016-10-27 住友ベークライト株式会社 干渉判定方法、干渉判定装置、およびコンピュータプログラム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5169175B2 (ja) * 2007-11-27 2013-03-27 富士通株式会社 干渉チェック方法、計算機支援設計装置及び干渉チェック用プログラム
WO2010129907A2 (en) * 2009-05-08 2010-11-11 Scientific Systems Company Inc. Method and system for visual collision detection and estimation
CN102598646B (zh) 2009-11-13 2014-05-07 皇家飞利浦电子股份有限公司 3d视频中深度过渡的有效编码
US8896598B2 (en) * 2010-12-03 2014-11-25 Dassault Systemes System and associated methodology for three-dimensional rendering of data containing clipping shapes

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11328445A (ja) * 1998-03-11 1999-11-30 Matsushita Electric Ind Co Ltd 衝突判定装置および方法、および衝突判定方法を記録した媒体
JP2006092222A (ja) * 2004-09-24 2006-04-06 Sega Corp オブジェクト配置方法、ゲーム装置、画像処理装置及び画像処理方法
JP2006302035A (ja) * 2005-04-21 2006-11-02 Canon Inc 画像処理方法、画像処理装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6518966B1 (en) * 1998-03-11 2003-02-11 Matsushita Institute Industrial Co., Ltd. Method and device for collision detection and recording medium recorded with collision detection method
US7773086B2 (en) * 2006-04-07 2010-08-10 Siemens Medical Solutions Usa, Inc. Range-peeling for punching masks in volume rendering

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11328445A (ja) * 1998-03-11 1999-11-30 Matsushita Electric Ind Co Ltd 衝突判定装置および方法、および衝突判定方法を記録した媒体
JP2006092222A (ja) * 2004-09-24 2006-04-06 Sega Corp オブジェクト配置方法、ゲーム装置、画像処理装置及び画像処理方法
JP2006302035A (ja) * 2005-04-21 2006-11-02 Canon Inc 画像処理方法、画像処理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101368177B1 (ko) * 2012-08-08 2014-02-27 한국과학기술정보연구원 가상현실 멀티뷰 제공 방법 및 시스템
JP2016186726A (ja) * 2015-03-27 2016-10-27 住友ベークライト株式会社 干渉判定方法、干渉判定装置、およびコンピュータプログラム

Also Published As

Publication number Publication date
US20080303815A1 (en) 2008-12-11
US8217933B2 (en) 2012-07-10
JP4948273B2 (ja) 2012-06-06

Similar Documents

Publication Publication Date Title
US9978115B2 (en) Sprite graphics rendering system
KR101661931B1 (ko) 3차원 그래픽스 랜더링 장치 및 그 방법
EP3008701B1 (en) Using compute shaders as front end for vertex shaders
JP4948218B2 (ja) 画像処理装置及びその制御方法
JP5518967B2 (ja) グラフィック・パフォーマンス改善のための方法、装置およびコンピュータ・プログラム・プロダクト
US10032308B2 (en) Culling objects from a 3-D graphics pipeline using hierarchical Z buffers
KR101814811B1 (ko) 3d 모델링된 객체의 워터마킹
US20050057579A1 (en) Adaptive manipulators
KR102555214B1 (ko) 혼합 현실에서 동적 가상 콘텐츠들을 생성하기 위한 디바이스 및 방법
KR20150039495A (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
JP4948273B2 (ja) 情報処理方法及び情報処理装置
US20130257856A1 (en) Determining a View of an Object in a Three-Dimensional Image Viewer
US9460546B1 (en) Hierarchical structure for accelerating ray tracing operations in scene rendering
WO2017164924A1 (en) System for gpu based depth reprojection for accelerating depth buffer generation
KR20160068204A (ko) 메시 지오메트리를 위한 데이터 처리 방법 및 이를 기록한 컴퓨터 판독 가능 저장 매체
JP4047421B2 (ja) ユーザ定義によるルームおよびウィンドウを用いた効率的レンダリング方法および装置
JP5864474B2 (ja) 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法
US11423618B2 (en) Image generation system and method
KR100624455B1 (ko) 3차원 그래픽스 환경에서의 라이트맵 처리 방법 및 장치
Williams Volumetric representation of virtual environments
WO2017164923A1 (en) Gpu batch occlusion query with spatial update
Conlan et al. Topics in Modeling and Rendering
Penick VFire: Virtual fire in realistic environments. A framework for wildfire visualization in immersive environments
KR20190129602A (ko) 모바일 뷰잉 시스템
JP2016066310A (ja) 線画生成装置、線画生成方法、検索装置、比較装置、検索方法およびプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100604

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100604

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120206

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120306

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150316

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4948273

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150316

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees