説明

画像処理方法および装置

【課題】 画像処理方法および装置に関し、データフォーマットの自由度を向上し、迅速な処理ができるようにする。
【解決手段】 データフォーマットを、手続ブロックとデータブロックとに区分し、手続ブロックには手続を規定し、データブロックには、その手続により処理されるデータを規定する。手続ブロックとデータブロックそれぞれを1つ以上のサブブロックで構成し、サブブロックにヘッダ部とデータ部とを設け、ヘッダ部に手続きブロックとデータブロックの識別符号を配置する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像処理方法および装置に関し、特に、データフォーマットの自由度を向上し、もって迅速な処理ができるようにした、画像処理方法および装置に関する。
【背景技術】
【0002】
画像処理装置としてのゲーム機においては、様々な画像をディスプレイ上に表示し、使用者のボタンやスティックなどの操作に対応して、ディスプレイ上の表示を様々な状態に変化させ、ゲームを楽しむことができるようになされている。
【0003】
このような従来のゲーム機においては、処理すべきデータのフォーマットが、予め規定されている。また、そのデータに対する処理も、規定されたデータフォーマットに対応して予め規定されている。
【発明の開示】
【発明が解決しようとする課題】
【0004】
従って、従来のゲーム機においては、例えば任天堂のファミリーコンピュータ(商標)、ソニーのプレイステーション(商標)、セガのセガサターン(商標)といった各種のゲーム機において、実質的に同一のゲームを設計する場合でも、それぞれ専用の設計をしなければならず、開発費用が高くなる課題があった。
【0005】
また、同一の機種のゲーム機においても、他のゲームソフトにおいて開発されたデータやプログラムを利用して、他のゲームを開発するようなことが困難である課題があった。
本発明はこのような状況に鑑みてなされたものであり、データのフォーマットの自由度を向上し、もって、より低コストのソフトウエアの開発を可能にするものである。
【課題を解決するための手段】
【0006】
請求項1に記載の画像処理方法は、手続ブロックとデータブロックとを設け、手続ブロックとデータブロックのそれぞれを、1つ以上のサブブロックで構成し、サブブロックに、ヘッダ部と、データ部とを設け、ヘッダ部に、手続ブロックとデータブロックの識別符号を配置し、データブロックのデータ部に画像データを配置するとともに、手続ブロックのデータ部に手続を配置し、データブロックのデータ部の画像データを、手続ブロックのデータ部の手続に対応して処理することを特徴とする。
【0007】
請求項3に記載の画像処理装置は、手続ブロックまたはデータブロックのいずれであるかを、手続ブロックまたはデータブロックを構成するサブブロックのヘッダから判定する判定手段と、データブロックに配置されている画像データを、手続ブロックに配置されている手続に対応して処理する処理手段とを備えることを特徴とする。
【0008】
請求項4に記載の記録媒体は、手続ブロックとデータブロックのそれぞれが、1つ以上のサブブロックで構成され、サブブロックに、ヘッダ部と、データ部とが設けられ、ヘッダ部に、手続ブロックとデータブロックの識別符号が配置され、データブロックのデータ部に画像データが配置されているとともに、手続ブロックのデータ部に手続が配置されていることを特徴とする。
【0009】
請求項5に記載の画像処理方法は、画像をポリゴンに分割し、ポリゴンの1つの頂点を基準頂点として絶対座標で表し、ポリゴンの他の頂点、およびポリゴンに連結されている他のポリゴンの頂点の座標を、基準頂点または他の頂点に対する相対座標で表すことを特徴とする。
【0010】
請求項6に記載の画像処理装置は、画像をポリゴンに分割する手段と、ポリゴンの1つの頂点を基準頂点として絶対座標で表し、ポリゴンの他の頂点、およびポリゴンに連結されている他のポリゴンの頂点の座標を、基準頂点または他の頂点に対する相対座標で表す手段とを備えることを特徴とする。
【0011】
請求項7に記載の記録媒体は、ポリゴンの頂点のうちの1つの基準頂点の座標が、絶対座標で表され、ポリゴンの他の頂点、およびポリゴンに連結されている他のポリゴンの頂点の座標が、基準頂点または他の頂点に対する相対座標で表されていることを特徴とする。
【0012】
請求項8に記載の画像処理方法は、手続を実行可能な実行部を少なくとも2個設け、一方の実行部の処理状態に対応して手続を変更し、他方の実行部による処理状態を制御することを特徴とする。
【0013】
請求項9に記載の画像処理装置は、手続を実行する第1の手段と、手続を実行する第2の手段と、第1の手段の処理状態に対応して手続を変更し、第2の手段による処理状態を制御する手段とを備えることを特徴とする。
【0014】
請求項1に記載の画像処理方法、請求項3に記載の画像処理装置、および請求項4に記載の記録媒体においては、手続ブロックとデータブロックのそれぞれは、1つ以上のサブブロックで構成され、サブブロックには、ヘッダ部とデータ部とが設けられ、ヘッダ部には、手続ブロックとデータブロックの識別符号が配置され、データブロックのデータ部には画像データが配置され、手続ブロックのデータ部には手続が配置される。
【0015】
請求項5に記載の画像処理方法、請求項6に記載の画像処理装置、および請求項7に記載の記録媒体においては、ポリゴンの1つの頂点が基準頂点とされ、絶対座標で表される。そのポリゴンの他の頂点、およびそのポリゴンに連結されている他のポリゴンの頂点の座標は、基準頂点または他の頂点に対する相対座標で表される。
【0016】
請求項8に記載の画像処理方法、および請求項9に記載の画像処理装置においては、手続を実行可能な実行部が少なくとも2個設けられ、一方の処理状態に対応して手続が変更され、他方の処理状態が制御される。
【発明の効果】
【0017】
以上の如く請求項1に記載の画像処理方法および請求項3に記載の画像処理装置よれば、データブロックのデータ部のデータを手続ブロックのデータ部の手続に対応して処理するようにしたので、自由度が向上し、ソフトウエアの低コストの開発が可能となり、またデータの転送量を少なくし、迅速な画像処理が可能となる。
【0018】
請求項4に記載の記録媒体によれば、画像データを手続ブロックとデータブロックとに区分して記録するようにしたので、より変化に富んだ画像処理が可能なソフトウエアを提供することができる。
【0019】
請求項5に記載の画像処理方法、請求項6に記載の画像処理装置および請求項7に記載の記録媒体によれば、ポリゴンの頂点のうちの1つの基準頂点の座標を絶対座標で表し、その他の頂点を、基準頂点または他の頂点に対する相対座標で表すようにしたので、ポリゴンを少ないデータ量で表現することが可能になる。従って、迅速な処理が可能となる。
【0020】
請求項8に記載の画像処理方法および請求項9に記載の画像処理装置によれば、一方の実行部の処理状態に対応して手続を変更し、他方の実行部による処理状態を制御するようにしたので、効率的に画像データを処理することが可能となる。
【発明を実施するための最良の形態】
【0021】
図1乃至図3は、本発明の画像処理方法が適用されるビデオゲーム機の構成例を表している。これらの図に示すように、ビデオゲーム機1は、ゲーム機本体2と、ゲーム機本体2に対してケーブル27を介して接続されている操作装置17とにより、基本的に構成されている。ゲーム機本体2の上面の中央部には、ディスク装着部3が設けられ、その内部に図4に示すようなCD−ROM51が装着されるようになされている。ディスク装着部3の左側には、装置の電源をオンまたはオフするとき操作される電源スイッチ5と、ゲームを一旦リセットするとき操作されるリセットスイッチ4が設けられている。また、ディスク装着部3の右側には、ディスク装着部3に対してCD−ROM51を着脱するとき操作されるディスク操作スイッチ6が設けられている。
【0022】
ゲーム機本体2の正面には、接続部7Aと7Bが設けられている。これらの接続部7Aまたは7Bには、操作装置17に対してケーブル27を介して接続されている接続端子部26と、メモリカードなどよりなる記録装置38を、それぞれ接続することができるようになされている。すなわち、このゲーム機本体2には、2台の操作装置17を接続することができるようになされている。
【0023】
図2には、右側の接続部7Bに接続端子部26が接続され、左側の接続部7Aには接続端子部26と記録装置38のいずれもが装着されていない状態が示されている。同図に示すように、記録装置38を装着する記録挿入部8には、シャッタ9が設けられており、記録装置38をゲーム機本体2に対して装着するとき、記録装置38の先端で、このシャッタ9を押し込むようにして、装着が行われる。
【0024】
接続端子部26の把持部31Aと記録装置38の把持部42Aには、それぞれ凹凸のある形状(ギザギザ模様)にした滑り止め加工(例えばローレット加工)が施されている。接続端子部26と、記録装置38の長さLは、ほぼ同一の長さとされている。
【0025】
操作装置17には、左右の手で把持される支持部20,21が設けられ、支持部20,21の先端には、操作部24,25が設けられている。また、支持部20,21の上面には、操作部18,19が設けられている。操作部24,25は、左右の手の人差し指で操作され、操作部18,19は、左右の手の親指で、それぞれ操作されるようになされている。
【0026】
操作部18と19の間には、ゲーム中においてセレクト操作を行うとき操作されるセレクトスイッチ22と、ゲームを開始するとき操作されるスタートスイッチ23が設けられている。
【0027】
図5は、ゲーム機本体2の内部の構成例を表している。CPU(Central Processing Unit)61は、メインバスを介して各種の処理を実行するようになされている。このCPU61は、GTE(Geometry Transfer Engine)62とPKE(Programable Packet Engine)63とを有している。GTE62は、例えば複数の演算を並列に実行する並列演算機能を備え、CPU61からの演算要求に対応して、座標変換、光源計算、行列あるいはベクトルなどの演算を高速に実行する。PKE63は、GTE62の演算結果に基づいて作成された描画命令やデータをパケット化またはアンパケット化する。
【0028】
メインバスには、CPU61の他、RAM(Random Access Meomory)からなるメインメモリ64、DMAC(Direct Memory Access Controller)65、およびレンダリングプロセッサとしてのGPU(Graphic Processing Unit)が接続されている。
【0029】
メインメモリ64には、各種のプログラムやデータなどが適宜記憶される。DMAC65は、メインメモリ64上のデータを、メインバスを介してGPU66のローカルメモリ83(図6)に転送する動作を実行する。
【0030】
GPU66は、例えば図6に示すように、PKE81、演算部82、および描画部84により構成されている。PKE81はPKE63と実質的に同一の機能を有し、メインバスを介してCPU61またはDMAC65より入力されたパケット化されたプログラム(手順)とデータをアンパケット化して、演算部82のローカルメモリ83に直接書き込みを行う。演算部82は、ローカルメモリ83に書き込まれたアンパケット化されたプログラム(手順)に対応して、ローカルメモリ83上のデータを処理する。
【0031】
描画部84は、演算部82から供給された描画命令を解釈し、頂点の色データと奥行きを表すZ値からポリゴン(三角形や四角形などの基本的な単位図形)を構成する全ての画素の色とZ値を考慮し、フレームメモリ67に画素データを書き込む処理(レンダリング処理)を行う。描画部84は、演算部82のローカルメモリ83の特定の領域から、描画部84の処理とは非同期に、描画命令を取り出すことができるようになされている。
【0032】
ローカルメモリ83は複数のバンクで構成されており、PKE81は、演算部82が他の処理を実行している最中に、所定のバンクにデータを書き込むことが可能である。また、ローカルメモリ83においては、データのみ、データの一部のみ、プログラム一部のみなどを、可変長の複数領域に書き込むことができる。
【0033】
GPU66の描画部84は、フレームメモリ67に書き込んだ画素データを適宜読み出して、CRTC(Cathode Ray Tube Controler)68を介して、CRT81に出力する。
【0034】
メインバスより低速のサブバスにはCD−ROM51をドライブするCD−ROMドライブ70、操作装置17、これらを制御するサブCPU71、サブメモリ72が接続されている。バスコントローラ69は、メインバスとサブバスのスイッチング処理を行う。
【0035】
次に、その基本的な動作について説明する。サブCPU71は、操作装置17の操作に対応して、CD−ROMドライブ70を制御し、CD−ROM51を再生させ、再生データをサブメモリ72に記憶させる。
【0036】
DMAC65は、サブメモリ72に記憶されたデータを所定のタイミングで読み出し、バスコントローラ69とメインバスを介してメインメモリ64にDMA転送させる。
【0037】
CPU61は、メインメモリ64のデータを読み出し、GTE62に供給し、GTE62の演算結果に基づいて、ポリゴンの組み合わせてとして、CRT81に表示すべき三次元モデルを定義する。そして、三次元画像を描画するための各ポリゴンに対応する描画命令を作成し、この描画命令をコマンドパケットとしてPKE63でパケット化して、GPU66に転送する。
【0038】
GPU66においては、PKE81で、この描画命令をアンパケット化し、ローカルメモリ83に記憶する。演算部82は、このローカルメモリ83に記憶された描画命令を解釈し、ポリゴンの頂点から中間の頂点を補間生成するなどしてポリゴンを描画する命令を作成する。描画部84は、この描画命令に対応して、ポリゴンの頂点の色データと奥行きを示すZ値から、ポリゴンを構成する全ての画素の色とZ値を考慮して、画素データをフレームメモリ67に描画するレンダリング処理を実行する。
【0039】
描画部84はまた、フレームメモリ67に描画された画素データを読み出して、CRTC68を介してCRT81に出力し、表示させる。
【0040】
図7は、本実施例におけるデータフォーマットの構成例を表している。このフォーマットは、図7に示すように、手続ブロック(Procedure Block)と、データブロック(Data Block)とにより構成されている。手続ブロックとデータブロックは、それぞれ図8に示すような1つ以上のサブブロックにより構成されている。
【0041】
図8に示すように、サブブロックはヘッダ部とデータ部とにより構成され、ヘッダ部には、サイズ(SIZE)、アトリビュート(ATTR)、およびアドレス(ADDR)が配置されている。サイズは、このサブブロックのデータ部(Data Area)の大きさを表しており、アトリビュートには、このサブブロックが手続ブロックのサブブロックであるのか、データブロックのサブブロックであるのかを表す識別符号が配置されている。また、アドレスは、ローカルメモリ83のアドレスを表しており、このサブブロックのデータは、ローカルメモリ83のそのアドレスの位置に書き込まれる。サイズの0は、データ部が省略されていることを表す。
【0042】
データブロックのデータ部に配置されているデータは、手続ブロックのデータ部に配置されている手続に従って処理される。従って、本実施例においては、ブロック単位で任意のデータフォーマットを規定し、そのデータに対して任意の処理を行うようにすることができる。CRT81に表示する三次元オブジェクト(三次元画像)は、様々な形状をしているため、その形状によって、より適切な(データ量を低減することが可能な)データフォーマットが存在する。本実施例においては、任意のデータフォーマットを採用することができるため、三次元オブジェクトの形状を、より少ないデータ量で表現することができる。
【0043】
図9と図10は、第1のデータフォーマットの例を表している。この実施例においては、図9に示すように、三角形よりなるポリゴンが1つの辺を介して相互に隣接している。すなわち、頂点(代表点)P0,P1,P2により1つのポリゴンが形成され、頂点(代表点)P1,P2,P3により、他の1つのポリゴンが形成され、頂点(代表点)P2,P3,P4により、さらに他の1つのポリゴンが形成されている。そして、この実施例においては、頂点P0がポリゴン(三角形)の基準頂点とされ、絶対座標で表され、他の頂点P1,P2,P3,P4は、相対座標で表される。
【0044】
すなわち、基準頂点P0の絶対座標が(X0,Y0,Z0)とされるとき、頂点P1は、頂点P0からのX,Y,Zの各座標軸方向の距離dx1,dy1,dz1により表現される(なお図9においては、説明の便宜上、dz1は省略されている。後述する図11と図13でも同様)。すなわち頂点P1の絶対座標を(X1,Y1,Z1)とするとき、次の式が成立する。
【0045】
dx1=X1−X0
dy1=Y1−Y0
dz1=Z1−Z0
そして、頂点P2は、頂点P1からの相対座標(dx2,dy2,dz2)で表される。すなわち、頂点P2の絶対座標を(X2,Y2,Z2)とするとき、頂点P2の座標は次式で表される。
【0046】
dx2=X2−X1
dy2=Y2−Y1
dz2=Z2−Z1
同様に頂点P3は次式で示す相対座標(dx3,dy3,dz3)で表される。
【0047】
dx3=X3−X2
dy3=Y3−Y2
dz3=Z3−Z2
従って、図9に示すポリゴンのデータは、図10に示すように、基準頂点の絶対座標(X0,Y0,Z0)と、他の頂点P1,P2,P3の相対座標(dx1,dy1,dz1),(dx2,dy2,dz2),(dx3,dy3,dz3),・・・により表される。
【0048】
一方、図11においては、頂点P0を中心として、5つのポリゴンが放射状に配置されている。この場合のデータフォーマットは、例えば図12に示すように規定することができる。すなわち、頂点P0の絶対座標を(X0,Y0,Z0)とするとき、頂点P1の座標は頂点P0に対する相対座標(dx1,dy1,dz1)で表す。他の頂点P2乃至P5も同様に、頂点P0からの相対座標で表される。
【0049】
そして、この実施例では、各頂点の色データ(例えば、頂点P0の色データ(B0,G0,R0)、頂点P1の色データ(B1,G1,R1))が、頂点座標とともに指定されている。
【0050】
図13は、さらに他のポリゴンの配置例を表している。この実施例では、頂点P0,P1,P2からなるポリゴンと、頂点P2,P3,P4からなるポリゴンは、頂点P2を介して結合されているのに対し、頂点P2,P3,P4からなるポリゴンと頂点P3,P5,P6からなるポリゴンは、頂点P3と頂点P6を結ぶ直線で接している。すなわち、この実施例においては、各ポリゴンの連結の状態に特定の規則は存在しない。
【0051】
図14は、図13に示すポリゴンのデータのフォーマットの例を表している。この実施例においては、各ポリゴンの頂点の座標(例えば(X0,Y0,Z0),、各頂点における法線方向のベクトル(NX0,NY0,NZ0)、このポリゴンに対するテクスチャの記憶されているアドレス(フレームメモリ67のアドレス(TU0,TV0)、および頂点の色データ(R0,G0,B0)により表されている。
【0052】
本発明においては、以上のような3つのフォーマットのいずれをも、同一のビデオゲームのソフトウエア上で適宜、場合によって採用することができる。
【0053】
また、同一のフォーマットのデータであったとしても、その手続(処理方法)を変更することで、異なる画像を表現することができる。例えば、図15は、正方形の4つの頂点P0乃至P3の座標データと、水平または垂直方向に隣接する2つの頂点間の間を4等分して、16個のポリゴンを生成する手続を与えた場合における処理結果を表している。
【0054】
これに対して、正方形の4つの頂点P0乃至P3のうち、2つの頂点の間を、図15における場合と同様に4等分するように手続を規定するとともに、更に生成された点に対する法線を、4つの頂点P0乃至P3上の法線を線形に内挿補間することで生成し、その生成した法線に対応して、各点を移動するように、手続を規定すれば、図16に示すようなポリゴンを表示することができる。
【0055】
次に、図17のフローチャートを参照して、メインメモリ64上に記憶されているデータをGPU66で処理し、CRT81に表示させる処理について説明する。最初にステップS1において、CPU61は、PKE63に対して、転送するデータのメインメモリ64上のアドレスと、そのデータをパッキングする手順を通知する。PKE63は、ステップS2において、この通知に対応する処理を実行する。すなわち、通知されたメインメモリ64のアドレスからデータを読み出し、これをやはり通知されたパッキング手順に従ってパケットにパッキングする。
【0056】
次に、PKE63は、ステップS3において、転送先のGPU66のPKE81が、いま受信可能な状態であるか否かを判定する。受信可能であると判定された場合、ステップS4に進み、PKE63は、PKE81に対して、データを転送する。
【0057】
これに対して、ステップS3において、PKE81が、いま受信可能な状態にはないと判定された場合、ステップS5に進み、PKE63は、DMAC65に対して、メインメモリ64上のFIFO(Fast In Fast Out)への転送を要求する。DMAC65は、この要求に対応して、メインメモリ64上のデータをFIFOに転送する。そして、ステップS6において、DMAC65は、PKE81が受信可能な状態になったとき、メインメモリ64のFIFOのデータをPKE81に転送する処理を実行する。
【0058】
PKE81は、CPU61のPKE63またはDMAC65よりデータの転送を受けたとき、これをアンパッキングし、そのデータをヘッダに表されているローカルメモリ83のアドレスに展開する。
【0059】
PKE81は、データのローカルメモリ83に対する展開を終了したとき、ステップS8で演算部82を起動し、手続を実行させる。演算部82は、記憶された手続(手続ブロックのサブブロックのデータ部に配置されていた手続)に従って、記憶されたデータ(データブロックのサブブロックのデータ部に配置されていた画像データ)を処理し、三次元オブジェクトを表現するためのポリゴンデータ列を生成し、ローカルメモリ83の所定のアドレスに記憶させる。
【0060】
次にステップS9に進み、描画部84は、演算部82からポリゴンデータ列の配置アドレスの供給を受け、そのデータ列に対応するレンダリング処理を実行する。すなわち、フレームメモリ67に画素データを描画する。そして、この画素データが描画部84により読み出され、CRTC68を介してCRT81に出力され、表示される。
【0061】
ステップS8における演算部82のポリゴンデータ列生成処理について更に説明すると、次のようになる。すなわち、いま、演算部82が、例えば図18に示すようなデータ(データブロックのサブブロックのデータ部に配置されていたデータ)を受け取り、このデータから、図19に示すようなポリゴンを生成するものとすると、このデータに対応する手続(手続ブロックのサブブロックのデータ部に配置される手続)としては、図20のフローチャートに示すような手続が規定される。図18のTYPEには、この手続を指定する情報が配置される。
【0062】
最初にステップS21において、データを解析する処理が実行される。この実施例の場合、図18に示すNi,Njは、ポリゴンのi,jの各方向(図19における右方向と右斜め下方向)の分割数とされる。すなわち、Niは、頂点(代表点)P0(X0,Y0,Z0)と頂点(代表点)P1(X1,Y1,Z1)の間を分割する数とされ、Njは、頂点(代表点)P0(X0,Y0,Z0)と頂点(代表点)P2(X2,Y2,Z2)の間を分割する数とされる。Mi,Mjは、データ内に保持されているi,j各方向の法線データ数とされる。(X0,Y0,Z0),・・・,(X3,Y3,Z3)は、代表点の座標とされる。RGB0,RGB1,RGB2,RGB3は、それぞれ各代表点の輝度値とされる。
【0063】
また、dXi,dYi,dZi,dXj,dYj,dZjは、代表点の間をNi,Nj個に分割した際の各方向のX,Y,Z軸上の変位量とされる。NX,NY,NZは、X,Y,Z軸方向の、それぞれ代表法線とされ、N00,N01,・・・,N79,N80は、代表点の間をMi,Mj個に分割して生成される分割点上の法線の大きさとされる。
【0064】
次にステップS22に進み、1つの頂点(代表点と分割点により構成される点の中の1つ)が選択される。例えば図21における頂点P0が選択される。そして、ステップS23において、ステップS22で選択した頂点の座標と輝度値が計算される。
【0065】
さらにステップS24に進み、ステップS22で選択した頂点の法線の大きさから頂点上の法線ベクトルを計算する。そして、ステップS25においては、ステップS24で求めた頂点上の法線ベクトルを変位ベクトルとして、頂点座標を移動する処理が行われる。
【0066】
ステップS26では、ステップS25で得られた頂点座標を回転マトリックスで変換し、所定の方向の画像となるようにする。次にステップS27において、ステップS26の三次元座標を、二次元上の座標に透視変換する。
【0067】
ステップS28において、演算部82は、描画部84に対する描画命令のパラメータとして、頂点の座標と輝度値をローカルメモリ83上に設定する。
【0068】
次にステップS29に進み、演算部82は、描画部84に対して描画命令の格納アドレスを通知し、描画部84にレンダリング処理を開始させる。描画部84は、この通知を受けたとき、演算部82が、ステップS28においてローカルメモリ83上に設定した頂点座標と輝度値を読み取り、レンダリング処理を行う。
【0069】
ステップS30においては、例えば図21に示す全ての頂点の処理が終了したか否かを判定し、まだ処理を行っていない頂点が存在すると判定された場合においては、ステップS22に戻り、新たな頂点を選択し、同様の処理を実行する。そして、ステップS30において、全ての頂点の処理が終了したと判定された場合、処理が終了される。
【0070】
なお、図18のデータは、頂点P0乃至P3によるポリゴンを、16×16個に分割することができるように、N00乃至N80のデータが用意されているが、図19(図21)の実施例では、そのうちの一部のデータのみを使用し、4×4個に分割している。
【0071】
なお、CPU61が、GPU66に転送するデータは、同一の処理(手続)が連続するように、予めソーティングされる。GPU66においては、データに対して同一の処理を行う場合、手続ブロックは省略可能とされる。このためソーティングをかけることにより、データ転送量を軽減することができる。
【0072】
以上のように、転送されるデータ中に、データ固有の解釈プログラム(手続)を内包させることにより、データ自身のフォーマットの自由度を向上させることができる。また、その処理の自由度も向上させることができる。
【0073】
更に、処理と手続をまとめて扱うことが可能となるため、メモリの連続した領域に、そのデータが記憶されることとなり(メモリの極所性を高めることができ)、DMA転送を効率よく行うことが可能となる。
【0074】
また、CPU61(DTE62)とGPU66の間において、その負荷に隔たりがある場合、データに内包される処理プログラム(手続)を適宜変更することにより、負荷を動的に調節することができる。例えば、基本的にメインバスの高速性を確保するために、CPU61(GTE62)における処理ができるだけ少なくなるようにして、GPU66に対してできるだけ多くの処理を行わせるようにするが、GPU66が過負荷になった場合においては、CPU61(GET62)において、GPU66が行う処理の一部を肩代わりして実行するようにすることができる。
【0075】
図22のフローチャートは、この場合の処理例を表している。すなわち、最初にステップS41において、GPU66の演算部82の計算負荷が、CPU61の計算負荷に較べて非常に大きいか否かを判定する。図17のステップS3とS5を参照して説明したように、CPU61のPKE63は、GPU66のPKE81が受信可能な状態でないと判定したとき、DMAC65にメインメモリ64上のFIFOへの転送を要求する。この要求が発生するということは、GPU66が、他の計算を行っていることを意味する。そこで、CPU61は、この要求の回数をカウントし、そのカウント値が、予め設定してある基準値より大きくなったとき、GPU66の計算負荷が、CPU61の計算負荷に較べて非常に大きい状態になったものと判定することができる。
【0076】
あるいはまた、ソフトウエアを開発する段階において、所定の状況で操作装置17により、所定の操作が行われたとき、GPU66の演算部82の計算負荷が大きくなることを、予め予測できる場合がある。このような場合においては、CPU61は、所定の状況下で操作装置17から所定の操作が行われたことを示す信号が供給されたとき、GPU66の計算負荷が非常に大きくなったものと判定するようにすることができる。
【0077】
ステップS41において、GPU66の演算部82の計算負荷が非常に大きい状態になったと判定された場合、ステップS42に進み、CPU61は、次に実行させるデータの手続ブロックの手続を解析する。そして、ステップS43において、対応するデータブロックのデータに対して、ステップS42で解析した手続を実行し、GPU66の描画部84の描画命令を生成する。すなわち、GPU66の演算部82が行う処理を、CPU61(GTE62)が実行する。
【0078】
次にステップS44に進み、CPU61(GTE62)は、次のような手続ブロックとデータブロックとを生成する。
【0079】
すなわち、その手続ブロックの手続には、描画部84にデータブロックの格納アドレスを通知し、レンダリングを開始させる手続を規定する。また、それに対応するデータブロックのデータとしては、ステップS43で生成した描画部84の描画命令を配置する。
【0080】
ステップS45においては、ステップS44で生成したデータをGPU66に転送するように、PKE63に通知する。PKE63は、この通知を受けたとき、ステップS44で生成されたデータをGPU66に転送する処理を実行する。
【0081】
GPU66は、このデータの供給を受けたとき、通常の場合と同様の処理を実行するが、その手続ブロックの手続には、ステップS44で説明したように、描画部84にデータブロックの格納アドレスを通知し、レンダリングを開始させる手続が規定されているため、この処理を実行する。その結果、描画部84は、通知を受けたローカルメモリ83の格納アドレスからデータを読み取るが、このデータは、ステップS44で説明しように、描画部84の描画命令そのものとなっている。そこで、描画部84は、直ちに、この描画命令を実行することになる。
【0082】
なお、ステップS41において、GPU66の演算部82の計算負荷が過負荷になっていないと判定された場合においては、ステップS42乃至S45の処理はスキップされる。すなわち、この場合においては、通常通り、GPU66により手続の実行処理が行われる。
【0083】
このように、この実施例においては、手続ブロックとデータとブロックとによりデータを構成するようにしたので、手続を適宜変更することが可能となり、CPU61(GTE62)とGPU66(演算部82)の一方が過負荷の状態となっているとき、その処理の一部を他方に実行させるようにすることができる。これにより、より効率的に、迅速に描画処理を行うことができる。
【0084】
次に、以上のような手続ブロックとデータブロックとにより構成されるデータを有するCD−ROM51を形成する装置の構成例を図23を参照して説明する。図23においては、高度なグラフィックス処理能力を有するワークステーション100により生成された三次元オブジェクトのイメージデータが、記録装置101に出力されるようになされている。記録装置101は、このデータを原盤102に記録し、この原盤102から、CD−ROM51が生成されるようになされている。
【0085】
次に、図24のフローチャートを参照して、図23の実施例の動作について説明する。最初にステップS61において、使用者は、ワークステーション100を利用して、オブジェクトデータを作成する処理を実行する。このとき、形状や材質などの情報も定義する。
【0086】
次にステップS62に進み、使用者は、このオブジェクトを複数のパッチに分割する処理を実行する。これにより、一定の曲率を有する曲面や、一定の材質の平面などの特定の処理単位で表現される部分(パッチ)にオブジェクトデータが分割される。
【0087】
更にステップS63においては、使用者は、パッチ毎の処理手続を作成する。例えばスプライン補間で補間することができる頂点データを削除し、その頂点データは残った代表点からスプライン補間により生成するプログラムを作成する。これにより、1つのパッチは、1つのデータブロックと、それに対応する1つの手続ブロックにより構成される。
【0088】
次に、ステップS64に進み、データのアロケーションのシミュレーションを実行する。すなわち、ローカルメモリ83の配置情報を作成するために、配置シミュレーションを行う。またこのとき、同時に類似する処理プログラムの差分データも生成する。例えば1つのパッチにおいて、1つの手続が規定された場合、その手続に類似する他のパッチの手続は、その手続との違いだけを記述して規定することができる。このように規定された手続は、前定となる(類似する)手続と合成された手続として処理される。これにより、効率的な処理が可能となる。
【0089】
次にステップS65において、以上のようにして生成されたデータと処理手順を合成する処理が実行される。すなわち、ステップS63で生成された手続が、手続ブロックのサブブロックのデータ部に配置され、その手続に対応する画像データが、データブロックのサブブロックのデータ部に配置される。そして、ステップS64で得られた配置情報が、サブブロックのアドレス(ADDR)に配置される。
【0090】
次にステップS66に進み、記録処理が実行される。すなわち、ワークステーション100で生成されたデータが記録装置101に供給される。記録装置101は、ワークステーション100より供給されたデータを原盤102に記録する処理を実行する。この原盤102から、レプリカとしてのCD−ROM51が大量に生成される。
【0091】
以上、本発明をビデオゲーム機に応用した場合と例として説明したが、本発明は、その他の画像処理装置に応用することも可能である。また、記録媒体としては、CD−ROM以外の光ディスク、磁気ディスク、光磁気ディスク、メモリカードなどを用いることができる。
【図面の簡単な説明】
【0092】
【図1】本発明の画像処理方法を適用したビデオゲーム機の構成を示す平面図である。
【図2】図1のゲーム機本体の正面の構成を示す正面図である。
【図3】図1のゲーム機本体の側面の構成を示す右側面図である。
【図4】図1のゲーム機本体に装着されるCD−ROMの構成を示す図である。
【図5】図1のゲーム機本体の内部の構成を示すブロック図である。
【図6】図5のGPUの内部の構成を示すブロック図である。
【図7】データのフォーマットを説明する図である。
【図8】サブブロックのフォーマットを説明する図である。
【図9】ポリゴンの配置を説明する図である。
【図10】図9のポリゴンを表すデータのフォーマットを示す図である。
【図11】ポリゴンの他の配置状態を示す図である。
【図12】図11のポリゴンを表すデータフォーマットを示す図である。
【図13】ポリゴンの他の配置例を示す図である。
【図14】図13のポリゴンのデータフォーマットを示す図である。
【図15】ポリゴン分割の例を示す図である。
【図16】ポリゴン分割の他の例を示す図である。
【図17】図5の実施例の表示処理の動作を説明するフローチャートである。
【図18】データフォーマットの例を示す図である。
【図19】図18のデータフォーマットに対応する手続を説明する図である。
【図20】図17のステップS8の処理例を示すフローチャートである。
【図21】図20のステップS23の処理を説明する図である。
【図22】図5の実施例の他の動作を説明するフローチャートである。
【図23】データを記録する装置の構成例をブロック図である。
【図24】図23の実施例の動作を説明するフローチャートである。
【符号の説明】
【0093】
61 CPU, 62 GTE, 63 PKE, 64 メインメモリ, 65 DMAC, 66 GPU, 67 フレームメモリ, 68 CRTC, 69 CRT, 81 PKE, 82 演算部, 83 ローカルメモリ, 84 描画部

【特許請求の範囲】
【請求項1】
手続ブロックとデータブロックとを設け、
前記手続ブロックとデータブロックのそれぞれを、1つ以上のサブブロックで構成し、
前記サブブロックに、ヘッダ部と、データ部とを設け、
前記ヘッダ部に、前記手続ブロックとデータブロックの識別符号を配置し、
前記データブロックの前記データ部に画像データを配置するとともに、前記手続ブロックの前記データ部に手続を配置し、
前記データブロックのデータ部の画像データを、前記手続ブロックのデータ部の手続に対応して処理する
ことを特徴とする画像処理方法。
【請求項2】
前記ヘッダ部には、さらに、対応する前記データ部の大きさ、または前記ブロックを記憶するメモリのアドレスの少なくとも一方が配置されている
ことを特徴とする請求項1に記載の画像処理方法。
【請求項3】
手続ブロックまたはデータブロックのいずれであるかを、前記手続ブロックまたはデータブロックを構成するサブブロックのヘッダから判定する判定手段と、
前記データブロックに配置されている画像データを、前記手続ブロックに配置されている手続に対応して処理する処理手段と
を備えることを特徴とする画像処理装置。
【請求項4】
手続ブロックとデータブロックのそれぞれが、1つ以上のサブブロックで構成され、
前記サブブロックに、ヘッダ部と、データ部とが設けられ、
前記ヘッダ部に、前記手続ブロックとデータブロックの識別符号が配置され、 前記データブロックのデータ部に画像データが配置されているとともに、前記手続ブロックのデータ部に手続が配置されている
ことを特徴とする記録媒体。
【請求項5】
画像をポリゴンに分割し、
前記ポリゴンの1つの頂点を基準頂点として絶対座標で表し、
前記ポリゴンの他の頂点、および前記ポリゴンに連結されている他のポリゴンの頂点の座標を、前記基準頂点または他の前記頂点に対する相対座標で表す
ことを特徴とする画像処理方法。
【請求項6】
画像をポリゴンに分割する手段と、
前記ポリゴンの1つの頂点を基準頂点として絶対座標で表し、前記ポリゴンの他の頂点、および前記ポリゴンに連結されている他のポリゴンの頂点の座標を、前記基準頂点または他の前記頂点に対する相対座標で表す手段と
を備えることを特徴とする画像処理装置。
【請求項7】
ポリゴンに分割された画像のデータが記録されている記録媒体において、
前記ポリゴンの頂点のうちの1つの基準頂点の座標が、絶対座標で表され、前記ポリゴンの他の頂点、および前記ポリゴンに連結されている他のポリゴンの頂点の座標が、前記基準頂点または他の前記頂点に対する相対座標で表されている ことを特徴とする記録媒体。
【請求項8】
手続ブロックとデータブロックのそれぞれを、1つ以上のサブブロックで構成し、
前記サブブロックに、ヘッダ部と、データ部とを設け、
前記ヘッダ部に、前記手続ブロックとデータブロックの識別符号を配置し、
前記データブロックのデータ部に画像データを配置するとともに、前記手続ブロックのデータ部に手続を配置し、
前記データブロックのデータ部の画像データを、前記手続ブロックのデータ部の手続に対応して処理するようにした画像処理方法において、
前記手続を実行可能な実行部を少なくとも2個設け、
一方の実行部の処理状態に対応して前記手続を変更し、他方の実行部による処理状態を制御する
ことを特徴とする画像処理方法。
【請求項9】
手続ブロックまたはデータブロックのいずれにより構成されているかを、前記手続ブロックまたはデータブロックを構成するサブブロックのヘッダから判定し、
前記データブロックに配置されている画像データを、前記手続ブロックに配置されている手続に対応して処理する画像処理装置において、
前記手続を実行する第1の手段と、
前記手続を実行する第2の手段と、
前記第1の手段の処理状態に対応して前記手続を変更し、前記第2の手段による処理状態を制御する手段と
を備えることを特徴とする画像処理装置。
【特許請求の範囲】
【請求項1】
データブロックと、該データブロックを処理対象とする手続ブロックとを設け、
前記手続ブロックと前記データブロックのそれぞれを、1つ以上のサブブロックで構成し、
前記サブブロックに、ヘッダ部と、データ部とを設け、
前記ヘッダ部に、前記手続ブロック或いは前記データブロックの識別符号を配置し、
前記データブロックを構成する前記サブブロックの前記データ部に画像データを配置するとともに、前記手続ブロックを構成する前記サブブロックの前記データ部に、前記画像データ毎に定めた処理の手順を示す手続を配置し、
前記データブロックおよび前記手続ブロックを、同じ手続が連続するようにソーティングを行い、
前記データブロックのデータ部の画像データを、前記手続ブロックのデータ部の手続に対応して処理すること
を特徴とする画像処理方法。
【請求項2】
前記ヘッダ部には、さらに、対応する前記データ部の大きさ、または前記ブロックを記憶するメモリのアドレスの少なくとも一方が配置されていること
を特徴とする請求項1に記載の画像処理方法。
【請求項3】
画像データを配置するためのデータブロックと、該画像データに対する手続を配置するための手続ブロックとを備えたデータであって、前記手続ブロックおよび前記データブロックのそれぞれが1つ以上のサブブロックで構成され、且つ前記サブブロックに、ヘッダ部と、データ部とが設けられているデータを生成し、該生成したデータを転送する制御手段と、
前記転送されたデータを受付け、該受付けたデータを処理する描画手段と、を有し、
前記制御手段は、
前記ヘッダ部に、前記手続ブロック或いは前記データブロックの識別符号を配置し、前記手続ブロックを構成する前記サブブロックの前記データ部に、前記画像データ毎に定めた処理の手順を示す手続を配置するとともに、前記データブロックを構成する前記サブブロックの前記データ部に、画像データおよび該画像データに対応する手続を指定する指定情報を配置し、さらに、前記手続ブロックに配置された手続用いて前記データをソートした上で転送を行い、
前記描画手段は、
前記データブロックのデータ部の前記画像データに対応する手続を、当該データ部に配置されている前記指定情報を用いて前記手続ブロックに配置されている手続の中から選択し、該画像データを該選択した手続を用いて処理すること
を特徴とする画像処理装置。
【請求項4】
請求項3に記載の画像処理装置であって、
前記制御手段は、
前記ソートの結果、前記手続ブロックの中に同じ手続を配置したサブブロックが連続する場合、連続するサブロックを省略して、前記データの転送を行うこと
を特徴とする画像処理装置。
【請求項5】
請求項3または4に記載の画像処理装置であって、
前記制御手段は、前記データブロックに、様々なデータ構造を持つ画像データを配置可能に構成されていること
を特徴とする画像処理装置。
【請求項6】
制御部および描画処理部を有する画像処理装置が行う画像処理方法であって、
前記制御部は、
画像データを配置するためのデータブロックと、該画像データに対する手続を配置するための手続ブロックとを備えたデータであって、前記手続ブロックおよび前記データブロックのそれぞれが1つ以上のサブブロックで構成され、且つ前記サブブロックに、ヘッダ部と、データ部とが設けられているデータを生成するステップと、
前記生成したデータを転送するステップと、を行い、
前記描画処理部は、前記転送された前記データを受付け、該受付けたデータを処理するステップを行い、
前記データを生成するステップは、前記ヘッダ部に、前記手続ブロック或いは前記データブロックの識別符号を配置し、前記手続ブロックを構成する前記サブブロックの前記データ部に、前記画像データ毎に定めた処理の手順を示す手続を配置するとともに、前記データブロックを構成する前記サブブロックの前記データ部に、画像データおよび該画像データに対応する手続を指定する指定情報を配置し、
前記転送するステップは、前記手続ブロックに配置された手続用いて前記データをソートした上で転送を行い、
前記データを処理するステップは、前記データブロックのデータ部の前記画像データに対応する手続を、当該データ部に配置されている前記指定情報を用いて前記手続ブロックに配置されている手続の中から選択し、該画像データを該選択した手続を用いて処理すること
を特徴とする画像処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate


【公開番号】特開2006−79601(P2006−79601A)
【公開日】平成18年3月23日(2006.3.23)
【国際特許分類】
【出願番号】特願2005−237518(P2005−237518)
【出願日】平成17年8月18日(2005.8.18)
【分割の表示】特願平8−116302の分割
【原出願日】平成8年5月10日(1996.5.10)
【出願人】(395015319)株式会社ソニー・コンピュータエンタテインメント (871)
【Fターム(参考)】