(57)【特許請求の範囲】
【請求項１】
オブジェクト画像の状態を表現するためのオブジェクトデータを生成する装置において、
前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を複数発生させ、
複数の候補状態変数値から所定の条件値との一致度合いが最も高いものを前記状態変数値として決定し、
この決定した状態変数値に基づいて当該時点の前記オブジェクトデータを生成することを特徴とする、
画像処理方法。
【請求項２】
前記複数の候補状態変数値を、所定範囲で変化可能なゆらぎ変数を用いて時系列に発生させ、前記状態変数値を時点毎に時系列に決定していくことを特徴とする、
請求項１記載の画像処理方法。
【請求項３】
複数のプロセッサと各プロセッサとの間で双方向の通信を行うコントローラとを有し、各プロセッサがそれぞれ自己に割り当てられたオブジェクト画像の状態を表現するためのオブジェクトデータを生成する装置において実行される方法であって、
前記複数のプロセッサの少なくとも一つが、前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を所定範囲で変化可能なゆらぎ変数に基づいて発生させ、この候補状態変数値を前記コントローラへ個別的に送出し、
前記候補状態変数値を受け取ったコントローラが、その候補状態変数値を含む参照用数値をすべてのプロセッサに同時期に一斉送出し、
前記候補状態変数値を送出したプロセッサが、前記コントローラから受け取った前記参照用数値と当該候補状態変数値との相対関係を定量化してその結果が当該プロセッサに固有となる所定の範囲内にある場合にその候補状態変数値に基づいて当該時点での前記オブジェクトデータを生成することを特徴とする、
画像処理方法。
【請求項４】
複数のプロセッサ及び各プロセッサとの間で双方向の通信を行うコントローラを有し、各プロセッサがそれぞれ自己に割り当てられたオブジェクト画像の状態を表現するためのオブジェクトデータを生成する装置において実行される方法であって、
前記複数のプロセッサの少なくとも一つが、それぞれ前記オブジェクト画像の状態を定める状態変数値の候補となる候補状態変数値を複数発生させるとともに、複数の候補状態変数値から所定の条件値との一致度合いが最も高い第１候補状態変数値を前記コントローラに個別的に送出し、
前記第１候補状態変数値を受け取った前記コントローラが、その第１候補状態変数値を含む参照用数値をすべてのプロセッサに同時期に一斉送出し、
前記第１候補状態変数値を送出したプロセッサが、前記コントローラから受け取った参照用数値と前記第１候補状態変数値との相対関係を定量化してその結果が当該プロセッサに固有となる所定の範囲内にある場合にその第１候補状態変数値に基づいて前記オブジェクトデータを生成することを特徴とする、
画像処理方法。
【請求項５】
前記複数のプロセッサの少なくとも一つが、所定範囲で変化可能なゆらぎ変数を発生させ、そのゆらぎ変数に基づいて前記複数の候補状態変数値を発生させることで、前記オブジェクトデータを生成することを特徴とする、
請求項４記載の画像処理方法。
【請求項６】
前記ゆらぎ変数を発生させたプロセッサが、そのゆらぎ変数を前記コントローラに個別的に送出し、
前記ゆらぎ変数を受け取った前記コントローラが、受け取ったすべてのゆらぎ変数の平均値をとってこの平均値を前記ゆらぎを送出したすべてのプロセッサに一斉送出し、
前記平均値を受け取ったプロセッサが、その平均値と前記発生させたゆらぎ変数とに基づいて前記候補状態変数値を発生させることを特徴とする、
請求項３又は５記載の画像処理方法。
【請求項７】
前記複数のプロセッサを一以上のグループに分け、一つのグループ内のプロセッサの各々が決定した前記候補状態変数値の一つを当該グループに属するすべてのプロセッサで用いる共通の状態変数値とすることを特徴とする、
請求項３、４又は５記載の画像処理方法。
【請求項８】
オブジェクト画像の状態を表現するためのオブジェクトデータを生成する装置であって、
前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を、所定範囲で変化可能なゆらぎ変数を用いて時系列に複数発生させる手段と、
前記発生した複数の候補状態変数値のうち所定の条件値との一致度合いが最も高い第１候補状態変数値を前記状態変数値として時点毎に時系列に決定していき、各時点で決定した状態変数値に基づいて当該時点の前記オブジェクトデータを生成する手段とを備えることを特徴とする、
画像処理装置。
【請求項９】
複数のプロセッサと各プロセッサとの間で双方向の通信を行うコントローラとを有し、各プロセッサがそれぞれ自己に割り当てられたオブジェクト画像の状態を表現するためのオブジェクトデータを生成する装置であって、
前記複数のプロセッサの少なくとも一つが、
前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を所定範囲で変化可能なゆらぎ変数に基づいて発生させる手段と、
発生した候補状態変数値を前記コントローラへ個別的に送出するとともに、自らが送出した前記候補状態変数値を含む参照用数値を前記コントローラから受け取る手段と、
前記受け取った参照用数値と前記発生した候補状態変数値との相対関係を定量化し、その結果が当該プロセッサに固有となる所定の範囲内にある場合にその候補状態変数値に基づいて当該時点での前記オブジェクトデータを生成する手段とを備えることを特徴とする、
画像処理装置。
【請求項１０】
複数のプロセッサと各プロセッサとの間で双方向の通信を行うコントローラとを有し、各プロセッサがそれぞれ自己に割り当てられたオブジェクト画像の状態を表現するためのオブジェクトデータを生成する装置であって、
前記複数のプロセッサの少なくとも一つが、
前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を複数発生させるとともに、複数の候補状態変数値から所定の条件値との一致度合いが最も高い第１候補状態変数値を特定する手段と、
特定した前記第１候補状態変数値を前記コントローラへ個別的に送出するとともに、自らが送出した前記第１候補状態変数値を含む参照用数値を前記コントローラから受け取る手段と、
前記受け取った参照用数値と前記特定した第１候補状態変数値との相対関係を定量化し、その結果が当該プロセッサに固有となる所定の範囲内にある場合にその第１候補状態変数値に基づいて当該時点での前記オブジェクトデータを生成する手段とを備えることを特徴とする、
画像処理装置。
【請求項１１】
コンピュータシステムをオブジェクト画像の状態を表現するためのオブジェクトデータを生成する画像処理装置として動作させるためのコンピュータプログラムであって、
前記画像処理装置が、
前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を、所定範囲で変化可能なゆらぎ変数を用いて時系列に複数発生させる手段と、
前記発生した複数の候補状態変数値のうち所定の条件値との一致度合いが最も高い第１候補状態変数値を前記状態変数値として時点毎に時系列に決定していき、各時点で決定した状態変数値に基づいて当該時点の前記オブジェクトデータを生成する手段とを備える、
コンピュータプログラム。
【請求項１２】
コンピュータシステムを画像処理装置として動作させるためのコンピュータプログラムであって、
前記画像処理装置が、複数のプロセッサと各プロセッサとの間で双方向の通信を行うコントローラとを有し、各プロセッサがそれぞれ自己に割り当てられたオブジェクト画像の状態を表現するためのオブジェクトデータを生成するものであり、
前記複数のプロセッサの少なくとも一つが、
前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を所定範囲で変化可能なゆらぎ変数に基づいて発生させる手段と、
発生した候補状態変数値を前記コントローラへ個別的に送出するとともに、自らが送出した前記候補状態変数値を含む参照用数値を前記コントローラから受け取る手段と、
前記受け取った参照用数値と前記発生した候補状態変数値との相対関係を定量化し、その結果が当該プロセッサに固有となる所定の範囲内にある場合にその候補状態変数値に基づいて当該時点での前記オブジェクトデータを生成する手段とを備えるものであることを特徴とする、
コンピュータプログラム。
【請求項１３】
コンピュータシステムを画像処理装置として動作させるためのコンピュータプログラムであって、
前記画像処理装置が、複数のプロセッサと各プロセッサとの間で双方向の通信を行うコントローラとを有し、各プロセッサがそれぞれ自己に割り当てられたオブジェクト画像の状態を表現するためのオブジェクトデータを生成するものであって、
前記複数のプロセッサの少なくとも一つが、
前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を複数発生させるとともに、複数の候補状態変数値から所定の条件値との一致度合いが最も高い第１候補状態変数値を特定する手段と、
特定した前記第１候補状態変数値を前記コントローラへ個別的に送出するとともに、自らが送出した前記第１候補状態変数値を含む参照用数値を前記コントローラから受け取る手段と、
前記受け取った参照用数値と前記特定した第１候補状態変数値との相対関係を定量化し、その結果が当該プロセッサに固有となる所定の範囲内にある場合にその第１候補状態変数値に基づいて当該時点での前記オブジェクトデータを生成する手段とを備えるものであることを特徴とする、
コンピュータプログラム。
【請求項１４】
請求項１１〜１３のいずれか１項に記載されたコンピュータプログラムを記録してなる、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、オブジェクト画像の状態をコンピュータグラフィクス（ＣＧ）によって表現するためのオブジェクトデータの処理技術に関し、より詳しくは、オブジェクト画像をカオス的な動きで表現する上で好適となる画像処理方法及び画像処理装置に関する。「オブジェクト」とは表現対象となる物体をいう。この明細書では、不規則に動く生物やそれに類する物体を「オブジェクト」とする。
【０００２】
【発明の背景】
ＣＧにより表現されるオブジェクト画像がどのように動くかは、ＣＧの設計者が製作段階で決めたプログラムに従って決められる。この種のプログラムでは、例えば、公知のモーションキャプチャを用いたり、物理法則を用いた数値計算を行うことによって、オブジェクト画像の動きを決めている。
オブジェクトは、通常は一定の論理で動くため、その動きがある程度予想される。そのために、上記のようなプログラムによってその動きを容易に決めることができ、それを表現したオブジェクト画像の動きも自然な動きとなる。
しかし、予期しない動きをするオブジェクト画像を表現しようとすると、プログラムの設計によっては、動きが不自然なオブジェクト画像になってしまったりする場合がある。特に、複数のオブジェクトが相互に関連を持ちながら、かつ全体として合目的に動くような生物的な動きを表現しようとすると、それを実現するためのプログラムの設計が著しく困難となる。このようなプログラムを制作した場合であっても、それにより行われる画像処理では、大量のデータ処理が必要となり、処理時間がかかる。そのため、リアルタイム処理が要求されるビデオゲームなどで上記の生物的な動きの表現を行うことは、通常は不向きとなる。
【０００３】
しかしながら、最近のビデオゲームなどでは、ユーザの興趣性を高めるために、論理に裏付けられない、より自然で自由な、ユーザが予想できないような動きをするオブジェクト画像の表現が求められている。
このような表現を可能にするために、乱数などによるゆらぎ変数を用いる手法自体は、画像処理の分野では、従来より知られていた。すなわち、ゆらぎ変数を用いてオブジェクトの位置、形状などの状態を表す状態変数値を求め、これによってカオス的な振る舞いを表現していた。この振る舞いが自然に見えるかどうかは、ゆらぎ変数から得られる状態変数値が所定の範囲内にあるか否かでチェックしており、状態変数値が所定の範囲内であればその状態変数値を採用し、所定の範囲外であれば不自然な振る舞いになるため、その状態変数値を採用せずに、もう一度ゆらぎ変数を用いて状態変数値を求めていた。
【０００４】
前述のように、複数のオブジェクトが相互に関連を持ちながら、かつ全体として合目的に動作するような動きを表現する場合は、データ処理が大量になることから、複数のプロセッサによりデータ処理を行うマルチプロセッサ方式を採用することが考えられる。
マルチプロセッサ方式を採用する場合、物理的に接続されたプロセッサ間の状態変数値の送受は容易であるが、すべてのプロセッサ間で相互に状態変数値を送受する必要がある場合には、状態変数値の送受に時間がかかるために、高速処理が出来ない。
例えば、一つのプロセッサで一つのオブジェクトの状態変数値を求める場合、直接接続されたプロセッサ間では、状態変数値を、相互に直接送受することが容易なので、オブジェクト間に相互に関連を持たせることが容易であるが、しかし、直接接続されていないプロセッサ間では、状態変数値を直接送受することができない。この場合は、送受しようとするプロセッサに接続されている他のプロセッサを経由して状態変数値を送受することになるため、高速に処理することができない。
すべてのプロセッサ間をクロスバー接続することにより、状態変数値の送受をマルチプロセッサ全体で高速に行うことも可能であるが、この場合、必要なハードウェアが膨大になり、現実的ではない。
【０００５】
本発明の主たる課題は、オブジェクト画像の動きを、より自然に表現できるようにする画像処理方法及び装置を提供することにある。
本発明の他の課題は、複数のオブジェクトが相互に関連を持ちながら全体として合目的に動くようなオブジェクトの動きを高速に表現できるようにする画像処理方法及び装置を提供することにある。
本発明の他の課題は、上記の画像処理装置をコンピュータシステムにおいて実現するためのコンピュータプログラムを提供することにある。
【０００６】
【課題を解決するための手段】
本発明が提供する画像処理方法は、オブジェクト画像の状態を表現するためのオブジェクトデータを生成する装置において、前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を所定個数発生させ、所定の条件値との一致度合いが最も高い第１候補状態変数値を前記状態変数値として決定し、この決定した状態変数値に基づいて当該時点の前記オブジェクトデータを生成することを特徴とする方法である。
時点毎に最適な第１候補状態変数値に基づいて状態変数値を決定し、これに基づいてオブジェクトデータを生成するので、上記の条件値としてオブジェクト画像の動きを規定しておくことで、自由な動きのオブジェクト画像を容易に表現することができるようになる。
【０００７】
前記所定個数の候補状態変数値を、所定範囲で変化可能なゆらぎ変数を用いて時系列に発生させ、前記状態変数値を時点毎に時系列に決定していくことにより、前記オブジェクト画像をカオス的に表現するための前記オブジェクトデータを容易に生成できるようになる。
【０００８】
本発明の他の画像処理方法は、複数のプロセッサと各プロセッサとの間で双方向の通信を行うコントローラとを有し、各プロセッサがそれぞれ自己に割り当てられたオブジェクト画像の状態を表現するためのオブジェクトデータを生成する装置において実行される方法であって、
前記複数のプロセッサの少なくとも一つが、前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を発生させ、この候補状態変数値を前記コントローラへ個別的に送出し、
前記候補状態変数値を受け取ったコントローラが、その候補状態変数値を含む参照用数値をすべてのプロセッサに同時期に一斉送出し、
前記候補状態変数値を送出したプロセッサが、前記コントローラから受け取った前記参照用数値と当該候補状態変数値との相対関係を定量化してその結果が当該プロセッサに固有となる所定の範囲内にある場合にその候補状態変数値に基づいて当該時点での前記オブジェクトデータを生成することを特徴とする。
「参照用数値」とは、プロセッサから送られた一又は複数の候補状態変数値をコントローラからすべてのプロセッサに転送し、各プロセッサにおいて上記相対関係を判断する場合の参照用とする数値をいう。あるプロセッサから一つの候補状態変数値のみが送られた場合、通常は参照用数値とその候補状態変数値は同じ数値となる。候補状態変数値が複数の場合には、平均値を参照用数値とすることができる。
【０００９】
参照用数値により、自プロセッサで発生した候補状態変数値を他のすべてのプロセッサに対して容易に送れるようになる。つまり、従来、直接接続されたプロセッサ以外のプロセッサに処理結果等を送るときには、直接接続されたプロセッサ間を経由して送る必要があるために、例えば、複数のプロセッサのすべてに処理結果を送るときなどは多大な時間を要した。しかし、コントローラによりすべてのプロセッサの処理結果を取り込み、これを参照用数値として各プロセッサに一斉に送出可能としたことで、すべてのプロセッサに、従来より短時間で、処理結果を送ることが可能となる。
また、他のプロセッサで発生した候補状態変数値を受け取ることも容易に可能となる。そのために、自プロセッサで発生した候補状態変数値を、他のプロセッサで発生した候補状態変数値と比較して、自プロセッサで発生した候補状態変数値の妥当性を容易に確認可能となる。これにより、例えば、複数のオブジェクトが相互に関連を持ちながら全体として合目的に動くような動作が高速に表現できるようになる。
【００１０】
本発明の他の画像処理方法は、複数のプロセッサ及び各プロセッサとの間で双方向の通信を行うコントローラを有し、各プロセッサがそれぞれ自己に割り当てられたオブジェクト画像の状態を表現するためのオブジェクトデータを生成する装置において実行される方法であって、
前記複数のプロセッサの少なくとも一つが、それぞれ前記オブジェクト画像の状態を定める状態変数値の候補となる候補状態変数値を所定個数発生させるとともに所定の条件値との一致度合いが最も高い第１候補状態変数値を前記コントローラに個別的に送出し、
前記第１候補状態変数値を受け取った前記コントローラが、その第１候補状態変数値を含む参照用数値をすべてのプロセッサに同時期に一斉送出し、
前記第１候補状態変数値を送出したプロセッサが、前記コントローラから受け取った参照用数値と前記第１候補状態変数値との相対関係を定量化してその結果が当該プロセッサに固有となる所定の範囲内にある場合にその第１候補状態変数値に基づいて前記オブジェクトデータを生成することを特徴とする。
最適な候補状態変数値（第１候補状態変数値）に基づいて状態変数値を決定し、これに基づいてオブジェクトデータを生成するので、上記の条件値としてオブジェクト画像の動きを規定しておくことで、自由な動きのオブジェクト画像を容易に表現することができるようになる。
また、この方法では、第１候補状態変数値を、コントローラにより、すべてのプロセッサに短時間で送ることが可能なので、複数のオブジェクトが相互に関連を持ちながら全体として合目的に動くようなオブジェクトの動きを高速に表現できる。
【００１１】
前記複数のプロセッサの少なくとも一つに、所定範囲で変化可能なゆらぎ変数を発生させ、そのゆらぎ変数に基づいて前記候補状態変数値を発生させるようにすることで、前記オブジェクト画像をカオス的に表現するための前記オブジェクトデータを容易に生成できるようになる。
参照用数値は、候補状態変数値の他に、上記のようなゆらぎ変数値を含んでもよい。つまり、前記ゆらぎ変数を発生させたプロセッサが、そのゆらぎ変数を前記コントローラに個別的に送出し、
前記ゆらぎ変数を受け取った前記コントローラが、受け取ったすべてのゆらぎ変数の平均値をとり、この平均値を前記ゆらぎを送出したすべてのプロセッサに一斉送出し、
前記平均値を受け取ったプロセッサが、その平均値と前記発生させたゆらぎ変数とに基づいて前記候補状態変数値を発生させる。
これにより、候補状態変数値を発生させるためのゆらぎ変数値に、他のプロセッサで発生したゆらぎ変数値の影響を反映させることができるようになる。これにより、例えば、個々のオブジェクトはそれぞれ独立して動作しているように見えても、全体としては一つの群のように動作する画像を得ることができる。
オブジェクトデータを生成するこれらの装置では、前記複数のプロセッサを一以上のグループに分け、一つのグループ内のプロセッサの各々が決定した前記候補状態変数値の一つを当該グループに属するすべてのプロセッサで用いる共通の状態変数値とするようにしてもよい。これは、一つのプロセッサで複数の候補状態変数値を発生させて、この中から最も条件値との一致度合いが高い第１候補状態変数値を状態変数値とする場合と同様に、自由な動きのオブジェクト画像を容易に表現することができるようになるが、グループに属するプロセッサで候補状態変数値を発生させるために、一つのプロセッサで行うよりも高速な処理が可能となる。
【００１２】
本発明の画像処理装置は、オブジェクト画像の状態を表現するためのオブジェクトデータを生成する装置であって、前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を、所定範囲で変化可能なゆらぎ変数を用いて時系列に発生させる手段と、前記発生した所定個数の候補状態変数値のうち所定の条件値との一致度合いが最も高い第１候補状態変数値を前記状態変数値として時点毎に時系列に決定していき、各時点で決定した状態変数値に基づいて当該時点の前記オブジェクトデータを生成する手段とを備える。これにより、前記オブジェクト画像をカオス的に表現する。
【００１３】
本発明の他の画像処理装置は、複数のプロセッサと各プロセッサとの間で双方向の通信を行うコントローラとを有し、各プロセッサがそれぞれ自己に割り当てられたオブジェクト画像の状態を表現するためのオブジェクトデータを生成する装置であって、前記複数のプロセッサの少なくとも一つが、前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を発生させる手段と、発生した候補状態変数値を前記コントローラへ個別的に送出するとともに、自らが送出した前記候補状態変数値を含む参照用数値を前記コントローラから受け取る手段と、前記受け取った参照用数値と前記発生した候補状態変数値との相対関係を定量化し、その結果が当該プロセッサに固有となる所定の範囲内にある場合にその候補状態変数値に基づいて当該時点での前記オブジェクトデータを生成する手段とを備える画像処理装置である。
【００１４】
本発明の他の画像処理装置は、複数のプロセッサと各プロセッサとの間で双方向の通信を行うコントローラとを有し、各プロセッサがそれぞれ自己に割り当てられたオブジェクト画像の状態を表現するためのオブジェクトデータを生成する装置であって、前記複数のプロセッサの少なくとも一つが、前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を所定個数発生させるとともに所定の条件値との一致度合いが最も高い第１候補状態変数値を特定する手段と、特定した前記第１候補状態変数値を前記コントローラへ個別的に送出するとともに、自らが送出した前記第１候補状態変数値を含む参照用数値を前記コントローラから受け取る手段と、前記受け取った参照用数値と前記特定した第１候補状態変数値との相対関係を定量化し、その結果が当該プロセッサに固有となる所定の範囲内にある場合にその第１候補状態変数値に基づいて当該時点での前記オブジェクトデータを生成する手段とを備える画像処理装置である。
【００１５】
本発明のコンピュータプログラムは、コンピュータシステムをオブジェクト画像の状態を表現するためのオブジェクトデータを生成する画像処理装置として動作させるためのコンピュータプログラムであって、前記画像処理装置が、前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を、所定範囲で変化可能なゆらぎ変数を用いて時系列に発生させる手段と、前記発生した所定個数の候補状態変数値のうち所定の条件値との一致度合いが最も高い第１候補状態変数値を前記状態変数値として時点毎に時系列に決定していき、各時点で決定した状態変数値に基づいて当該時点の前記オブジェクトデータを生成する手段とを備え、これにより、前記オブジェクト画像をカオス的に表現するものである。
【００１６】
本発明の他のコンピュータプログラムは、コンピュータシステムを画像処理装置として動作させるためのコンピュータプログラムであって、前記画像処理装置が、複数のプロセッサと各プロセッサとの間で双方向の通信を行うコントローラとを有し、各プロセッサがそれぞれ自己に割り当てられたオブジェクト画像の状態を表現するためのオブジェクトデータを生成するものであり、前記複数のプロセッサの少なくとも一つが、前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を発生させる手段と、発生した候補状態変数値を前記コントローラへ個別的に送出するとともに、自らが送出した前記候補状態変数値を含む参照用数値を前記コントローラから受け取る手段と、前記受け取った参照用数値と前記発生した候補状態変数値との相対関係を定量化し、その結果が当該プロセッサに固有となる所定の範囲内にある場合にその候補状態変数値に基づいて当該時点での前記オブジェクトデータを生成する手段とを備えるものである。
【００１７】
本発明の他のコンピュータプログラムは、コンピュータシステムを画像処理装置として動作させるためのコンピュータプログラムであって、前記画像処理装置が、複数のプロセッサと各プロセッサとの間で双方向の通信を行うコントローラとを有し、各プロセッサがそれぞれ自己に割り当てられたオブジェクト画像の状態を表現するためのオブジェクトデータを生成するものであって、前記複数のプロセッサの少なくとも一つが、前記オブジェクト画像のある時点での状態を定める状態変数値の候補となる候補状態変数値を所定個数発生させるとともに所定の条件値との一致度合いが最も高い第１候補状態変数値を特定する手段と、特定した前記第１候補状態変数値を前記コントローラへ個別的に送出するとともに、自らが送出した前記第１候補状態変数値を含む参照用数値を前記コントローラから受け取る手段と、前記受け取った参照用数値と前記特定した第１候補状態変数値との相対関係を定量化し、その結果が当該プロセッサに固有となる所定の範囲内にある場合にその第１候補状態変数値に基づいて当該時点での前記オブジェクトデータを生成する手段とを備えるものである。
【００１８】
【発明の実施の形態】
以下に、本発明の実施形態を図面を参照しつつ詳細に説明する。
【００１９】
＜全体構成＞
図１は、本発明の画像処理装置を、マルチプロセッサシステムに適用した場合の全体の構成図の一例である。
このマルチプロセッサシステム１は、影響コントローラ１０と、複数のセルプロセッサ２０と、複数のＷＴＡ（winner take all）・総和回路３０と、を含んで構成されている。
影響コントローラ１０とすべてのセルプロセッサ２０とは、ブロードキャストチャネル（一斉送出可能な通信チャネル）により接続されている。
本発明のコントローラは、影響コントローラ１０とＷＴＡ・総和回路３０とにより具現されている。
【００２０】
このマルチプロセッサシステム１は、各セルプロセッサ２０のデータ処理結果であり、ある時点におけるオブジェクトの状態を表現するための状態変数値を影響コントローラ１０により管理して、影響コントローラ１０からすべてのセルプロセッサ２０の状態変数値を、参照用数値の一例として各セルプロセッサ２０へブロードキャストにより送信するものである。ブロードキャストにより状態変数値を各セルプロセッサ２０へ送信するので、各セルプロセッサ２０は、高速に他のセルプロセッサ２０により発生された状態変数値を入手可能である。
状態変数値は、各セルプロセッサ２０により行われるデータ処理の結果として得られる値であり、ＣＧによるオブジェクトの位置座標、形状、色等の状態を表す。状態変数値は、乱数などのランダムに変化するゆらぎ変数を用いて発生することにより、カオス的なゆらぎをもつ変数となる。ゆらぎ変数は、例えば以下の式により得られる値である。
【数１】
Ｒk+1＝４＊Ｒk＊（１−Ｒk）
０＜Ｒk＜１
Ｒk：ゆらぎ変数
【００２１】
ブロードキャストチャネルは、影響コントローラ１０と複数のセルプロセッサ２０との間の伝送経路であり、アドレスを送るアドレスバスと、各セルプロセッサ２０のデータ処理結果である状態変数値などのデータを送るデータバスとを含んで構成される。アドレスには、個々のセルプロセッサ２０を特定するためのセルアドレスと、すべてのセルプロセッサ２０を対象とするブロードキャストアドレスとがある。セルアドレスは、メモリ上のアドレス（物理アドレス又は論理アドレス）に対応しており、セルプロセッサ２０のデータ処理結果は、常に、当該セルプロセッサ２０を示すセルアドレスに対応するアドレスに記憶される。各セルプロセッサ２０には、各々を識別するための識別情報としてＩＤ（identification）が付されている。セルアドレスはこのＩＤにも対応する。これにより、例えば、送信されるデータがどのセルプロセッサ２０により導出されたかを、セルアドレスにより表すことができる。
【００２２】
複数のＷＴＡ・総和回路３０は、図１に示すように接続される。即ち、ＷＴＡ・総和回路３０は、セルプロセッサ２０側を一段目としてピラミッド状に接続される。一段目のＷＴＡ・総和回路３０の入力端の各々には２つのセルプロセッサ２０が接続され、出力端は二段目のＷＴＡ・総和回路３０の入力端に接続される。二段目以降は、入力端の各々に下位の段の２つのＷＴＡ・総和回路３０の出力が接続され、出力端に上位の段のＷＴＡ・総和回路３０の入力端が接続される。最上段のＷＴＡ・総和回路３０は、入力端の各々に下段の２つのＷＴＡ・総和回路３０の出力端が接続され、出力端は影響コントローラ１０に接続される。
【００２３】
次に、影響コントローラ１０、セルプロセッサ２０、ＷＴＡ・総和回路３０のそれぞれについて詳細に説明する。
【００２４】
＜影響コントローラ＞
影響コントローラ１０は、ブロードキャストチャネルによりすべてのセルプロセッサ２０にデータをブロードキャストするとともに、各セルプロセッサ２０の状態変数値を受信して保持する。図２に影響コントローラ１０の構成例を示す。影響コントローラ１０は、マルチプロセッサシステム１全体の動作を制御するＣＰＵ（Central Processor Unit）コア１０１と、ＳＲＡＭ（Static Random Access Memory）などの書き換え可能なメインメモリ１０２と、ＤＭＡＣ（Direct Memory Access Controller）１０３とがバスＢ１で接続されて構成される。バスＢ１には、最上段のＷＴＡ・総和回路３０の出力端及びハードディスクや可搬性メディア等の外部メモリも接続される。
【００２５】
ＣＰＵコア１０１は、起動時に外部メモリから起動プログラムを読み込み、その起動プログラムを実行してオペレーティングシステムを動作させる。また、メインメモリ１０２から読み出したデータに基づいて、各セルプロセッサ２０に対してブロードキャストするブロードキャストデータ（参照用数値）を生成する。ブロードキャストデータは、例えば、状態変数値と当該状態変数値を算出したセルプロセッサ２０を示すセルアドレスとの組からなる、１又は複数組のペアデータである。
また、各セルプロセッサ２０が状態変数値を発生させる際に用いる所定の条件となる拘束条件を生成する。拘束条件とは、例えば、セルプロセッサ２０で発生させる状態変数値が取り得る値の範囲を指定する条件である。拘束条件値は、例えば、各セルプロセッサ２０に固定した値であったり、各セルプロセッサ２０より発生された１サイクル前の状態変数値から導出する。
メインメモリ１０２は、各セルプロセッサ２０の状態変数値などのデータを保存するものであり、マルチプロセッサシステム１全体の共有メモリとして用いられる。状態変数値は、当該状態変数値を算出したセルプロセッサ２０のセルアドレスに応じたメインメモリ１０２のアドレスに保存される。
ＤＭＡＣ１０３は、メインメモリ１０２と各セルプロセッサ２０との間のダイレクトメモリアクセス転送制御を行う。例えば、各セルプロセッサ２０に対しては、ブロードキャストチャネルを介して、ブロードキャストデータをブロードキャストする。また、各セルプロセッサ２０のデータ処理結果を個別に取得して、メインメモリ１０２に保存する。
【００２６】
＜セルプロセッサ＞
各セルプロセッサ２０は、ブロードキャストデータの中から必要となるデータを取捨選択してデータ処理を行い、データ処理の終了時に、その旨をＷＴＡ・総和回路３０へ報告する。データ処理の結果である状態変数値を、影響コントローラ１０からの指示により、影響コントローラ１０送出する。各セルプロセッサ２０は、図示しない共有メモリを介してカスケード接続される。各セルプロセッサ２０は、データ処理を同期的なクロックで行ってもよく、各々異なるクロックで行ってもよい。図３にセルプロセッサ２０の構成例を示す。
セルプロセッサ２０は、セルＣＰＵ２０１と、入力バッファ２０２と、出力バッファ２０３と、ＷＴＡバッファ２０４と、プログラムコントローラ２０５と、命令メモリ２０６と、データメモリ２０７と、を含んで構成される。
【００２７】
セルＣＰＵ２０１は、プログラマブルな浮動小数点演算器を備えたプロセッサであり、セルプロセッサ２０内の動作を制御して、データ処理を行うものである。セルＣＰＵ２０１は、影響コントローラ１０からブロードキャストされたブロードキャストデータを入力バッファ２０２を介して取得し、ペアデータのセルアドレスにより自己が行うべき処理に必要なデータか否かを判断して、必要であればデータメモリ２０７の対応するアドレスに状態変数値を書き込む。また、データメモリ２０７から状態変数値を読み出してデータ処理を行い、発生した状態変数値を出力バッファ２０４に書き込み、ＷＴＡ・総和回路３０にデータ処理の終了を示すデータを送る。
【００２８】
入力バッファ２０２は、影響コントローラ１０からブロードキャストされたブロードキャストデータを保持するものである。保持されたブロードキャストデータは、セルＣＰＵ２０１からの要求により、セルＣＰＵ２０１へ送られる。
出力バッファ２０３は、セルＣＰＵ２０１の状態変数値を保持するものである。保持された状態変数値は、影響コントローラ１０からの要求により、影響コントローラ１０へ送信される。
入力バッファ２０２及び出力バッファ２０３は、この他に制御用のデータ等の送受を行ってもよい。
ＷＴＡバッファ２０４は、セルＣＰＵ２０１によるデータ処理の終了時に、セルＣＰＵ２０１からデータ処理の終了を示すデータを受信して、これをＷＴＡ・総和回路３０へ送信することにより、データ処理の終了をＷＴＡ・総和回路３０に報告するものである。データ処理の終了を示すデータには、例えば、自セルプロセッサ２０のＩＤと、出力バッファ２０３に保存された状態変数値が影響コントローラ１０へ読み取られるときの優先度を決める優先度データとが含まれる。
【００２９】
プログラムコントローラ２０５は、セルプロセッサ２０の動作を規定するプログラムを影響コントローラ１０から取り込むものである。セルプロセッサ２０の動作を規定するプログラムには、セルプロセッサ２０で実行されるデータ処理のためのプログラムや、当該セルプロセッサ２０で処理に必要なデータを決めるデータ選択プログラム、処理結果が影響コントローラ１０へ読み取られるときの優先度を決める優先度決定プログラムなどがある。
命令メモリ２０６は、プログラムコントローラ２０５により取り込んだプログラムを保存するものである。保存したプログラムは、必要に応じてセルＣＰＵ２０１に読み込まれる。
【００３０】
データメモリ２０７は、セルプロセッサ２０において処理されるデータを保存するものである。セルＣＰＵ２０１により必要と判断されたブロードキャストデータが書き込まれる。ブロードキャストデータは、セルアドレスに応じたアドレスに保存される。また、本実施形態では、候補状態変数値及び比較値の組を一時保存すると共に、新たな状態変数値が決定すると、新たな状態変数値が所定のアドレスに書き込まれる。
また、本実施形態ではデータメモリ２０７の一部は共有メモリを介して隣接するセルプロセッサ２０に繋がっており、１サイクル毎に隣接するセルプロセッサ２０とデータの送受が可能となっている。
【００３１】
セルＣＰＵ２０１には、コンピュータプログラムを実行することによって、図４に示すように、ゆらぎ生成部２０１１、候補状態変数値生成部２０１２、比較値生成部２０１３、比較部２０１４等の機能ブロックが形成される。このコンピュータプログラムは、命令メモリ２０６に保存されており、プログラムコントローラ２０５を介して影響コントローラ１０から送られたものである。
【００３２】
ゆらぎ生成部２０１１は、例えば数式１などによりゆらぎ変数を発生するものである。発生したゆらぎ変数は、候補状態変数値生成部２０１２へ送られる。
候補状態変数値生成部２０１２は、ゆらぎ変数に基づいて状態変数値の候補である候補状態変数値を生成するものである。生成した候補状態変数値は、比較値生成部２０１３へ送られる。候補状態変数値は、所定の条件を満たすことにより状態変数値とされる。
比較値生成部２０１３は、候補状態変数値生成部２０１２により発生した候補状態変数値とブロードキャストデータから取捨選択した状態変数値とにより所定の演算を行って算出した値と、外部から入力される所定の条件値である拘束条件値とを比較して、比較値を導出する。比較値は、候補状態変数値が、現時点のセルプロセッサ２０の状態変数値としてどの程度適しているかを表す値である。比較値は、例えば、発生した候補状態変数値と取捨選択した状態変数値とから算出される値と、拘束条件値との差分値である。候補状態変数値と比較値とを組にして、データメモリ２０７に保存する。また、以上のようにして生成される候補状態変数値と比較値の組を計数する。拘束条件値は、例えば、命令メモリ２０６を経由して、影響コントローラ１０から取り込む。
比較部２０１４は、複数の比較値から最適と判断される比較値を検出する。最適と判断される比較値とは、例えば、比較値が、候補状態変数値と取捨選択した状態変数値とから算出される値と、拘束条件値との差分値である場合、最小の比較値ということになる。最適な比較値を検出すると、ＷＴＡバッファ２０４へデータ処理の終了を示すデータを送信する。また、最適と判断した比較値と組になる候補状態変数値を、自セルプロセッサ２０の新たな状態変数値として、データメモリ２０７の所定のアドレスに保存し、他の候補状態変数値及び比較値を消去する。
【００３３】
＜ＷＴＡ・総和回路＞
複数のＷＴＡ・総和回路３０は、各セルプロセッサ２０から送られるデータ処理の終了を示すデータにより、影響コントローラ１０がセルプロセッサ２０から状態変数値を取り込む順序を決めて影響コントローラ１０へ報告する。
【００３４】
図５にＷＴＡ・総和回路３０の構成例を示す。
各ＷＴＡ・総和回路３０は、２つの入力レジスタＡ、Ｂ（以下、第１入力レジスタ３０１、第２入力レジスタ３０２）と、切換器３０３と、比較器３０４と、加算器３０５と、出力レジスタ３０６と、を含んで構成される。
【００３５】
第１入力レジスタ３０１及び第２入力レジスタ３０２は、それぞれ整数レジスタ及び浮動小数点レジスタを備えている。整数レジスタには、例えばセルプロセッサ２０から送られるデータ処理の終了を示すデータのうち、ＩＤデータが書き込まれ、浮動小数点レジスタには、例えば優先度データが書き込まれる。
【００３６】
切換器３０３は、比較器３０４及び加算器３０５のいずれか一方を活性化する。具体的には、動作モードに従って一方のみを使用可能とする。動作モードは、例えば影響コントローラ１０からの指示により決められる。動作モードについては、後述する。
比較器３０４は、第１入力レジスタ３０１及び第２入力レジスタ３０２の各々の浮動小数点レジスタが保持する浮動小数点値の比較を行い、大きい方（又は小さい方）の値と、それに付随する整数とを、出力レジスタ３０６へ書き込む。
加算器３０５は、第１入力レジスタ３０１及び第２入力レジスタ３０２の各々の浮動小数点レジスタが保持する浮動小数点値の和を算出し、算出結果を出力レジスタへ書き込む。
出力レジスタ３０６は、第１入力レジスタ３０１及び第２入力レジスタ３０２とほぼ同じに構成される。つまり、整数レジスタ及び浮動小数点レジスタを備えている。整数レジスタには、例えばＩＤデータが書き込まれ、浮動小数点レジスタには、例えば優先度データが書き込まれる。
【００３７】
ＷＴＡ・総和回路３０は、以下に説明する３つの動作モードをもつ。
【００３８】
最大値（ＷＴＡ）モード：
切換器３０３により、比較器３０４が活性化される。比較器３０４は、第１入力レジスタ３０１及び第２入力レジスタ３０２の各々の浮動小数点レジスタが保持する浮動小数点値Ａ、Ｂの比較を行い、大きい方（又は小さい方）の値と、それに付随する整数値を出力レジスタ３０６に書き込む。出力レジスタ３０６への書き込みが終了すると、第１入力レジスタ３０１及び第２入力レジスタ３０２をクリアする。出力レジスタ３０６の内容は、上位の段のＷＴＡ・総和回路３０の入力レジスタに書き込まれる。このとき、書き込み先の入力レジスタがクリアされていないときは、書き込みがストールして、そのサイクルでは書き込みを行わず、次のサイクルで書き込むようにする。
【００３９】
加算モード：
切換器３０３により、加算器３０５が活性化される。加算器３０５により、第１入力レジスタ３０１及び第２入力レジスタ３０２の各々の浮動小数点レジスタが保持する浮動小数点値Ａ，Ｂの和を算出し、算出結果を出力レジスタ３０６に書き込む。出力レジスタ３０６の内容は、上位の段のＷＴＡ・総和回路３０の入力レジスタに書き込まれる。
【００４０】
近似ソートモード：
切換器３０３により、比較器３０４が活性化される。比較器３０４は、第１入力レジスタ３０１及び第２入力レジスタ３０２の各々の浮動小数点レジスタが保持する浮動小数点値Ａ、Ｂの比較を行い、大きい方（又は小さい方）の値と付随する整数値を出力レジスタ３０６に書き込む。その後、出力レジスタ３０６に書き込まれた値を保持していた入力レジスタのみをクリアする。出力レジスタ３０６の内容を、上位の段のＷＴＡ・総和回路３０の入力レジスタに書き込む。書き込み先の入力レジスタがクリアされていない場合は、書き込みがストールし、そのサイクルでは書き込みを行わない。ただし、下位の段のＷＴＡ・総和回路３０の出力レジスタ３０６からの書き込み動作は行われる。
近似ソートモードにより、影響コントローラ１０が最上段のＷＴＡ・総和回路３０から受け取るデータは、浮動小数点値が多きい順或いは小さい順にソートされたものとなる。
【００４１】
なお、各モードに入る前には、すべてのＷＴＡ・総和回路３０の第１入力レジスタ３０１、第２入力レジスタ３０２及び出力レジスタ３０６がクリアされる。
【００４２】
＜実施例１＞
この実施例では、セルプロセッサ２０毎に設定される拘束条件値で状態変数値を更新する場合について説明する。図６は、このような処理のフローチャートである。
この例では、複数のオブジェクトが互いの距離を一定に保ちながら運動するようなアニメーションを作成する場合について説明する。オブジェクトの位置を表す位置座標を、Ｘ、Ｙ、Ｚの直交座標系で表し、一個のセルプロセッサでは、一個のオブジェクトの位置座標を算出するものとする。ｉ番目のセルプロセッサで処理されるｋサイクル目の位置座標を、（Ｘi,k、Ｙi,k、Ｚi,k）と表す。この場合、位置座標が状態変数値である。
【００４３】
影響コントローラ１は、各セルプロセッサ２０の状態変数値である各オブジェクトの位置座標を、メインメモリ１０２から読み出してすべてのセルプロセッサ２０へブロードキャストする（ステップＳ１０１）。各セルプロセッサ２０では、ブロードキャストされた位置座標から、自プロセッサで必要となる位置座標のみを取捨選択する（ステップＳ１０２）。例えば、ブロードキャストされた位置座標のうち、自プロセッサが処理するオブジェクトに近接するオブジェクトについての処理を行うプロセッサについてのセルアドレスが付された位置座標（Ｘj,k、Ｙj,k、Ｚj,k）を選択する。
【００４４】
次に各セルプロセッサ２０は、Ｘ、Ｙ、Ｚ座標の各々について、ゆらぎ変数を発生する（ステップＳ１０３）。ゆらぎ変数は、例えば以下のような式により発生する。
【数２】
Ａi,k+1  ＝  ４  ＊  Ａi,k  ＊  （１−Ａi,k）
Ｂi,k+1  ＝  ４  ＊  Ｂi,k  ＊  （１−Ｂi,k）
Ｃi,k+1  ＝  ４  ＊  Ｃi,k  ＊  （１−Ｃi,k）
０＜Ａi,k＜１  、  ０＜Ｂi,k＜１  、０＜Ｃi,k＜１
【００４５】
このようにして発生したゆらぎ変数を用いて、候補状態変数値Ｘi,k+1、Ｙi,k+1、Ｚi,k+1を発生する（ステップＳ１０４）。例えば、以下のような式により候補状態変数値を発生する。この式では、ゆらぎ変数Ａi,k+1、Ｂi,k+1、Ｃi,k+1と、１サイクル前の状態変数値Ｘi,k、Ｙi,k、Ｚi,kとの和により候補状態変数値Ｘi,k+1、Ｙi,k+1、Ｚi,k+1を発生している。
【数３】
Ｘi,k+1  ＝  Ａi,k+1  ＋  Ｘi,k
Ｙi,k+1  ＝  Ｂi,k+1  ＋  Ｙi,k
Ｚi,k+1  ＝  Ｃi,k+1  ＋  Ｚi,k
【００４６】
各セルプロセッサ２０は、発生した候補状態変数値（Ｘi,k+1、Ｙi,k+1、Ｚi,k+1）及び取捨選択した状態変数値（Ｘj,k、Ｙj,k、Ｚj,k）から得られる値と、拘束条件値Ｌとから比較値Ｋを算出する。例えば以下のような式により、比較値Ｋを算出する（ステップＳ１０５）。比較値Ｋとそのときに用いた候補状態変数値とは、一つの組としてデータメモリ２０７に保存される。また、比較値Ｋと候補状態変数値との組の個数をカウントする（ステップＳ１０６）。
【数４】
Ｋ＝SQRT（（Ｘj,k−Ｘi,k+1）＾２
＋Ｙj,k−Ｙi,k+1）＾２
＋Ｚj,k−Ｚi,k+1）＾２）−Ｌ
拘束条件値Ｌは、個々のセルプロセッサ２０に固有の数値であり、例えば、当該セルプロセッサで位置座標の計算を行う対象のオブジェクトが、他のオブジェクトとの間で保つ一定の距離である。拘束条件値Ｌは、例えば、プログラムに含ませて、影響コントローラ１０から各セルプロセッサ２０へ予め入力しておく。拘束条件値Ｌは、設計時に予め設計者により決められたり、外部からの入力により決まる数値である。
比較値Ｋは、ｉ番目のセルプロセッサで処理されたｋ＋１サイクル目の位置座標とｊ番目のセルプロセッサで処理されたｋサイクル目の位置座標との距離と、拘束条件値Ｌとの差である。
Ｘj,k、Ｙj,k、Ｚj,kは、取捨選択した状態変数値でありｊ番目のセルプロセッサ２０のｋサイクル目の位置座標を示す状態変数値を表す。
【００４７】
セルプロセッサ２０は、候補状態変数値及び比較値Ｋの組が所定の個数に達したか否かを判定する（ステップＳ１０７）。
判定の結果、所定の個数に達していない場合は、ステップＳ１０３に戻って、再びゆらぎ変数を発生して、候補状態変数値及び比較値Ｋの組を発生する（ステップＳ１０７：N）。
所定の個数に達している場合は（ステップＳ１０７：Y）、絶対値が最も小さい比較値Ｋを検出し（ステップＳ１０８）、この比較値Ｋと組となる候補状態変数値を特定する（ステップＳ１０９）。特定した候補状態変数値が、このセルプロセッサ２０の新しい状態変数値となる。新しい状態変数値により、オブジェクトの新しい位置座標が決定する。
新しい状態変数値を決定すると、その旨を示す終了通知をＷＴＡ・総和回路３０に送信する（ステップＳ１１０）。終了通知は、自プロセッサを示すＩＤを含む通知である。
【００４８】
ＷＴＡ・総和回路３０は、終了通知をセルプロセッサ２０から受信すると、近似ソートモードで動作して、受信した順に終了通知を影響コントローラ１０へ送信する。影響コントローラ１０は、終了通知により新しい状態変数値が決定したセルプロセッサ２０を特定して、該当するセルプロセッサ２０から新しい状態変数値を取得して、メインメモリ１０２が保持する該当するセルプロセッサ２０の状態変数値を更新する（ステップＳ１１１）。
引き続き、次のサイクルにおけるオブジェクトの位置座標の導出を行う。そのために、ステップＳ１０１からの一連の処理を再び行う。このような処理を続けて行うことにより、オブジェクトが連続的に移動する画像が作成される。一連の処理は、例えば、マルチプロセッサシステム１に対して外部から終了の命令があるまで続けられる（ステップＳ１１２）。
【００４９】
ゆらぎ変数を用いてオブジェクトの状態変数値（位置座標）を決定するために、カオス的な表現が可能となって、より自然な動作が可能となる。また、候補状態変数値及び比較値Ｋを所定の個数導出し、この中から最適な比較値Ｋと組となる候補状態変数値を選択して状態変数値を決めるので、ゆらぎ変数を用いている場合でも、オブジェクトが互いの距離を一定に保ちながら運動するという条件を満たすアニメーションが提供可能である。
なお、状態変数値及び比較値Ｋを導出して、比較値Ｋが拘束条件値Ｌを満たす場合に、所定個数の候補状態変数値を発生させずに、そのままこのときの候補状態変数値を新たな状態変数値としてもよい。この場合、拘束条件値Ｌを所定の範囲で表すようにするとよい。
ここで、拘束条件式に用いられるｊ番目のセルプロセッサ２０が、ｉ番目のセルプロセッサ２０と共有メモリを介して接続されている場合は、影響コントローラ１０によるブロードキャストによりｊ番目のセルプロセッサ２０の状態変数値を取得する必要はなく、共有メモリを介して取得するようにしてもよい。
【００５０】
＜実施例２＞
この実施例では、セルプロセッサ２０が、ゆらぎ変数計算時に他のセルプロセッサからの影響を反映させることにより、カオス同期現象によるゆらぎ変数を発生する場合について説明する。図７は、このような処理のフローチャートである。
なお、この実施例は、実施例１に示す処理と、ゆらぎ変数計算（ステップＳ１０３）の工程のみが異なるので、この部分についてのみ説明する。
【００５１】
各セルプロセッサ２０は、ブロードキャストデータからの状態変数値の取捨選択が終了すると（ステップＳ１０２）、ゆらぎ変数Ａi,tmp、Ｂi,tmp、Ｃi,tmpを発生する（ステップＳ１０３１）。ゆらぎ変数は、例えば以下の式により発生する。
【数５】
Ａi,tmp  ＝  ４  ＊  Ａi,k  ＊  （１−Ａi,k）
Ｂi,tmp  ＝  ４  ＊  Ｂi,k  ＊  （１−Ｂi,k）
Ｃi,tmp  ＝  ４  ＊  Ｃi,k  ＊  （１−Ｃi,k）
ゆらぎ変数の発生が終わると、ＷＴＡ・総和回路３０へ、発生したゆらぎ変数を送信する（ステップＳ１０３２）。
【００５２】
ＷＴＡ・総和回路３０は、各セルプロセッサ２０からゆらぎ変数を受信すると、加算モードで動作して、ゆらぎ変数の総和を求め、これを影響コントローラ１０へ送信する（ステップＳ１０３３、Ｓ１０３４）。
【００５３】
影響コントローラ１０は、ゆらぎ変数の総和を受信して、これをセルプロセッサの個数で除算することにより、ゆらぎ変数の平均値AveＡ,k、AveＢ,k、AveＣ,kを算出する（ステップＳ１０３５）。算出したゆらぎ変数の平均値は、すべてのセルプロセッサ２０にブロードキャストされる（ステップＳ１０３６）。
【００５４】
各セルプロセッサ２０は、ブロードキャストされたゆらぎ変数の平均値を用いてカオス同期計算を行う（ステップＳ１０３７）。カオス同期計算は、例えば以下のような式により行う。
【数６】
Ａi,k+1  ＝  α＊Ａi,tmp  ＋  β＊AveＡ,k  ＋  γ＊Ａi+1,tmp
Ｂi,k+1  ＝  α＊Ｂi,tmp  ＋  β＊AveＢ,k  ＋  γ＊Ｂi+1,tmp
Ｃi,k+1  ＝  α＊Ｃi,tmp  ＋  β＊AveＣ,k  ＋  γ＊Ｃi+1,tmp
α＋β＋γ＝１
【００５５】
カオス同期計算により求められたゆらぎ変数には、ステップＳ１０３１で発生したゆらぎ変数、複数のセルプロセッサ２０の各々で発生したゆらぎ変数の平均値、隣接するセルプロセッサで発生したゆらぎ変数が用いられる。つまり、カオス同期計算により求められるゆらぎ変数には、他のセルプロセッサで発生したゆらぎ変数が影響する。なお、隣接するセルプロセッサで発生したゆらぎ変数は、ゆらぎ変数の平均値とともにブロードキャストチャネルを介して影響コントローラ１０から受け取るようにしてもよいが、共有メモリを介して、直接、隣接するセルプロセッサから受け取ってもよい。
各セルプロセッサ２０は、このようにして求めた、カオス同期計算を施したゆらぎ変数Ａi,k+1、Ｂi,k+1、Ｃi,k+1を用いて、候補状態変数値を発生する（ステップＳ１０４）。
【００５６】
α、β、γの値を制御することにより、指定した一部のセルのゆらぎ変数を同期させたり、ずらしたりすることで部分的なセルの群のように見せることが可能となる。
ゆらぎ変数自体は、各セルプロセッサ２０において独自に発生されるものである。そのために、ゆらぎ変数から求められる候補状態変数値も、各セルプロセッサ２０で、無関係に計算される。そこで、この実施例で説明するように複数のセルプロセッサ２０のゆらぎ変数の平均値を計算して、これを用いる。各プロセッサのゆらぎ変数の成分をフィードバックさせることで、カオスの同期計算が可能となる。
カオスの同期現象を用いることにより、オブジェクトが、より実際の生物に近い動作を行うアニメーションを提供できる。つまり、複数のオブジェクトが群をなして動作するような動きが可能となり、全体として、生物のような動きとなる。
【００５７】
＜実施例３＞
この実施例では、複数のセルプロセッサ２０で同じ拘束条件値により状態変数値を更新する場合について説明する。図８は、このような処理のフローチャートである。
セルプロセッサ２０は、例えばＮ個で一つのグループをなしている。一つのグループにおいて、グループをなすＮ個のセルプロセッサ２０のそれぞれで候補状態変数値を導出して、その中から最適な状態変数値を選択する。
【００５８】
影響コントローラ１は、各セルプロセッサ２０の状態変数値を、メインメモリから読み出してすべてのセルプロセッサ２０へブロードキャストする（ステップＳ２０１）。各セルプロセッサ２０では、ブロードキャストされた状態変数値から、自プロセッサで必要となる状態変数値のみを取捨選択する（ステップＳ２０２）。一つのグループをなすＮ個のセルプロセッサ２０では、同じ状態変数値を取捨選択する。
【００５９】
各セルプロセッサ２０は、ゆらぎ変数を発生する（ステップＳ２０３）。発生したゆらぎ変数から候補状態変数値を発生する（ステップＳ２０４）。発生した候補状態変数値及び取捨選択した状態変数値から比較値Ｋを発生する（ステップＳ２０５）。ゆらぎ変数の発生、候補状態変数値の発生及び比較値Ｋの発生は、例えば、数式２、３、４により行う。
なお、一つのグループをなすセルプロセッサ２０では、ゆらぎ変数、候補状態変数値、比較値Ｋを同じ数式により発生するが、ゆらぎ変数は、初期値を変えるなどして、各セルプロセッサ２０で異なるゆらぎ変数を発生するようにする。
候補状態変数値は、データメモリ２０７及び出力バッファ２０３に保存される。比較値Ｋは、自セルプロセッサを示すＩＤと共にＷＴＡ・総和回路３０へ送信される（ステップＳ２０６）。
【００６０】
ＷＴＡ・総和回路３０は、最大値モードで動作し、一つのグループから送信されるＮ個の比較値ＫとＩＤとの組から、最適な比較値Ｋを選択し（ステップＳ２０７）、該当するＩＤを影響コントローラ１０へ送信する。最適な比較値Ｋと組となるＩＤにより特定されるセルコントローラ２０により発生された候補状態変数値が、このグループの新たな状態変数値となる。
影響コントローラ１０は、ＷＴＡ・総和回路３０から送られたＩＤによりセルプロセッサ２０を特定する。特定したセルプロセッサ２０から候補状態変数値を取り込み、メインメモリ１０２の該当するアドレスの状態変数値を更新する（ステップＳ２０８）。
引き続き、次のサイクルにおける状態変数値の導出を行う。そのために、ステップＳ２０１からの一連の処理を再び行う。一連の処理は、例えば、マルチプロセッサシステム１に対して外部から終了の命令があるまで続けられる（ステップＳ２０９）。
【００６１】
以上のような処理により、一つのセルプロセッサ２０で候補状態変数値を複数発生して、その中から最適な状態変数値を選択する実施例１、２よりも、高速に最適な状態変数値を得ることが可能となる。
また、各セルプロセッサ２０で実施例１のステップＳ１０３乃至ステップＳ１０９に示すような処理を行い、複数の候補状態変数値を発生して、この中から最適な状態変数値を検出し、さらに、各セルプロセッサ２０内で最適とされた状態変数値の中から最適な状態変数値を検出するようにしてもよい。このようにすると、より最適な状態変数値を検出することができる。
【００６２】
実施例１乃至３に示す処理は、一つのマルチプロセッサシステム１内で交互に行ってもよい。例えば、一つのセルプロセッサ２０で、実施例１乃至３をそれぞれ１サイクルずつおこなうようにしてもよい。
これは、影響コントローラ１０によって状態変数値のブロードキャストを行い、各セルプロセッサ２０が、各自必要な状態変数値を取捨選択するようなマルチプロセッサシステムにおいて、各セルプロセッサ２０により取捨選択される状態変数値を適宜調整することにより、容易に実現できる。
また、ゆらぎ変数として一様乱数を用い、拘束条件として物理的なエネルギー方程式を用いると、通常のモンテカルロ法と等価になる。
【００６３】
図９は、以上のような本発明のオブジェクトデータ処理方法によるオブジェクトの動作を表す図である。複数のオブジェクトが、処理が進むにつれて、次第に統一性のある動作を行う様子を表している。
【００６４】
各オブジェクトの拘束条件として、オブジェクト間の距離を設定し、この距離以内でオブジェクトが動作すると条件を決めて実施例１の方法を実行する。処理が進むにつれてオブジェクト間の距離を狭めていくと、オブジェクトは次第に集合するようになる。
これにより、図９に示すように、当初、画面全面に存在していた円又は楕円で表されるオブジェクトが、処理が進むにつれて次第に画面の左側に集まり、ついにはオブジェクトが一つに合わさるようになる画像が得られる。各オブジェクトを同じ色で表現すると、分離していたオブジェクトが、次第に集まって、最終的に一つのオブジェクトとなるような画像となる。
【００６５】
ここで、実施例２の方法を実行する。つまり、オブジェクト同士で互いに動作に影響を与え合うようにする。これにより、例えば、ゆらぎ変数を用いているにもかかわらず、複数のオブジェクトが同じような動作をするようになる。
実施例１の方法と合わせて、複数のオブジェクトが、同じような動作で一箇所に集合するような画像が得られる。各オブジェクトで互いに影響を及ぼし合いながら動作するために、複数のオブジェクトが一つの物体として合目的に動作するような画像となる。
【００６６】
各オブジェクトは、最適な状態変数値により位置が決められるので、自然な振る舞いで集合する画像となる。なお、実施例３の方法を実行すると、処理可能なオブジェクトの数は減少するが、実施例１と同様の処理が、より高速に実行可能となる。
【００６７】
【発明の効果】
以上の説明から明らかなように、本発明によれば、従来手法に比べてより自然な動作を行うオブジェクト画像を表現でき、それを観る者の興趣性を高めることができる。また、本発明を、複数のプロセッサと各プロセッサとの間で双方向の通信を行うコントローラとを有する装置に適用することにより、複数のオブジェクト画像が相互に関連しながら動く画像を高速に処理することが可能になる。
【図面の簡単な説明】
【図１】マルチプロセッサシステムの全体構成図。
【図２】影響コントローラの構成図。
【図３】セルプロセッサの構成図。
【図４】セルＣＰＵの機能ブロック図。
【図５】ＷＴＡ・総和回路の構成図。
【図６】実施例１のフローチャート
【図７】実施例２のフローチャート
【図８】実施例３のフローチャート
【図９】本発明により生成されるオブジェクトの状態遷移を示す例示図。
【符号の説明】
１        マルチプロセッサシステム
１０      影響コントローラ
１０１    ＣＰＵコア
１０２    メインメモリ
１０３    ＤＭＡＣ
２０      セルプロセッサ
２０１    セルＣＰＵ
２０１１  ゆらぎ生成部
２０１２  状態変数値生成部
２０１３  比較値生成部
２０１４  比較部
２０２    入力バッファ
２０３    出力バッファ
２０４    ＷＴＡバッファ
２０５    プログラムコントローラ
２０６    命令メモリ
２０７    データメモリ
３０      ＷＴＡ・総和回路
３０１    第１入力レジスタ
３０２    第２入力レジスタ
３０３    切換器
３０４    比較器
３０５    加算器
３０６    出力レジスタ
【図１】
0003904861.tif 000002
【図２】
0003904861.tif 000003
【図３】
0003904861.tif 000004
【図４】
0003904861.tif 000005
【図５】
0003904861.tif 000006
【図６】
0003904861.tif 000007
【図７】
0003904861.tif 000008
【図８】
0003904861.tif 000009
【図９】
0003904861.tif 000010