(57)【要約】【課題】遮蔽面積および遮蔽角度の計算を簡素化する、動的物体のセルフシャドウの陰影を生成する解決方法を提供する。【解決手段】スフィアツリーを予め生成し、この構造に基づいて３Ｄ物体における拡張点の遮蔽面積値および遮蔽角度値を計算し、ひいてはアクセス値マップおよび合成弧度マップを生成する。この物体のセルフシャドウの陰影を生成したい場合、スフィアツリー中の各球の最新位置を直接更新し、次にマップ中の情報をピックアップすることで、３Ｄ画像を生成する。アクセス値マップおよび合成弧度マップは予め記憶されているため、動的物体のセルフシャドウの陰影を生成する必要がある際には、リアルタイムな演算量が大幅に低減される。【選択図】図１
2008152749.tif 000002
【特許請求の範囲】
【請求項１】
３Ｄ動的物体の画像形成装置であって、
複数の球を含み、一物体に対するスフィアツリーを生成するスフィアツリー生成モジュールと、
前記物体の全ての頂点に対して、空間中における遮蔽面積値および遮蔽角度値を計算する一つの球計算モジュールと、
前記複数の遮蔽面積値および遮蔽角度値に基づいて、アクセス値マップを生成する第１マップ生成モジュールと、
前記物体の全ての頂点に対して、空間中における任意の二つの球の合計の遮蔽面積値および挟み角を計算する複数の球計算モジュールと、
前記複数の合計の遮蔽面積値および挟み角に基づいて、合成弧度マップを生成する第２マップ生成モジュールと、
前記物体の動作に基づいて、前記スフィアツリー中における前記複数の球の相対位置を更新するリフレッシュモジュールと、
前記相対位置に基づいて、前記アクセス値マップおよび前記合成弧度マップ中から適切な値をピックアップして、前記物体のセルフシャドウがもたらす陰影を合成する合成モジュールと、
前記陰影を含む前記物体の３Ｄ画像を表示する画像生成モジュールと、を備えたことを特徴とする３Ｄ動的物体の画像形成装置。
【請求項２】
前記物体のスキンボーン構造情報をピックアップするとともに、前記スキンボーン構造情報に基づいて、各球の円中心のスキンボーンの重み値を計算する第１計算モジュールを更に備え、
前記リフレッシュモジュールは更に前記複数のスキンボーンの重み値に基づいて、前記スフィアツリー中における前記複数の球の相対位置を更新することを特徴とする請求項１に記載の３Ｄ動的物体の画像形成装置。
【請求項３】
前記複数の球計算モジュールは、前記物体の一頂点の遮蔽面積値に対して前記任意の二つ球の前記頂点に対する遮蔽面積値の合計に等しい大きな球を更に設定することを特徴とする請求項１に記載の３Ｄ動的物体の画像形成装置。
【請求項４】
前記頂点は前記複数の球のうちの一つが含むものであり、前記挟み角は前記頂点を含む球体の頂点の法線ベクトルと前記頂点から前記大きな球の中心までのベクトルとの挟み角であることを特徴とする請求項３に記載の３Ｄ動的物体の画像形成装置。
【請求項５】
３Ｄ動的物体の画像形成方法であって、
スフィアツリー生成モジュールが、複数の球を含み、一物体に対するスフィアツリーを生成するステップと、
一つの球計算モジュールが、前記物体の全ての頂点に対して、空間中における遮蔽面積値および遮蔽角度値を計算するステップと、
第１マップ生成モジュールが、前記複数の遮蔽面積値および遮蔽角度値に基づいて、アクセス値マップを生成するステップと、
複数の球計算モジュールが、前記物体の全ての頂点に対して、空間中における任意の二つの球の合計の遮蔽面積値および挟み角を計算するステップと、
第２マップ生成モジュールが、前記複数の合計の遮蔽面積値および挟み角に基づいて、合成弧度マップを生成するステップと、
リフレッシュモジュールが、前記物体の動作に基づいて、前記スフィアツリー中における前記複数の球の相対位置を更新するステップと、
合成モジュールが、前記相対位置に基づいて、前記アクセス値マップおよび前記合成弧度マップ中から適切な値をピックアップして、前記物体のセルフシャドウがもたらす陰影を合成するステップと、
画像生成モジュールが、前記陰影を含む前記物体の３Ｄ画像を表示するステップと、を含むことを特徴とする３Ｄ動的物体の画像形成方法。
【請求項６】
第１計算モジュールが、前記物体のスキンボーン構造情報をピックアップするとともに、前記スキンボーン構造情報に基づいて、各球の円中心のスキンボーンの重み値を計算するステップを更に含み、
前記更新ステップでは更に前記複数のスキンボーンの重み値に基づいて、前記スフィアツリー中における前記複数の球の相対位置を更新することを特徴とする請求項５に記載の３Ｄ動的物体の画像形成方法。
【請求項７】
前記空間中の任意の二つを球の合計の遮蔽面積値および挟み角を計算するステップは、前記物体の一頂点の遮蔽面積値に対して前記任意の二つ球の前記頂点に対する遮蔽面積値の合計に等しい大きな球を設定するステップを含むことを特徴とする請求項５に記載の３Ｄ動的物体の画像形成方法。
【請求項８】
前記頂点は前記複数の球のうちの一つに含まれるものであり、前記挟み角は前記頂点を含む球体の頂点の法線ベクトルと前記頂点から前記大きな球の中心までのベクトルとの挟み角であることを特徴とする請求項７に記載の３Ｄ動的物体の画像形成方法。
【請求項９】
３Ｄ動的物体の画像形成方法を実行するためのアプリケーションプログラムであって、当該方法は、
スフィアツリー生成モジュールが、複数の球を含み、一物体に対するスフィアツリーを生成するステップと、
一つの球計算モジュールが、前記物体の全ての頂点に対して、空間中における遮蔽面積値および遮蔽角度値を計算するステップと、
第１マップ生成モジュールが、前記複数の遮蔽面積値および遮蔽角度値に基づいて、アクセス値マップを生成するステップと、
複数の球計算モジュールが、前記物体の全ての頂点に対して、空間中における任意の二つの球の合計の遮蔽面積値および挟み角を計算するステップと、
第２マップ生成モジュールが、前記複数の合計の遮蔽面積値および挟み角に基づいて、合成弧度マップを生成するステップと、
リフレッシュモジュールが、前記物体の動作に基づいて、前記スフィアツリー中における前記複数の球の相対位置を更新するステップと、
合成モジュールが、前記相対位置に基づいて、前記アクセス値マップおよび前記合成弧度マップ中から適切な値をピックアップして、前記物体のセルフシャドウがもたらす陰影を合成するステップと、
画像生成モジュールが、前記陰影を含む前記物体の３Ｄ画像を表示するステップと、を含むことを特徴とするアプリケーションプログラム。
【請求項１０】
前記方法は、
第１計算モジュールが、前記物体のスキンボーン構造情報をピックアップするとともに、前記スキンボーン構造情報に基づいて、各球の円中心のスキンボーンの重み値を計算するステップを更に含み、
前記更新ステップでは更に前記複数のスキンボーンの重み値に基づいて、前記スフィアツリー中における前記複数の球の相対位置を更新することを特徴とする請求項９に記載のアプリケーションプログラム。
【請求項１１】
前記空間中の任意の二つを球の合計の遮蔽面積値および挟み角を計算するステップは、前記物体の一頂点の遮蔽面積値に対して前記任意の二つ球の前記頂点に対する遮蔽面積値の合計に等しい大きな球を設定するステップを含むことを特徴とする請求項９に記載のアプリケーションプログラム。
【請求項１２】
前記頂点は前記複数の球のうちの一つに含まれるものであり、前記挟み角は前記頂点を含む球体の頂点の法線ベクトルと前記頂点から前記大きな球の中心までのベクトルとの挟み角であることを特徴とする請求項１１に記載のアプリケーションプログラム。
【請求項１３】
３Ｄ動的物体の画像形成方法を実行するためのアプリケーションプログラムを記憶するコンピュータ読取り可能媒体であって、当該方法は、
スフィアツリー生成モジュールが、複数の球を含み、一物体に対するスフィアツリーを生成するステップと、
一つの球計算モジュールが、前記物体の全ての頂点に対して、空間中における遮蔽面積値および遮蔽角度値を計算するステップと、
第１マップ生成モジュールが、前記複数の遮蔽面積値および遮蔽角度値に基づいて、アクセス値マップを生成するステップと、
複数の球計算モジュールが、前記物体の全ての頂点に対して、空間中における任意の二つの球の合計の遮蔽面積値および挟み角を計算するステップと、
第２マップ生成モジュールが、前記複数の合計の遮蔽面積値および挟み角に基づいて、合成弧度マップを生成するステップと、
リフレッシュモジュールが、前記物体の動作に基づいて、前記スフィアツリー中における前記複数の球の相対位置を更新するステップと、
合成モジュールが、前記相対位置に基づいて、前記アクセス値マップおよび前記合成弧度マップ中から適切な値をピックアップして、前記物体のセルフシャドウがもたらす陰影を合成するステップと、
画像生成モジュールが、前記陰影を含む前記物体の３Ｄ画像を表示するステップと、を含むことを特徴とするコンピュータ読取り可能媒体。
【請求項１４】
前記方法は、
第１計算モジュールが、前記物体のスキンボーン構造情報をピックアップするとともに、前記スキンボーン構造情報に基づいて、各球の円中心のスキンボーンの重み値を計算するステップを更に含み、
前記更新ステップでは更に前記複数のスキンボーンの重み値に基づいて、前記スフィアツリー中における前記複数の球の相対位置を更新することを特徴とする請求項１３に記載のコンピュータ読取り可能媒体。
【請求項１５】
前記空間中の任意の二つを球の合計の遮蔽面積値および挟み角を計算するステップは、前記物体の一頂点の遮蔽面積値に対して前記任意の二つ球の前記頂点に対する遮蔽面積値の合計に等しい大きな球を設定するステップを含むことを特徴とする請求項１３に記載のコンピュータ読取り可能媒体。
【請求項１６】
前記頂点は前記複数の球のうちの一つに含まれるものであり、前記挟み角は前記頂点を含む球体の頂点の法線ベクトルと前記頂点から前記大きな球の中心までのベクトルとの挟み角であることを特徴とする請求項１５に記載のコンピュータ読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
３Ｄ画像のセルフシャドウを発生させるに必要な情報を予め計算し記憶し、３Ｄ画像を生成する際、これら情報をピックアップしてリアルタイム演算時間を節約する装置、方法、アプリケーションプログラムおよびコンピュータ読取り可能媒体に関する。
【背景技術】
【０００２】
マルチメディア技術および画像処理技術の発展に伴い、動画産業では従来の平面的な画像処理から３Ｄ画像処理にまで進歩しており、動画は視覚的に更にリアルになってきている。リアルな効果を達成するためには、陰影の生成は極めて重要な作業の一環である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
動画中に物体を生成したい場合、それ自体のある部分が遮って作られる陰影があるため、従来から多くの解決方法があった。例えばグローバルイルミネーション（ｇｌｏｂａｌ  ｉｌｌｕｍｉｎａｔｉｏｎ）演算法で処理するものがあるが、これではリアルタイム（ｒｅａｌ  ｔｉｍｅ）の効果を達成することはできない。
【０００４】
アンビエントオクルージョン（ａｍｂｉｅｎｔ  ｏｃｃｌｕｓｉｏｎ）技術ではモデル自体が遮る情報を提供しており、モデル表面で一次的なレイトレーシング（ｒａｙ  ｔｒａｃｉｎｇ）を行うものであり、より詳細に言えば、アンビエントオクルージョンは物体上の各々の点に対して、その周囲の平均的な可視度を計算し、可視度の情報により、物体表面に柔らかな自体の陰影効果をもたらすものである。確かにアンビエントオクルージョン技術の概念は簡単であるものの、物体上におけるあらゆる端点に対してあらゆる方向に向けて可視度を計算しなければならず、必要な計算量はとても大きく、同様にリアルタイムな効果を達成することはできない。
【０００５】
動的な物体の各々の部分の相対位置は時間に伴って絶えず変化しているので、その生成される陰影も絶えず変化しており、前記した従来におけるセルフシャドウを生成する技術はいずれもリアルタイム処理できないという問題があるため、動的な物体の陰影を生成するものに用いるには適さない。したがって、３Ｄ動画中に動的な物体におけるセルフシャドウが発生する陰影を如何に生成するかということは、業界にて解決が急がれる問題である。
【課題を解決するための手段】
【０００６】
本発明では、複数の球（スフィアツリーとする）により動的物体の外観を結合し、遮蔽面積（ａｃｃｅｓｓｉｂｉｌｉｔｙ）および遮蔽角度（ｏｃｃｌｕｓｉｏｎ  ａｎｇｌｅ）の計算を簡素化する、動的物体のセルフシャドウの陰影を生成する解決方法を提供する。これにとどまらず、この方法では、遮蔽面積および遮蔽面積を計算するに必要な情報と、球の重なりがもたらす陰影計算エラーを排除する情報とを予めマップデータ中に格納し、遮蔽面積の計算作業を高速化するものである。
【０００７】
本発明は元の動的物体が持つスキンボーン（ｓｋｉｎ−ｂｏｎｅ）構造情報を合わせて、各球の相対位置と関係を動的に調整し、スフィアツリー（ｓｐｈｅｒｅ  ｔｒｅｅ）が動的物体のその時点の動作に随時対応することができる。
【０００８】
前述した遮蔽面積を予め計算するに必要な情報は、この動的物体のある頂点が空間中における異なる角度および異なる遮蔽部分において、この点の上半球空間に対して形成する遮蔽面積を計算するものとすることができる。この情報および遮蔽角度値は二次元マッピング法で記憶するものであり、このマップが「アクセス値マップ」と定義される。
【０００９】
前述した球の重なりがもたらす陰影計算エラーを排除する情報は、大きな球を用いて重なる二つの球をカバーするとともに、この大きな球の合計の遮蔽面積値と、挟み角とを三次元マッピング法で記憶するものであり、このマップが「合成弧度マップ」とされる。
【００１０】
前述した「アクセス値マップ」および「合成弧度マップ」は予め記憶されているので、この動的物体のセルフシャドウの陰影を生成したい場合、まずスフィアツリー中の各球の最新位置を直接更新し、次にマップ中の情報をピックアップし、この動的物体上の各頂点に対して球が受ける全体的な遮蔽影響を計算し、最終的に算出された陰影効果を３Ｄ画像中に反映させる。
【発明の効果】
【００１１】
本発明の解決方法では、動的物体のセルフシャドウの陰影を生成する際のピックアップ用として「アクセス値マップ」および「合成弧度マップ」を予め生成しているので、リアルタイムな演算量が大幅に低減されるため、従来技術にてリアルタイム処理ができなかった問題を解決することができる。
【００１２】
図面および後述の実施形態を参照した後、当業者においては本発明のその他目的、および本発明の技術手法および実施態様を理解することが可能となる。
【発明を実施するための最良の形態】
【００１３】
本発明の第１実施例は３Ｄ動的物体の画像形成方法であって、この方法ではこの動的物体のセルフシャドウがもたらす陰影を生成することができる。この手順は、この動的物体のセルフシャドウの効果を生成する前に予め実行される第１段階と、この動的物体のセルフシャドウの効果を生成するときにリアルタイムに実行される第２段階との二つの段階に分けることができる。第１段階のステップ（手順）は図１に示すとおりである。
【００１４】
まずステップ１０１を実行して、複数の球を含み、ツリー形式で配列され、この動的物体の各部分の相対関係をシミュレートするスフィアツリーを生成する。スフィアツリーを生成する技術が従来から数多く有るが、オクツリー（Ｏｃｔｒｅｅ）演算法を例にとれば、まず、この動的物体がその中に含まれる一つの立方体を作成し、この立方体をＸ、Ｙ、Ｚ軸に沿って８個のサブ立方体に分割し、これらサブ立方体を更に分割するという具合に、これら小立方体がノード（ｎｏｄｅ）に近くなるまで分割していく。各ノードはこの動的物体の一部を表している。次に各ノードに対して、球を生成してこのノードを含ませる。これら球はこれに基づいてその立方体から切り出され、スフィアツリーの位置および上・下位関係を決定できる。オクツリー演算法は、始めこの動的物体を８個のサブ立方体に分割するため、このスフィアツリーでこの動的物体を表現したい場合、このスフィアツリーの最上層は８個の大きな球を有することになる。
【００１５】
オクツリー演算法以外に、更に、例えばハブバード（Ｈｕｂｂａｒｄ）演算法、グリッド（Ｇｒｉｄ）演算法、マージ（Ｍｅｒｇｅ）演算法、ブースト（Ｂｕｒｓｔ）演算法、展開（Ｅｘｐａｎｄ）演算法、スポーン（Ｓｐａｗｎ）演算法および複合（Ｃｏｍｂｉｎｅｄ）演算法などのスフィアツリーを生成するための数多くの従来技術がある。本発明はいずれかの演算法を用いてスフィアツリーを生成することを限定はしない。
【００１６】
一般的には、この動的物体の外観は一組のスキンボーン（ｓｋｉｎ−ｂｏｎｅ）構造情報により定義されるものであり、本実施例では更にこの動的物体のスキンボーン構造情報を利用して、スフィアツリー内における球の相対位置を調整することで、この動的物体のあらゆる部分に更に正確に対応させている。
【００１７】
したがってステップ１０３にて、この動的物体のスキンボーン構造情報をメモリ中からピックアップする。
【００１８】
次にステップ１０５を実行し、このスキンボーン構造情報に基づいて各球の円中心ｓのスキンボーンの重み値を算出する。仮にある球で覆われる頂点がＮ個（Ｎ≧１）ある場合、これら頂点に関するボーンパラメータはｂ1〜ｂMとなり、そしてこれら頂点のｂiに対する重み値はｗijとなる。このうちｉはｉ個目のボーンパラメータを表し、ｊはｊ個目の頂点を表す。例えば、３個目の頂点のｂ4に対する重み値はｗ43であり、６個目の頂点のｂ8に対する重み値はｗ86となる。円中心ｓのスキンボーンの重み値は下記式により得られる。
【００１９】
【数１】
2008152749.tif 000003
式中、Ｗsiは円中心ｓのｂiに対するスキンボーンの重み値を表す。
【００２０】
【数２】
2008152749.tif 000004
【００２１】
前記方式以外に、円中心ｓのスキンボーンの重み値は重心座標（ｂａｒｙｃｅｎｔｒｉｃ  ｃｏｏｒｄｉｎａｔｅ）で表すこともできる。その公式は以下のとおりである。
【００２２】
【数３】
2008152749.tif 000005
【００２３】
【数４】
2008152749.tif 000006
式中、βjは球中心のｊ個目の頂点に対する重心座標の値である。
【００２４】
続いて、各球の各頂点に対する遮蔽面積値および遮蔽角度（ｏｃｃｌｕｓｉｏｎ  ａｎｇｌｅ）値を計算する。図２は遮蔽面積値および遮蔽角度値とは何であるかを説明するためのものである。図２に示すように、この動的物体のある頂点Ｐは球２１に含まれ、頂点Ｐがこの動的物体のある部分により遮られて生じる陰影であること考慮したとき、仮にこの部分が球２３に含まれるならば（球２１および球２３は前記スフィアツリー中の球である）、球２３は球２１の表面に投影部分２５を形成するものであり、ここでこれがこの投影部分を定義する面積がθであり、θが球２１の水平面２７に反映する面積２９が遮蔽面積値となる。一方、遮蔽角度値は平均の遮蔽方向と球２１の法線との挟み角であり、もし球２３が水平面２７の上方に完全に位置している場合、遮蔽角度値はΦに等しくなる。
【００２５】
ここで注意すべきは、この段階において、球２３のサイズまたは頂点Ｐからの距離の遠近は重要ではないということである。なぜならば頂点Ｐと球２３との間に位置する二本の接線（立体空間においては円錐となる）内にある球であれば、同じような遮蔽の状態となり、言い換えれば、面積θおよび挟み角Φが同じであれば、遮蔽面積値および遮蔽角度値は同じとなるので、続いて異なる角度Φおよびθ値下で遮蔽面積値および遮蔽角度値が得られるからである。
【００２６】
ステップ１０７において、異なる角度Φに基づいて全ての球の球２１に対するθ値を計算する。図２に示すように、角度Φは球２１の法線ベクトル２２と頂点Ｐから球２３の中心までのベクトル２４との挟み角である。このθ値を計算する方式には従来の幾何演算を採用すればよい。
【００２７】
続いて、ステップ１０９を実行し、異なる角度Φおよびθ値に基づいて、遮蔽面積値を得る。遮蔽面積値を得る方法はモンテカルロ法（Ｍｏｎｔｅ  Ｃａｒｌｏ）を用いて下記式で計算する。
【００２８】
【数５】
2008152749.tif 000007
式中、Ａは遮蔽面積値であり、球座標αおよびβで頂点Ｐ上半球を決定する可視度となるＶ（α，β）は可視関数（ｖｉｓｉｂｉｌｉｔｙ  ｆｕｎｃｔｉｏｎ）である。より詳細に言えば、Φおよびθはマップの二つの座標方向であり、Φは球２３の円中心と頂点Ｐとの接続方向を表し、頂点Ｐの法線ベクトル２２との挟み角であり、θが表すものは球２３が頂点Ｐ上方の単位半球に投影されたとき、単位半球上に占める弧度（つまり占める面積）である。この両者と［数５］との関係は、θの大小はＶ（α，β）の積分結果に影響し、θが大きくなるほど、Ｖ（α，β）の積分結果は大きくなり（遮蔽面積がより大きくなるからである）、ΦはＣＯＳ（α）の積分結果に影響し、Φが大きくなるほどＣＯＳ（α）の積分結果は小さくなる（球がますます水平方向に近づくほど、平面に投影する面積がより小さくなるからである）というものである。この実施例において、マップ座標の範囲は（０，１）であるので、仮にΦおよびθの範囲がそれぞれ（０，π）および（０，２π）であるならば、マップ上（Φ，θ）座標が表すΦおよびθは（Φ×π，θ×２π）となる。もし座標（α，β）方向で球２３に遮られるならば、Ｖ（α，β）＝１となり、でなければＶ（α，β）＝０となる。
【００２９】
またあるいは、確率密度関数（ｐｒｏｂａｂｉｌｉｔｙ  ｄｅｎｓｉｔｙ  ｆｕｎｃｔｉｏｎ）を用いて計算して遮蔽面積値を得ることもできる。
【００３０】
【数６】
2008152749.tif 000008
式中、Ｓはモンテカルロ法を用いてサンプリングした数であり、（αi，βi）はｉ個目のサンプリング方向であり、ｐ（αi，βi）は確率密度関数である。
【００３１】
次にステップ１１１を実行して、異なる角度Φおよびθ値に基づいて、遮蔽角度値を得る。同様に、遮蔽角度値を得る方式ではモンテカルロ法を用いて下記式で計算することができる。
【００３２】
【数７】
2008152749.tif 000009
式中、ＯＡは遮蔽角度値であり、Φおよびθ値と［数７］との関係は前述したとおりである。またあるいは、確率密度関数を用いて計算して遮蔽角度値を得ることもできる。
【００３３】
【数８】
2008152749.tif 000010
【００３４】
続いてステップ１１３を実行して、異なる角度Φおよびθ値に基づいて、アクセス値マップを生成する。詳細に言えば、ステップ１０９および１１１ではすでに異なる角度Φおよびθ値に対して対応する遮蔽面積値および遮蔽角度値を算出している。一方、本ステップでは、これら対応する値を、アクセス値マップである一つの二次元対応テーブル中に格納する。球の体積がいくら大きくとも、θ値は２πを超えるようなことはなく（つまり頂点Ｐ上半球の範囲）、しかもΦおよびθ値の範囲も（０，π）の間にあるため、（０，２π）および（０，π）といったこの二つの範囲内のマップを処理するだけでよい。図３に示すように、アクセス値マップ３１はΦおよびθ値により定義された二次元空間を有し、アクセス値マップ３１は特定のΦおよびθ値に対して二つの値、つまり遮蔽面積値および遮蔽角度値を格納している。したがって、アクセス値マップは一つの球の頂点Ｐに対してもたらされる遮蔽の影響を記録している。
【００３５】
一つの球がもたらす遮蔽を考慮する以外に、本発明は更に複数の球が互いに重なる問題も解決できる。つまり複数の球が同時にある頂点でもたらす遮蔽の現象を考慮するものである。図４Ａに示すように、仮に二つの球４１および４３が頂点Ｐを同時に遮蔽すると、そのθ値はそれぞれθ1およびθ2となり、しかも二つの球４１および４３の挟み角がδとなる。この二つの球４１および４３が同時に頂点Ｐに対してもたらす遮蔽影響を考慮した場合、図４Ｂに示すように、大きな球４５として見なすことができ、その遮蔽範囲はθ3（＝θ1＋θ2）となり、しかも球２１の法線ベクトル２２と頂点Ｐから球４５中心までのベクトル４２との挟み角がΦとなる。したがって、本発明では単に球４５の頂点Ｐに対する影響のみを考慮するだけで、球４１および４３の同時に頂点Ｐに対する影響に対応することができる。同様に、この段階で、大きな球４５のサイズまたは頂点Ｐからの距離の遠近は重要でない。なぜならば、頂点Ｐと大きな球４５との間の二本の接線内（立体空間においては円錐となる）内にある複数の重なった球は同じ遮蔽状況をもたらす。言い換えれば、角度θ1、θ2およびδ値が同じであれば、合計の遮蔽面積（ｔｏｔａｌ  ｏｃｃｌｕｄｅｄ  ａｒｅａ）値θ3と角度Φとが同じになるので、続いて異なる角度θ1、θ2およびδ値下で合計の遮蔽面積値θ3および挟み角Φが得られるからである。
【００３６】
したがって、ステップ１１５において、角度θ1、θ2およびδ値に基づいて、合計の遮蔽面積値θ3を得る。合計の遮蔽面積値θ3を得る方式ではモンテカルロ法を用いて下記式で計算することができる。
【００３７】
【数９】
2008152749.tif 000011
式中、ＴＯＡは合計の遮蔽面積値θ3であり、θ1、θ2値が大きくなるほど、被遮蔽面積が大きくなり、積分結果が大きくなるほど、δ値はより小さくなることを表しており、球４１および４３の重なり部分がより多くなることを表しているので、積分結果はより小さくなる。当然のこと、球４１および４３が重なっていない状況で、δは大きさに関わらず積分結果は変わらない。またあるいは、確率密度関数を用いて計算して合計の遮蔽面積値θ3を得ることもできる。
【００３８】
【数１０】
2008152749.tif 000012
【００３９】
続いて、ステップ１１７を実行し、異なる角度θ1、θ2およびδ値に基づいて、挟み角Φを得る。挟み角Φを得る方式はモンテカルロ法を用いて下記式で計算することができる。
【００４０】
【数１１】
2008152749.tif 000013
式中、ａｎｇｌｅ（α，β）は（α，β）方向と球４１との挟み角であり、θ1、θ2およびδ値と［数１１］の関係は前記したとおりである。またあるいは、確率密度関数を用いて計算して挟み角Φを計算することもできる。
【００４１】
【数１２】
2008152749.tif 000014
注意すべきは、ステップ１０９、１１１、１１５および１１７において、もし確率密度関数の方式を用いて面積値および角度値を取得するのであれば、確率密度関数は下記式に符合して初めて適切となるということである。
【００４２】
【数１３】
2008152749.tif 000015
【００４３】
続いてステップ１１９を実行して、異なるθ1、θ2およびδ値に基づいて、合成弧度マップを生成する。より詳細に言えば、ステップ１１５および１１７ではすでに異なるθ1、θ2およびδ値に対して対応するθ3値およびΦ値を算出している。一方、本ステップでは、これら対応する値を、合成弧度マップである一つの三次元対応テーブル中に格納する。図５に示すように、合成弧度マップ５１は三次元空間を有し、これはθ1、θ2およびδ値により定義され、合成弧度マップ５１は特定のθ1、θ2およびδ値に対して二つの値、つまりθ3値およびΦ値を格納している。したがって合成弧度マップは複数の球の頂点Ｐに対してもたらされる遮蔽の影響を記録している。
【００４４】
これに至って、第１段階の手順が完了する。続いて、この動的物体の３Ｄ画像を生成する必要がある場合に、アクセス値マップ３１と合成弧度マップ５１、およびスフィアツリーを如何に用いて物体のセルフシャドウ効果をリアルタイムに生成するかということで、すなわち第２段階を実行する。第２段階のステップは図６に示すとおりである。
【００４５】
ステップ６０１において、この動的物体の現時点での動作に基づいて、スフィアツリー中における球の相対位置を更新し、つまりピクセルシェーダ（ｐｉｘｅｌ  ｓｈａｄｅｒ）を用いるとともにスキンボーンの関係（ステップ１０５にて得られたスキンボーンの重み値）に基づいて、物体の頂点および球の現時点での位置を計算し、結果をスフィアツリー構造マップとして格納する。
【００４６】
続いてステップ６０３を実行し、スフィアツリー構造マップに基づいて、適当なアクセス値マップおよび合成弧度マップの値をピックアップして、この動的物体のセルフシャドウが生成する陰影を合成する。スフィアツリーにおいては上層の球ほどその体積はより大きくなるので、より少ない球を用いて動的物体の全体をカバーでき、そして下層の球ほどその体積は小さくなるものの、動的物体の仔細部分を保留することができる。セルフシャドウを計算する場合、セルフシャドウの頂点を計算する必要ごとに、スフィアツリー中から一定個数の球を探し出す。一定個数の球を探し出す方式とは、この頂点に最も近い四つの球を各層中から探し出すというものである。最上層の四つの球は物体全体をカバーできるので、これによりセルフシャドウにおけるマクロ的な画像を生成することができ、一方、仔細部分は更により下層の球により生成するものである。全ての球がもたらす遮蔽効果はアクセス値マップおよび合成弧度マップ中に必ず対応する値があるので、このステップで行うべきは単に球を遮蔽するθ値および／または球を遮蔽する二つのδ値に基づいて内挿を行い、対応する遮蔽面積および遮蔽角度値を得るだけである。
【００４７】
より詳細に言えば、画面のサイズに対応した四角形をまず生成し、そして各頂点に基づいて算出されたセルフシャドウ値を画面のある一つの画素に対応させる。次に、ピクセルシェーダを用いて各頂点に対して、スフィアツリー構造マップと予め記憶しておいたアクセス値マップおよび合成弧度マップとに基づいて、投影面積を計算するとともに、球の互いの重なり問題を処理し、最終的に計算結果を周囲光遮蔽マップとして記憶する。
【００４８】
続いて、ステップ６０５を実行し、この周囲光遮蔽マップに基づいてこの動的物体の陰影視覚効果を生成するとともに、この物体の３Ｄ画像を表示する。
【００４９】
本発明の第２実施例は図７に示すとおりであり、これは３Ｄ動的物体の画像形成装置であり、この装置は図１および図６に示す方法を実行し、動的物体のセルフシャドウがもたらす陰影を生成できる。３Ｄ動的物体の画像形成装置は、プリプロセッシングモジュール（手段）７１と、リアルタイムプロセッシングモジュール７３と、メモリ７５とを備え、プリプロセッシングモジュール７１はスフィアツリー生成モジュール７０１と、第１計算モジュール７０５と、第２計算モジュール７０７と、第３計算モジュール７０９と、第４計算モジュール７１１と、第１マップ生成モジュール７１３と、第５計算モジュール７１５と、第６計算モジュール７１７と、第２マップ生成モジュール７１９とを備え、この動的物体のセルフシャドウの効果を生成する前の予備動作、つまり図１のステップを実行するものであり、リアルタイムプロセッシングモジュール７３はリフレッシュモジュール７２１と、メモリ７２３と、合成モジュール７２５と、画像生成モジュール７２７とを備え、この動的物体のセルフシャドウの効果を生成するときのリアルタイムな動作、つまり図６のステップを実行するものである。
【００５０】
まず、スフィアツリー生成モジュール７０１が、複数の球を含み、ツリー形式で配列され、この動的物体の各部分の相対関係をシミュレートするスフィアツリーを生成する（ステップ１０１に対応する）。スフィアツリー生成モジュール７０１は、例えばオクツリー演算法、ハブバード演算法、グリッド演算法、マージ演算法、ブースト演算法、展開演算法、スポーン演算法および複合演算法のうちのいずれかである従来のスフィアツリー生成技術を実行する。このスフィアツリーはメモリ７５に記憶されている。
【００５１】
続いて、第１計算モジュール７０５が、この動的物体のスキンボーン構造情報およびスフィアツリーをメモリ７５中からピックアップし、（ステップ１０３に対応する）各円中心ｓのスキンボーンの重み値を算出する（ステップ１０５に対応する）。同様に、仮にある球で覆われる頂点がＮ個（Ｎ≧１）ある場合、これら頂点に関するボーンパラメータはｂ1〜ｂMとなり、そしてこれら頂点のｂiに対する重み値はｗijとなる。このうちｉはｉ個目のボーンパラメータを表し、ｊはｊ個目の頂点を表す。第１計算モジュール７０５は前記した［数１］および[数２]で円中心ｓのスキンボーンの重み値を計算するか、または前記した[数３]および[数４]で円中心ｓのスキンボーンの重み値を計算する。これらスキンボーンの重み値はメモリ７５中に記憶される。
【００５２】
続いて第２計算モジュール７０７が、異なる角度Φに基づいて全ての球の図２の球２１に対するθ値を計算する（ステップ１０７に対応する）。図２に示すように、角度Φは球２１の法線ベクトル２２と頂点Ｐから球２３の中心までのベクトル２４との挟み角である。このθ値を計算する方式には従来の幾何演算を採用すればよい。
【００５３】
続いて第３計算モジュール７０９が第２計算モジュール７０７からθ値をピックアップして、前記[数５]または[数６]を用いて遮蔽面積値を計算するとともに（ステップ１０９に対応する）、遮蔽面積値をメモリ７５中に記憶する。
【００５４】
続いて第４計算モジュール７１１が、異なる角度Φに基づいて第２計算モジュール７０７からθ値をピックアップし、前記[数７]または[数８]を用いて遮蔽角度値を計算するとともに（ステップ１１１に対応する）、遮蔽角度値をメモリ７５中に記憶する。
【００５５】
よって第３計算モジュール７０９および第４計算モジュール７１１（ここでは一つの球計算モジュールと統合して呼ぶ）が各球の遮蔽面積値および遮蔽角度値を計算する。
【００５６】
続いて第１マップ生成モジュール７１３が異なる角度Φに基づいてメモリ７５中から遮蔽面積値、遮蔽角度値をピックアップし、第２計算モジュール７０７からθ値をピックアップして、アクセス値マップを生成する（ステップ１１３に対応する）。アクセス値マップは一つの球の頂点Ｐに対してもたらされる遮蔽の影響を記録するものであり、Φおよびθ値と遮蔽面積値および遮蔽角度値との対応関係は図３に示すとおりであるので、省略する。このアクセス値マップはメモリ７５中に記憶される。
【００５７】
一つの球がもたらす遮蔽を考慮する以外に、本発明は更に複数の球が互いに重なる問題も解決できる。つまり複数の球が同時にある頂点でもたらす遮蔽の現象を考慮するものである。図４Ａに示すように、仮に二つの球４１および４３が頂点Ｐを同時に遮蔽すると、そのθ値はそれぞれθ1およびθ2となり、しかも二つの球４１および４３の挟み角がδとなる。この二つの球４１および４３が同時に頂点Ｐに対してもたらす遮蔽影響を考慮した場合、図４Ｂに示すように、大きな球４５として見なすことができ、その遮蔽範囲はθ3（＝θ1＋θ2）となり、しかも球２１の法線ベクトル２２と頂点Ｐから球４５中心までのベクトル４２との挟み角がΦとなる。したがって、本発明では単に球４５の頂点Ｐに対する影響のみを考慮するだけで、球４１および４３の同時に頂点Ｐに対する影響に対応することができる。同様に、この段階で、大きな球４５のサイズまたは頂点Ｐからの距離の遠近は重要でない。なぜならば、頂点Ｐと大きな球４５との間の二本の接線内（立体空間においては円錐となる）内にある複数の重なった球は同じ遮蔽状況をもたらす。言い換えれば、角度θ1、θ2およびδ値が同じであれば、合計の遮蔽面積値θ3と挟み角Φとが同じになるので、続いて異なる角度θ1、θ2およびδ値下で遮蔽面積値θ3および挟み角Φが得られるからである。
【００５８】
よって第５計算モジュール７１５がメモリ７５中から遮蔽角度値をピックアップし、第２計算モジュール７０７がθ値をピックアップし、前記[数９]または[数１０]を用いて合計の遮蔽面積値θ3を計算する（ステップ１１５に対応する）。合計の遮蔽面積値θ3はメモリ７５中に記憶される。
【００５９】
第６計算モジュール７１７がメモリ７５中から遮蔽角度値をピックアップし、第２計算モジュール７０７がθ値をピックアップし、前記[数１１]または[数１２]を用いて挟み角Φを計算する（ステップ１１７に対応する）。挟み角Φはメモリ７５中に記憶される。
【００６０】
よって第５計算モジュール７１５および第６計算モジュール７１７は（ここでは複数の球計算モジュールと統合して呼ぶ）が任意の二つの球の遮蔽面積値および挟み角を計算する。
【００６１】
同様に、もし第３計算モジュール７０９、第４計算モジュール７１１、第５計算モジュール７１５および第６計算モジュール７１７が確率密度関数の方式を用いて面積値および角度値を取得するのであれば、確率密度関数は[数１３]に符合して初めて適切となる。
【００６２】
続いて第２マップ生成モジュール７１９がメモリ７５から合計の遮蔽面積値θ3およびΦ値をピックアップし、第２計算モジュール７０７からθ値をピックアップして、合成弧度マップを生成する（ステップ１１９に対応する）。合成弧度マップは複数の球の頂点Ｐに対してもたらされる遮蔽の影響を記録しており、θ1、θ2およびδ値とΦ値との対応関係は図５に示すとおりであるので、省略する。この合成弧度マップはメモリ７５中に記憶される。
【００６３】
これに至って、第１段階の手順が完了する。続いて、この動的物体の３Ｄ画像を生成する必要がある場合に、リアルタイムプロセッシングモジュール７３が、メモリ７５中に格納されているアクセス値マップと合成弧度マップ、およびスフィアツリーを如何に用いて物体のセルフシャドウ効果をリアルタイムに生成するかということで、すなわち第２段階を実行する。
【００６４】
リフレッシュモジュール７２１がメモリ７５中からスフィアツリーをピックアップし、この動的物体の現時点での動作に基づいて、スフィアツリーにおける相対位置を更新し、つまりピクセルシェーダを用いるとともにスキンボーンの関係（第１計算モジュール７０５の計算にて得られたスキンボーンの重み値）に基づいて、物体の頂点および球の現時点での位置を計算し、結果をスフィアツリー構造マップとして格納する（ステップ６０１に対応する）。このスフィアツリー構造マップはメモリ７２３中に記憶される。
【００６５】
続いて合成モジュール７２５がメモリ７２３中のスフィアツリー構造マップをピックアップするとともに、このスフィアツリー構造マップに基づいて、メモリ７５中から適当なアクセス値マップおよび合成弧度マップをピックアップして、この動的物体のセルフシャドウが生成する陰影を合成する（ステップ６０３に対応する）。スフィアツリーにおいては上層の球ほどその体積はより大きくなるので、より少ない球を用いて動的物体の全体をカバーでき、そして下層の球ほどその体積は小さくなるものの、動的物体の仔細部分を保留することができる。セルフシャドウを計算する場合、セルフシャドウの頂点を計算する必要ごとに、スフィアツリー中から一定個数の球を探し出す。一定個数の球を探し出す方式とは、この頂点に最も近い四つの球を各層中から探し出すというものである。最上層の四つの球は物体全体をカバーできるので、これによりセルフシャドウにおけるマクロ的な画像を生成することができ、一方、仔細部分は更により下層の球により生成するものである。全ての球がもたらす遮蔽効果はアクセス値マップおよび合成弧度マップ中に必ず対応する値があるので、合成モジュール７２５が行うべきは単に球を遮蔽するθ値および／または球を遮蔽する二つのδ値に基づいて内挿を行い、対応する遮蔽面積および遮蔽角度値を得るだけである。
【００６６】
より詳細に言えば、合成モジュール７２５が画面のサイズに対応した四角形をまず生成し、そして各頂点に基づいて算出されたセルフシャドウ値を画面のある一つの画素に対応させる。次に、合成モジュール７２５がピクセルシェーダを用いて各頂点に対して、スフィアツリー構造マップと予め記憶しておいたアクセス値マップおよび合成弧度マップとに基づいて、投影面積を計算するとともに、球の互いの重なり問題を処理し、最終的に計算結果を周囲光遮蔽マップとして記憶する。この周囲光遮蔽マップはメモリ７２３中に記憶される。
【００６７】
続いて画像生成モジュール７２７がメモリ７２３中から周囲光遮蔽マップをピックアップし、この動的物体の陰影視覚効果を生成するとともに、ひいてはこの動的物体の３Ｄ画像を表示する（ステップ６０４に対応する）。
【００６８】
前記した方法は、アプリケーションプログラムにより具体的に実現できる。つまりアプリケーションプログラムを用いて３Ｄ動的物体の画像形成装置７を駆動して前記の方法を実行することができる。このアプリケーションプログラムは、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、携帯型メモリ、磁気テープ、ネットワークによりアクセス可能なデータベースまたは当業者により容易に想到されて同様な機能を備えた記憶媒体とすることができるコンピュータ読取り可能媒体中に記憶することができる。
【００６９】
本発明では、動的物体のセルフシャドウの画像を生成する前に、アクセス値マップおよび合成弧度マップを予め生成して、動的物体のセルフシャドウの効果を生成するに際して、動的物体のセルフシャドウの陰影を生成するためのアクセス値マップおよび合成弧度マップの情報をピックアップするため、リアルタイムな演算量が大幅に低減されることにより、従来技術にてリアルタイム処理ができなかった問題を解決することができる。
【００７０】
上記実施例は、本発明の原理およびその効果を例示的に説明したものに過ぎず、本発明を限定するためのものではない。いかなる当業者でも、本発明の技術原理および技術思想に違えない状況下で、上記実施例に修正および改変を行うことができる。したがって、本発明の権利保護範囲は別紙の特許請求の範囲に記載されているものとする。
【図面の簡単な説明】
【００７１】
【図１】本発明の第１実施例で第１段階を実行するフローチャートである。
【図２】遮蔽面積値の概略図である。
【図３】アクセス値マップの概略図である。
【図４Ａ】二つの球が同時に頂点にもたらす遮蔽影響を考慮した概略図である。
【図４Ｂ】二つの球を一つの大きな球で表した概略図である。
【図５】合成弧度マップの概略図である。
【図６】本発明の第１実施例で第２段階を実行するフローチャートである。
【図７】本発明の第２実施例の概略図である。
【符号の説明】
【００７２】
２１  球
２２  法線ベクトル
２３  球
２４  頂点Ｐから球２３の中心までのベクトル
２５  投影部分
２７  水平面
２９  面積
３１  アクセス値マップ
４１  球
４２  頂点Ｐから球４５の中心までのベクトル
４３  球
４５  大きな球
５１  合成弧度マップ
７１  プリプロセッシングモジュール
７３  リアルタイムプロセッシングモジュール
７５  メモリ
７０１  スフィアツリー生成モジュール
７０５  第１計算モジュール
７０７  第２計算モジュール
７０９  第３計算モジュール
７１１  第４計算モジュール
７１３  第１マップ生成モジュール
７１５  第５計算モジュール
７１９  第２マップ生成モジュール
７２１  リフレッシュモジュール
７２３  メモリ
７２５  合成モジュール
７２７  画像生成モジュール
【図１】
2008152749.tif 000016
【図２】
2008152749.tif 000017
【図３】
2008152749.tif 000018
【図４Ａ】
2008152749.tif 000019
【図４Ｂ】
2008152749.tif 000020
【図５】
2008152749.tif 000021
【図６】
2008152749.tif 000022
【図７】
2008152749.tif 000023