(57)【要約】【課題】３次元オブジェクトのレンダリング処理を柔軟性や互換性を保ちながら、並列処理により高速化することは難しかった。【解決手段】オブジェクト記憶部５２はオブジェクトの３次元データと、オブジェクトの占有する空間領域を包含するＢ−ｂｏｘの配列データとを記憶する。分類部４４はオブジェクト記憶部５２からＢ−ｂｏｘ配列を読み込み、オブジェクトの属性やＬＯＤ情報にもとづいてＢ−ｂｏｘをグループに分類する。描画処理部４６は、同一グループに属するＢ−ｂｏｘを包含するブリックを算出し、ブリックごとに独立した描画処理を行って画像データを生成し、画像記憶部５４に格納する。統合部４８は、画像記憶部５４に格納されたブリックごとの画像データを統合して最終的に表示すべき出力画像データを生成する。【選択図】図７
2010092507.tif 000002
【特許請求の範囲】
【請求項１】
入力された３次元オブジェクトのデータをグループに分類する分類部と、
同一グループに属する３次元オブジェクトを包含する部分空間を、前記部分空間同士が３次元空間において重なりがあることを許容して算出し、算出された部分空間をそのグループに関連づけ、前記部分空間をそれぞれ独立した描画単位とする個別の描画処理を行い、前記描画単位ごとに独立した画像データを生成する描画処理部と、
前記描画単位ごとに生成された前記画像データを統合して最終的に表示すべき画像データを生成する統合部とを含むことを特徴とする画像処理装置。
【請求項２】
前記描画処理部は、透視投影で規定される四角錐台を前記部分空間として算出して前記３次元オブジェクトの透視変換を行う座標変換部と、前記四角錐台における個別の描画処理を行うレンダリング部とを含むことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記分類部は、入力された３次元オブジェクトの属性にもとづいて描画戦略を選択し、同一の描画戦略が適用されるべき３次元オブジェクトを同一のグループに分類し、
前記描画処理部は、グループ毎に異なる描画戦略によって前記個別の描画処理を行い、前記描画単位ごとに独立した画像データを生成することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記分類部は、前記３次元オブジェクトの運動特性に関する属性にもとづいてモーションブラー処理を適用するかどうかを描画戦略として選択し、モーションブラー処理が適用されるべき前記３次元オブジェクトを同一のグループにグループ分けすることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記分類部は、前記３次元オブジェクトを描画する際の詳細度に関する情報にもとづいて詳細度に応じた解像度で描画するマルチ解像度描画戦略を選択し、同一の解像度で描画されるべき前記３次元オブジェクトを同一のグループにグループ分けすることを特徴とする請求項３に記載の画像処理装置。
【請求項６】
前記分類部は、前記３次元オブジェクトを描画する際の詳細度に関する情報にもとづいて詳細度に応じたフォーカス深度でデフォーカス処理を施す描画戦略を選択し、同一のフォーカス深度でデフォーカス処理されるべき前記３次元オブジェクトを同一のグループにグループ分けすることを特徴とする請求項３に記載の画像処理装置。
【請求項７】
前記統合部は、前記描画単位ごとに生成された前記画像データの各画素の奥行き値のダイナミックレンジを補正した上で、補正された前記奥行き値の大小比較により前記画像データを合成して最終的に表示すべき画像を生成することを特徴とする請求項１から６のいずれかに記載の画像処理装置。
【請求項８】
前記描画処理部は、複数のレンダリング部を含み、各描画単位の描画処理の複雑度にもとづいて描画処理を前記複数のレンダリング部に分散させることを特徴とする請求項１から７のいずれかに記載の画像処理装置。
【請求項９】
前記描画処理部は、複数の処理性能の異なるレンダリング部を含み、各描画単位の描画処理の複雑度に応じた処理性能をもつ前記レンダリング部にその描画処理を行わせることを特徴とする請求項１から７のいずれかに記載の画像処理装置。
【請求項１０】
当該装置の外部にあって、ネットワークで当該装置に結合した分散描画処理ユニットから前記描画単位で描画処理された画像データを受信する通信部をさらに含み、前記統合部は、前記分散描画処理ユニットから受信した画像データを前記描画処理部が生成した画像データに統合し、最終的に表示すべき画像データを生成することを特徴とする請求項１から７のいずれかに記載の画像処理装置。
【請求項１１】
各描画単位の描画処理の詳細度に関する情報に応じてネットワーク上の距離の異なる分散描画処理ユニットにその描画処理を行わせることを特徴とする請求項１０に記載の画像処理装置。
【請求項１２】
ネットワークを介して相互に情報を交換しながら、分散描画処理を行う複数の画像処理装置を含む画像処理システムであって、
入力された３次元オブジェクトのデータをグループに分類する分類部と、
同一グループに属する３次元オブジェクトを包含する部分空間を、前記部分空間同士が３次元空間において重なりがあることを許容して算出し、算出された部分空間をそのグループに関連づけ、前記部分空間をそれぞれ独立した描画単位とする個別の描画処理を行い、前記描画単位ごとに独立した画像データを生成する描画処理部と、
前記描画単位ごとに生成された前記画像データを統合して最終的に表示すべき画像データを生成する統合部とを含み、
前記分類部、前記描画処理部、および前記統合部は、前記複数の画像処理装置に機能分散されていることを特徴とする画像処理システム。
【請求項１３】
ネットワークを介して他の装置と情報を交換する画像処理装置であって、
当該装置は、入力された３次元オブジェクトのデータをグループに分類する分類部、同一グループに属する３次元オブジェクトを包含する部分空間を、前記部分空間同士が３次元空間において重なりがあることを許容して算出し、算出された部分空間をそのグループに関連づけ、前記部分空間をそれぞれ独立した描画単位とする個別の描画処理を行い、前記描画単位ごとに独立した画像データを生成する描画処理部、および前記描画単位ごとに生成された前記画像データを統合して最終的に表示すべき画像データを生成する統合部の内、少なくとも１つの機能構成を含み、
当該装置に含まれない前記機能構成による処理については、前記他の装置からその処理結果を受信して利用することを特徴とする画像処理装置。
【請求項１４】
重なりを許容して分割された部分空間ごとにその部分空間に含まれる３次元オブジェクトのレンダリングを独立して行い、各部分空間に含まれる３次元オブジェクトのレンダリング結果を奥行き方向の距離を評価して統合することを特徴とする画像処理方法。
【請求項１５】
１または複数の３次元オブジェクトを１つのグループとして扱い、同一グループに含まれる前記３次元オブジェクトを包含する部分空間を、前記部分空間同士が３次元空間において重なりがあることを許容して算出し、算出された部分空間をそのグループに関連づけ、前記部分空間の単位で個別にレンダリングを行い、各部分空間のレンダリングの結果を統合して最終的に表示すべき画像データを生成することを特徴とする画像処理方法。
【請求項１６】
複数の３次元オブジェクトの配列データを読み込む工程と、
表示エリア内に存在する３次元オブジェクトをグループ分けする工程と、
同一グループに属する３次元オブジェクトを包含する部分空間を、前記部分空間同士が３次元空間において重なりがあることを許容して算出し、算出された部分空間をそのグループに関連づけ、前記部分空間を独立した描画単位として決定する工程と、
前記描画単位ごとに個別のレンダリング処理を行って画像データを生成する工程と、
前記画像データを統合して最終的に前記表示エリア内に表示すべき画像データを生成する工程とをコンピュータに実行させることを特徴とするプログラム。
【請求項１７】
視点座標系での各３次元オブジェクトの位置を算出し、視点からの距離にもとづいて各３次元オブジェクトの描画に係る詳細度情報を決定する工程をさらに含み、
前記グループ分けする工程は、前記表示エリア内に存在する３次元オブジェクトを前記詳細度情報にもとづいてグループ分けすることを特徴とする請求項１６に記載のプログラム。
【請求項１８】
前記レンダリング処理は、各描画単位の描画処理を複数の描画処理ユニットに分散してなされることを特徴とする請求項１６または１７に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は画像処理技術、とくに３次元オブジェクトを２次元表示画面に描画する画像処理方法、画像処理装置、および画像処理システムに関する。
【背景技術】
【０００２】
３次元グラフィックスを多用するコンピュータゲームやシミュレーションなどのアプリケーションでは、３次元オブジェクトを見る視点位置が移動したり、ユーザが３次元オブジェクトを移動させたりするため、高速なコンピュータグラフィックス（ＣＧ）処理が要求される。具体的には、透視変換によりオブジェクトのワールド座標を２次元座標に変換し、その位置情報とオブジェクトの表面の色や模様などのテクスチャとを用いてレンダリング処理によりピクセル単位のカラー情報を求め、フレームバッファメモリに書き込み、画面に表示するという一連の描画処理をオブジェクトの移動や視点の移動のたびに高速に行う必要がある。
【０００３】
レンダリング処理の高速化のために、描画領域を小領域のタイルに分割してタイルごとに並列にレンダリングする分割処理法がある。このタイルレンダリングと呼ばれる方法では、処理の大半をオンチップのメモリで行うことが可能であり、フレームバッファとして用いられる外部メモリへの依存度が低いため、３Ｄパイプラインを用いた既存のグラフィックチップよりメモリバンド幅が少なくて済む。
【０００４】
また、それぞれにＶＲＡＭをもった複数のグラフィックプロセッサを並列駆動し、各グラフィックプロセッサによる描画データとＺバッファを同期して出力し、外部で合成する方式もある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
タイルレンダリングでは、３Ｄパイプラインの処理方式と大きく異なるため、アプリケーションとの互換性の問題が生じる他、オブジェクトの数が多くなると、ソート処理のために効率が悪くなるといった問題が生じる。また、グラフィックプロセッサを並列駆動する方式は、並列度は高くなるが、メモリが物理的に分散する構成となるため、ＶＲＡＭの利用効率が悪く、柔軟な運用が難しい。空間を均一なサイズの標準ビューボリュームに分割して、標準ビューボリューム単位で画像処理を並列化する方法もあるが、３次元オブジェクトの形状や位置関係を無視して空間を分割することになり、オブジェクトごとの性質を反映した柔軟で最適な描画戦略を立てることは難しくなる。
【０００６】
このように描画処理の並列度を高めてメモリ効率と演算効率を上げながら、同時に互換性や柔軟性を実現していくことは非常に難しい課題となっている。
【０００７】
本発明はこうした課題に鑑みてなされたものであり、その目的は、多様な描画戦略に柔軟に対応することができ、並列処理による効率化が可能な画像処理技術を提供することにある。
【課題を解決するための手段】
【０００８】
本発明のある態様は画像処理装置に関する。この装置は、入力された３次元オブジェクトのデータをグループに分類する分類部と、同一グループに属する３次元オブジェクトを包含する部分空間をそれぞれ独立した描画単位とする個別の描画処理を行い、前記描画単位ごとに独立した画像データを生成する描画処理部と、前記描画単位ごとに生成された前記画像データを統合して最終的に表示すべき画像データを生成する統合部とを含む。
【０００９】
ワールド座標系で定義された３次元オブジェクトは、ビューボリュームによりクリッピングされ、平行投影や透視投影などの投影法により２次元の投影面に投影されて表示される。投影面に投影する３次元オブジェクトの数を制限するために、適当な有限領域にビューボリュームを限定することがある。平行投影におけるビューボリュームを投影方向の奥行きによって制限すると、ビューボリュームは平行六面体となる。一方、透視投影におけるビューボリュームを視点位置からの方向、角度、および奥行きによって制限すると、ビューボリュームは四角錐台となる。前記描画処理部は、このように透視投影で規定される四角錐台または平行投影で規定される平行六面体を前記部分空間として利用してもよい。
【００１０】
複数の３次元オブジェクトをグループ分けし、同一グループに属する３次元オブジェクトを包含する部分空間に３次元空間を分割した場合、部分空間は重なりをもつことがあるが、このような重なりは許容される。均一なサイズの部分空間に分割すると、３次元オブジェクトを部分空間の境界で分解することになり、境界付近の描画が困難になる。そこで、重なりを許容して、同一グループに属するオブジェクトを包含する不均一なサイズの部分空間に分割し、分割空間ごとに独立した描画戦略を採用することを可能とする。たとえば、分割空間ごとに異なる解像度を選択して、デフォーカス処理を行うといったマルチ解像度描画が可能である。また分割空間ごとに描画処理を独立に行うことができるため、分散描画処理も容易となる。
【００１１】
３次元オブジェクトのグループ分けは、オブジェクトの属性にもとづいてなされてもよく、そのオブジェクトを描画する際のＬＯＤ（Level Of Detail；詳細度）に関する情報にもとづいてなされてもよい。ＬＯＤとは、視距離に応じてオブジェクトをどれくらい詳細に描画するか、そのレベルを与える情報である。オブジェクトの属性やＬＯＤ情報はオブジェクトの設計段階であらかじめ設定されていてもよいが、オブジェクトの描画段階においてユーザがマニュアルで設定してもよく、描画システムによって自動的に設定してもよい。
【００１２】
前記描画処理部は、複数のレンダリング部を含み、各描画単位の描画処理の複雑度にもとづいて描画処理を前記複数のレンダリング部に分散させてもよい。描画処理の複雑度とは、対象オブジェクトに適用される各種レンダリングアルゴリズムの計算量の多少、そのレンダリングアルゴリズムを実行する上でＣＰＵやメモリなどの計算資源にかかる処理負荷の大小などを含む、広い意味での描画処理の難易性を示すものである。この複数のレンダリング部は、バス結合され、それぞれが専用に利用できるメモリ領域をもち、並列に画像データを生成することのできる並列描画エンジンとして１つのチップ上に実装されてもよい。また、複数のレンダリング部は、当該装置の外部にあって、ネットワークで当該装置に結合している分散処理ユニットの集合体であってもよく、その集合体により各描画単位の描画処理が分散して行われてもよい。
【００１３】
この複数のレンダリング部はそれぞれの計算能力やメモリ容量などの処理性能が異なるものであってもよく、各描画単位の描画処理の複雑度に応じた処理性能をもつレンダリング部にその描画処理を行わせてもよい。たとえば、簡単な幾何学処理用のプロセッサと複雑なレンダリング処理用のプロセッサを設けたり、搭載されるメモリの容量を異ならせたりして、レンダリング部の処理性能に違いをもたせ、各描画単位の描画処理の複雑度に応じて、適切なプロセッサやメモリを使い分けてもよい。
【００１４】
当該装置の外部にあって、ネットワークで当該装置に結合した分散描画処理ユニットから前記描画単位で描画処理された画像データを受信する通信部をさらに含み、前記統合部は、前記分散描画処理ユニットから受信した画像データを前記描画処理部が生成した画像データに統合し、最終的に表示すべき画像データを生成してもよい。この分散描画処理ユニットは、当該装置と同じ構成をもち、描画単位ごとに独立した描画処理を行い、画像データを生成する装置であってもよく、これらの装置が互いに通信を行ってそれぞれの描画単位の画像データを交換することで、各装置において最終的に表示すべき画像が生成されるように構成してもよい。
【００１５】
各描画単位の描画処理の詳細度に関する情報に応じてネットワーク上の距離の異なる分散描画処理ユニットにその描画処理を行わせてもよい。たとえば、遠景など描画詳細度の要求レベルが低い場合は、当該装置からネットワーク上で距離の離れた分散描画処理ユニットが描画処理を行い、当該装置の通信部が比較的長いレーテンシーで分散描画処理ユニットから描画処理結果を受信してもよい。また、近景など描画詳細度の要求レベルが高い場合は、当該装置からネットワーク上で距離の近い分散描画処理ユニットが描画処理を行い、当該装置の通信部が比較的短いレーテンシーで分散描画処理ユニットから描画処理結果を受信してもよい。
【００１６】
本発明の別の態様は、グラフィック処理ブロックと、グラフィック処理ブロックを制御する中央制御ブロックとを単一の素子内に一体化した画像処理装置である。前記グラフィック処理ブロックは、入力された３次元オブジェクトのデータをグループに分類する分類部と、同一グループに属する３次元オブジェクトを包含する部分空間をそれぞれ独立した描画単位とする個別の描画処理を行い、前記描画単位ごとに独立した画像データを生成する描画処理部と、前記描画単位ごとに生成された前記画像データを統合して最終的に表示すべき画像データを生成する統合部とを含み、これらが前記中央制御ブロックからの指示によってグラフィック表示処理を行う。この中央制御ブロックはＣＰＵ、メモリ、および割り込み制御やＤＭＡ転送を行う制御部を含むＣＰＵコアである。
【００１７】
本発明のさらに別の態様は、ネットワークを介して相互に情報を交換しながら、分散描画処理を行う複数の画像処理装置を含む画像処理システムに関する。このシステムは、入力された３次元オブジェクトのデータをグループに分類する分類部と、同一グループに属する３次元オブジェクトを包含する部分空間をそれぞれ独立した描画単位とする個別の描画処理を行い、前記描画単位ごとに独立した画像データを生成する描画処理部と、前記描画単位ごとに生成された前記画像データを統合して最終的に表示すべき画像データを生成する統合部とを含み、前記分類部、前記描画処理部、および前記統合部は、前記複数の画像処理装置に機能分散されている。前記複数の画像処理装置の各々が、前記分類部、前記描画処理部、および前記統合部の機能構成の少なくとも１つを含むように構成して、システム全体で、一連の描画処理が可能なように構成することができる。
【００１８】
本発明のさらに別の態様は、ネットワークを介して他の装置と情報を交換する画像処理装置に関する。当該装置は、入力された３次元オブジェクトのデータをグループに分類する分類部、同一グループに属する３次元オブジェクトを包含する部分空間をそれぞれ独立した描画単位とする個別の描画処理を行い、前記描画単位ごとに独立した画像データを生成する描画処理部、および前記描画単位ごとに生成された前記画像データを統合して最終的に表示すべき画像データを生成する統合部の内、少なくとも１つの機能構成を含み、当該装置に含まれない前記機能構成による処理については、前記他の装置からその処理結果を受信して利用する。たとえば、他の装置の分類部による分類結果を受信して、当該装置の描画処理部で利用したり、他の装置の描画処理部による描画処理結果を受信して、当該装置の統合部で利用することができる。また、逆に当該装置の分類部や描画処理部の処理結果を他の装置に送信して、他の装置で利用するようにしてもよい。
【００１９】
本発明の別の態様は画像処理方法に関する。この方法は、重なりを許容して分割された部分空間ごとにその部分空間に含まれる３次元オブジェクトのレンダリングを独立して行い、各部分空間に含まれる３次元オブジェクトのレンダリング結果を奥行き方向の距離を評価して統合する。
【００２０】
本発明のさらに別の態様も画像処理方法に関する。この方法は、１または複数の３次元オブジェクトを１つのグループとして扱い、同一グループに含まれる前記３次元オブジェクトを包含する部分空間の単位で個別にレンダリングを行い、各部分空間のレンダリングの結果を統合して最終的に表示すべき画像データを生成する。
【００２１】
本発明のさらに別の態様はコンピュータプログラムに関する。このプログラムは、複数の３次元オブジェクトの配列データを読み込む工程と、表示エリア内に存在する３次元オブジェクトをグループ分けする工程と、同一グループに属する３次元オブジェクトを包含する部分空間を独立した描画単位として決定する工程と、前記描画単位ごとに個別のレンダリング処理を行って画像データを生成する工程と、前記画像データを統合して最終的に前記表示エリア内に表示すべき画像データを生成する工程とをコンピュータに実行させる。
【００２２】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００２３】
本発明によれば、３次元オブジェクトの高速で柔軟な描画処理が可能である。
【図面の簡単な説明】
【００２４】
【図１】図１（ａ）、（ｂ）は３次元空間における四角錐台のビューボリュームの説明図である。
【図２】図２（ａ）、（ｂ）は３次元空間の四角錐台による分割例を説明する図である。
【図３】図３（ａ）、（ｂ）は３次元空間の四角錐台による別の分割例を説明する図である。
【図４】図４（ａ）、（ｂ）は３次元空間の四角錐台によるさらに別の分割例を説明する図である。
【図５】図５（ａ）〜（ｅ）は、図４の空間分割における描画処理の概略を説明する図である。
【図６】実施の形態に係る画像処理装置の構成図である。
【図７】図６の画像処理装置のグラフィック処理ブロックの機能構成図である。
【図８】図７の描画処理部の並列処理による構成例を説明する図である。
【図９】図７の構成のグラフィック処理ブロックによる分割描画処理と統合処理の手順を説明するフローチャートである。
【図１０】図１０（ａ）は入力されたオブジェクトのグループ分けを説明する図であり、図１０（ｂ）は、グループ分けにより生成されるグループリストを説明する図である。
【図１１】同一グループのオブジェクト群を包含する分割空間の例を説明する図である。
【図１２】同一グループのオブジェクト群を包含する分割空間の別の例を説明する図である。
【図１３】同一グループのオブジェクト群を包含する分割空間のさらに別の例を説明する図である。
【図１４】分割描画処理における処理手順リストの例を説明する図である。
【図１５】図１５（ａ）は、双１次補間による画像データの生成処理を説明する図であり、図１５（ｂ）は、双３次補間による画像データの生成処理を説明する図である。
【図１６】図１６（ａ）〜（ｃ）はＺ付マージ描画処理を説明する図である。
【図１７】同一グループのオブジェクト群を包含する分割空間の例を説明する図である。
【図１８】図１７の例にさらにもう一つのオブジェクトが加わった場合における同一グループのオブジェクト群を包含する分割空間の例を説明する図である。
【図１９】図９の分割空間の算出手順の変形例を説明するフローチャートである。
【図２０】図１８のオブジェクト群を包含する分割空間の別の例を説明する図である。
【図２１】実施の形態に係る分散描画処理システムの構成例を説明する図である。
【図２２】図２１のパーソナルコンピュータのディスプレイに表示される画像の例を説明する図である。
【図２３】図２２のオブジェクト群を包含する分割空間を説明する図である。
【図２４】図２２のオブジェクト群を包含する別の分割空間を説明する図である。
【図２５】図２５（ａ）〜（ｃ）は、移動オブジェクトにモーションブラー処理を施す場合のメモリ領域の説明図である。
【図２６】図２６（ａ）、（ｂ）は、デフォーカス処理を行う場合のメモリ領域の説明図である。
【図２７】実施の形態に係るＺカリング処理で用いられる階層化Ｚバッファの説明図である。
【図２８】図２７の最下位層のＺバッファのＺ値の例を説明する図である。
【図２９】図２７の最上位層のＺバッファのＺ値の例を説明する図である。
【図３０】図２９の最上位層のＺバッファのＺ値によるＺカリング処理の例を説明する図である。
【図３１】ブリック単位のカリング処理の例を説明する図である。
【図３２】ブリック単位のカリング処理の例を説明する図である。
【図３３】ブリック単位のカリング処理の例を説明する図である。
【発明を実施するための形態】
【００２５】
本発明の実施の形態を説明するにあたり、まず基礎的な概念を説明する。３次元オブジェクトは３次元ワールド座標で表現されているが、これを画面に描画するためにはワールド座標系の中にビューボリュームを指定し、このビューボリュームによってオブジェクトをクリッピングし、表示画面に投影する必要がある。３次元オブジェクトを２次元上に表示するための投影法の１つに透視投影がある。透視投影によるビューボリュームは一般に視点を頂点とし、視点からの方向と角度によって規定される半無限ピラミッドとなる。本発明では、この半無限のビューボリュームを視点からの方向、角度、および奥行きを制限することによって得られる四角錐台のビューボリュームを利用して、オブジェクトの空間を部分空間に分割する。
【００２６】
図１（ａ）は、３次元空間における四角錐台のビューボリュームの説明図であり、図１（ｂ）はその上面図である。視点Ｏから見た場合の可視領域内で、前方クリッピング面１０と後方クリッピング面１２により奥行き方向の深さが規定される四角錐台のビューボリューム（以下、ブリックと呼ぶ）が設けられる。投影面１４とブリックとの交わり１６が表示画面内の描画エリアとなり、このエリア内にオブジェクトが投影されて描画される。以下、奥行き方向をｚ軸、投影面１４と平行な面をｘｙ平面とする。前方クリッピング面１０、後方クリッピング面１２、投影面１４、および背面１５は、それぞれ視点Ｏから距離Ｚ１、Ｚ２、Ｚ３、およびＺ４の位置にある。実施の形態では、このようにして規定されるブリックを独立した描画単位として個別の描画処理を行い、ブリックごとに独立した画像データを生成する。さらにブリックごとに生成された画像データを統合して最終的に表示される画像データを生成する。
【００２７】
図２（ａ）は、３次元空間をブリックにより分割する例を説明する図であり、図２（ｂ）はその上面図である。第１クリッピング面１８と第２クリッピング面２０に挟まれた四角錐台の可視領域が４つの互いに重なり合わないブリックで分割されている。第２クリッピング面２０と第３クリッピング面２２に挟まれた四角錐台の可視領域もまた４つの互いに重なり合わないブリックで分割されている。第１クリッピング面１８、第２クリッピング面２０、および第３クリッピング面２２は、それぞれ視点Ｏから距離Ｚ１、Ｚ２、およびＺ３の位置にある。このようにｘｙ方向が重なり合わない空間分割を行った場合、タイリングと同様の描画処理が可能であり、小さな高速ＶＲＡＭエリアを用いて、最終的な大きなサイズの画像を生成することができる。
【００２８】
図３（ａ）は、３次元空間をブリックにより分割する別の例を説明する図であり、図３（ｂ）はその上面図である。視点Ｏから距離Ｚ１の位置にある前方クリッピング面２４と距離Ｚ３の位置にある後方クリッピング面２６により深さが制限された４つの互いに重なり合わないブリックと、距離Ｚ２の位置にある前方クリッピング面２８と距離Ｚ４の位置にある後方クリッピング面３０により深さが制限されたブリックとがｚ方向で互いに重なり合っている。前方のブリックは４分割されているが、後者のブリックは分割されていない。これは一般に手前にあるオブジェクトほど詳細に描画する必要があり、手前のブリックは小さい領域に分割して高い解像度で描画処理するためである。すなわちブリックごとに同サイズのメモリを使って描画処理を行えるように、一般に要求される描画詳細度が低い後方の領域については分割空間を広く取り、描画詳細度が高い前方の領域についてはより小さい空間に分割する。
【００２９】
図４（ａ）は、さらに別のブリックによる空間分割の例を説明する図であり、図４（ｂ）はその上面図である。この例では、可視領域内に第１ブリック３２、第２ブリック３４、第３ブリック３６、および第４ブリック３８が設けられており、ｚ方向だけでなく、ｘｙ方向でも重なりをもっている。第１ブリック３２の前方クリッピング面、後方クリッピング面はそれぞれ距離Ｚ１、Ｚ３の位置にあり、第２ブリック３４の前方クリッピング面、後方クリッピング面はそれぞれ距離Ｚ２、Ｚ５の位置にある。第３ブリック３６の前方クリッピング面、後方クリッピング面はそれぞれ距離Ｚ４、Ｚ７の位置にあり、第４ブリック３８の前方クリッピング面、後方クリッピング面はそれぞれ距離Ｚ６、Ｚ８の位置にある。このようにブリックへの分割に重なりがある場合は、ブリックごとの描画処理後、後に述べるＺ付マージ描画処理を行って画像データを統合して最終的な表示画像を生成することができる。
【００３０】
図５（ａ）〜（ｅ）は、図４の例の空間分割におけるＺ付マージ描画処理の概略を説明する図である。図５（ａ）は第４ブリック３８における描画処理の結果、図５（ｂ）は第２ブリック３４における描画処理の結果、図５（ｃ）は第１ブリック３２における描画処理の結果、図５（ｄ）は第３ブリック３６における描画処理の結果である。各分割空間における描画データは、適宜拡大または縮小した上で、奥行き値（以下、Ｚ値ともいう）の大小評価にもとづいて１つの画像に統合される。図５（ｅ）は、図５（ａ）〜（ｄ）に示すそれぞれのブリックでの描画データをＺ付マージ描画処理により統合して得られる画像である。
【００３１】
図６は、本発明の実施の形態に係る画像処理装置１００の構成を示す。画像処理装置１００は、Ｉ／Ｏポート１０８と、メインＣＰＵ１１０と、メインメモリ１１２と、通信部１１４と、グラフィック処理ブロック１２０とを含み、これらの各ブロックはバス１１６により接続されている。
【００３２】
Ｉ／Ｏポート１０８は、マウスやキーボードなどの入力装置１０２、ＣＤ−ＲＯＭやハードディスクドライブなどの記憶装置１０４、および画像を表示する表示装置１０６に対するデータの入出力を制御する。
【００３３】
メインＣＰＵ１１０は、画像処理装置１００の全体を制御するものであり、一例として１２８ビットのＲＩＳＣ（Reduced Instruction Set Computer）−ＣＰＵである。メインＣＰＵ１１０は、記憶装置１０４に記録されているアプリケーションプログラムを実行する。プログラムの実行により、メインＣＰＵ１１０は、ユーザからの入力に応じてグラフィック処理ブロック１２０を制御して、画像の表示を制御する。メインＣＰＵ１１０は、とくにグラフィック処理ブロック１２０に対してマルチパスコマンドによる並列描画制御を行う。
【００３４】
メインメモリ１１２は、記憶装置１０４から読み出したオブジェクトの形状データやテクスチャデータ等の描画データ、描画処理プログラム、後述のＢ−ｂｏｘ配列やグループリストなどを記憶する。
【００３５】
通信部１１４は、他の画像処理装置１００とネットワークを介してデータ通信をする。このようなデータ通信は、他の画像処理装置１００と連携して分散処理によって描画処理を実行するために行われる。
【００３６】
グラフィック処理ブロック１２０は、並列描画エンジン１２２、画像メモリ１２６、およびこれらを接続するメモリインターフェイス１２４とを含み、ＡＳＩＣ（Application Specific Integrated Circuit）−ＤＲＡＭ（Dynamic Random Access Memory）として一体に構成されている。
【００３７】
並列描画エンジン１２２は、メインＣＰＵ１１０からのマルチパスコマンドに基づいて、画像メモリ１２６の全体的な記憶領域を複数の領域に分割し、これらの複数の分割記憶領域を用いて、部分空間ごとの３次元オブジェクトのレンダリングを並列に実行して、それぞれの部分空間における分割画像を生成する。さらに並列描画エンジン１２２は、並列に描画処理された各分割画像を、いずれか一つの分割領域にＺ付マージ描画処理することで、１枚の画像に統合する。レンダリングに用いる隠線、隠面消去の手法として、Ｚバッファ法、スキャンライン法、レイトレーシング法などが使用される。
【００３８】
画像メモリ１２６は、複数の領域に分割されたＤＲＡＭであり、各ピクセルのＲＧＢ値および透過度αを表すＡ値が格納されるフレームバッファ領域と、各ピクセルの奥行き値を表すＺ値が格納されるＺバッファ領域、テクスチャマッピングに用いられるテクスチャが格納されるテクスチャ領域に分けられ独立に制御さされる。また複数のチャネルから独立に描画制御して、複数のブリック単位の描画処理を並列実行できる。一例として、並列描画エンジンは４ＭＢのエリアをもつ８個のＤＲＡＭを４チャンネルで駆動してもよい。なお、描画エリアとテクスチャエリアは適宜入れ替えることができ、描画した画像をテクスチャとして利用することもできる。
【００３９】
たとえば、８つの分割記憶領域のうち４つを描画領域として用い、残りの４つをテクスチャ領域として用いた場合、並列描画エンジン１２２は４つのテクスチャ領域のそれぞれに格納されたテクスチャデータを処理して、４つの描画領域のそれぞれにＺ値が付加された分割画像を描画する。次に、並列描画エンジン１２２は、各分割画像を、メインＣＰＵ１１０からのマルチパスコマンドにしたがって、いずれかの分割記憶領域にＺ付マージ描画処理することで１枚の画像に統合する。
【００４０】
図７は、画像処理装置１００のグラフィック処理ブロック１２０の機能構成図である。同図の機能は、主にグラフィック処理ブロック１２０の並列描画エンジン１２２、メモリインターフェイス１２４、および画像メモリ１２６において実現され、場合によりメインＣＰＵ１１０やメインメモリ１１２が利用される。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
【００４１】
オブジェクト記憶部５２は３次元オブジェクトデータを格納する。個々のオブジェクトもしくはオブジェクト群を、そのオブジェクトもしくはオブジェクト群の占有する空間領域を包含する球や直方体、多面体などのシンプルな構造体により代表させる。この構造体をＢ−ｂｏｘ（Boundary-box）と呼ぶ。オブジェクト記憶部５２はオブジェクトの３次元データの他に、このＢ−ｂｏｘの配列データを格納している。分類部４４はオブジェクト記憶部５２からＢ−ｂｏｘ配列を読み込み、複数のＢ−ｂｏｘをオブジェクトの属性やＬＯＤ情報にもとづいてグループに分類し、グループリストを作成してオブジェクト記憶部５２に格納する。
【００４２】
描画処理部４６は、透視投影で規定される四角錐台を部分空間として算出して３次元オブジェクトの透視変換を行う座標変換部４２と、四角錐台における個別の描画処理を行うレンダリング部４３とを含む。座標変換部４２は、オブジェクト記憶部５２からグループリストを読み込み、同一グループに属するＢ−ｂｏｘを包含するブリックを算出し、オブジェクトに対するクリッピング処理、透視変換による座標変換などのジオメトリ処理を行う。レンダリング部４３は、ブリックごとに独立した描画処理を行って画像データを生成し、画像記憶部５４に格納する。画像データとして画素の色情報データと画素の奥行き値データが生成され、前者はＲＧＢＡバッファ、後者はＺバッファの形態で格納される。
【００４３】
統合部４８は、画像記憶部５４からブリックごとに生成された画像データを読み込み、画像データの各画素の奥行き値のダイナミックレンジを補正した上で、補正された奥行き値の大小比較により画像データを統合して最終的に表示すべき画像を生成する。生成された画像データは画像記憶部５４に格納される。表示部５０は画像記憶部５４から統合された画像データを読み出し、ディスプレイに表示する。
【００４４】
図８は、描画処理部４６の並列処理による構成例を説明する図である。描画処理部４６は多数オペランドで構成された複数のレンダリングパイプＲＰで構成される。各レンダリングパイプＲＰには、オペランド１からオペランド４でそれぞれ特定される、バッファに格納された４つのテクスチャＴ１からＴ４のデータが入力される。また、各レンダリングパイプＲＰは、オペランド５で特定されるＲＧＢＡバッファに対するデータＤ１の読み書きと、オペランド６で特定されるＺバッファに対するデータＤ２の読み書きを行う。各レンダリングパイプＲＰは、式Ｄ２＝ｆ２（Ｔ１，Ｔ２，Ｔ３，Ｔ４）により、後述のようにダイナミックレンジの補正されたＺ値を出力する。さらに各レンダリングパイプＲＰは、式Ｄ１＝ｆ１（Ｔ１，Ｔ２，Ｔ３，Ｔ４，Ｄ１，Ｄ２）により、Ｚ付マージ描画処理を行い、統合された画像データを出力する。
【００４５】
図９から図１４を参照して、図７の構成のグラフィック処理ブロック１２０による分割描画処理手順と統合処理手順を説明する。
【００４６】
図９は、分割描画処理と統合処理の手順を説明するフローチャートである。３次元オブジェクトのアニメーション処理が行われる（Ｓ１０）。このアニメーション処理において、運動プログラムにしたがった、視点およびオブジェクトの位置の更新や、オブジェクトの変形が行われる。
【００４７】
分類部４４は、アニメーション処理されたオブジェクトについてのＢ−ｂｏｘの配列をオブジェクト記憶部５２から読み込み（Ｓ１２）、視点座標系における各Ｂ−ｂｏｘの位置を算出し、クリップ情報と視点からの距離からＬＯＤ情報を決定する（Ｓ１４）。ＬＯＤ情報はオブジェクトをどれくらい詳細に描画するかを示すレベルであり、一般に視点からの距離によってその描画レベルが決定される。たとえば視点からの距離が遠いオブジェクトについては低いＬＯＤに決定し、視点からの距離が近いオブジェクトについては高いＬＯＤに決定する。
【００４８】
さらに分類部４４は、クリップ情報により描画エリア内にあると判断されたＢ−ｂｏｘ群のオブジェクト属性とＬＯＤ情報を調べ、オブジェクト属性とＬＯＤ情報が同一または類似するものをグルーピングし、グループリストを作成する（Ｓ１６）。
【００４９】
ここで、オブジェクト属性には、そのオブジェクトの運動が静的であるか、動的であるかといった運動特性を示す情報の他、背景、人物、建物などオブジェクトの種類を示す情報などが含まれる。このオブジェクト属性は、オブジェクトの設計者がオブジェクトのグループ分けを想定してあらかじめ設定したグループ識別情報であってもよい。たとえば設計者が同一グループに分類すべきオブジェクトについては同一のグループ識別情報を設定し、異なるグループに分類すべきオブジェクトについては、異なるグループ識別情報を設定しておくことができる。
【００５０】
図１０（ａ）はＢ−ｂｏｘ配列のグループ分けの例である。Ｂ−ｂｏｘ配列の各要素の内、描画エリア内にあるものについて、グループ分けされている。たとえばＢ−ｂｏｘ配列の要素ａ１、ａ２、およびａ３はグループＡに分類されており、要素ｂ１およびｂ２はグループＢに分類されている。図１０（ｂ）は、図１０（ａ）のグループ分けにより生成されるグループリストである。グループＡの要素ａ１〜ａ３、グループＢの要素ｂ１およびｂ２、グループＣの要素ｃ１〜ｃ５、グループＤの要素ｄ１およびｄ２が順に並んだリストとなっている。
【００５１】
再び図９を参照し、描画処理部４６は、グループリストにもとづいて同一グループに属するＢ−ｂｏｘ群を包含するブリックを算出し、グループリスト内の対応するグループに関連づける（Ｓ１８）。
【００５２】
図１１（ａ）は、図２の空間分割の例を用いて、同一グループのＢ−ｂｏｘ群を包含するブリックを説明する図であり、図１１（ｂ）はその上面図である。第１クリッピング面１８と第２クリッピング面２０に挟まれた領域にある３次元オブジェクト６０を包含するＢ−ｂｏｘ６２は１つのグループに属し、このＢ−ｂｏｘ６２を包含する部分空間として前方クリッピング面１８と後方クリッピング面２０で挟まれたブリック６３が算出される。同様に２つのＢ−ｂｏｘ６４および６６は別のグループに属し、これらを包含する部分空間として第１クリッピング面１８と第２クリッピング面２０で挟まれたブリック６７が算出される。
【００５３】
一方、第２クリッピング面２０と第３クリッピング面２２に挟まれた領域では、１つのＢ−ｂｏｘ６８を包含する部分空間としてブリック６９が算出され、他の２つのＢ−ｂｏｘ７０および７２を包含する部分空間として別のブリック７３が算出される。なお説明を簡単にするため、他のブリックに含まれるＢ−ｂｏｘは図示していない。
【００５４】
このように、視点から距離Ｚ１からＺ２の位置にある３つのＢ−ｂｏｘ６２、６４および６６と、視点から距離Ｚ２からＺ３の位置にある３つのＢ−ｂｏｘ６８、７０および７２は、主にＬＯＤ情報の違いから、ｚ方向に重なりのない別々の部分空間に属することになる。さらにより小さい領域において分割描画処理を行うことができるように、ｘｙ方向でも重なりのない部分空間に４分割される。このように３次元オブジェクトの占有する空間をｘ、ｙおよびｚ方向で重なりのない部分空間に分割することができる場合、オブジェクトがＺ境界に存在しない限り、Ｚ付マージ描画処理とｚ方向のシザリング処理を省略して各ブリックの描画処理を独立して行うことができる。もっとも、オブジェクトが大きすぎるなどの理由により、オブジェクトを分割して複数のブリックに属させる必要が生じることもあり、その場合はｚ方向のシザリング処理を要する。
【００５５】
図１２（ａ）は、図３の空間分割の例を用いて、同一グループのＢ−ｂｏｘ群を包含するブリックを説明する図であり、図１２（ｂ）はその上面図である。視点Ｏから距離Ｚ１の位置にある前方クリッピング面２４と距離Ｚ３の位置にある後方クリッピング面２６に挟まれた領域にある２つのＢ−ｂｏｘ７４および７６は１つのグループに属し、これらを包含する部分空間として、前方クリッピング面２４と後方クリッピング面２６に挟まれたブリック７７が算出される。同様に他の２つのＢ−ｂｏｘ７８および８０は別のグループに属し、これらを包含する部分空間として、前方クリッピング面２４と後方クリッピング面２６に挟まれたもう１つのブリック８１が算出される。
【００５６】
一方、視点Ｏから距離Ｚ２の位置にある前方クリッピング面２８と距離Ｚ４の位置にある後方クリッピング面３０に挟まれた領域には１つのＢ−ｂｏｘ８２があり、これを包含する部分空間として前方クリッピング面２８と後方クリッピング面３０に挟まれたブリック８３が算出される。
【００５７】
この例では、２つのＢ−ｂｏｘ８０とＢ−ｂｏｘ８２がｚ方向において重なりをもち、それらが異なるグループに属するため、前方のブリック７７および８１と、後方のブリック８３との間にｚ方向の重なりが生じる。このようにｚ方向の重なりを許容した部分空間への分割により、オブジェクトがＺ境界に存在するような場合でも、ｚ方向にオブジェクトを分解することなく、そのオブジェクトをブリック単位の描画処理により表現することができる。さらに、凸オブジェクトであれば、Ｚ付マージ描画処理を省略することができる。また、この例では、ｘｙ方向には重なりをもたないので、シザリング処理によりブリックごとに分割して描画処理することが可能である。
【００５８】
図１３（ａ）は、図４の空間分割の例を用いて、同一グループのＢ−ｂｏｘ群を包含するブリックを説明する図であり、図１３（ｂ）はその上面図である。視点Ｏに最も近い位置にあるＢ−ｂｏｘ８４を１つのグループとして、これを包含する部分空間としてブリック３２が算出され、以下同様に２つのＢ−ｂｏｘ８６および８８を１つのグループとして、これらを包含する部分空間としてブリック３４が、さらに他の２つのＢ−ｂｏｘ９０および９２を１つのグループとして、これらを包含する部分空間としてブリック３６が算出され、最後に視点Ｏから最も離れた位置にあるＢ−ｂｏｘ９４を１つのグループとして、これを包含する部分空間としてブリック３８が算出される。
【００５９】
このようにして算出された４つのブリック３２、３４、３６、および３８はｚ方向だけでなく、ｘｙ方向においても重なりをもっている。ｘｙ方向の重なりを許容した部分空間への分割であるため、ｘｙ方向においてもオブジェクトを単位とした空間分割が可能となり、シザリング処理による負荷を軽減することができる。
【００６０】
図９に戻り、描画処理部４６は、各ブリックに含まれるオブジェクトの属性とＬＯＤ情報にもとづいて、各ブリックの描画エリアと描画処理を選定し、ブリック間の依存関係から並列処理への分散とスケジューリングを決定し、処理手順リストを作成する（Ｓ２０）。
【００６１】
図１４は、処理手順リストの例であり、レンダリングパイプＲＰ１〜ＲＰ４の各々に割り振られるグループＡ〜Ｇが列挙されている。描画処理部４６は、ブリックごとに個別のレンダリング処理を行うことができる。ブリック単位で決定されたＬＯＤに違いがある場合、ブリックによってレンダリング処理の複雑さが異なる。またブリックに属するオブジェクトの特性や種類によって異なるレンダリングアルゴリズムを利用することもある。そこで複雑で時間のかかるレンダリング処理が必要なブリックと、単純なレンダリング処理で対処できるブリックとに分けて処理の分散を図るなど、ブリックごとの処理の複雑さに依存して処理の分散の仕方を決定することができる。また、半透明のオブジェクトが存在する場合、重ね合わせる際に順序関係が生じる。その場合、重ね合わせの順序に合わせて個別の描画処理が進むようにスケジューリングを決定する。
【００６２】
描画処理部４６は、処理手順リストに従い、ブリック単位の描画処理を行う（Ｓ２２）。描画処理部４６は、ブリック単位で個別の描画戦略を選択することができる。たとえば、ブリックごとに異なる解像度を選択してマルチ解像度描画を行うことができる。デフォーカス処理を行う場合、フォーカス処理に応じた空間分割を行い、ブリックごとにデフォーカス表示に応じた情報量の解像度を選択することにより、適切なメモリ量で高速なデフォーカス処理が可能となる。
【００６３】
また、描画処理部４６は、ブリック単位で個別の描画アルゴリズムを適用することもできる。たとえば、レンダリングに用いる隠線、隠面消去の手法として、Ｚバッファ法、スキャンライン法、レイトレーシング法などを適宜選択して適用することができる。また、シェーディングの手法として、フラットシェーディング法、グローシェーディング法、スムーズシェーディング法などを選択的に適用することができる。
【００６４】
再び図９を参照し、統合部４８は、ブリックごとの描画結果をＺ付マージ描画処理により統合して最終的な出力画像を生成する（Ｓ２４）。その後、ステップＳ１０に戻り、次のアニメーション処理を行い、分割描画処理から統合処理までの一連のレンダリング処理を繰り返す。
【００６５】
分割描画による画像データを最終的な出力画像に統合する際、図５で既に説明したように、個々のブリックの画像データに対して、拡大、縮小などのアフィン変換処理を施す。その際、分割描画の画像データの解像度を統合後の画像データの解像度に合わせるために、各ブリックの画像データの画素値を適宜補間する必要があり、内分を用いて画素値を近似する双１次（bilinear）補間や、３次スプライン関数などで画素の変化を近似する双３次（bicubic）補間などが用いられる。
【００６６】
図１５（ａ）は、双１次補間による画像データの生成処理を説明する図である。最終的に表示する出力画像として点Ｔの位置に画素データを生成する必要があるが、ブリック単位の描画データにはその位置に対応する画素データがなく、その近傍に４個の画素データＰ、Ｑ、ＲおよびＳがあるとする。その場合、４個の画素データＰ、Ｑ、ＲおよびＳの画素値を補間して、最終画像の点Ｔの位置の画素データを生成する。説明上、これらの画素データを、その座標位置がｘｙ平面に格子状に設けられ、その画素値がｚ軸方向の高さである３次元空間における点として扱う。平面ｙ＝０上で２点Ｐ、Ｑを内分して点Ａが得られ、平面ｙ＝１上で２点Ｓ、Ｒを内分して点Ｂが得られる。次に点Ｔを通り、ｘ軸に垂直な平面上で内分点Ａ、Ｂをさらに内分して点Ｔの高さすなわち画素値が得られる。
【００６７】
図１５（ｂ）は、双３次補間による画像データの生成処理を説明する図である。最終的に表示する出力画像として点Ｔの位置に画素データを生成する際、その周囲にある１６個の画素データを用いた補間により画素値を算出する。平面ｙ＝０上で４点Ｐ、Ｑ、ＲおよびＳを通る曲線を３次スプライン関数により求め、同様に、平面ｙ＝１、ｙ＝２、およびｙ＝３上で、ｘ軸方向に並ぶ４点を通る曲線をそれぞれ求める。次に点Ｔを通り、ｘ軸に垂直な平面とこの４本の曲線との４つの交点を求める。さらに、この４つの交点を通る曲線を求め、点Ｔを通りｙ軸に垂直な平面とこの曲線との交点のｚ座標により点Ｔの高さすなわち画素値を得る。
【００６８】
図１６（ａ）〜（ｃ）はＺ付マージ描画処理を説明する図である。図１６（ａ）のように重なりのある４つのブリック１７０ａ、１７２ａ、１７４ａ、および１７６ａでオブジェクトの空間が分割されたとする。図１６（ｂ）は、図１６（ａ）の４つのブリック１７０ａ、１７２ａ、１７４ａ、および１７６ａのそれぞれに対応する描画データのＺ値の分布１７０ｂ、１７２ｂ、１７４ｂ、および１７６ｂを示す。このＺ値は各ブリック内で局所的に規定される深さであり、分割前の元の空間での絶対的な深さを示すものではない。各ブリックの描画データを統合するには、Ｚ値のダイナミックレンジを元の空間における絶対的な値に補正する必要がある。
【００６９】
図１６（ｃ）は、各ブリックのダイナミックレンジの補正されたＺ値と、それらを統合して得られる元の空間における絶対的なＺ値の分布を示す。統合後の描画データのＺ値の範囲１７８に対して、４つのブリック１７０ａ、１７２ａ、１７４ａ、および１７６ａのそれぞれに対応する補正されたＺ値の範囲１７０ｃ、１７２ｃ、１７４ｃ、および１７６ｃが示されており、これらの補正されたＺ値の範囲に適合するように各ブリック内でローカルに規定されたＺ値のダイナミックレンジが補正される。図１６（ｂ）の４つの描画データのＺ値の分布１７０ｂ、１７２ｂ、１７４ｂ、および１７６ｂのそれぞれに対する補正されたＺ値の分布１７０ｄ、１７２ｄ、１７４ｄ、および１７６ｄが示されている。これらの補正されたＺ値の分布１７０ｄ、１７２ｄ、１７４ｄ、および１７６ｄを統合したものが、最終的な描画データのＺ値の分布１８０である。
【００７０】
このようにＺ値のダイナミックレンジが補正された後、Ｚバッファ法により隠面消去されて最終的な統合画像が描画される。Ｚバッファ法により画素単位の描画を行う際、各画素のＡ値を用いてアルファブレンディングを行い、半透明の合成画像を生成することもできる。
【００７１】
ブリック内でローカルに規定された深さｚは、一次変換式Ｚ＝（ａ／Ａ）×ｚ＋ｂにより、分割前の元の空間の深さＺに変換される。ここで定数Ａはブリック内でローカルに規定される深さの最大値であり、定数ａは分割前の元の空間での当該ブリックの深さの最大値である。定数ｂは視点から当該ブリックのクリップ面までの距離である。
【００７２】
以上説明したように、実施の形態に係る画像処理装置は、３次元オブジェクトを属性やＬＯＤにもとづいてグループ分けし、同一グループのオブジェクトを含むブリックに空間を分割して、ブリックごとに個別のレンダリング処理を行うことができる。空間分割により処理を並列化して描画処理を高速にすると同時に、オブジェクトの特性に合わせたレンダリング処理を適用することができる。またブリックの大きさをある程度の大きさに制限することで、ブリック単位の描画処理に要するＶＲＡＭの大きさを一定サイズにすることができる。また３次元オブジェクトをグループ分けすることにより、テクスチャやオブジェクトモデルのデータをグループ単位で一括管理することができ、レンダリングアルゴリズムの互換性やバージョンの管理が容易になる。
【００７３】
以上、本発明を実施の形態をもとに説明した。これらの実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７４】
そのような変形例を説明する。実施の形態では透視投影で規定される四角錐台で空間を分割したが、空間分割はこれに限らず、平行投影で規定される平行六面体で分割してもよく、本発明の分割描画処理は、特定の投影法に限定されない。
【００７５】
分割空間単位のオブジェクトのレンダリング処理はデータの局所性が保証され、分割空間の相互の依存関係については、個々の分割空間の描画データをＺ付マージ描画処理により統合することで対処することができる。そこで、分割空間単位の描画処理をネットワークで結合された計算ノードに分散して行い、各ノードで計算された描画データを中央の計算ノードに集めて統合し、最終的な出力画像を生成してもよい。この計算機ネットワークは、計算ノードがブロードバンドのネットワークにより、ピア・ツー・ピアで接続されたものであってもよい。またそれぞれの計算ノードがセルとして全体のネットワークシステムに貢献し、それぞれのセルのオペレーティングシステムが互いに連携することで、全体として一つの巨大なコンピュータとして動作するように構成してもよい。本発明の分割描画処理は、このような計算機ネットワークを前提とした分散処理にも適しており、これにより大規模な計算資源を必要とする画像処理が可能である。
【００７６】
さらに、このようなネットワークを前提とした分散描画処理システムでは、中央の計算ノードと分散された計算ノードの間で、ルーティングのホップ数や通信のレーテンシーなどにもとづいてネットワーク上の距離を定義することができる。そこで、分割空間単位で描画されるオブジェクトの視点からの距離と、中央の計算ノードから分散された計算ノードまでの距離とを対応づけ、分割空間単位の描画処理を計算ノードに分散させることもできる。すなわち、視点から近い位置にあるオブジェクトは、視点の移動やオブジェクト自身の移動により頻繁に画像データが更新されるため、ネットワーク上でも近い位置にある計算ノードで描画処理を行い、描画結果を短いレーテンシーで中央ノードに集める。一方、視点から遠い位置にあるオブジェクトは、視点の移動やオブジェクト自身の移動によってもあまり変化しないため、ネットワーク上で遠い位置にある計算ノードで描画処理してもよく、描画結果が中央ノードに届くまでのレーテンシーが長くても問題とならない。
【００７７】
実施の形態では、オブジェクトのグループ分けにもとづいて算出されたブリック間にｚ方向の重なりがある場合、Ｚ付マージ描画処理を行ったが、Ｚ付マージ描画処理が不要となるように、言い換えればブリック間のｚ方向の重なりが生じないように、オブジェクトのグループ分けを決定してもよい。以下、図１７から図２０を参照してこの変形例を説明する。
【００７８】
図１７（ａ）は、同一グループに属する２つのＢ−ｂｏｘ２００および２０２とそれらを包含する部分空間として算出されたブリック２０４を説明する図であり、図１７（ｂ）はその上面図である。２つのＢ−ｂｏｘ２００および２０２は、たとえば３次元空間を高速に移動するオブジェクト（以下、高速オブジェクトという）をその中に含み、この運動特性にもとづいて同一グループに分類されたものである。上記の実施の形態では、これら２つのＢ−ｂｏｘ２００および２０２を包含する部分空間として、同図のように視点Ｏから距離Ｚ１の位置にある前方クリッピング面と距離Ｚ２の位置にある後方クリッピング面に挟まれたブリック２０４が算出される。
【００７９】
図１７（ａ）、（ｂ）のようにブリック２０４が定められ、描画処理が進められた後、図１８（ａ）、（ｂ）に示すように、別の運動特性をもつオブジェクトを含む新たなＢ−ｂｏｘ２０６がブリック２０４の中に進入してきたとする。図１８（ａ）はこの新しい状況下での空間分割を説明する図であり、図１８（ｂ）はその上面図である。新たなＢ−ｂｏｘ２０６は、たとえば３次元空間を低速に移動するオブジェクト（以下、低速オブジェクトという）をその中に含むものであり、その運動特性の違いから高速オブジェクトを含む２つのＢ−ｂｏｘ２００および２０２とは別のグループに分類される。したがって上記の実施の形態では、低速オブジェクトを含む新たなＢ−ｂｏｘ２０６を包含する部分空間として、同図のように視点Ｏから距離Ｚ２の位置にある前方クリッピング面と距離Ｚ３の位置にある後方クリッピング面に挟まれたブリック２０８が新たに算出され、高速オブジェクトを含む２つのＢ−ｂｏｘ２００および２０２を包含するブリック２０４とｚ方向の重なりをもつようになる。
【００８０】
このようにブリック間でｚ方向の重なりがあっても、上記の実施の形態によれば分割空間ごとに描画処理を行い、Ｚ付マージ描画処理によって統合することができる。しかし、計算性能の制約などからＺ付マージ描画処理を行えないような状況や、Ｚ付マージ描画処理を省いて描画処理を簡略化したい場合には、Ｚ付マージ描画処理が不要となるように、Ｂ−ｂｏｘ群のグループ分けを工夫し、ｚ方向の重なりのないブリックを算出してもよい。図１９は、ｚ方向の重なりを解消することのできるブリックの算出手順を示すフローチャートである。このフローチャートは、図９の分割描画処理と統合処理の手順を示すフローチャートのステップＳ１８の変形であり、ステップＳ１６までと、ステップＳ２０以降は図９と同じである。
【００８１】
ステップＳ１６において、分類部４４によりＢ−ｂｏｘ群がグループ分けされた後、描画処理部４６により同一グループに属するＢ−ｂｏｘ群を包含するブリックが算出される（Ｓ３０）。描画処理部４６は、算出されたブリックがｚ方向に重なりをもつかどうかを調べる（Ｓ３２）。ｚ方向に重なりがある場合（Ｓ３２のＹ）、分類部４４はｚ方向に重なりがあるブリックについてその重なりを解消するようにＢ−ｂｏｘ群を再グループ分けする（Ｓ３４）。
【００８２】
図２０（ａ）はＢ−ｂｏｘ群の再グループ分けを説明する図であり、図２０（ｂ）はその上面図である。高速オブジェクトを含む２つのＢ−ｂｏｘ２００および２０２はこれまで同一グループに分類されていたが、このままでは図１８（ａ）、（ｂ）で説明したようにブリック間にｚ方向の重なりが生じる。そこで分類部４４は、この重なりを解消する目的で、２つのＢ−ｂｏｘ２００および２０２を別々のグループに分類する。その結果、ステップＳ３０に戻って、描画処理部４６が同一グループに属するＢ−ｂｏｘ群を包含するブリックを再度算出すると、図２０（ａ）、（ｂ）に示すように、別々のグループに属するＢ−ｂｏｘ２００および２０２のそれぞれを包含する２つのブリック２１０および２１２が算出される。このため、新たに加わったＢ−ｂｏｘ２０６を包含するブリック２０８とはｚ方向の重なりがなくなる。図１９に戻り、ｚ方向のブリックの重なりが解消された場合（Ｓ３２のＮ）、ステップＳ２０に進み、それ以降の分割描画処理と統合処理がなされる。
【００８３】
このように再グループ分けによりｚ方向に重なりのない空間分割がなされ、Ｚ付マージ描画処理を不要とすることができる。この再グループ分けの必要性の判断は、図９のステップＳ２０のブリック単位の描画処理の選定時になされてもよい。すなわち、分類部４４によりブリックに分割された後に、描画処理部４６がブリックごとの描画処理の複雑さを判断し、その複雑度にもとづいて分類部４４に再グループ分けを指示してもよい。たとえば予想される計算コストが所定値より大きい場合に再グループ分けを指示する。
【００８４】
さらに別の変形例として、実施の形態に係る画像装置１００をネットワークに接続されたパーソナルコンピュータ（ＰＣ）などの計算ノードとして構成し、複数の計算ノードにおいてオブジェクトの描画処理を行い、ネットワーク経由で画像データをやりとりして画像データを統合する分散描画システムを構成することもできる。
【００８５】
図２１は、分散描画処理システムの構成例を説明する図である。３台のＰＣ１〜ＰＣ３とサーバ７がネットワーク６に接続している。サーバ７は、ユーザがログインして仮想キャラクタを操作することのできる仮想空間のサービスを提供する。ＰＣ１〜ＰＣ３は、それぞれ上述の実施の形態に係る画像処理装置１００に相当し、サーバ７と通信して、サーバ７の提供する仮想空間のサービスを受けて、仮想空間の描画処理を行うともに、他のＰＣと通信して、分散描画処理を行う。
【００８６】
ＰＣ１では、ユーザＡが仮想空間にログインして、仮想空間内で仮想キャラクタＣ１を操作し、ユーザＡの視点から見た仮想空間の画像が生成される。ＰＣ２では、ユーザＢが同じ仮想空間にログインして、仮想キャラクタＣ２を操作し、ユーザＢの視点から見た仮想空間の画像が生成される。ＰＣ３には、画像情報とともに視点からの距離情報を取得可能なカメラ５が接続されており、カメラ５の視点から広視野角で撮影した遠景の画像情報と距離情報がＰＣ３に入力され、ＰＣ３において描画処理される。
【００８７】
ＰＣ１〜ＰＣ３のオブジェクト記憶部５２には、それぞれの視点を中心にＬＯＤ情報にもとづいてオブジェクト群を階層化したＢ−ｂｏｘのマップが格納される。Ｂ−ｂｏｘマップは、階層が高いほど遠くから見た場合のオブジェクト群の情報をもち、粗い詳細度でオブジェクト群の描画がなされ、階層が低いほど、近くから見た場合のオブジェクト群の情報をもち、より細かい詳細度でオブジェクト群の描画がなされる。Ｂ−ｂｏｘマップに含まれるオブジェクト群のデータは個々のＰＣやサーバで分散管理されており、Ｂ−ｂｏｘマップには、個々のオブジェクトの管理元であるＰＣまたはサーバのアドレスが含まれる。このＢ−ｂｏｘマップはユーザの視点の移動とともに更新される。たとえば、ユーザの視点が遠ざかれば遠景のＢ−ｂｏｘマップとなり、視点が近づけば近景のＢ−ｂｏｘマップとなる。ＰＣ１〜ＰＣ３はそれぞれがもつＢ−ｂｏｘマップにもとづいてオブジェクト群の描画処理を行い、必要に応じて生成された画像データを交換する。
【００８８】
ＰＣ１は、ユーザＡが仮想空間を観察する際の視点に関する情報をＰＣ２およびＰＣ３にネットワーク６を介して送信する。ＰＣ２およびＰＣ３の描画処理部４６はそれぞれ、ユーザＡの視点から観察された場合の仮想キャラクタＣ２および遠景の描画処理を行って画像データを生成し、ＰＣ１に送信する。ＰＣ１の統合部４８はＰＣ２およびＰＣ３から受信した仮想キャラクタＣ２および遠景の画像データと、ＰＣ１で描画処理された仮想キャラクタＣ１の画像データとをマージして、画像記憶部５４に格納する。ＰＣ１の表示部５０は画像記憶部５４からマージされた画像データを読み出し、ディスプレイ４に表示する。
【００８９】
ここで、ユーザＡの仮想キャラクタＣ１とユーザＢの仮想キャラクタＣ２が互いに接近している場合は、オブジェクトの重なりや相互作用などの干渉が起こるため、ＰＣ１とＰＣ２の間では視点情報以外に、３次元オブジェクトデータを交換して干渉部位の描画処理を行う。
【００９０】
また、ユーザＢの仮想キャラクタＣ２がユーザＡの視野内に常に存在するとは限らないため、仮想キャラクタＣ２がユーザＡの視野内に入ったときだけ、ＰＣ２は仮想キャラクタＣ２の画像データをＰＣ１に送信する。ＰＣ１が仮想キャラクタＣ２の位置情報を把握している場合は、仮想キャラクタＣ２がユーザＡに視野内に入ったときのみ、ユーザＡの視点情報をＰＣ２に送信し、ＰＣ２は、ユーザＡの視点から見た場合の仮想キャラクタＣ２の描画データを生成し、ＰＣ１に送信する。
【００９１】
ＰＣ１が仮想キャラクタＣ２の位置情報を把握していない場合は、ＰＣ１は常にユーザＡの視点情報をＰＣ２に送信し、ＰＣ２は、その視点情報にもとづいてユーザＡの視野内に仮想キャラクタＣ２が存在するか否かを判定し、視野内に存在する場合のみ、ユーザＡの視点から見た場合の仮想キャラクタＣ２の描画データを生成し、ＰＣ１に送信する。仮想キャラクタＣ１と仮想キャラクタＣ２が相互に干渉する機会が少ない場合、ＰＣ１とＰＣ２間での視点情報や３次元オブジェクトデータのやりとりなどの相互通信の時間間隔を大きくとることができる。この干渉性の判断は、オブジェクトを包含するＢ−ｂｏｘの大きさとＢ−ｂｏｘ間の距離にもとづいてなされる。なお、サーバまたは第三者のＰＣがＰＣ１におけるユーザＡの視点情報と仮想キャラクタＣ２の位置情報を監視するようにしてもよい。
【００９２】
図２２は、図２１のＰＣ１のディスプレイ４に表示される画像の例を示す。遠景には山２３４のような静止オブジェクトと、雲２３２や飛行機２３０のような運動オブジェクトが表示されている。この遠景は、ＰＣ３のカメラ５により撮影され、ＰＣ１のユーザＡの視点情報にもとづいて描画処理された画像データである。近景にはＰＣ１で操作されている仮想キャラクタＣ１と、ＰＣ２で操作されている仮想キャラクタＣ２が表示されている。仮想キャラクタＣ１、Ｃ２はそれぞれＰＣ１、ＰＣ２において描画処理された画像データである。
【００９３】
図２３（ａ）は、ＰＣ１の描画処理部４６が算出するブリックを説明する図であり、図２３（ｂ）はその上面図である。ＰＣ１の描画処理部４６は、図２２の２つの仮想キャラクタＣ１およびＣ２をＬＯＤ情報とオブジェクトの属性にもとづいて同一グループに分類し、さらに、２つの仮想キャラクタＣ１およびＣ２が接近していることから、干渉性を考慮して、これらのオブジェクトのＢ−ｂｏｘ２４０および２４２を包含する部分空間を近景の一つの描画単位として算出する。すなわち、同図のように視点Ｏから距離Ｚ１の位置にある前方クリッピング面と距離Ｚ２の位置にある後方クリッピング面に挟まれたブリック２２０が算出される。
【００９４】
ＰＣ１の統合部４８は、リアルタイムでＰＣ２から仮想キャラクタＣ２のオブジェクトデータを受信して、ブリック２２０内で仮想キャラクタＣ１と仮想キャラクタＣ２の干渉部位を考慮した描画処理を行い、ブリック２２０の最終的な画像データを生成する。
【００９５】
ＰＣ１の描画処理部４６は、さらに、遠景の描画単位となるブリックを算出する。図２２の山２３４、雲２３２、および飛行機２３０はともに遠景に合成されるオブジェクトであり、ＬＯＤの観点からは共通するが、静止オブジェクトの山２３４と低速移動オブジェクトの雲２３２は、高速移動オブジェクトの飛行機２３０とは運動特性が異なる。そのため、描画処理部４６は、飛行機２３０を山２３４および雲２３２とは異なるグループに分類し、遠景のオブジェクトを２つのグループに分けて、それぞれのグループのオブジェクトのＢ−ｂｏｘを包含する部分空間を遠景の描画単位として算出する。すなわち、同図のように視点Ｏから距離Ｚ３の位置にある前方クリッピング面と距離Ｚ４の位置にある後方クリッピング面に挟まれたブリック２２２と、ブリック２２２内に含まれる別の描画単位であるブリック２２４とが算出される。前者のブリック２２２は、山２３４および雲２３２のＢ−ｂｏｘを包含する部分空間であり、後者のブリック２２４は、飛行機２３０のＢ−ｂｏｘを包含する部分空間である。
【００９６】
ＰＣ１の統合部４８は、ＰＣ３の描画処理部４６が生成する遠景のブリック２２２および２２４の画像データを受信して、近景のブリック２２０の画像データと統合して最終的に表示される画像を生成する。ＰＣ３から取得する遠景の画像データは必ずしも３次元グラフィックスデータでなくてもよく、ＪＰＥＧ（Joint Photographic Experts Group）などの２次元グラフィックスデータであってもよい。その場合は、ＰＣ１の統合部４８は、単に２次元の背景画像に近景のブリック２２０の画像データをはめ込む処理を行う。
【００９７】
ここで、ＰＣ３の描画処理部４６は、高速移動オブジェクトを含む遠景のブリック２２４の画像データをオブジェクトの移動速度に合わせて頻繁に更新し、ＰＣ１に送信しなければならないのに対して、静止オブジェクトや低速移動オブジェクトを含む遠景のブリック２２２の画像データについては、それほど頻繁に更新してＰＣ１に送信する必要はない。また、高速移動オブジェクトの通過後は、遠景は、静止オブジェクトと低速移動オブジェクトを含むブリック２２２のみになるため、ＰＣ３からＰＣ１へのデータの送信時間間隔は長く取ることができる。したがって、通常は、遠景を描画する計算ノードと近景を描画する計算ノードの間では、通信のレーテンシーが長くても、分散描画処理システムは全体として機能する。
【００９８】
なお、２つの仮想キャラクタＣ１およびＣ２の間に干渉性がない場合は、ＰＣ１の描画処理部４６は、仮想キャラクタＣ１およびＣ２をそれぞれ個別に包含する部分空間を描画単位として算出する。すなわち、図２４（ａ）、（ｂ）に示すように、仮想キャラクタＣ１のＢ−ｂｏｘ２４０を包含するブリック２２６と、仮想キャラクタＣ２のＢ−ｂｏｘ２４２を包含するブリック２２８が算出される。
【００９９】
この場合、ＰＣ１の統合部４８は、リアルタイムでＰＣ２の描画処理部４６が生成する仮想キャラクタＣ２を含むブリック２２８の画像データを受信して、仮想キャラクタＣ１を含むブリック２２６の画像データと統合して、近景の画像データを生成する。
【０１００】
このように、ＰＣ１のユーザＡから見た場合の仮想空間を近景と遠景のブリックに分けたり、オブジェクトの運動特性などの性質にもとづいてブリックを分けることにより、複数の計算ノードでそれぞれのブリックのＬＯＤの要求仕様に応じた描画処理を実行したり、計算ノード間の通信頻度を変えるなど、ブリックごとに柔軟に描画戦略を立てて分散描画処理を行うことができる。
【０１０１】
本発明では、ブリックごとに独立に描画戦略を選択することが可能であり、オブジェクトの特性やＬＯＤの要求仕様などに応じてブリック単位で描画アルゴリズムを限定して、描画アルゴリズムの切り替えコストを削減することができる。言い換えれば、一様な描画戦略を適用することのできる部分空間をブリックとして抽出することにより、ブリック内で必要なプログラムやデータの種類を限定して、描画処理を高速化し、描画アルゴリズムに適したサイズのメモリ領域を割り当てて、メモリの利用効率を高めることができる。すなわち、ブリックを用いることにより、描画戦略の自由度が高まると同時に、演算効率とメモリ効率を上げることができるのであり、さらにいくつかの具体例を挙げてそのことを説明する。
【０１０２】
図２５（ａ）〜（ｃ）は、移動オブジェクト３４８にモーションブラー処理を施す場合のメモリ領域の選択を説明する図である。同図において、移動オブジェクト３４８の移動方向は矢印で示されている。通常であれば、図２５（ａ）のように描画エリア３４０が割り当てられるところ、描画処理部４６は、移動オブジェクト３４８を含むブリックの描画処理にあたって、図２５（ｂ）のように移動オブジェクト３４８の速度方向に圧縮した描画エリア３４２をメモリに割り当て、速度方向に解像度を減らして描画処理を行う。最終的な出力画像に統合する際、統合部４８が、図２５（ｃ）のように速度方向に描画エリア３４６を伸長する。移動オブジェクト３４８の速度方向には高い解像度は必要ではないため、移動オブジェクト３４８を含むブリックに対して、速度方向に圧縮した描画エリア３４２を選択することにより、そのブリックの描画処理の計算量とメモリ量を低減して、描画処理の高速化を図ることができる。
【０１０３】
図２６（ａ）、（ｂ）は、デフォーカス処理を行う場合のメモリ領域の選択を説明する図である。描画処理部４６は、図２６（ａ）のように、デフォーカスすべきオブジェクトを含むブリックについては、低解像度の描画エリア３６０を割り当て、描画処理を行い、オブジェクトの描画データ３６４を生成する。最終的な出力画像に統合する際、統合部４８は、図２６（ｂ）のように、描画エリア３６２を拡大し、オブジェクトの描画データ３６６を補間により生成する。たとえば、点３６８の位置のピクセル値をその周囲にある描画エリア３６２の格子点のピクセル値を用いて双３次補間などにより補間して求める。このように、デフォーカス処理を施すオブジェクトの描画には高い解像度を要しないため、デフォーカスすべきオブジェクトを含むブリックに対しては、低解像度の描画エリア３６０を選択する。ブリックごとのフォーカスの深度に応じて、描画エリアの解像度を適正なレベルに調整して描画処理を行うため、必要以上の演算やメモリへのアクセスを行うことを避けて、描画処理を高速化することができる。
【０１０４】
例示したように、ブリックごとにオブジェクトの運動速度などの特性や、ＬＯＤの要求仕様などに応じて解像度を適切に選択してマルチ解像度描画を行うことで、演算量とメモリ量の両面で描画処理を最適化することができる。
【０１０５】
ブリック単位の描画戦略の他の例として、あるブリックが他のブリックとｚ方向に重なりをもたず、ただ一つの凸オブジェクトを含むものである場合は、そのブリックについてはＺ付マージ描画処理が不要であり、描画処理部４６は、Ｚバッファを使用しないでそのブリックの描画処理を行うことができる。これにより、Ｚ値参照によるレーテンシーをなくして描画処理を高速化できる。描画空間全体に対して均質な解像度のＺバッファを用いるのではなく、ブリックごとにＺバッファの解像度を変更したり、この例のようにＺバッファそのものを使用しないで描画することもマルチ解像度描画の一例ととらえることができる。
【０１０６】
また、ブリック単位の描画処理はＺカリング（Z-culling）処理に有効に適用することができ、Ｚカリング処理の戦略をブリック単位で調整してＺカリング処理の自由度を高め、かつ、処理効率を向上することができる。以下、ブリック単位のＺカリング処理について、図２７〜図３３を参照して説明する。
【０１０７】
Ｚバッファによる隠面消去法では、ピクセル単位でオブジェクトの奥行きを比較し、どのオブジェクトが前面に位置するかを判定する。一方、Ｚカリング処理では、一般に階層化されたＺバッファを利用して、いくつかのピクセルの集合であるブロックの単位でＺ値の代表値をもたせ、ブロック単位のＺ値の比較により、オブジェクトの前後関係を判定する。Ｚカリング処理では、Ｚバッファによるピクセルレベルでの隠面消去に先立ち、オブジェクトの外形をブロック単位の矩形領域で近似して、ブロックレベルでオブジェクトの奥行き情報を把握し、前方のオブジェクトの背後に隠れる後方のオブジェクトを早い段階で検出して、その後方のオブジェクトのレンダリングを省略する。
【０１０８】
図２７はＺカリング処理で用いられる階層化Ｚバッファの説明図である。同図では３階層のＺバッファを模式的に表したものであり、最下位層のＺバッファ２５０の４ピクセル２５６ａ〜ｄは一つ上の階層のＺバッファ２５２においては一つのピクセル２５８により代表される。この代表ピクセル２５８のＺ値は、下位層の４ピクセル２５６ａ〜ｄの値の最大値に設定される。さらに、この階層のＺバッファ２５２における４つのピクセルは、同様にもう一つ上の階層のＺバッファにおいて一つのピクセル２５９により代表される。
【０１０９】
このようにして、階層化Ｚバッファでは、階層を上がるごとに描画領域の分割単位が粗くなり、各分割単位のＺ値は、一つ下の階層における対応領域の一定数のピクセル、ここでは４ピクセルのＺ値の最大値で与えられる。したがって、この例では、最上位層の１つのＺ値は、最下位層の１６ピクセル分のＺ値を代表するものとなり、データ量が１６分の１に減少する。一般に、Ｚバッファ法では、スクリーンと同じ解像度のＺバッファが必要であり、大容量のメモリを必要とし、メモリアクセスのレーテンシーが処理時間に影響する。しかし、Ｚバッファを階層化して、たとえば、最上位層のＺバッファのブロックを２５６分割くらいにすれば、そのＺバッファのＺ値はキャッシュに格納することができるようになり、キャッシュ内でＺ値の判定を行うことができるので、Ｚ値参照によるレーテンシーを減らし、高速な処理が可能となる。
【０１１０】
描画処理部４６は、Ｚカリング処理を有効ならしめるため、手前のオブジェクトを含むブリックから描画処理を開始して、段階的により後方に位置するオブジェクトを含むブリックを描画処理するように、スケジューリングを決定し、処理手順リストを作成する。描画処理部４６は、前方のブリックの描画処理が終わると、イベントを起動し、その前方ブリックについて階層化Ｚバッファを作成し、上位層のＺバッファのデータを統合部４８に転送する。統合部４８は、転送された上位層のＺバッファのＺ値と、描画処理を予定している後方のブリックに含まれるオブジェクトのＺ値を比較して、オブジェクト間の前後関係を判定し、後方のブリックに含まれるオブジェクトの描画処理が必要かどうかを判断する。
【０１１１】
描画処理部４６は、前方の複数のブリックの描画処理が終わった時点で、その複数のブリックについて階層化Ｚバッファを作成して、それらのブリックの上位層のＺバッファのデータを統合部４８に転送してもよい。これにより、統合部４８は、前方の複数のオブジェクトに隠れる後方オブジェクトをカリングすることができる。このように、描画処理部４６は、階層化Ｚバッファの統合部４８への転送タイミングをブリック単位で調整することにより、ある程度の数の前方ブリックの描画処理が終わってから、後方ブリックのカリング処理が実行されるように、カリング処理の実行タイミングを明示的に決めることができる。また、描画処理部４６は、比較的サイズの大きいオブジェクトを含む前方ブリックだけを選択して、その選択された前方ブリックの階層化Ｚバッファを統合部４８へ転送するなど、カリング処理に利用する前方ブリックを選択することにより、どの前方ブリックを用いてどの後方ブリックをカリング処理するかを指定することもできる。このようにカリング処理の戦略をブリック単位で明示的に決めることにより、カリング処理の柔軟性を高めることができる。
【０１１２】
図２８、図２９は、それぞれ図２７の最下位層のＺバッファ２５０、最上位層のＺバッファ２５４のＺ値の例を説明する図である。図２８におけるＺ値は、描画処理部４６が処理するブリック内で局所的に規定された深さであり、オブジェクトが近くにあるほどＺ値は小さく、オブジェクトが最も手前にある場合はＺ値はゼロである。Ｚバッファ法では、Ｚ値を最大値ｚｍａｘで初期化しておき、各ピクセルについてもっとも手前にあるオブジェクトのＺ値を各ピクセルの最終的なＺ値として求める。したがって、求められたＺ値が最大値ｚｍａｘのままであるピクセルがあれば、そのピクセルには投影されるべきオブジェクトが存在しないことを意味する。図２９の最上位層のＺバッファ２５４における４分割された各ブロックのＺ値は、図２８の最下位層のＺバッファ２５０におけるそれぞれのブロックに対応する１６ピクセルのＺ値の最大値で与えられる。なお、Ｚ値は、オブジェクトが近くにあるほど大きくなり、オブジェクトが遠くにあるほど小さくなるように定義することもでき、そのような定義を用いても、以下のＺカリング処理に本質的な違いは生じない。
【０１１３】
図３０は、統合部４８におけるＺカリング処理を説明する図である。統合部４８は、描画処理部４６から図２９に示された最上位層のＺバッファ２５４の値を受け取ると、Ｚ値のダイナミックレンジを調整して、元の空間における絶対的なＺ値に補正する。同図は補正後のＺバッファ２９０の４分割された各ブロックのＺ値と、これから描画処理を行う予定の後方の２つのオブジェクト２８０、２８２の関係を示している。
【０１１４】
統合部４８が判定するＺカリングの条件は、後方のオブジェクト２８０、２８２のＺ値の最小値がＺバッファ２９０のＺ値よりも大きいことである。Ｚバッファ２９０のＺ値は、前方のオブジェクトのＺ値のそのブロックにおける最大値であるから、このＺカリングの条件を満たす場合は、後方のオブジェクト２８０、２８２は前方のオブジェクトの陰に隠れて見えない。たとえば、第１の後方オブジェクト２８０の最小Ｚ値は、Ｚバッファ２９０の第１ブロック２７０のＺ値よりも大きく、Ｚカリングの条件を満たすため、第１の後方オブジェクト２８０は第１ブロック２７０内の前方オブジェクトの陰に隠れて見えない。第２の後方オブジェクト２８２も同様にＺカリングの条件を満たし、第２ブロック２７２内の前方オブジェクトの陰に隠れて見えない。一方、第３ブロック２７６のＺ値は最大値Ｚｍａｘをとるから、このブロック内に後方オブジェクトが存在したとしても、前述のＺカリングの条件を満たすことはない。これは、第３ブロック２７６内に前方オブジェクトが存在していないため、このブロック内にある後方オブジェクトは視点位置から見えることを意味する。統合部４８は、Ｚカリングの条件を満たした第１の後方オブジェクト２８０と第２の後方オブジェクト２８２をカリングして、これらのオブジェクトの描画処理を省略する。このようにブロック単位でＺ値を大小比較することにより、後方のオブジェクトの描画が不要である場合を効率よく判別して、無駄なレンダリングを省き、描画処理速度を上げることができる。
【０１１５】
ブリック単位のカリング処理の具体的な例を説明する。図３１（ａ）に示すように、視点Ｏから見た場合の近景にはメニュー３０２と２つのＢ−ｂｏｘ３０４、３０６があり、遠景に４つのＢ−ｂｏｘ３０８、３０９、３１０、３１２が存在し、これらのオブジェクトを投影面３００に投影して描画する。図３１（ｂ）は、図３１（ａ）の上面図であり、同図に示すように、近景の３つのオブジェクト３０２、３０４、３０６は、距離Ｚ１の位置にある前方クリッピング面と距離Ｚ２の位置にある後方クリッピング面に挟まれた前方ブリック３２０内にあり、遠景の４つのオブジェクト３０８、３０９、３１０、３１２は、距離Ｚ３の位置にある前方クリッピング面と距離Ｚ４の位置にある後方クリッピング面に挟まれた３つに分割された後方ブリック３２２ａ、３２２ｂ、３２２ｃ（以下、後方ブリック３２２と総称することがある）内にある。
【０１１６】
前方ブリック３２０、後方ブリック３２２の順に描画処理がスケジューリングされ、前方ブリック３２０の描画処理後に前方ブリック３２０の階層化Ｚバッファにおける上位層のＺバッファの情報が後方ブリック３２２の描画処理の際に利用され、描画処理の不要なオブジェクトまたはブリックがカリングされる。
【０１１７】
図３１（ａ）、（ｂ）に示すように、視点Ｏからメニュー３２０を見た場合のビューボリューム３２４には、いずれの遠景のＢ−ｂｏｘ３０８、３０９、３１０、３１２も含まれない。一方、図３２（ａ）、（ｂ）に示すように、近景のＢ−ｂｏｘ３０４のビューボリューム３２６には、遠景のＢ−ｂｏｘ３１０が含まれる。また、図３３（ａ）、（ｂ）に示すように、近景のもう一つのＢ−ｂｏｘ３０６のビューボリューム３２８には、他の遠景のＢ−ｂｏｘ３１２が含まれる。したがって、これら２つの遠景のＢ−ｂｏｘ３１０、３１２はカリングの対象となり、これらのＢ−ｂｏｘ３１０、３１２のそれぞれを含む２つの後方ブリック３２２ａ、３２２ｃについては描画処理が行われない。
【０１１８】
なお、ここでは、ブリック全体がカリングされる例を説明したが、ブリック内のＢ−ｂｏｘが個別にカリングされてもよい。たとえば、後方ブリック３２２が３つに分割されておらず、一つのブリックである場合、ブリック全体がカリングされるのではなく、ブリック内の２つの遠景のＢ−ｂｏｘ３１０、３１２が個別にカリングされて描画処理の対象外となった後に、残りのＢ−ｂｏｘ３０８、３０９について描画処理がなされる。さらに、カリング処理は、Ｂ−ｂｏｘレベルで行う他、Ｂ−ｂｏｘ内のオブジェクトのポリゴンモデルのレベルで行ってもよい。ブリック内のオブジェクトの特性やそのブリックを処理するレンダリングユニットのＣＰＵ性能やメモリの容量によって、Ｂ−ｂｏｘレベルのカリング、ポリゴンレベルのカリングのいずれかを選択してもよく、ブリックごとにカリング処理の戦略を最適化することができる。
【０１１９】
さらに別の描画戦略の例として、ブリックごとに隠面消去の手法を異ならせ、たとえば近景のブリックに対しては、計算の複雑なレイトレーシングを局所的に適用し、それ以外の外部のブリックに対してはリフレクションマッピングを用いるパーシャルレイトレーシングを採用してもよい。リフレクションマッピングでは、描画対象のオブジェクトのまわりに大きな仮想球または仮想立方体を置き、その内面にあらかじめ環境のテクスチャが貼り付けておく。そして、視線と交差するオブジェクトの交点を求め、さらにその点から反射ベクトルを延ばして仮想球または仮想立方体との交点を求め、その交点での仮想球または仮想立方体の色をオブジェクトの色としてマッピングする。レイトレーシングでもリフレクションマッピングでも、環境の情報を無限遠まで広げると、計算量が多くなり、メモリ効率も悪くなるため、ブリック単位で環境を限定して、描画に必要な環境データを絞り込むことができる。描画に必要な環境データを他のブリックから受け取ることができるように、ブリック間で互いに必要なデータの交換が可能なシステム構成とし、描画対象のブリックに近いブリックからはオブジェクトデータの提供を受け、遠方のブリックからは画像データの提供を受けるなど、他のブリックから提供される環境データの詳細度に差を設けてもよい。
【符号の説明】
【０１２０】
４２  座標変換部、  ４３  レンダリング部、  ４４  分類部、  ４６  描画処理部、  ４８  統合部、  ５０  表示部、  ５２  オブジェクト記憶部、  ５４  画像記憶部、  １００  画像処理装置、  １０８  Ｉ／Ｏポート、  １１０  メインＣＰＵ、  １１２  メインメモリ、  １１４  通信部、  １２０  グラフィック処理ブロック、  １２２  並列描画エンジン、  １２４  メモリインターフェイス、  １２６  画像メモリ。
【図１】
2010092507.tif 000003
【図２】
2010092507.tif 000004
【図３】
2010092507.tif 000005
【図４】
2010092507.tif 000006
【図５】
2010092507.tif 000007
【図６】
2010092507.tif 000008
【図７】
2010092507.tif 000009
【図８】
2010092507.tif 000010
【図９】
2010092507.tif 000011
【図１０】
2010092507.tif 000012
【図１１】
2010092507.tif 000013
【図１２】
2010092507.tif 000014
【図１３】
2010092507.tif 000015
【図１４】
2010092507.tif 000016
【図１５】
2010092507.tif 000017
【図１６】
2010092507.tif 000018
【図１７】
2010092507.tif 000019
【図１８】
2010092507.tif 000020
【図１９】
2010092507.tif 000021
【図２０】
2010092507.tif 000022
【図２１】
2010092507.tif 000023
【図２２】
2010092507.tif 000024
【図２３】
2010092507.tif 000025
【図２４】
2010092507.tif 000026
【図２５】
2010092507.tif 000027
【図２６】
2010092507.tif 000028
【図２７】
2010092507.tif 000029
【図２８】
2010092507.tif 000030
【図２９】
2010092507.tif 000031
【図３０】
2010092507.tif 000032
【図３１】
2010092507.tif 000033
【図３２】
2010092507.tif 000034
【図３３】
2010092507.tif 000035