(57)【要約】【課題】より高速な並列処理を実現すること。【解決手段】ヒット判定を、メインプロセッサエレメント（ＭＰＥ１０）と複数のサブプロセッサエレメント（ＳＰＥ）１２とで並列処理で実行する。ＭＰＥ１０とＳＰＥ１２それぞれが分担するノード（ポリゴン集合）の数は、過去のＳＰＥのヒット判定処理結果に基づいてＳＰＥの処理負荷を予測する予測関数ｆ（Ｘ）に基づいて、ＭＰＥ１０のヒット判定の処理負荷と、ＳＰＥ１２のヒット判定の処理負荷とがほぼ同等となり、ほぼ同時にヒット判定を終了するように決定する。【選択図】図６
2011134220.tif 000002
【特許請求の範囲】
【請求項１】
メインプロセッサと、複数のサブプロセッサとを備え、プロセスに応じて実行台数を含む実行サブプロセッサの割り当てを動的に行うサブプロセッサマネージャ機能を有するコンピュータに、仮想三次元空間において移動オブジェクトが多数のプリミティブの何れと衝突したかを判定する衝突判定処理を並列実行させるためのプログラムであって、
前記プリミティブを、前記メインプロセッサが分担するメインプロセッサ分担プリミティブと、前記サブプロセッサが分担するサブプロセッサ分担プリミティブとに割り振る割り振り設定手段、
前記メインプロセッサに前記メインプロセッサ分担プリミティブに関する前記衝突判定処理を実行させるとともに、前記サブプロセッサマネージャ機能により前記衝突判定処理の実行が割り当てられた実行サブプロセッサに前記サブプロセッサ分担プリミティブに関する前記衝突判定処理を実行させる並列処理制御手段、
前記並列処理制御手段により実行制御された前記メインプロセッサによる前記メインプロセッサ分担プリミティブに関する前記衝突判定処理の演算量と、前記実行サブプロセッサによる前記サブプロセッサ分担プリミティブに関する前記衝突判定処理の演算量とに基づいて、前記メインプロセッサ分担プリミティブ及び前記サブプロセッサ分担プリミティブの分担数を設定する分担数設定手段、
として前記コンピュータを機能させるとともに、
前記割り振り設定手段が、前記分担数設定手段により設定された分担数に基づいて、前記プリミティブを割り振るように前記コンピュータを機能させて、
前記サブプロセッサマネージャ機能により動的に変更される実行サブプロセッサの台数に応じた前記衝突判定処理の並列実行を行うためのプログラム。
【請求項２】
前記分担数設定手段が、前記メインプロセッサ分担プリミティブの数と、前記サブプロセッサ分担プリミティブの数とが所定の同等条件を満たすように前記分担数を設定する、
ように前記コンピュータを機能させるための請求項１に記載のプログラム。
【請求項３】
前記分担数設定手段が、前記メインプロセッサ分担プリミティブの数を、前記サブプロセッサ分担プリミティブの数より多く設定して後、前記衝突処理の並列実行を行うにつれて徐々に同等となるように設定する、
ように前記コンピュータを機能させるための請求項１に記載のプログラム。
【請求項４】
前記サブプロセッサは、それぞれローカルメモリを有しており、
前記多数のプリミティブは、所属する全てのプリミティブのデータ総量が前記ローカルメモリの記憶容量以下となる数の隣接するプリミティブでなる複数のプリミティブ集合にて構成され、
前記割り振り設定手段が、前記プリミティブ集合を単位として割り振りを行い、
前記分担数設定手段が、前記プリミティブ集合を単位として前記分担数を設定する、
ように前記コンピュータを機能させるための請求項１〜３の何れか一項に記載のプログラム。
【請求項５】
前記多数のプリミティブの中から、前記衝突判定処理の判定対象とする判定対象プリミティブを、前記プリミティブ集合を単位として選択する判定対象選択手段として前記コンピュータを更に機能させ、
前記割り振り設定手段が、前記判定対象選択手段により選択されたプリミティブ集合を割り振るように前記コンピュータを更に機能させる、
ための請求項４に記載のプログラム。
【請求項６】
請求項１〜５の何れか一項に記載のプログラムを記憶したコンピュータ読取可能な情報記憶媒体。
【請求項７】
メインプロセッサと、複数のサブプロセッサとを備え、プロセスに応じて実行台数を含む実行サブプロセッサの割り当てを動的に行うサブプロセッサマネージャ機能を有して、仮想三次元空間において移動オブジェクトが多数のプリミティブの何れと衝突したかを判定する衝突判定処理を並列実行して前記仮想三次元空間の画像を生成する画像生成装置であって、
前記プリミティブを、前記メインプロセッサが分担するメインプロセッサ分担プリミティブと、前記サブプロセッサが分担するサブプロセッサ分担プリミティブとに割り振る割り振り設定手段と、
前記メインプロセッサに前記メインプロセッサ分担プリミティブに関する前記衝突判定処理を実行させるとともに、前記サブプロセッサマネージャ機能により前記衝突判定処理の実行が割り当てられた実行サブプロセッサに前記サブプロセッサ分担プリミティブに関する前記衝突判定処理を実行させる並列処理制御手段と、
前記並列処理制御手段により実行制御された前記メインプロセッサによる前記メインプロセッサ分担プリミティブに関する前記衝突判定処理の演算量と、前記実行サブプロセッサによる前記サブプロセッサ分担プリミティブに関する前記衝突判定処理の演算量とに基づいて、前記メインプロセッサ分担プリミティブ及び前記サブプロセッサ分担プリミティブの分担数を設定する分担数設定手段と、
を備え、
前記割り振り設定手段が、前記分担数設定手段により設定された分担数に基づいて、前記プリミティブを割り振り、
前記サブプロセッサマネージャ機能により動的に変更される実行サブプロセッサの台数に応じた前記衝突判定処理の並列実行を行うことを特徴とする画像生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メインプロセッサと複数のサブプロセッサとを備え、プロセスに応じて実行台数を含む実行サブプロセッサの割り当てを動的に行うサブプロセッサマネージャ機能を有するコンピュータに、仮想三次元空間内を移動する移動オブジェクトの画像を生成させる機能を実現するためのプログラム等に関する。
【背景技術】
【０００２】
コンピュータの中には、複数のプロセッサを搭載するものが存在する。マルチプロセッサタイプのコンピュータでは、従来シングルプロセッサが単独で逐次実行していたタスクを複数のプロセッサで分担して演算処理したり同時並列的に処理することができることから、シングルプロセッサのコンピュータに比べて大幅な高速化が期待できるものとして期待されている。
【０００３】
一方、仮想３次元空間内に配置されたポリゴンモデルで構成された多数のオブジェクトを制御しながら同空間内を仮想カメラで撮影した３ＤＣＧをリアルタイムに生成するビデオゲームを実現するコンピュータでは、常時多数のオブジェクト同士のヒット判定（衝突判定処理）や衝突後のオブジェクトの挙動算出など高負荷な処理を所定のフレーム時間間隔（例えば１／６０秒間隔）内で繰り返し実行する必要がありマルチプロセッサによる高速化の恩恵を受け易く、その利用方法が様々提案されている。
【０００４】
そこで、複数のプロセッサで担当するオブジェクトを分担して複数のオブジェクトの挙動を物理演算処理する技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１７１１７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、複数のプロセッサそれぞれの負荷状況は随時変動するものであるため、希望通りの高速化が図れない場合が多い。
本発明は、随時変動し得る各プロセッサの負荷状況を考慮したより高速な並列処理を実現することを目的とする。
【課題を解決するための手段】
【０００７】
以上の課題を解決するための第１の形態は、メインプロセッサと複数のサブプロセッサとを備え、プロセスに応じて実行台数を含む実行サブプロセッサの割り当てを動的に行うサブプロセッサマネージャ機能を有するコンピュータに、仮想三次元空間において移動オブジェクトが多数のプリミティブの何れと衝突したかを判定する衝突判定処理を並列実行させるためのプログラムであって、
前記プリミティブを、前記メインプロセッサが分担するメインプロセッサ分担プリミティブと、前記サブプロセッサが分担するサブプロセッサ分担プリミティブとに割り振る割り振り設定手段（例えば、図７の処理部２００、分担設定部２１６、図１１のステップＳ３８、Ｓ７０、Ｓ７２）、
前記メインプロセッサに前記メインプロセッサ分担プリミティブに関する前記衝突判定処理を実行させるとともに、前記サブプロセッサマネージャ機能により前記衝突判定処理の実行が割り当てられた実行サブプロセッサに前記サブプロセッサ分担プリミティブに関する前記衝突判定処理を実行させる並列処理制御手段（例えば、図７の処理部２００、ヒット判定部２１４，２３２、図１１のステップＳ１２２、図１４のステップＳ９２）、
前記並列処理制御手段により実行制御された前記メインプロセッサによる前記メインプロセッサ分担プリミティブに関する前記衝突判定処理の演算量（例えば、図９の今回ＭＰＥ処理量５５８）と、前記実行サブプロセッサによる前記サブプロセッサ分担プリミティブに関する前記衝突判定処理の演算量（例えば、図９の今回ＳＰＥ処理量５６０）とに基づいて、前記メインプロセッサ分担プリミティブ及び前記サブプロセッサ分担プリミティブの分担数を設定する分担数設定手段（例えば、図７の処理部２００、分担設定部２１６、統計処理部２１８、図１１のステップＳ３８）、として前記コンピュータを機能させるとともに、
前記割り振り設定手段が、前記分担数設定手段により設定された分担数に基づいて、前記プリミティブを割り振るように前記コンピュータを機能させて、前記サブプロセッサマネージャ機能により動的に変更される実行サブプロセッサの台数に応じた前記衝突判定処理の並列実行を行うためのプログラムである。
【０００８】
また、別形態として、メインプロセッサと複数のサブプロセッサとを備え、プロセスに応じて実行台数を含む実行サブプロセッサの割り当てを動的に行うサブプロセッサマネージャ機能を有して、仮想三次元空間において移動オブジェクトが多数のプリミティブの何れと衝突したかを判定する衝突判定処理を並列実行して前記仮想三次元空間の画像を生成する画像生成装置であって、
前記プリミティブを、前記メインプロセッサが分担するメインプロセッサ分担プリミティブと、前記サブプロセッサが分担するサブプロセッサ分担プリミティブとに割り振る割り振り設定手段（例えば、図１の制御ユニット１２１０、図７の処理部２００、分担設定部２１６、図１１のステップＳ３８、Ｓ７０、Ｓ７２）と、
前記メインプロセッサに前記メインプロセッサ分担プリミティブに関する前記衝突判定処理を実行させるとともに、前記サブプロセッサマネージャ機能により前記衝突判定処理の実行が割り当てられた実行サブプロセッサに前記サブプロセッサ分担プリミティブに関する前記衝突判定処理を実行させる並列処理制御手段（例えば、図１の制御ユニット１２１０、図７の処理部２００、ヒット判定部２１４，２３２、図１１のステップＳ１２２、図１４のステップＳ９２）と、
前記並列処理制御手段により実行制御された前記メインプロセッサによる前記メインプロセッサ分担プリミティブに関する前記衝突判定処理の演算量と、前記実行サブプロセッサによる前記サブプロセッサ分担プリミティブに関する前記衝突判定処理の演算量とに基づいて、前記メインプロセッサ分担プリミティブ及び前記サブプロセッサ分担プリミティブの分担数を設定する分担数設定手段（例えば、図１の制御ユニット１２１０、図７の処理部２００、分担設定部２１６、統計処理部２１８、図１１のステップＳ３８）と、を備え、
前記割り振り設定手段が、前記分担数設定手段により設定された分担数に基づいて、前記プリミティブを割り振り、前記サブプロセッサマネージャ機能により動的に変更される実行サブプロセッサの台数に応じた前記衝突判定処理の並列実行を行うことを特徴とする画像生成装置として実現しても良い。
【０００９】
第１の形態によれば、３ＤＣＧを生成するに当り高処理負荷の代表とも言える衝突判定（ヒット判定）をメインプロセッサと、実行が割り当てられた台数分の実行サブプロセッサとで並列処理することができるので、サブプロセッサだけで並列処理する場合よりも更なる処理の高速化を図ることができる。
ただし、実行サブプロセッサの台数は随時変更し得る。そこで、メインプロセッサとサブプロセッサとに判定処理するプリミティブ（３Ｄグラフィックスにおけるオブジェクトモデルを構成する平面、及び円柱や円錐、球などの単純な数式で定義される形状を含む意味）をどれだけ分担するかを、実際の衝突判定処理の並列実行の実績に基づいて設定することができる。より効率的な並列処理を実現し更なる高速化を実現する。
【００１０】
第２の形態は、前記分担数設定手段が、前記メインプロセッサ分担プリミティブの数と、前記サブプロセッサ分担プリミティブの数とが所定の同等条件を満たすように前記分担数を設定するように前記コンピュータを機能させるための第１の形態のプログラムである。
【００１１】
ここで言う「同等条件」とは、メインプロセッサの処理負荷と、衝突判定に使われているサブプロセッサにおける処理負荷がほぼ同等となる条件という意味である。具体的には、分担されたプリミティブについての衝突判定処理に要するそれぞれの所要時間がメインプロセッサとサブプロセッサとで同等となり、衝突判定処理がほぼ同じタイミングとなる条件を意味する。
第２の形態によれば、第１の形態と同様の効果が得られるとともに、メインプロセッサとサブプロセッサとで衝突判定完了のタイミングがズレて何れかのプロセッサが他方の完了待ちをする時間を低減することができる。
【００１２】
第３の形態は、前記分担数設定手段が、前記メインプロセッサ分担プリミティブの数を、前記サブプロセッサ分担プリミティブの数より多く設定して後、前記衝突処理の並列実行を行うにつれて徐々に同等となるように設定する、ように前記コンピュータを機能させるための第１の形態のプログラムである。
【００１３】
第３の形態によれば、第１の形態と同様の効果が得られるとともに、最初はメインプロセッサの処理負荷がやや多くなるように分担プリミティブの数を設定し、それから徐々にメインプロセッサとサブプロセッサとの処理負荷が同等に近づくように分担するプリミティブの数を設定することができるので、その時々の状態によって衝突判定に使用できるサブプロセッサの数が動的に変化する環境でも、その時の状態に最適な分担を実現することができる。
【００１４】
第４の形態は、前記サブプロセッサが、それぞれローカルメモリを有しており、
前記多数のプリミティブは、所属する全てのプリミティブのデータ総量が前記ローカルメモリの記憶容量以下となる数の隣接するプリミティブ（例えば、図５のポリゴンＰＬ０，ＰＬ１，ＰＬ２，・・・）でなる複数のプリミティブ集合（例えば、図５のノードＮＤ１，ＮＤ２，・・・）にて構成され、
前記割り振り設定手段が、前記プリミティブ集合を単位として割り振りを行い、
前記分担数設定手段が、前記プリミティブ集合を単位として前記分担数を設定する、ように前記コンピュータを機能させるための第１〜第３の何れか形態のプログラムである。
【００１５】
第４の形態によれば、第１〜第３の形態の何れかと同様の効果を得られるとともに、プリミティブの分担に際し、複数のプリミティブをプリミティブ集合として纏めて扱うことで、サブプロセッサのローカルメモリに衝突判定に要するデータの一括ロードが可能とし、データのロードに要するオーバーヘッドを低減し、更なる高速化を実現できる。
【００１６】
第５の形態は、前記多数のプリミティブの中から、前記衝突判定処理の判定対象とする判定対象プリミティブを、前記プリミティブ集合を単位として選択する判定対象選択手段（例えば、図７の処理部２００、判定対象選択部２１２、図１１のステップＳ３６）として前記コンピュータを更に機能させ、
前記割り振り設定手段が、前記判定対象選択手段により選択されたプリミティブ集合を割り振るように前記コンピュータを更に機能させるための第４の形態のプログラムである。
【００１７】
第５の形態によれば、第４の形態と同様の効果が得られるとともに、衝突判定処理の対象とするプリミティブ集合を事前に選択し限定することで、衝突判定に要する負荷を軽減し、更に高速化を図ることができる。
【００１８】
第６の発明は、第１〜第５の何れかの形態のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体である。ここで言う「情報記憶媒体」とは、例えば磁気ディスクや光学ディスク、ＩＣメモリなどを含む。第６の発明によれば、第１〜第５の何れかの形態のプログラムをコンピュータに読み取らせて実行させることによって、コンピュータに第１〜第５の形態の何れかと同様の効果を発揮させることができる。
【図面の簡単な説明】
【００１９】
【図１】家庭用ゲーム装置のシステム構成例を示す図。
【図２】家庭用ゲーム装置ハードウェア構成の一例を示すブロック図。
【図３】マルチコアプロセッサのハードウェア構成の一例を示すブロック図。
【図４】ソフトフェア構成の一例を示す概念図。
【図５】ゲームの概要とオブジェクトのポリゴンモデル構造の一例を示す図。
【図６】ヒット判定処理の原理を説明する概念図。
【図７】機能構成例を示す機能ブロック図。
【図８】ゲーム空間初期設定データのデータ構成例を示す図。
【図９】ヒット判定関連データのデータ構成例を示す図。
【図１０】ゲームプログラムの主たる処理の流れを説明するためのフローチャート。
【図１１】ヒット判定処理におけるメインプロセッサエレメント（ＭＰＥ）の処理の流れを説明するためのフローチャート。
【図１２】図１１よりつづくフローチャート。
【図１３】分担数算出処理の流れを説明するためのフローチャート。
【図１４】サブプロセッサエレメント（ＳＰＥ）におけるヒット判定処理の流れを説明するためのフローチャート。
【図１５】本発明を適用した画像生成装置の変形例を示す斜視外観図。
【発明を実施するための形態】
【００２０】
〔第１実施形態〕
次に、本発明を適用した第１実施形態として、画像生成装置の１つである据え置き型の家庭用ゲーム装置において、ポリゴンモデルからなる複数のオブジェクトをゲームキャラクタや背景物などとして仮想３次元空間に配置し、その様子を３ＤＣＧ（３次元コンピュータグラフィクス）によりリアルタイムに生成して所与のビデオゲームを実行する例を説明する。
【００２１】
［ゲーム装置の構成］
図１は、家庭用ゲーム装置の構成例を示すシステム構成図である。家庭用ゲーム装置１２００は、例えば各種マイクロプロセッサやＩＣメモリ等が実装された制御ユニット１２１０と、光学ディスク１２０２やメモリカード１２０４といった情報記憶媒体の読み取り装置１２０６，１２０８を備える。
【００２２】
制御ユニット１２１０は、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）及びＤＳＰ（Digital Signal Processor）などの各種マイクロプロセッサ、ＡＳＩＣ（Application Specific Integrated Circuit）、ＩＣメモリなどの電気電子機器を備え家庭用ゲーム装置１２００の各部を制御する。
また、制御ユニット１２１０は、インターネットやＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）と言った通信回線１と有線又は無線接続し、外部装置との間でデータ通信を実現する通信装置１２１２を備える。更に、近距離無線モジュール１２１４を備え、近距離無線を介して複数のゲームコントローラ１２３０との間でデータの送受信を実現する。近距離無線の形式としては、例えばＢｌｕｅｔｏｏｔｈ（登録商標）やＵＷＢ（超広帯域無線）、無線ＬＡＮなどが適宜適用可能である。
【００２３】
そして、制御ユニット１２１０は、ゲームコントローラ１２３０から受信した操作入力信号に基づいてゲーム画面やゲーム音を生成し、生成したゲーム画面やゲーム音に基づく映像信号や音信号を信号ケーブル１２０９で接続されたビデオモニタ１２２０（ディスプレイモニタ）に出力する。
ビデオモニタ１２２０には、画像を表示するフラットパネルディスプレイ１２２２と、音声を出力するスピーカ１２２４とが備えられており、プレーヤはフラットパネルディスプレイ１２２２に映し出されるゲーム画面を見ながら、スピーカ１２２４から放音されるゲーム音を聞きつつゲームコントローラ１２３０で各種操作を入力してゲームを楽しむ。尚、複数のプレーヤが同時にゲームに参加する場合には、同時に複数のゲームコントローラ１２３０を用意する。
【００２４】
ゲームコントローラ１２３０は、内蔵するコントローラ制御ユニット１２６０を中心に各種入力デバイス及び出力デバイスを、例えばＩＩＣ（Inter-Integrated Circuit）バスなどによって実現されるローカルバス回路によって接続しており、コントローラ制御ユニット１２６０によって各デバイス間の入出力を制御する。
【００２５】
具体的には、入力デバイスとしては、選択の決定やキャンセル、タイミングの入力などに用いられるプッシュボタン１２３２と、図で言うところの上下左右の各方向を単独入力するための４つの方向入力キー１２３４と、操作方向と操作量とを同時に入力することのできる右アナログレバー１２３６及び左アナログレバー１２３８とを備える。
【００２６】
コントローラ制御ユニット１２６０は、例えば、ＣＰＵやローカルバス回路におけるデータ通信を制御するバスコントローラＩＣなどの各種マイクロチップやＩＣメモリなどの電子部品、ゲーム装置本体１２０１の近距離無線モジュール１２１４と無線通信を実現する近距離無線モジュール１２５６などを実装する。
【００２７】
尚、ゲームコントローラ１２３０が必要とする電力は、図示されない内蔵されたバッテリーから供給されるものとする。また、ゲームを実行するのに必要なプログラム及び各種設定データは、通信装置１２１２を介して通信回線１に接続し、外部装置からダウンロードして取得する構成であっても良い。また、制御ユニット１２１０やコントローラ制御ユニット１２６０においてプログラムの実行により実現される機能の一部又は全部を、電子回路等のハードウェアによって実現する構成としても良い。
【００２８】
［ハードウェア構成の説明］
図２は、家庭用ゲーム装置１２００のハードウェア構成の一例を示すブロック図である。家庭用ゲーム装置１２００は、制御ユニット１２１０として、中央演算装置に該当するマルチコアプロセッサ２と、メインメモリ４と、ＡＶ（Audio Video）ボード６と、Ｉ／Ｏコントローラ８とを備える。
【００２９】
マルチコアプロセッサ２は、データ読み書き自在に接続されたメインメモリ４を主たる演算用記憶領域として使用する家庭用ゲーム装置１２００の中央演算装置である。
【００３０】
図３は、本実施形態におけるマルチコアプロセッサ２のハードウェア構成の一例を示すブロック図である。マルチコアプロセッサ２は、オペレーティングシステム（ＯＳ）の実行や、アプリケーションプログラムの実行に関わる制御系処理向けに設計されたメインプロセッサエレメント１０（以下、ＭＰＥ［Main Processor Element］と記す）と、繰り返しの演算処理向けに設計された複数のサブプロセッサエレメント１２（以下、ＳＰＥ［Sub Processor Element］と記す）と、メモリコントローラ１４と、外部Ｉ／Ｏインタフェースコントローラ１６とを備え、それらが高速な内部バス１８によりデータ送受可能に接続している。
【００３１】
より具体的には、ＭＰＥ１０は公知のパソコン等のシングルコアタイププロセッサと同様のアーキテクチャを有するメインプロセッサ１０ａと、Ｌ２キャッシュメモリ１０ｂとを備える。
【００３２】
ＳＰＥ１２は、それぞれメインプロセッサ１０ａとは別のプログラムに基づいて単独で演算処理することのできるサブプロセッサ１２ａと、メインメモリ４にＤＭＡ（Direct Memory Access）制御方式でデータ転送するＤＭＡコントローラ１２ｃを備える。サブプロセッサ１２ａは、ＭＰＥ１０の命令によりＤＭＡコントローラ１２ｃを介してメインメモリ４にアクセスしてＳＰＥ用のプログラムや演算処理に関わるデータをローカルメモリ１２ｂにダウンロードし、ダウンロードしたプログラムを実行できる。そして、演算処理の結果をメインメモリ４にアップロードし、処理終了をＭＰＥ１０に通知することができる。
【００３３】
外部Ｉ／Ｏインタフェースコントローラ１６は、ＡＶボード６やＩ／Ｏコントローラ８とのデータ送受を実現する。
【００３４】
ＡＶボード６は、図２に示すように、ＧＰＵ６ａと、ＶＲＡＭ６ｂと、ＡＶインタフェースコントローラ６ｃとを備える。ＡＶボード６は、マルチコアプロセッサ２で演算処理された仮想３次元空間に配置された各オブジェクトの位置や姿勢といった情報や仮想カメラの位置や姿勢、視点方向などの情報に基づいて仮想３次元空間内を仮想カメラで撮影した３ＤＣＧを生成してゲーム空間画像を生成する。そして、ゲーム空間画像に各種情報表示を合成してゲーム画面と当該画面をフラットパネルディスプレイ１２２２に表示させる映像信号を生成し、ビデオ端子２２に出力する。また、操作音や効果音、ＢＧＭなどのゲーム音を生成し、スピーカ１２２４で放音させるための音声信号を生成しオーディオ端子２４に出力する。ビデオ端子２２及びオーディオ端子２４には信号ケーブル１２０９が接続され、映像信号及び音声信号をビデオモニタ１２２０のフラットパネルディスプレイ１２２２及びスピーカ１２２４に出力する。
【００３５】
Ｉ／Ｏコントローラ８は、内外の情報記憶媒体とのデータの読み取りや書き込み、ゲームコントローラ１２３０などの付属装置とのデータの送受信を管理する集積回路である。
具体的には、Ｉ／Ｏコントローラ８は、内外の情報記憶媒体として内部メモリ３０やＨＤＤ（ハードディスクドライブ）３２、メモリカードリーダ３４（図１の読み取り装置１２０８相当）、ＯＤＤ（オプティカルディスクドライブ；図１の読み取り装置１２０６相当）と接続し、それらの情報記憶媒体から記憶されているプログラムやデータを読み出し、また書き込むことができる。また、通信回線１とのデータ通信のために通信装置１２１２と接続し、ゲームコントローラ１２３０とのデータ通信のために近距離無線モジュール１２１４と接続し、各データ通信に関する処理を実行することができる。
【００３６】
［ソフトウェア構成の説明］
図４は、本実施形態におけるソフトフェア構成の一例を示す概念図である。
本実施形態ではビデオゲームを実行させるためのゲームプログラム４０は、ＭＰＥ１０上で実現されるゲーム装置向けのリアルタイムＯＳ（オペレーティングシステム）４２上で実行される。
そして、ゲームプログラム４０は、ゲームプログラム本体４４から予め用意されているサブプロセッサ実行環境ライブラリ４６を利用することで、リアルタイムＯＳ４２上で実現されるサブプロセッサマネージャ４８（以下、ＳＰＭ［Sub Processor Manager］）を介して、ＳＰＥ用プログラム５０のロード、実行などのプロセス管理をすることができる。
【００３７】
サブプロセッサマネージャ（ＳＰＭ）４８は、ＳＰＥ用プログラム５０の実行環境を実現する。具体的には、ゲームプログラム４０の実行中に必要となったタスクを、ＳＰＥ１２へ分担する機能を有する。分担の方式としては、（１）高負荷の同一タスク（同一処理）を同時に複数のＳＰＥ１２に与える単一タスク並列処理方式と、（２）ゲームプログラム４０や他アプリケーションから要求される複数のタスクそれぞれについて、各タスクを実現するための複数のスレッドを生成して、要求されている各タスクをユーザレベルで十分にリアルタイムに応答があると体感できる程度に十分早く処理できるように処理順を自動計算してＳＰＥ１２へスケジューリングして動的に分担する複数タスク並列処理方式と、が用意されている。これらは、ゲームプログラム本体４４からサブプロセッサ実行環境ライブラリ４６でマルチコアプロセッサのメーカにより予め用意されている適当なＡＰＩ（Application Program Interface）を利用することにより選択的に利用できる。
【００３８】
タスクを分担したならば、ＳＰＭ４８は、分担したタスクに必要なＳＰＥ用プログラム５０をローカルメモリ１２ｂへロードさせるとともに、当該タスクにおける演算処理に必要なデータのポインタ等を発行しローカルメモリ１２ｂへロードさせる。そして、分担したタスクの実行命令を出す。
【００３９】
ＳＰＥ用プログラム５０は、ゲームプログラム４０の実行中に必要となる様々なタスクの内容に合わせて予め用意される。例えば、ヒット判定処理、圧縮されたテクスチャデータや映像データ、音声データのデコード処理、プレーヤキャラクタの耐久力をプレーヤに通知するヒットポイントゲージの表示更新処理、プレーヤキャラクタ等の表示に適用する画像特殊効果処理、外部装置とのデータ通信処理などのタスクに対応したプログラムを適宜用意することができる。
【００４０】
ＳＰＥ１２は、そのときロードされているＳＰＥ用プログラム５０に従って演算処理を実行する。そして、ＳＰＭ４８により分担されたタスクを実行完了すると、演算処理結果を他のＳＰＥ１２に送信したりメインメモリ４の指定領域に書き込み、所定のフラグをセットするなどしてＳＰＭ４８にタスクの終了を通知することができる。
【００４１】
ＳＰＭ４８は、ＳＰＥ１２のタスク終了の通知を受けると、それらの演算処理結果を纏めゲームプログラム４０へ返す。すなわち、ＳＰＭ４８は、複数のＳＰＥ１２の利用を前提としたタスクコントロールをすることで並列処理を実現し、ゲームプログラム４０を実行する中で発生する様々な処理の高速化を実現することができる。
【００４２】
尚、図４ではＳＰＥ１２を一つだけ表記しているが、実際のハードウェア構成上はＳＰＥ１２は複数有り、それぞれについてＳＰＥ用プログラム５０がロードされることになる。その際、前述の単一タスク並列処理方式でタスクを分担する場合には、複数のＳＰＥ１２で同じＳＰＥ用プログラム５０がロードされてほぼ同時に実行することになるが、複数タスク並列処理方式ではスケジュールに従って異なるタイミングでＳＰＥ用プログラム５０がロードされ実行されることになる。また、ＳＰＥ１２のローカルメモリ１２ｂへのプログラムやデータのロードやメモリの解放等の実行にはオーバーヘッドが発生するので、プログラムやデータの入れ替えが頻発すると並列処理による高速化の恩恵を受け難くなるので注意が必要である。
【００４３】
このように、ＳＰＥ１２には様々なタスクを分担させて並列処理させることができるので、本実施形態ではオブジェクト同士のヒット判定（衝突判定）をＭＰＥ１０とＳＰＥ１２との両方を用いた並列処理で実行する。
【００４４】
［ゲームの概要とモデル構造の説明］
図５は、本実施形態におけるゲームの概要とオブジェクトのポリゴンモデル構造の一例を示す図である。
本実施形態のビデオゲームは、プレーヤが操縦するプレーヤキャラクタとなる移動オブジェクト６０が、複数の背景オブジェクト６２が配置されたゲーム空間内を、背景オブジェクト６２を避けながら所定のゴールエリアに向けて疾走する障害物レースゲームである。プレーヤキャラクタとなる移動オブジェクト６０は、背景オブジェクト６２と接触すると、ヒットポイントがその都度減算されダメージを受ける。ゴールエリア到達までにヒットポイントが残っていればゲームクリア、「０」になるとゲームオーバとなる。
【００４５】
背景オブジェクト６２のように、本実施形態のゲームに登場する背景物等はその表面形状を複数のポリゴン（プリミティブの一種）で構成されている。そして、オブジェクトのポリゴンモデルデータは、隣接する複数のポリゴンＰＬ（ＰＬ０，ＰＬ１，ＰＬ２，・・・；図中の個別の三角形）を複数のポリゴン集合ＮＤ（ＮＤ１，ＮＤ２，・・・；以下「ノード」と呼ぶ；図中は複数の三角形を含む太線囲みで表示）に分けて構成される。
【００４６】
一つのノードＮＤに含まれるポリゴンＰＬの数は、ＳＰＥ１２のローカルメモリ１２ｂにヒット判定処理向けのＳＰＥ用プログラム５０と、ヒット判定処理に必要な移動オブジェクト６０の情報及びそのヒット判定の相手となる少なくとも一つのノードに含まれる複数のポリゴンの情報とを格納すると、演算処理に必要な容量を残してローカルメモリ１２ｂの記憶領域の大部分が使い切り状態となるように予め設定されている。つまり、ヒット判定処理向けのＳＰＥ用プログラム５０がロードされているローカルメモリ１２ｂに、メモリサイズをオーバーしない範囲内で一度のロード命令でポリゴンのデータを纏めて処理できるように一つのノードＮＤに含まれるポリゴン数が事前に調整されている。
【００４７】
尚、本実施形態では背景オブジェクト６２の外形を３角形ポリゴンで形成する例を示しているがこれに限るものではなく、多角形ポリゴンや、球、円柱、円錐と言ったその他の種類のプリミティブの単独又は複数で適宜構成することができる。
【００４８】
［ヒット判定処理の原理の説明］
図６は、本実施形態におけるヒット判定処理の原理を説明する概念図である。本実施形態では、ゲームプログラム実行中に必要とされるヒット判定処理という一つのタスクを、移動キャラクタ６０が衝突するであろうと予測されるヒット先候補のノードの全ポリゴンについて実行する。これは高負荷なタスクである。そこで、ＳＰＭ４８は、その時点で利用可能なＳＰＥ１２に対して単一タスク並列処理方式でヒット判定タスクを分担して並列処理させる。
【００４９】
より具体的には、ヒット判定というタスクを、ＭＰＥ１０と、複数のＳＰＥ１２とで並列処理させる。ＭＰＥ１０とＳＰＥ１２とでは、移動キャラクタ６０のヒット先を判定するために同じくヒット判定処理を実行する点では共通するが、ヒット判定の対象とするノードつまりはポリゴンがそれぞれ異なるように分担される。
【００５０】
ノードの分担においては、ヒット判定タスクの高速化の観点と、何れかのプロセッサエレメントの処理待ち時間の最小化の観点とから、ＭＰＥ１０におけるヒット判定処理の終了と、ＳＰＥ１２でのヒット判定処理の終了とがほぼ同時となるのを目標として、ノードを割り当てする。
【００５１】
ただし、並列処理に利用できるＳＰＥ１２の数や、割り当てるノードの総量は、移動キャラクタ６０の数や背景オブジェクト６２の種類や数、プレーヤからのゲーム操作の有無、他の処理の実行状況など、その時々のゲームの進行状態により変化する。例えば、次に登場する背景オブジェクト６２に適用するテクスチャデータのデコードタスクが先行して行われていたり、音声合成処理等の処理タスクを実行しているなどすればヒット判定を分担可能なＳＰＥ１２の数が変化する。移動キャラクタ６０が平原を移動する場面と、林の中を木々を避けつつ移動する場面とでは、後者の方がヒット先候補とされるノードの数が増える傾向にある。つまり、最適なノードの分担の仕方は、ゲームのプログラム段階では最適解が決められずその時々に応じて決定する必要がある。
【００５２】
そこで、本実施形態では、ゲームプログラム４０又はＳＰＭ４８が前回までの実際のヒット判定処理の処理結果をサンプリングし、統計的にＳＰＥ１２の分担可能な処理負荷を予測して、その予測に基づいてＭＰＥ１０におけるヒット判定処理の終了と、ＳＰＥ１２でのヒット判定処理の終了とがほぼ同等となるようにノードの割り当てをする。
【００５３】
具体的には、先ず前提として、（１）ＳＰＥ１２が、ノードに含まれるポリゴン一つについて移動オブジェクト６０とのヒット判定処理をすると、ＳＰＥ処理量Ｍｓを「１」カウントアップする。（２）ＳＰＥ１２が、ＳＰＥ処理量Ｍｓを処理するのに要した時間を、ＭＰＥ１０が１つのポリゴンについてヒット判定処理するのに要する時間を単位として換算する。
【００５４】
つまり、ＭＰＥ１０が１つのポリゴンについて移動オブジェクト６０とのヒット判定処理をするとＭＰＥ処理量Ｍｍを「１」カウントアップし、ＳＰＥ１２が全分担ノードのポリゴンのヒット判定を終了した時点でカウントを終了する。これを、ＳＰＥ処理時間Ｔｓのカウントと見なす。例えば、ＳＰＥ１２が１０個のポリゴンをヒット判定処理した時点で、ＭＰＥ１０が５個のポリゴンをヒット判定処理していれば、ＳＰＥ１２は“２単位”（個／ＭＰＥにおける１ポリゴン処理所要時間）で計算したことになる。
【００５５】
ＭＰＥ処理量ＭｍとＳＰＥ処理量Ｍｓは、移動オブジェクト６０のヒット判定処理開始前にリセットされ、ヒット判定処理開始とともにカウントが始まる。そして、ＳＰＥ１２の分担ノード全てのポリゴンのヒット判定終了とともに、その時点におけるＭＰＥ処理量ＭｍとＳＰＥ処理量Ｍｓとが統計データとして蓄積される。統計データの蓄積は、統計的に有意義なサンプリング数を上限として、先入れ先出しで更新される。
【００５６】
さて、統計的に意味のあるサンプリング数だけＭＰＥ処理量ＭｍとＳＰＥ処理量Ｍｓとがサンプリングできたならば、ＳＰＥ処理量ＭｓをＸ軸成分とし、これに対するＭＰＥ処理量ＭｍをＹ軸成分として、予測関数Ｙ＝ｆ（Ｘ）を最小二乗法で求める。尚、予測関数ｆ（Ｘ）の求め方は、最小二乗法に限らずその他の統計的手法により求めるとしても良い。
【００５７】
そして、「ＭＰＥ１０の処理終了とＳＰＥ１２の処理終了をほぼ同じにする」とするノード分担の目標に基づき、今回のヒット判定処理において、移動オブジェクト６０のヒット先候補となるノードＮＤに含まれるポリゴン総数をＰａｌとし、ＭＰＥ分担ポリゴン数をＰｍ、ＳＰＥ分担ポリゴン数をＰｓとして、式（１）及び式（２）の連立方程式を解いてＳＰＥ分担ポリゴン数Ｐｓを算出する。
ｆ（Ｐｍ）＝ｆ（Ｐｓ）  ・・・式（１）
Ｐａｌ＝Ｐｍ＋Ｐｓ・・・式（２）
尚、統計データのサンプリング数が統計的に有意義に達する前では、予めゲーム製作者がその開発段階でチューニングして設定した初期予測関数ｇ（Ｘ）を用意しておいて、これを用いるものとする。
【００５８】
そして、ＳＰＥ分担ポリゴン数Ｐｓを算出できたならば、今回ヒット先候補とされるノードの平均ポリゴン数ＰａでＳＰＥ分担ポリゴン数Ｐｓを除算して、小数点以下を丸めてＳＰＥ分担ノード数Ｎｓとする。ＳＰＥ分担ノード数Ｎｓが算出できたならば、ＭＰＥ分担ノード数Ｎｍは、ヒット先候補となるノードの総数Ｎａｌ−Ｎｓで算出する。尚、ここで算出したＳＰＥ分担ポリゴン数Ｎｓは、その時ヒット判定処理に使用できるＳＰＥ全体（ＳＰＥ台数）での分担数であり、実際には使用可能なＳＰＥの台数で割った数が個々のＳＰＥにおける分担数となる。
【００５９】
ヒット判定処理は、１枚のゲーム空間画像を生成する間（１フレーム時間を１／６０秒とするのであれば１／６０秒の間）に何百、何千という回数行われるので、統計的に有意義なサンプリング数は１秒程度あれば十分に達成可能である。すなわち、その時々のゲーム場面における最適な分担が行われるようになる。
【００６０】
［機能ブロックの説明］
図７は、本実施形態における機能構成例を示す機能ブロック図である。同図に示すように本実施形態の家庭用ゲーム装置１２００は、操作入力部１００と、処理部２００と、音出力部３５０と、画像表示部３６０と、通信部３７０と、記憶部５００とを備える。
【００６１】
操作入力部１００は、ボタンスイッチや、ジョイスティック、タッチパッド、トラックボール、加速度センサユニット、傾斜センサユニット、などによって実現され、プレーヤによって為された各種の操作入力に応じて操作入力信号を処理部２００に出力する。図１では、各ゲームコントローラ１２３０が操作入力部１００に該当する。
【００６２】
処理部２００は、例えばマイクロプロセッサやＡＳＩＣ（特定用途向け集積回路）、ＩＣメモリなどの電子部品によって実現され、操作入力部１００や記憶部５００をはじめゲーム装置の各機能部との間でデータの入出力を行うとともに、所定のプログラムやデータ、操作入力部１００からの操作入力信号に基づいて各種の演算処理を実行して、ゲーム装置の動作を制御する。図１では、ゲーム装置本体１２０１に内蔵された制御ユニット１２１０が処理部２００に該当する。
そして本実施形態における処理部２００は、メイン演算部２０２と、サブ演算部２３０と、音生成部２５０と、画像生成部２６０と、通信制御部２７０とを備える。
【００６３】
メイン演算部２０２は、処理部２００における主たる演算処理部である。図３のメインプロセッサエレメント（ＭＰＥ）１０がこれに該当する。サブ演算部２３０は、メイン演算部２０２を補助する演算処理を実行する。図３のサブプロセッサエレメント（ＳＰＥ）１２がこれに該当する。
【００６４】
そして、メイン演算部２０２は、ＯＳ（オペレーティングシステム）制御部２０４と、ゲーム演算部２１０を備える。但し、ゲーム演算部２１０の一部はサブ演算部２３０によっても実現される。
【００６５】
ＯＳ制御部２０４は、ゲームプログラムなどのアプリケーションプログラムがハードウェアリソースを使用可能にする環境を提供する。図４のリアルタイムＯＳ４２がこれに該当する。そして、ＯＳ制御部２０４は、サブ演算部制御部２０６を有する。
サブ演算部制御部２０６は、メイン演算部２０２で実行される演算処理からサブ演算部２３０で実行する演算処理を制御する機能を実現する。図４のサブプロセッサマネージャ（ＳＰＭ）４８がこれに該当する。
【００６６】
ゲーム演算部２１０は、ゲーム実行に関する各種処理を実行する。例えば、（１）仮想３次元空間に移動キャラクタ６０や背景オブジェクト６２などのオブジェクトを配置してゲーム空間を形成する処理、（２）ゲーム空間を撮影するための仮想カメラを配置し移動制御する処理、（３）各プレーヤの操作入力に応じて移動オブジェクト６０を移動させる処理、（４）ヒット判定の結果に応じて移動オブジェクト６０の移動を変更する処理、（５）ヒット判定の結果に応じて移動オブジェクト６０のヒットポイントや得点の算出などの処理、（７）ゲームステージの移動や登場するキャラクタの選択などゲームの進行状態を変更する処理、（８）ゲーム終了判定処理、などを実行する。
【００６７】
そして、本実施形態のゲーム演算部２１０は、判定対象選択部２１２と、ヒット判定部２１４，２３２と、分担設定部２１６と、統計処理部２１８とを備える。
【００６８】
判定対象選択部２１２は、ヒット判定が必要な移動オブジェクトとそのヒット先候補となるノード（つまりはポリゴン）の選択をする。例えば、仮想カメラの撮影範囲内であって、プレーヤキャラクタとなる移動オブジェクト６０の周囲所定範囲内の背景オブジェクト６２のノードを選択するとしても良い。或いは、予め背景オブジェクト６２のポリゴンをＢＳＰ木構造のデータ構造で構成して選択するとしても良い。その場合、ＢＳＰ木構造における外部リーフはノードとされる。
【００６９】
ヒット判定部２１４，２３２は、仮想３次元空間内のオブジェクト間のヒット判定処理を実行する。本実施形態では、ヒット判定処理はＭＰＥ１０とＳＰＥ１２との並列処理により実現されるので、ヒット判定部はメイン演算部２０２とサブ演算部２３０とにそれぞれ含まれる格好となる。
【００７０】
分担設定部２１６は、ＳＰＥ１２の処理負荷を予測する予測関数ｆ（Ｘ）に基づくヒット判定処理におけるノードの分担処理を行う。
統計処理部２１８は、分担処理において分担の基礎になる予測関数ｆ（Ｘ）の算出に関する処理、及びその元になる各種パラメータのサンプリングに関する処理を実行する。
【００７１】
音生成部２５０は、例えばデジタルシグナルプロセッサ（ＤＳＰ）などのプロセッサやその制御プログラムによって実現され、ゲームに係る効果音やＢＧＭ、各種操作音の音信号を生成し音出力部３５０に出力する。図２のＡＶボード６、オーディオ端子２４などがこれに該当する。
【００７２】
音出力部３５０は、音生成部２５０から入力される音信号に基づいて効果音やＢＧＭ等を音出力するための装置である。図１ではビデオモニタ１２２０のスピーカ１２２４がこれに該当する。
【００７３】
画像生成部２６０は、例えば、デジタルシグナルプロセッサ（ＤＳＰ）などのプロセッサ、その制御プログラム、フレームバッファ等の描画フレーム用ＩＣメモリ等によって実現される。図２ではＡＶボード６、ビデオ端子２２などが該当する。そして、画像生成部２６０は、１フレーム時間（例えば１／６０秒）で１枚の３ＤＣＧ画像を生成し、生成した画像の画像信号を画像表示部３６０に出力する。
【００７４】
画像表示部３６０は、画像生成部２６０から入力される画像信号に基づいてゲーム画面を表示する。例えば、フラットパネルディスプレイ、ブラウン管（ＣＲＴ）、プロジェクター、ヘッドマウントディスプレイといった画像表示装置によって実現できる。図１ではビデオモニタ１２２０のフラットパネルディスプレイ１２２２が該当する。
【００７５】
通信制御部２７０は、通信回線１を介した外部装置とのデータ通信に係るデータ処理を実行し、通信部３７０を介して外部装置とのデータのやりとりを実現する。
【００７６】
通信部３７０は、通信回線１と物理レベルで接続して通信を実現する。例えば、無線通信機、モデム、ＴＡ（ターミナルアダプタ）、有線用の通信ケーブルのジャックや制御回路等によって実現され、図１では通信装置１２１２がこれに該当する。
【００７７】
記憶部５００は、処理部２００に家庭用ゲーム装置１２００を統合的に制御させるための諸機能を実現するためのプログラムや、ゲームを実行するためのプログラム、各種データ等を記憶する。また、処理部２００の作業領域として用いられ、処理部２００が各種プログラムに従って実行した演算結果や操作入力部１００から入力される入力データ等を一時的に記憶する。この機能は、例えばＲＡＭやＲＯＭなどのＩＣメモリ、ハードディスク等の磁気ディスク、ＣＤ−ＲＯＭやＤＶＤなどの光学ディスクなどによって実現される。
【００７８】
本実施形態では、記憶部５００は予め記憶しているものとしてＯＳプログラム５０１と、ゲームを実行するためのゲームプログラム５０４と、ゲーム空間初期設定データ５３０と、キャラクタ初期設定データ５４０と、初期予測関数ｇ（Ｘ）とを記憶している。また、ゲーム進行に応じて生成・更新されるデータとして、キャラクタステータスデータ５４４と、ヒット判定関連データ５５０と、統計データ５８０とを記憶する。その他、ゲーム進行に必要なフラグや、カウンター、タイマーなどの情報を適宜記憶することができる。
【００７９】
ＯＳプログラム５０１は、処理部２００で読み込み実行することにより、処理部２００をＯＳ制御部２０４として機能させるためのプログラムであり、処理部２００をサブ演算部制御部２０６として機能させるためのＳＰＭ（サブプロセッサマネージャ）プログラム５０２を含む。
【００８０】
ゲームプログラム５０４は、処理部２００が読み出して実行することによって、ゲーム演算部２１０としての機能を実現させることができるプログラムである。本実施形態では、サブ演算部２３０が実行するＳＰＥ用プログラム５０６を含む（図４のＳＰＥ用プログラム５０に相当）。
【００８１】
ゲーム空間初期設定データ５３０は、仮想３次元空間内にゲームの舞台となる空間を形成するための地形オブジェクト等の各種オブジェクトの初期設定データを格納する。本実施形態では、移動オブジェクト６０が衝突する可能性のある背景オブジェクト６２を設定するデータを格納している。具体的には、例えば図８に示すように、ゲーム空間初期設定データ５３０は、複数の背景オブジェクトデータ５３２を格納する。各背景オブジェクトデータ５３２は、ポリゴン集合毎に設定された複数のノードデータ５３４と、テクスチャデータ５３６と、配置座標５３８とを含む。そして、一つのノードデータ５３４には、ノードＩＤ５３４ａと、当該ノードに含まれるポリゴンデータ５３４ｂとが格納されている。
尚、ゲーム空間初期設定データ５３０は、ヒット判定処理に際して、ノードＩＤを元にそれに包含されるポリゴンデータを読み出し可能なようにノードＩＤとポリゴンデータとを対応づけされていれば良く、図示されたデータ構成に限らず他のデータ構成など、適宜設定することができる。
【００８２】
キャラクタ初期設定データ５４０は、プレーヤキャラクタである移動オブジェクト６０や、その他の移動オブジェクトのポリゴンモデルデータやテクスチャデータ、モーションデータなどその動作制御に必要な各種初期設定データを格納する。
【００８３】
ゲーム実行中におけるプレーヤキャラクタである移動オブジェクト６０の位置座標、姿勢情報、速度や加速度、ヒットポイントや能力値、所持するアイテムの種類と数、モーション制御に必要なパラメータなど、プレーヤキャラクタを含む各キャラクタの状態を示すパラメータは、キャラクタ毎に纏められたキャラクタステータスデータ５４４に格納される。
【００８４】
初期予測関数ｇ（Ｘ）５４２は、統計データ５８０に統計的に意義のあるサンプル数だけＭＰＥ処理量ＭｍとＳＰＥ処理量Ｍｓとが取得できるまでの間、予測関数ｆ（Ｘ）に代用される関数である。初期予測関数ｇ（Ｘ）によるノードの分担は、ＭＰＥ１０の処理負荷がＳＰＥのそれよりもやや高くなるように設定されている。統計データ５８０に十分な数のサンプルが蓄積されると、そこから統計的に予測関数ｆ（Ｘ）が求められ、その予測関数ｆ（Ｘ）を用いて、ヒット判定に関するＭＰＥ１０とＳＰＥ１２の処理負荷がほぼ同等となるようにノードが分担されることとなる。尚、図中では、初期予測関数ｇ（Ｘ）５４２は一つであるが、ゲームステージやシーン別に対応づけて複数設ける構成としても良い。
【００８５】
ヒット判定関連データ５５０は、ヒット判定の並列処理に必要な各種情報を格納する。
例えば、図９に示すように、サンプリング回数５５２と、移動オブジェクトリスト５５４と、ヒット判定対象ノードリスト５５６と、今回ＭＰＥ処理量（Ｍｍ）５５８と、今回ＳＰＥ処理量（Ｍｓ）５６０と、予測関数ｆ（Ｘ）５６２と、ＭＰＥ分担ノード数（Ｎｍ）５６４と、ＳＰＥ分担ノード数（Ｎｓ）５６６と、ＭＰＥ分担ノード情報５６８と、ＳＰＥ分担ノード情報５７０と、ＳＰＥ別処理終了フラグ５７２と、ヒットデータ５７４とを格納する。
【００８６】
サンプリング回数５５２は、ゲーム開始時点で初期値「０」とされ、ＭＰＥ処理量Ｍｍ及びＳＰＥ処理量Ｍｓが統計データ５８０に格納されてサンプリングされる毎に「１」加算される。
移動オブジェクトリスト５５４は、１つのゲーム画面を生成するにあたり、ヒット判定をする必要があるとされた移動オブジェクトのリストである。
【００８７】
ヒット判定対象ノードリスト５５６は、移動オブジェクトリスト５５４にリストアップされた移動オブジェクト毎に用意され、当該移動オブジェクトの衝突が予測される（衝突の可能性がある）ノードＮＤのリストである。このリストは、ゲーム演算部２１０が公知のヒット判定対象の選別方法を実行することにより作成される。例えば、背景オブジェクトデータ５３２を、当該背景オブジェクトを構成するポリゴンのＢＳＰ木構造のデータ構造とし、移動オブジェクト６０がＢＳＰ木構造化に使用した空間分割面に対してどの位置に存在するかを判定して選択するとしても良い。
【００８８】
今回ＭＰＥ処理量（Ｍｍ）５５８及び今回ＳＰＥ処理量（Ｍｓ）５６０は、今回のヒット判定の並列処理に関する処理結果を示すパラメータである。
前者は、ヒット判定処理開始時点で初期値「０」とされ、ＭＰＥ１０が一つの移動オブジェクト６０と一つのポリゴンとのヒット判定処理を実行する都度「１」カウントアップされる。後者は、複数のＳＰＥ１２からアクセス可能なパラメータであり、ヒット判定処理開始時点で初期値「０」とされ、各ＳＰＥ１２が一つの移動オブジェクト６０と一つのポリゴンとのヒット判定処理を実行する都度「１」カウントアップされる。そして、今回ＭＰＥ処理量（Ｍｍ）５５８及び今回ＳＰＥ処理量（Ｍｓ）５６０ともに、全ＳＰＥ１２での全分担ノードの全ポリゴンについてのヒット判定処理が終了すると、統計データとしてサンプリング（記録）された後にリセットされる。
【００８９】
ＭＰＥ分担ノード情報５６８及びＳＰＥ分担ノード情報５７０は、ヒット判定対象ノードリスト５５６の内、ＭＰＥ１０及び各ＳＰＥ１２がそれぞれ分担するノードを識別するための情報を格納する。例えば、ヒット判定対象ノードリスト５５６のうちそれぞれが分担するリスト順最初のノードのアドレスやポインタでも良いし、ノードＩＤでも良い。
【００９０】
ＳＰＥ別処理終了フラグ５７２は、ヒット判定の並列処理で使用可能なＳＰＥ１２毎に用意され、ヒット判定開始時点の初期値が「０」、各ＳＰＥ１２により分担された全ノードについてヒット判定処理を終了すると「１」が書き込まれる。
【００９１】
ヒットデータ５７４は、ＭＰＥ１０とＳＰＥ１２のどちらからも書込可能なデータであって、ヒット判定の並列処理開始時点でリセットされ、ヒット判定処理された移動オブジェクト６０の識別情報５７４ａと対応づけてヒット先のポリゴン情報５７４ｂが次々に格納される。
【００９２】
統計データ５８０は、統計的に意義のあるサンプル数（例えば、数千程度）を上限に、ＭＰＥ処理量ＭｍとＳＰＥ処理量Ｍｓとをセットにして格納する。格納したサンプル数が上限に達したならば、先入れ先出し方式でサンプルタイミングが古い方から順次削除され新しいサンプルデータが格納されてゆく。
【００９３】
［処理の流れの説明］
次に、本実施形態における処理の流れについて説明する。ここで説明する一連の処理の流れは、処理部２００がＯＳプログラム５０１を読み出し実行してゲーム装置としてのハードウェア制御の基本的機能を実現した後、ゲームプログラム５０４を読み出して実行することによって実現される。
尚、ゲーム空間を仮想カメラで撮影したゲーム空間画像のレンダリング処理や、レンダリングされたゲーム空間画像へのヒットポイントゲージなどの各種情報表示を合成してゲーム画面を生成する処理、映像信号を出力する処理、及びゲーム音の生成と音声信号の出力に関する処理については、ＡＶボード６（図２参照）により公知のビデオゲームと同様に随時リアルタイムに実行されるものとしてここでの説明は省略する。
【００９４】
図１０は、本実施形態のゲームプログラム５０４の主たる処理の流れを説明するためのフローチャートである。ＭＰＥ１０は、先ずゲーム進行の制御に必要な各種パラメータの初期化をし（ステップＳ２）、次いでゲーム空間初期設定データ５３０を参照して、仮想３次元空間内に様々な背景オブジェクト６２を配置してゲームの舞台となるゲーム空間を形成する（ステップＳ４）。そして、キャラクタ初期設定データ５４０を参照して、ゲーム空間内の初期位置にプレーヤが操作するプレーヤキャラクタとなる移動キャラクタ６０と、それを撮影する仮想カメラとを配置する（ステップＳ６）。
【００９５】
次いで、ＭＰＥ１０は、ゲームを開始させると（ステップＳ８）、ステップＳ１０〜Ｓ１６２の処理を、ステップＳ１６４で所定のゲーム終了条件を満たすと判定するまで、フラットパネルディスプレイ１２２２の１フレームの描画時間以下の時間サイクルで繰り返し実行する。
【００９６】
具体的には、ＭＰＥ１０は、ゲームコントローラ１２３０からの操作入力に応じてプレーヤキャラクタとなる移動オブジェクト６０の姿勢制御や移動制御をする（ステップＳ１０）。例えば、前進後退、上下左右への操舵、加速／減速、アイテムの使用などがこれに該当する。操作入力に応じた移動オブジェクト６０の姿勢や移動の制御に関するタスク（例えば、簡易な物理演算によって加速や減速、姿勢の変化を計算する処理）はＳＰＥ１２に実行させる構成としても良い。
【００９７】
次いで、ＭＰＥ１０は、プレーヤキャラクタとなる移動オブジェクト６０を追従して撮影するように仮想カメラの位置や姿勢、画角、ピント位置などを制御する処理を実行する（ステップＳ１２）。この処理も、ＳＰＥ１２に実行させる構成とすることができる。
【００９８】
次に、ＭＰＥ１０は、ヒット判定の並列処理に使用可能なＳＰＥ１２を選出し（ステップＳ１４）、ヒット判定処理を実行する（ステップＳ１６）。この時、ヒット判定の使用に可能なＳＰＥ１２は、先に述べた操作入力に応じた移動オブジェクト６０の姿勢や移動の制御に関するタスクなどその他のタスク実行が割り当てられている可能性があり、その時々により選出されるＳＰＥの数や個体が変化する。
【００９９】
図１１〜図１２は、ヒット判定処理におけるＭＰＥ１０の処理の流れを説明するためのフローチャートである。
ＭＰＥ１０は、先ずヒット判定を要する移動オブジェクトのリストアップをする（ステップＳ３２）。プレーヤキャラクタとなる移動オブジェクト６０は勿論、プレーヤキャラクタの邪魔をする他の移動キャラクタをゲームに登場させたり、プレーヤキャラクタが発射した銃弾やミサイルやバリア、魔法の作用域を示すエフェクトなどを登場させる場合には、それらもリストアップの対象とされる。リストアップの結果は、ヒット判定関連データ５５０の移動オブジェクトリスト５５４（図９参照）として記憶される。
【０１００】
次いで、ＭＰＥ１０はリストアップされた全移動オブジェクトについてループＡの処理を実行する（ステップＳ３４〜Ｓ１４８）。
ループＡでは、処理対象とされる移動オブジェクトが衝突する可能性のあるノードＮＤをリストアップし、ヒット判定対象ノードリスト５５６（図９参照）として記憶する（ステップＳ３６）。ノードＮＤのリストアップ方法は、公知の手法を適宜利用することで実現できる。例えば、仮想カメラの視界内にあって、ループＡの処理対象とされる移動オブジェクトから所定範囲内の背景オブジェクト６２のノードＮＤを選択するとしても良い。背景オブジェクト６２やそれを構成するポリゴンをＢＳＰ木構造で記述している場合には、当該処理対象オブジェクの位置をＢＳＰ木構造の空間分割面に対する相対位置に基づいて選択するとしても良い。
そして、衝突の可能性のあるノードＮＤを選択したらならば、ＭＰＥ１０は分担数算出処理を実行する（ステップＳ３８）
【０１０１】
図１３は、本実施形態における分担数算出処理の流れを説明するためのフローチャートである。同処理において、ＭＰＥ１０は先ず、ヒット判定対象ノードリスト５５６にリストアップされている全てのノードＮＤに含まれるポリゴン数を算出して今回ヒット判定対象のポリゴン総数Ｐａｌを算出する（ステップＳ５０）。
【０１０２】
次いで、ヒット判定関連データ５５０のサンプリング回数５５２（図９参照）が統計的に意義のある十分大きい値に達したかを判定する（ステップＳ５２）。達していなければ（ステップＳ５２のＮＯ）、今回ヒット判定対象のポリゴン総数Ｐａｌと初期予測関数ｇ（Ｘ）と基づいてＳＰＥ分担ポリゴン数Ｐｓを算出する（ステップＳ５４）。もし、サンプリング回数５５２が基準値に達していれば、統計データ５８０に蓄積されている過去のＭＰＥ処理量ＭｍとＳＰＥ処理量Ｍｓとに基づいて予測関数ｆ（Ｘ）を求め（ステップＳ５６）、この予測関数ｆ（Ｘ）と先に算出した今回ヒット判定対象のポリゴン総数Ｐａｌと基づいてＳＰＥ分担ポリゴン数Ｐｓを算出する（ステップＳ５８）。
【０１０３】
そして、算出したＳＰＥ分担ポリゴン数ＰｓからＳＰＥ分担ノード数Ｎｓを算出し（ステップＳ６０）、ＭＰＥ分担ノード数Ｎｍを算出して（ステップＳ６２）、分担数算出処理を終了する。ＳＰＥ分担ノード数Ｎｓの算出は、ノード当りのポリゴン数を規定する場合には規定数でＳＰＥ分担ポリゴン数Ｐｓを除算すれば良いし、ノード当りのポリゴン数に有る程度の幅を許容する構成の場合には、１ノード当たりの平均ポリゴン数で除算して求めれば良い。
【０１０４】
分担数算出処理を終了したらならば、図１１のフローチャートに戻って、ＭＰＥ１０は次に、ループＡの処理対象のオブジェクトに対応づけられたヒット判定対象ノードリスト５５６のリスト先頭からＮｍ番目までのノードをＭＰＥ１０の分担ノードとして設定し（ステップＳ７０）、Ｎｍ＋１番目以降のノードをＳＰＥ１２の分担ノードとして設定する（ステップＳ７２）。ＳＰＥ１２の分担ノードは、Ｎｍ＋１番目以降のノードをヒット判定に使用可能なＳＰＥ１２に均等に分担する。
【０１０５】
これでヒット判定を並列処理するための準備が整ったことになるので、ＭＰＥ１０は次に、今回ＳＰＥ処理量（Ｍｓ）５６０を「０」に初期化し、ＳＰＥ別処理終了フラグ５７２を「０」に初期化する（ステップＳ７４）。そして、ＳＰＥ１２でヒット判定処理を実行させるためのＳＰＥ用プログラム５０６（図７参照）を先に選出されたＳＰＥ１２のローカルメモリ１２ｂ（図３参照）にロードさせ（ステップＳ７５）、ロードさせたＳＰＥ１２に実行開始の命令を発行する（ステップＳ７６）。
【０１０６】
図１４は、本実施形態におけるＳＰＥにおけるヒット判定処理の流れを説明するためのフローチャートである。同処理では先ず、ＳＰＥ１２は、自身の担当ノードのデータつまりはヒット判定対象となるポリゴンデータを、メインメモリ４からローカルメモリ１２ｂにロードし（ステップＳ９０）、それらのうち１つのポリゴンとループＡの処理対象オブジェクトとのヒット判定処理を実行して（ステップＳ９２）、今回ＳＰＥ処理量（Ｍｓ）５６０を「１」アップする（ステップＳ９４）。そして、もしヒット判定処理したポリゴンと移動オブジェクトとがヒットしていれば（ステップＳ９６のＹＥＳ）、ＳＰＥ１２はヒットデータ５７４にヒット情報を追加する（ステップＳ９８）。
【０１０７】
ＳＰＥ１２は、ステップＳ９２〜Ｓ９８を自担当ノードに含まれる全てのポリゴンについてヒット判定処理を実行するまで繰り返し（ステップＳ１００のＮＯ）、ヒット判定処理を完遂すれば（ステップＳ１００のＹＥＳ）、自身に対応づけられているＳＰＥ別処理終了フラグ５７２を「１」に設定し（ステップＳ１０２）、ヒット判定処理を終了する。
【０１０８】
図１１のフローチャートに戻り、ＭＰＥ１０はＳＰＥ１２に実行開始の命令を発行した後、つまりＳＰＥ１２においてヒット判定処理が同時並行的に実行されている間、今回ＭＰＥ処理量（Ｍｍ）５５８を「０」に初期化して（ステップＳ１２０）、自担当ノードに含まれる一つのポリゴンとループＡの処理対象オブジェクトとのヒット判定処理を実行し（ステップＳ１２２）、今回ＭＰＥ処理量（Ｍｍ）５５８を「１」アップする（ステップＳ１２４）。
【０１０９】
そして、もし今回ヒット判定処理したポリゴンと移動オブジェクトとがヒットしていれば（ステップＳ１２６のＹＥＳ）、ヒットデータ５７４にヒット情報を追加する（ステップＳ１２８）。
【０１１０】
図１２のフローチャートに移って、ＭＰＥ１０は現在処理対象としているノードの全てのポリゴンについてヒット判定を実行したかを判定する（ステップＳ１３０）。まだ、未処理のポリゴンが残っていれば（ステップＳ１３０のＮＯ）、ステップＳ１２２に移行してそれら残りのポリゴンについてのヒット判定処理を実行する。もし、未処理のポリゴンが無ければ（ステップＳ１３０のＹＥＳ）、ＭＰＥ分担ノード全てのポリゴンについてヒット判定処理したかを判定する（ステップＳ１３２）。
【０１１１】
まだ、未処理のノードが有れば（ステップＳ１３２のＮＯ）、ＭＰＥ１０はＳＰＥ別処理終了フラグ５７２を参照して、ＳＰＥ１２側で分担されたノードのポリゴン全てのヒット判定が終了しているかを判定する（ステップＳ１３４）。
【０１１２】
そして、まだＳＰＥ１２側でヒット判定の並列処理が続いている場合には（ステップＳ１３４のＮＯ）、ステップＳ１２２に移行してＭＰＥ分担ノードの別のノードのポリゴンについてのヒット判定処理を実行する。
反対に、ＳＰＥ１２側でヒット判定の並列処理が終了していれば（ステップＳ１３４のＹＥＳ）、ＭＰＥ１０は現在ループＡの処理対象としている移動オブジェクトに対応づけられたヒット判定対象ノードリスト５５６から、ＭＰＥ１０によってヒット判定が終了したノードと、ＳＰＥ分担ノードとを削除して更新する（ステップＳ１３６）。そして、今回ＭＰＥ処理量（Ｍｍ）５５８と今回ＳＰＥ処理量（Ｍｓ）５６０とを統計データ５８０に格納して（ステップＳ１３８）、サンプリング回数５５２を「１」アップして（ステップＳ１４０）、ステップＳ３８に移行して分担数算出処理から繰り返す。
【０１１３】
一方、ステップＳ１３２においてＭＰＥ分担ノード全てのヒット判定処理が終了済みと判定されたならば（ステップＳ１３２のＹＥＳ）、ＳＰＥ１２のヒット判定処理の終了を待って（ステップＳ１４２）、今回ＭＰＥ処理量（Ｍｍ）５５８と今回ＳＰＥ処理量（Ｍｓ）５６０とを統計データ５８０に格納して（ステップＳ１４４）、サンプリング回数５５２を「１」アップして（ステップＳ１４６）、今回のループＡの処理を終了する（ステップＳ１４８）。
【０１１４】
そして、移動オブジェクトリスト５５４にリストアップされている全ての移動オブジェクトについてループＡを実行したならば、ＭＰＥ１０におけるヒット判定処理を終了する。
【０１１５】
図１０のフローチャートに戻って、ＭＰＥ１０は次に、ヒット判定の結果に応じて衝突の影響が反映されるように衝突反力を設定したり移動方向を曲げるなど移動オブジェクトの移動制御を補正し（ステップＳ１６０）、ヒット判定の結果に応じてゲームの進行状態を変更する（ステップＳ１６２）。例えば、プレーヤキャラクタが背景オブジェクト６２と衝突するとヒットポイントを減らしたり、反対に所定の救助オブジェクトと衝突するとヒットポイントを回復したりする。その他、ゲーム内容によっては、プレーヤキャラクタと所定の背景オブジェクトとの衝突でゲームステージを切り換えるなどの処理を実行する構成としても良い。
【０１１６】
そして、ＭＰＥ１０は、ゲーム終了条件を満たすか否かを判定する（ステップＳ１６４）。本実施形態では、プレーヤキャラクタのヒットポイントが「０」になる前に所定のゴールエリアに到達すればゲームクリアでゲーム終了、到達前にヒットポイントが「０」になってしまえばゲームオーバでゲーム終了判定する。
【０１１７】
ゲーム終了条件を満たしていなければ（ステップＳ１６４のＮＯ）、ステップＳ１０に移行してゲームプレイに係る処理を続行する。ゲーム終了条件を満たしていれば（ステップＳ１６４のＹＥＳ）、ゲームを終了する。
【０１１８】
以上、本実施形態によれば、オブジェクト同士のヒット判定の結果に応じてゲーム進行状態が変化する３ＤＣＧを用いたビデオゲームのヒット判定処理を、ＭＰＥ１０と複数のＳＰＥ１２とで同時並列処理することにより、ＳＰＥ１２のみに並列処理させる場合よりも処理を高速化できる。
【０１１９】
また、ヒット判定の対象とするポリゴンをＭＰＥ１０とＳＰＥ１２に割り振る際、過去のＳＰＥ１２の処理実績からＳＰＥ１２へ分担するポリゴン数に応じた処理負荷を予測し、ＭＰＥ１０とＳＰＥ１２のヒット判定処理の終了がほぼ同じタイミングとなるように割り振るので、より効率的で高速にヒット判定を並列処理できる。
【０１２０】
更には、ポリゴンの割り振りにおいては、ＳＰＥ１２のローカルメモリ１２ｂのサイズを考慮し、一度に出来るだけ多くのポリゴンデータがロードできるようなポリゴン集合を単位とすることで、データロードの繰り返しを防ぎ、データのロードに係わるオーバーヘッドを低減し、更なる高速化を図ることができる。
【０１２１】
［変形例］
以上、本発明を適用した実施形態について説明したが、本発明の実施形態はこれに限定されるものではなく、発明の主旨を逸脱しない範囲で適宜構成要素の変更・省略・追加をすることができる。
【０１２２】
例えば、本発明を適用した画像生成装置は、家庭用ゲーム装置１２００に限らず、図１５に示すような業務用ゲーム装置１３００として実現することができる。
業務用ゲーム装置１３００は、ゲーム装置本体１３０１に、（１）プレーヤが各種操作入力をするためのジョイスティック１３０６や複数のプッシュスイッチ１３０８といった入力デバイスが設けられた操作台１３０４と、（２）ゲーム画像を表示させるための液晶パネルディスプレイやＣＲＴといった画像表示装置１３２２と、（３）スピーカ１３２４と、（４）コインカウンタ１３４０と、（５）制御ユニット１３１０と、図示されない電源装置とを備えて構成される。制御ユニット１３１０は、第１実施形態の制御ユニット１２１０に相当し、通信回線１と有線又は無線接続し、外部装置との間でデータ通信を実現する通信装置１３１２を備える。そして、制御ユニット１３１０は、搭載されているＩＣメモリなどの記憶装置に記憶されているシステムプログラムやゲームプログラムを読み出して演算処理して業務用ゲーム装置１３００の各部を制御する。
【０１２３】
或いは、本発明を適用した画像生成装置は、ゲームプログラムをアプリケーションとして実行可能な携帯電話やパソコン、カーナビ、シリコンオーディオプレーヤなどとして実現しても良い。
【０１２４】
また、上記実施形態では、ヒット判定処理をＭＰＥ１０とＳＰＥ１２とで同一タスクの同時並行処理として実現する構成を説明したがこれに限らない。例えば、複数タスク並列処理方式で実現する構成としても良い。具体的には、前述したゲームプログラム４０や他アプリケーションから要求される複数のタスクそれぞれについて、各タスクを実現するための複数のスレッドを生成する。そして、要求されている各タスクの処理順を自動計算（スケジューリング）してＳＰＥ１２へ動的に分担する。この場合、ＳＰＥ１２へヒット判定処理させるＳＰＥ用プログラムのロードタイミングや、その開始命令の発行タイミングはそのスケジューリングに基づきバラバラに行われることとなる。
【０１２５】
また、そうした複数タスク並列処理方式を、専用のプロセッサを設けて専従させるとしても良い。その場合、専用プロセッサはＭＰＥ１０に内蔵しても良いし、独立して内部バス１６に接続させる構成としても良い。
【０１２６】
また、上述した実施形態では、ゲーム空間中の背景物等をポリゴンで構成されることとし、そのポリゴンを、ヒット判定処理の対象とするプリミティブの一例として説明した。しかし、ゲーム空間中の背景物等を直方体や球といったプリミティブで構成し、それらをヒット判定処理の対象としてもよいのは勿論である。
【符号の説明】
【０１２７】
２  マルチコアプロセッサ
４  メインメモリ
１０  メインプロセッサエレメント（ＭＰＥ）
１２  サブプロセッサエレメント（ＳＰＥ）
６０  移動キャラクタ
６２  背景オブジェクト
１００  操作入力部
２００  処理部
２０２  メイン演算部
２０４  ＯＳ制御部
２０６  サブ演算部制御部
２１０  ゲーム演算部
２１２  判定対象選択部
２１４  ヒット判定部
２１６  分担設定部
２１８  統計処理部
２３０  サブ演算部
２３２  ヒット判定部
５００  記憶部
５０４  ゲームプログラム
５０６  ＳＰＥ用プログラム
５３０  ゲーム空間初期設定データ
５３２  背景オブジェクトデータ
５３４  ノードデータ
５３４ｂ  ポリゴンデータ
５４２  初期予測関数ｇ（Ｘ）
５５０  ヒット判定関連データ
５５２  サンプリング回数
５５６  ヒット判定対象ノードリスト
５５８  今回ＭＰＥ処理量
５６０  今回ＳＰＥ処理量
５６２  予測関数ｆ（Ｘ）
１２００  家庭用ゲーム装置
１２０１  ゲーム装置本体
１２３０  ゲームコントローラ
【図１】
2011134220.tif 000003
【図２】
2011134220.tif 000004
【図３】
2011134220.tif 000005
【図４】
2011134220.tif 000006
【図５】
2011134220.tif 000007
【図６】
2011134220.tif 000008
【図７】
2011134220.tif 000009
【図８】
2011134220.tif 000010
【図９】
2011134220.tif 000011
【図１０】
2011134220.tif 000012
【図１１】
2011134220.tif 000013
【図１２】
2011134220.tif 000014
【図１３】
2011134220.tif 000015
【図１４】
2011134220.tif 000016
【図１５】
2011134220.tif 000017