(57)【要約】【課題】  複数のレイに対する衝突チェックを実行するデータ処理装置を提供する。【解決手段】  データ処理装置の制御部は、空間データ構造内の第１ノードと関連した複数のレイに対して複数のパケットを生成する。また、複数のパケットのうちの少なくとも１つは、ｋ個（ただし、ｋは自然数）のレイに関する情報を含む。さらに、処理部は、複数のパケットが順次に提供され、第１ノードと関連した複数のレイそれぞれが第１ノードの子孫ノードのうちどのノードと関連するかを決定する。【選択図】      図１
2010097591.tif 000002
【特許請求の範囲】
【請求項１】
複数のレイに対する衝突チェックを実行するデータ処理装置であって、
空間データ構造内の第１ノードと関連した複数のレイに対して複数のパケットを生成する制御部と、
前記複数のパケットが提供され、前記第１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定する処理部と、
を備えることを特徴とするデータ処理装置。
【請求項２】
前記処理部はＳＩＭＤ方式のプロセッサであることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記データ処理装置は、前記第１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかが決定される場合、幅優先探索方法により、前記第１ノードと空間データ構造内における深さが同じである第２ノードと関連した複数のレイそれぞれが前記第２ノードの子孫ノードのうちどのノードと関連するかを決定することを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記データ処理装置は、前記第１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかが決定される場合、深さ優先探索方法により、前記第１ノードの第１子孫ノードと関連した複数のレイそれぞれが前記第１子孫ノードの子孫ノードのうちどのノードと関連するかを決定することを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記空間データ構造はｋｄ−ｔｒｅｅであり、前記第１ノードの子孫ノードは２つであることを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
前記空間データ構造はＢＶＨであり、前記第１ノードの子孫ノードは２つであることを特徴とする請求項１に記載のデータ処理装置。
【請求項７】
前記処理部は１２８ビットプロセッサであり、前記複数のパケットのうちの少なくとも１つは４つのレイに関する情報を含むことを特徴とする請求項１に記載のデータ処理装置。
【請求項８】
複数のレイに対する衝突チェックを実行するデータ処理装置であって、
空間データ構造内の第１ノードと関連した複数のレイに対して複数のパケットを生成する制御部と、
前記制御部から提供される前記複数のパケットを臨時に格納する第１バッファメモリと、
前記第１バッファメモリから前記複数のパケットを受信し、前記第１ノードと関連した複数のレイが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定する処理部と、
を備えることを特徴とするデータ処理装置。
【請求項９】
前記第１ノードと関連した複数のレイが前記第１ノードの子孫ノードのうちどのノードと関連するかに関する情報を含むレイデータを格納する第２バッファメモリをさらに備えることを特徴とする請求項８に記載のデータ処理装置。
【請求項１０】
前記処理部は、前記第１バッファから前記複数のパケットが順次に提供され、演算ごとに前記第１ノードと関連した複数のレイのうちの少なくとも１つ以上のレイが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定するＳＩＭＤ方式の演算を実行することを特徴とする請求項８に記載のデータ処理装置。
【請求項１１】
前記空間データ構造は、ｋｄ−ｔｒｅｅまたはＢＶＨのうちの１つであることを特徴とする請求項７に記載のデータ処理装置。
【請求項１２】
複数のレイに対する衝突チェックを実行するデータ処理方法であって、
空間データ構造内の第１ノードと関連した複数のレイに対して複数のパケットを生成するステップと、
前記複数のパケットを処理部に提供し、前記第１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定するステップと、
を含むことを特徴とするデータ処理方法。
【請求項１３】
前記処理部はＳＩＭＤ方式の演算を実行することを特徴とする請求項１２に記載のデータ処理方法。
【請求項１４】
前記データ処理方法は、前記空間データ構造上の第１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定した後に、幅優先探索方法により、前記第１ノードと空間データ構造内における深さが同じである第２ノードと関連した複数のレイそれぞれが前記第２ノードの子孫ノードのうちどのノードと関連するかを決定することを特徴とする請求項１２に記載のデータ処理方法。
【請求項１５】
前記データ処理方法は、前記空間データ構造上の第１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定した後に、深さ優先探索方法により、前記第１ノードの第１子孫ノードと関連した複数のレイそれぞれが前記第１子孫ノードの子孫ノードのうちどのノードと関連するかを決定することを特徴とする請求項１２に記載のデータ処理方法。
【請求項１６】
前記空間データ構造はｋｄ−ｔｒｅｅであり、前記第１ノードの子孫ノードは２つであることを特徴とする請求項１２に記載のデータ処理方法。
【請求項１７】
前記空間データ構造はＢＶＨであり、前記第１ノードの子孫ノードは２つであることを特徴とする請求項１２に記載のデータ処理方法。
【請求項１８】
前記処理部は１２８ビットプロセッサであり、前記複数のパケットのうちの少なくとも１つは４つのレイに関する情報を含むことを特徴とする請求項１２に記載のデータ処理方法。
【請求項１９】
複数のレイに対する衝突チェックを実行するデータ処理方法であって、
空間データ構造内の第１ノードと関連した複数のレイに対して複数のパケットを生成して第１バッファメモリに格納するステップと、
前記第１ノードと関連した複数のレイが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定するために、前記第１バッファから前記複数のパケットを順次に読み取ってＳＩＭＤ方式の処理部に提供するステップと、
前記ＳＩＭＤ方式の処理部によって追加される情報を含む複数のレイデータを第２バッファメモリに格納するステップと、
を含むことを特徴とするデータ処理方法。
【請求項２０】
複数のレイに対する衝突チェックを実行するデータ処理方法を実行するプログラムを記録するコンピュータで読取可能な記録媒体であって、
前記プログラムは、
空間データ構造内の第１ノードと関連した複数のレイに対して複数のパケットを生成するステップを実行する命令語セットと、
前記複数のパケットを処理部に提供し、前記第１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定するステップを実行する命令語セットと、
を含むことを特徴とするコンピュータで読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３Ｄレンダリング（Ｒｅｎｄｅｒｉｎｇ）のうち、レイトレーシング（Ｒａｙ  Ｔｒａｃｉｎｇ）などで用いられる衝突チェック（Ｃｏｌｌｉｓｉｏｎ  Ｃｈｅｃｋ）のためにデータを処理する方法および装置に関する。
【背景技術】
【０００２】
レイトレーシングを加速するアルゴリズムとして、最近、ハードウェアのＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）特性を活用しようとする研究が最も活発である。レイトレーシングの演算複雑度はレイ数とジオメトリ（ｇｅｏｍｅｔｒｙ）数の乗算でなされるが、ＳＩＭＤ演算を介して演算速度を向上させることができる。
【０００３】
現在、ＳＩＭＤ帯域幅は１２８ビットまで開発され、インテルやエヌビディア（ＮＶＩＤＩＡ）など多数のハードウェア製造会社のロードマップによれば、２０１０年には５１２ビットまで拡大される予定にある。
【０００４】
このようなハードウェアの発展と共に、レイトレーシングで高いコヒーレンス（ｃｏｈｅｒｅｎｃｙ）を有するレイ、すなわち、出発地点、目標地点と進行方向が類似したレイに対する衝突チェックを一度に実行する研究の重要性も高まっている。
【０００５】
しかしながら、既存のＳＩＭＤ加速アルゴリズムは、一次レイ（ｐｒｉｍａｒｙ  ｒａｙ）のみを考慮している。レイトレーシングにおいて一次レイは高いコヒーレンスを見せるが、演算の大部分を占める二次レイ（ｓｅｃｏｎｄａｒｙ  ｒａｙ）からは急激にコヒーレンスが低下するという特性を有している。
【０００６】
また、レイトレーシングは、ＣＰＵの特性である分岐／再帰（ｂｒａｎｃｈｉｎｇ／ｒｅｃｕｒｓｉｏｎ）に適したアルゴリズムであるが、高いＦＬＯＰ性能を見せるＧＰＵ、Ｃｅｌｌなどのプロセッサは基本的にストリーミング（ｓｔｒｅａｍｉｎｇ）方式を用いるため、このような点をレイトレーシングで考慮する必要がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】大韓民国公開特許第２００８−００５５３２７号公報
【特許文献２】大韓民国公開特許第２００８−００５２３２８号公報
【特許文献３】大韓民国公開特許第２００８−００２０１９８号公報
【特許文献４】大韓民国公開特許第２００８−００１８５０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、上述した問題点を解決するために案出されたものであって、一次レイだけではなく、二次レイを含むＳＩＭＤ加速方法および演算装置を提供することを目的とする。
【０００９】
また、本発明は、ＳＩＭＤビット数の増加に伴って比例した性能向上を招来することができるように、レイのコヒーレンス程度にほぼ影響を受けないＳＩＭＤ演算のためのデータ処理方法および装置を提供することを他の目的とする。
【課題を解決するための手段】
【００１０】
上述した目的を達成するために、本発明の一実施形態によれば、複数のレイに対する衝突チェックを実行するデータ処理装置であって、空間データ構造（Ｓｐａｔｉａｌ  ｄａｔａ  ｓｔｒｕｃｔｕｒｅ）内の第１ノードと関連した複数のレイに対して複数のパケットを生成する制御部［前記複数のパケットうちの少なくとも１つは、ｋ個（ただし、ｋは自然数）のレイに関する情報を含む］と、前記複数のパケットが順次に提供され、前記第１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定する処理部（Ｐｒｏｃｅｓｓｏｒ）とを備えるデータ処理装置が提供される。
【００１１】
前記処理部はＳＩＭＤ方式のプロセッサとすることができる。
【００１２】
本発明の一実施形態では、前記データ処理装置は、前記第１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかが決定される場合、幅優先探索（Ｂｒｅａｄｔｈ−ｆｉｒｓｔ  ｓｅａｒｃｈ）方法により、前記第１ノードと空間データ構造内における深さ（ｄｅｐｔｈ）が同じである第２ノードと関連した複数のレイそれぞれが前記第２ノードの子孫ノードのうちどのノードと関連するかを決定する。
【００１３】
しかしながら、本発明の他の実施形態において、前記データ処理装置は、前記第１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかが決定される場合、深さ優先探索（Ｄｅｐｔｈ−ｆｉｒｓｔ  ｓｅａｒｃｈ）方法により、前記第１ノードの第１子孫ノードと関連した複数のレイそれぞれが前記第１子孫ノードの子孫ノードうちどのノードと関連するかを決定する。
【００１４】
一方、前記空間データ構造は、ｋｄ−ｔｒｅｅまたはＢＶＨなどとすることができ、この場合、前記第１ノードの子孫ノードは２つである。
【００１５】
本発明の一実施形態によれば、前記処理部は１２８ビットプロセッサであり、前記ｋは４である。
【００１６】
本発明のさらに他の一実施形態によれば、複数のレイに対する衝突チェックを実行するデータ処理装置であって、空間データ構造内の第１ノードと関連した複数のレイに対して複数のパケットを生成する制御部［前記複数のパケットのうちの少なくとも１つは、ｋ個（ただし、ｋは自然数）のレイに関する情報を含む］と、前記制御部から提供される前記複数のパケットを臨時で格納する第１バッファメモリと、前記第１バッファメモリから前記複数のパケットを順次に受信し、前記第１ノードと関連した複数のレイが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定する処理部とを備えるデータ処理装置が提供される。
【００１７】
一方、前記データ処理装置は、前記第１ノードと関連した複数のレイが前記第１ノードの子孫ノードのうちどのノードと関連するかに関する情報を含むレイデータを格納する第２バッファメモリをさらに備える。
【００１８】
本発明の一実施形態によれば、前記処理部は、前記第１バッファから前記複数のパケットが順次に提供され、演算ごとに前記第１ノードと関連した複数のレイのうちのｋ個のレイが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定するＳＩＭＤ方式の演算を実行する。
【００１９】
本発明のさらに他の一実施形態によれば、複数のレイに対する衝突チェックを実行するデータ処理方法であって、空間データ構造内の第１ノードと関連した複数のレイに対して複数のパケットを生成するステップ［前記複数のパケットのうちの少なくとも１つは、ｋ個（ただし、ｋは自然数）のレイに関する情報を含む］と、前記複数のパケットを処理部に提供し、前記１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定するステップとを含むデータ処理方法が提供される。
【００２０】
本発明の一実施形態によれば、前記データ処理方法は、前記空間データ構造上の第１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定した後に、幅優先探索方法により、前記第１ノードと空間データ構造内における深さが同じである第２ノードと関連した複数のレイそれぞれが前記第２ノードの子孫ノードのうちどのノードと関連するかを決定する。
【００２１】
一方、前記データ処理方法は、前記空間データ構造上の第１ノードと関連した複数のレイそれぞれが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定した後に、深さ優先探索方法により、前記第１ノードの第１子孫ノードと関連した複数のレイそれぞれが前記第１子孫ノードの子孫ノードのうちどのノードと関連するかを決定することもできる。
【００２２】
本発明のさらに他の一実施形態によれば、複数のレイに対する衝突チェックを実行するデータ処理方法であって、空間データ構造内の第１ノードと関連した複数のレイに対して複数のパケットを生成して第１バッファメモリに格納するステップ［前記複数のパケットのうちの少なくとも１つは、ｋ個（ただし、ｋは自然数）のレイに関する情報を含む］と、前記第１ノードと関連した複数のレイが前記第１ノードの子孫ノードのうちどのノードと関連するかを決定するために、前記第１バッファから前記複数のパケットを順次に読み取ってＳＩＭＤ方式の処理部に提供するステップと、前記ＳＩＭＤ方式の処理部によって追加される情報を含む複数のレイデータを第２バッファメモリに格納するステップとを含むデータ処理方法が提供される。
【００２３】
前記空間データ構造はｋｄ−ｔｒｅｅとすることができ、この場合、データ構造内の各ノードの子孫ノード数は２とすることができる。
【００２４】
また、前記空間データ構造はＢＶＨ（Ｂｏｕｎｄｉｎｇ  Ｖｏｌｕｍｅ  Ｈｉｅｒａｒｃｈｉｅｓ）とすることができ、この場合も、データ構造内の各ノードの子孫ノード数は２とすることができる。
【発明の効果】
【００２５】
本発明に係る一実施形態によれば、レイトレーシングにおいて、ＳＩＭＤ加速性能が改善される。
【００２６】
また、本発明の他の実施形態によれば、レイトレーシングにおいてレイのコヒーレンス程度にほぼ影響を受けないと共にＳＩＭＤ演算が可能であるため、ＳＩＭＤビット数の増加に伴って比例した性能向上が可能である。
【図面の簡単な説明】
【００２７】
【図１】本発明の一実施形態に係るデータ処理装置を示すブロック図である。
【図２】本発明の一実施形態によって衝突チェックを実行する様子を示す図である。
【図３】本発明の一実施形態によって図２の３Ｄモデルと関連する空間データ構造の様子を示す図である。
【図４】本発明の一実施形態によって、複数のレイに対して複数のパケットを生成してデータ処理方法を実行する過程を示す図である。
【図５】本発明の一実施形態に係るデータ処理装置内において、複数のパケットが処理部で処理される様子を示す図である。
【図６】本発明の一実施形態に係るデータ処理方法を示すフローチャートである。
【発明を実施するための形態】
【００２８】
以下、添付の図面および添付の図面に記載された内容を参照しながら本発明の実施形態について詳細に説明するが、本発明が実施形態によって制限されたり限定されることはない。図中、同じ参照符号は同じ部材を示す。
【００２９】
図１は、本発明の一実施形態に係るデータ処理装置を示すブロック図である。
【００３０】
データ処理装置１００の制御部１１０は、入力される複数のレイに対して複数のパケットを生成する。複数のレイは、先行過程において同じノードに関連していた複数のレイである。
【００３１】
また、各パケットは、ｋ個（ただし、ｋは自然数）のレイ（Ｒａｙ）を含む。ｋは、処理部１３０が並列的に一度に処理することができるデータの数である。
【００３２】
本発明の一実施形態によれば、データ処理装置１００は、第１バッファメモリ１２０を備える。第１バッファメモリ１２０は複数のパケットを格納する。また、複数のパケットは、制御部１１０によって順次に処理部１３０に提供される。
【００３３】
レイトレーシング過程において、どのレイが３Ｄモデル内のどのジオメトリと衝突するかを決定するために、３Ｄモデルと関連した空間データ構造でツリー探索（ｔｒｅｅ  ｔｒａｖｅｒｓａｌ）を実行する。
【００３４】
本発明の一実施形態によれば、処理部１３０は、ＳＩＭＤ方式のプロセッサである。したがって、ｋ個のレイデータ（すなわち、１つのパケット）に対して子孫ノードを決定することができる。
【００３５】
本発明の一実施形態によれば、子孫ノードが決定された複数のレイは、第２バッファメモリ１４０に格納される。一方、第２バッファメモリ内において、複数のレイは、子孫ノードが同じもの同士が分離されて格納されるようにできる。
【００３６】
本発明のさらに他の実施形態によれば、第２バッファメモリは２つ以上のメモリ構造を含み、子孫ノードが決定された複数のレイは子孫ノードが同じもの同士が同じメモリ構造に格納される。
【００３７】
図２は、本発明の一実施形態によって衝突チェックを実行する様子を示す図である。
【００３８】
３Ｄモデル２００がレイトレーシング方法によってレンダリングされる。３Ｄモデル２００は、メッシュ基盤（ｍｅｓｈ−ｂａｓｅｄ  ３Ｄ）モデルとすることもできるし、ポイント基盤（ｐｏｉｎｔ−ｂａｓｅｄ  ３Ｄ）モデルとすることもできる。
【００３９】
レイＲｉ２１０に対して衝突チェックが実行される。レイトレーシングにおいて、衝突チェックは、特定レイが３Ｄモデルのオブジェクト（ｏｂｊｅｃｔ）空間２００内においてどこに衝突するかを決定するものである。また、衝突チェックによって、衝突する地点で反射（Ｒｅｆｌｅｃｔｉｏｎ）の程度、透過（Ｔｒａｎｓｍｉｓｓｉｏｎ）の程度、および光源の直接反射（Ｄｉｒｅｃｔ  ｉｌｌｕｍｉｎａｔｉｏｎ）の程度も決定される。
【００４０】
本発明の一実施形態に係るデータ処理装置および方法は、特定レイ、例えばレイＲｉ２１０が３Ｄモデルと衝突するジオメトリ２２０を決定する。ジオメトリ２２０は、３Ｄモデルを構成する単位構造（ｕｎｉｔ  ｓｔｒｕｃｔｕｒｅ）であって、メッシュ基盤（ｍｅｓｈ−ｂａｓｅｄ  ３Ｄ）モデルでは多角形（例えば、三角形）であり、ポイント基盤（ｐｏｉｎｔ−ｂａｓｅｄ  ３Ｄ）モデルではポイントである。
【００４１】
図３は、本発明の一実施形態によって図２の３Ｄモデルと関連する空間データ構造の様子を示す図である。３Ｄモデル２００内で、図２のレイＲｉ２１０がどの部分と衝突するかを決定するために、３Ｄモデル２００を２分割しながら、レイＲｉ２１０が分割された部分のうちどの部分に関連するかを判断する過程を繰り返す。
【００４２】
本発明の一実施形態によれば、空間データ構造３００は、ｋｄ−ｔｒｅｅである。
【００４３】
一方、本発明の他の実施形態では、空間データ構造は、ＢＶＨ（Ｂｏｕｎｄｉｎｇ  Ｖｏｌｕｍｅ  Ｈｉｅｒａｒｃｈｉｅｓ）である。ＢＶＨでは、３Ｄモデルを体積によって２分割し、バウンディングボックスで区画する。しかしながら、ｋｄ−ｔｒｅｅとＢＶＨが生成する空間データ構造３００は、すべてツリー構造のような形態で表現することができる。
【００４４】
以下では、空間データ構造がｋｄ−ｔｒｅｅである実施形態のみについて説明する。しかしながら、空間データ構造の実施形態は、ｋｄ−ｔｒｅｅだけではなくＢＶＨも可能である。したがって、本発明は、特定の空間データ構造に関するものに限定されることはなく、本発明の思想を維持しながら多様な変形が可能である。
【００４５】
ｋｄ−ｔｒｅｅを生成するために、３Ｄモデル２００をオブジェクトのジオメトリ数によって２分割する。
【００４６】
境界（ｂｏｕｎｄａｒｙ）３１０を基準としてＬ（Ｌｅｆｔ）部分とＲ（Ｒｉｇｈｔ）部分に２分割する。発明の一実施形態によれば、分割されたＬ部分内に含まれるジオメトリの数と、分割されたＲ部分内に含まれるジオメトリの数は同じである。しかしながら、他の実施形態では、３Ｄモデル２００内の空間体積（ｓｐａｔｉａｌ  ｖｏｌｕｍｅ）が同じになるように分割（この場合、生成される空間ツリー構造が不均衡なことがある）するなど多様な変形が可能である。
【００４７】
また、境界３１０によって分割されたＬ部分と、境界３１０によって分割されたＲ部分もそれぞれ２分割される。Ｌ部分は境界３２０によって分割され、Ｒ部分は境界３３０によって分割される。これにより、３Ｄモデル２００が４分割された。
【００４８】
同様に、分割された部分それぞれを再び２分割することで、３Ｄモデル２００が計８分割された。
【００４９】
空間データ構造３００のノード３０１は、３Ｄモデル２００全体と関連する。また、境界３１０によって３Ｄモデル２００を２分割して生成されたＬ部分は、ノード３１１と関連する。さらに、境界３１０によって３Ｄモデル２００を２分割して生成されたＲ部分は、ノード３１２と関連する。
【００５０】
図２のレイＲｉ２１０は、境界３１０を基準として左側となるＬ部分と衝突するため、ノード３１１と関連する。
【００５１】
また、境界３１０によって３Ｄモデル２００を２分割して生成されたＬ部分は、境界３２０を基準として再び２分割され、それぞれノード３２１とノード３２２と関連する。同様に、境界３１０によって３Ｄモデル２００を２分割して生成されたＲ部分も、境界３３０を基準として再び２分割され、それぞれノード３３１とノード３３２と関連する。
【００５２】
レイＲｉ２１０は、境界３２０を基準としてＲ部分に衝突するため、ノード３２２と関連する。
【００５３】
同様に、４分割された部分それぞれが、境界３４０、境界３５０、境界３６０、および境界３７０によって２分割されることで、３Ｄモデル２００は計８分割されるが、これはそれぞれノード３４１、ノード３４２、ノード３５１、ノード３５２、ノード３６１、ノード３６２、ノード３７１、およびノード３７２と関連する。
【００５４】
レイＲｉ２１０は、境界３５０を基準としてＬ部分に衝突するため、ノード３５１と関連する。
【００５５】
図４は、本発明の他の実施形態によって、複数のレイに対して複数のパケットを生成してデータ処理方法を実行する過程を示す図である。
【００５６】
空間データ構造４０１は、図３を参照しながら説明した過程により、３Ｄ空間を２分割しながら生成された。
【００５７】
ノード４１０と関連する３Ｄ空間を２分割した場合、左側の部分Ｌはノード４１０の子孫ノード（ｃｈｉｌｄ  ｎｏｄｅ）であるノード４２１に対応し、右側の部分Ｒはノード４１０の子孫ノードであるノード４２２に対応する。
【００５８】
本発明の一実施形態によって処理されるデータであるレイＲ１〜Ｒ１２は、現在ノード４５２と関連している。レイＲ１〜レイＲ１２はすべて、ノード４１０の子孫ノードであるノード４２１とノード４２２のうちでは、ノード４２１と関連した。また、ノード４２１の子孫ノードのうちでは、ノード４３２と関連した。さらに、ノード４３２の子孫ノードのうちでは、ノード４５２と関連した。
【００５９】
すなわち、レイＲ１〜Ｒ１２は、空間データ構造４０１の深さ（ｄｅｐｔｈ）１ではＬに、深さ２ではＲに、さらに深さ３ではＲに関連する。
【００６０】
本発明の一実施形態に係るデータ処理装置は、深さ４において、レイＲ１〜Ｒ１２がノード４５２の子孫ノードのうちでノード４６１と関連するかノード４６２と関連するかを決定する。
【００６１】
本発明の一実施形態によれば、図１の制御部１１０により、レイＲ１〜Ｒ１２は３つのパケットにグルーピングされる。例えば、Ｒ１〜Ｒ４が１つのパケット、Ｒ５〜Ｒ８が他の１つのパケット、そしてＲ９〜Ｒ１２がさらに他の１つのパケットで生成される。
【００６２】
また、これらのパケットが順次に処理部１３０に提供され、処理部１３０は一度に４つのレイに対してＬであるかＲであるかを判断する。
【００６３】
表４００の深さ４行（ｒａｗ）は、本発明の一実施形態に係るデータ処理装置により、ノード４５２と関連したレイＲ１〜Ｒ１２それぞれが、ノード４６１とノード４６２のうちのいずれのノードと関連するかを判断した結果を示している。
【００６４】
表４００の深さ４において「Ｌ」と表記されたＲ１、Ｒ２、Ｒ５、Ｒ７、Ｒ９、Ｒ１０、Ｒ１１、およびＲ１２は、ノード４６１に関連する。また、「Ｒ」と表記されたＲ３、Ｒ４、Ｒ６、およびＲ８は、ノード４６２に関連する。
【００６５】
一方、本発明の一実施形態によれば、衝突チェックは幅優先探索方式によって実行される。例えば、ノード４１０に関連する複数のレイに対して本発明のデータ処理方法を適用し、一部はノード４２１に、残りはノード４２２に関連する。また、ノード４２１に関連する一部レイに対して本発明のデータ処理方法を適用し、ノード４２２に関連する残りのレイに対して本発明のデータ処理方法を適用する。その次に、ノード４３１、ノード４３２、ノード４４１、およびノード４４２に対して本発明のデータ処理方法を適用する。すなわち、ツリー深さ（ｔｒｅｅ  ｄｅｐｔｈ）が同じであるノードに対して本発明のデータ処理方法を適用した後、その次にツリー深さのノードに対して本発明のデータ処理方法を適用する。
【００６６】
しかしながら、本発明の他の実施形態によれば、衝突チェックは深さ優先探索方式によって実行される。この例として、ノード４１０に対して本発明のデータ処理方法を適用した後にノード４２１に対して適用し、その次はノード４３１に対して適用する方式である。すなわち、リーフノード（ｌｅａｆ  ｎｏｄｅ）に到達するまでは、子孫ノード方向のみに本発明のデータ処理方法を適用するのである。
【００６７】
図５は、本発明の一実施形態に係るデータ処理装置内において、複数のパケットが処理部で処理される様子を示す図である。
【００６８】
本発明の一実施形態によれば、第１バッファメモリ５１０内に３つのパケットが格納されている。３つのパケットは、図１の制御部１１０が入力される複数のレイ（例えば、Ｒ１〜Ｒ１２）を４つずつグルーピングして生成されたものである。
【００６９】
第１バッファメモリ５１０に格納されたパケットは、現段階において同じノード（例えば、図４のノード４５２）に関連している。したがって、現在までのツリー探索過程がすべて同じである。上述して例を挙げたノード４５２に関連しているとすれば、Ｒ１〜Ｒ１２は、今までのツリー探索過程がＬＲＲである。したがって、制御部１１０が現段階で入力されたレイデータＲ１〜Ｒ１２を任意に４つずつグルーピングして３つのパケットを生成する。
【００７０】
もちろん、図５に示すパケットの形態、１パケットあたりのレイの個数は変更することができ、本発明は特定の実施形態に限定されるものではない。上述したとおり、処理部５２０がいくつのデータを一度に処理できるのかというハードウェア的特性に応じて、１パケットあたりのレイの数ｋ個（ただし、ｋは自然数）は変更することができる。
【００７１】
本発明の一実施形態では、処理部５２０が１２８ビットプロセッサであり、４ワイド（ｗｉｄｅ）特性（一度に４つのデータを並列処理）を有するため、４つのデータに同じ命令（ｉｎｓｔｒｕｃｔｉｏｎ）を処理することができる。
【００７２】
処理部５２０がパケットに対して子孫ノード（ノード４６１またはノード４６２）を決定する場合、レイＲ１〜Ｒ１２は第２バッファメモリ５３０に格納される。
【００７３】
本発明の他の一実施形態によれば、「ＬＲＲＬ」特性を有するＲ１、Ｒ２、Ｒ５、Ｒ７、Ｒ９、Ｒ１０、Ｒ１１、およびＲ１２は、「ＬＲＲＲ」特性を有するＲ３、Ｒ４、Ｒ６、およびＲ８と相違するメモリに格納されるようにできる。
【００７４】
図６は、本発明の一実施形態に係るデータ処理方法を示すフローチャートである。
【００７５】
ステップＳ６１０で、複数のレイが入力される。複数のレイは現在同じノードに関連したレイであって、今までのツリー探索過程が同じレイである。例えば、図４のレイＲ１〜Ｒ１２である。
【００７６】
ステップＳ６２０で、複数のレイを複数のパケットでグルーピングする。この場合、１つのパケットはｋ個（ただし、ｋは自然数）のレイで構成される。ｋはプロセッサのハードウェア的特性に応じて決定することができるが、例えばＳＩＭＤ方式のプロセッサのうち、１２８ビットプロセッサ（４ワイド特性）では、ｋは４と決定される。
【００７７】
本発明の一実施形態によれば、生成された複数のパケットは、第１バッファメモリに格納される。
【００７８】
ステップＳ６３０で、複数のパケットが順次にプロセッサに提供され、プロセッサは各パケットに含まれたｋ個のレイに対して子孫ノードを決定する。
【００７９】
本発明の一実施形態によれば、ステップＳ６３０で子孫ノードが決定されれば、複数のレイはそれぞれの子孫ノードと関連したメモリに格納される。そして、その次の過程における子孫ノードにおいて、ステップＳ６１０〜ステップ６３０が繰り返される。
【００８０】
なお、本発明に係る映像処理方法は、コンピュータにより実現される多様な動作を実行するためのプログラム命令を含むコンピュータ読取可能な記録媒体を含む。当該記録媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせて含むこともでき、記録媒体およびプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知であり使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー（登録商標）ディスク及び磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体、フロプティカルディスクのような磁気−光媒体、およびＲＯＭ、ＲＡＭ、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれる。また、記録媒体は、プログラム命令、データ構造などを保存する信号を送信する搬送波を含む光または金属線、導波管などの送信媒体でもある。プログラム命令の例としては、コンパイラによって生成されるような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行され得る高級言語コードを含む。前記したハードウェア要素は、本発明の動作を実行するために一以上のソフトウェアモジュールとして作動するように構成することができ、その逆もできる。
【００８１】
上述したように、本発明の好ましい実施形態を参照して説明したが、該当の技術分野において熟練した当業者にとっては、特許請求の範囲に記載された本発明の思想および領域から逸脱しない範囲内で、本発明を多様に修正および変更させることができることを理解することができるであろう。すなわち、本発明の技術的範囲は、特許請求の範囲に基づいて定められ、発明を実施するための最良の形態により制限されるものではない。
【符号の説明】
【００８２】
１００  データ処理装置
１１０  制御部
１２０、５１０  第１バッファメモリ
１３０、５２０  処理部
１４０、５３０  第２バッファメモリ
２００  ３Ｄモデル
２２０  ジオメトリ
【図１】
2010097591.tif 000003
【図２】
2010097591.tif 000004
【図３】
2010097591.tif 000005
【図４】
2010097591.tif 000006
【図５】
2010097591.tif 000007
【図６】
2010097591.tif 000008