(57)【要約】      （修正有）【課題】  画像処理方法および装置に関し、データフォーマットの自由度を向上し、迅速な処理ができるようにする。【解決手段】  データフォーマットを、手続ブロックとデータブロックとに区分し、手続ブロックには手続を規定し、データブロックには、その手続により処理されるデータを規定する。手続ブロックとデータブロックそれぞれを１つ以上のサブブロックで構成し、サブブロックにヘッダ部とデータ部とを設け、ヘッダ部に手続きブロックとデータブロックの識別符号を配置する。【選択図】    図７
2006079601.tif 000002
【特許請求の範囲】
【請求項１】
手続ブロックとデータブロックとを設け、
前記手続ブロックとデータブロックのそれぞれを、１つ以上のサブブロックで構成し、
前記サブブロックに、ヘッダ部と、データ部とを設け、
前記ヘッダ部に、前記手続ブロックとデータブロックの識別符号を配置し、
前記データブロックの前記データ部に画像データを配置するとともに、前記手続ブロックの前記データ部に手続を配置し、
前記データブロックのデータ部の画像データを、前記手続ブロックのデータ部の手続に対応して処理する
ことを特徴とする画像処理方法。
【請求項２】
前記ヘッダ部には、さらに、対応する前記データ部の大きさ、または前記ブロックを記憶するメモリのアドレスの少なくとも一方が配置されている
ことを特徴とする請求項１に記載の画像処理方法。
【請求項３】
手続ブロックまたはデータブロックのいずれであるかを、前記手続ブロックまたはデータブロックを構成するサブブロックのヘッダから判定する判定手段と、
前記データブロックに配置されている画像データを、前記手続ブロックに配置されている手続に対応して処理する処理手段と
を備えることを特徴とする画像処理装置。
【請求項４】
手続ブロックとデータブロックのそれぞれが、１つ以上のサブブロックで構成され、
前記サブブロックに、ヘッダ部と、データ部とが設けられ、
前記ヘッダ部に、前記手続ブロックとデータブロックの識別符号が配置され、  前記データブロックのデータ部に画像データが配置されているとともに、前記手続ブロックのデータ部に手続が配置されている
ことを特徴とする記録媒体。
【請求項５】
画像をポリゴンに分割し、
前記ポリゴンの１つの頂点を基準頂点として絶対座標で表し、
前記ポリゴンの他の頂点、および前記ポリゴンに連結されている他のポリゴンの頂点の座標を、前記基準頂点または他の前記頂点に対する相対座標で表す
ことを特徴とする画像処理方法。
【請求項６】
画像をポリゴンに分割する手段と、
前記ポリゴンの１つの頂点を基準頂点として絶対座標で表し、前記ポリゴンの他の頂点、および前記ポリゴンに連結されている他のポリゴンの頂点の座標を、前記基準頂点または他の前記頂点に対する相対座標で表す手段と
を備えることを特徴とする画像処理装置。
【請求項７】
ポリゴンに分割された画像のデータが記録されている記録媒体において、
前記ポリゴンの頂点のうちの１つの基準頂点の座標が、絶対座標で表され、前記ポリゴンの他の頂点、および前記ポリゴンに連結されている他のポリゴンの頂点の座標が、前記基準頂点または他の前記頂点に対する相対座標で表されている  ことを特徴とする記録媒体。
【請求項８】
手続ブロックとデータブロックのそれぞれを、１つ以上のサブブロックで構成し、
前記サブブロックに、ヘッダ部と、データ部とを設け、
前記ヘッダ部に、前記手続ブロックとデータブロックの識別符号を配置し、
前記データブロックのデータ部に画像データを配置するとともに、前記手続ブロックのデータ部に手続を配置し、
前記データブロックのデータ部の画像データを、前記手続ブロックのデータ部の手続に対応して処理するようにした画像処理方法において、
前記手続を実行可能な実行部を少なくとも２個設け、
一方の実行部の処理状態に対応して前記手続を変更し、他方の実行部による処理状態を制御する
ことを特徴とする画像処理方法。
【請求項９】
手続ブロックまたはデータブロックのいずれにより構成されているかを、前記手続ブロックまたはデータブロックを構成するサブブロックのヘッダから判定し、
前記データブロックに配置されている画像データを、前記手続ブロックに配置されている手続に対応して処理する画像処理装置において、
前記手続を実行する第１の手段と、
前記手続を実行する第２の手段と、
前記第１の手段の処理状態に対応して前記手続を変更し、前記第２の手段による処理状態を制御する手段と
を備えることを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理方法および装置に関し、特に、データフォーマットの自由度を向上し、もって迅速な処理ができるようにした、画像処理方法および装置に関する。
【背景技術】
【０００２】
画像処理装置としてのゲーム機においては、様々な画像をディスプレイ上に表示し、使用者のボタンやスティックなどの操作に対応して、ディスプレイ上の表示を様々な状態に変化させ、ゲームを楽しむことができるようになされている。
【０００３】
このような従来のゲーム機においては、処理すべきデータのフォーマットが、予め規定されている。また、そのデータに対する処理も、規定されたデータフォーマットに対応して予め規定されている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従って、従来のゲーム機においては、例えば任天堂のファミリーコンピュータ（商標）、ソニーのプレイステーション（商標）、セガのセガサターン（商標）といった各種のゲーム機において、実質的に同一のゲームを設計する場合でも、それぞれ専用の設計をしなければならず、開発費用が高くなる課題があった。
【０００５】
また、同一の機種のゲーム機においても、他のゲームソフトにおいて開発されたデータやプログラムを利用して、他のゲームを開発するようなことが困難である課題があった。
本発明はこのような状況に鑑みてなされたものであり、データのフォーマットの自由度を向上し、もって、より低コストのソフトウエアの開発を可能にするものである。
【課題を解決するための手段】
【０００６】
請求項１に記載の画像処理方法は、手続ブロックとデータブロックとを設け、手続ブロックとデータブロックのそれぞれを、１つ以上のサブブロックで構成し、サブブロックに、ヘッダ部と、データ部とを設け、ヘッダ部に、手続ブロックとデータブロックの識別符号を配置し、データブロックのデータ部に画像データを配置するとともに、手続ブロックのデータ部に手続を配置し、データブロックのデータ部の画像データを、手続ブロックのデータ部の手続に対応して処理することを特徴とする。
【０００７】
請求項３に記載の画像処理装置は、手続ブロックまたはデータブロックのいずれであるかを、手続ブロックまたはデータブロックを構成するサブブロックのヘッダから判定する判定手段と、データブロックに配置されている画像データを、手続ブロックに配置されている手続に対応して処理する処理手段とを備えることを特徴とする。
【０００８】
請求項４に記載の記録媒体は、手続ブロックとデータブロックのそれぞれが、１つ以上のサブブロックで構成され、サブブロックに、ヘッダ部と、データ部とが設けられ、ヘッダ部に、手続ブロックとデータブロックの識別符号が配置され、データブロックのデータ部に画像データが配置されているとともに、手続ブロックのデータ部に手続が配置されていることを特徴とする。
【０００９】
請求項５に記載の画像処理方法は、画像をポリゴンに分割し、ポリゴンの１つの頂点を基準頂点として絶対座標で表し、ポリゴンの他の頂点、およびポリゴンに連結されている他のポリゴンの頂点の座標を、基準頂点または他の頂点に対する相対座標で表すことを特徴とする。
【００１０】
請求項６に記載の画像処理装置は、画像をポリゴンに分割する手段と、ポリゴンの１つの頂点を基準頂点として絶対座標で表し、ポリゴンの他の頂点、およびポリゴンに連結されている他のポリゴンの頂点の座標を、基準頂点または他の頂点に対する相対座標で表す手段とを備えることを特徴とする。
【００１１】
請求項７に記載の記録媒体は、ポリゴンの頂点のうちの１つの基準頂点の座標が、絶対座標で表され、ポリゴンの他の頂点、およびポリゴンに連結されている他のポリゴンの頂点の座標が、基準頂点または他の頂点に対する相対座標で表されていることを特徴とする。
【００１２】
請求項８に記載の画像処理方法は、手続を実行可能な実行部を少なくとも２個設け、一方の実行部の処理状態に対応して手続を変更し、他方の実行部による処理状態を制御することを特徴とする。
【００１３】
請求項９に記載の画像処理装置は、手続を実行する第１の手段と、手続を実行する第２の手段と、第１の手段の処理状態に対応して手続を変更し、第２の手段による処理状態を制御する手段とを備えることを特徴とする。
【００１４】
請求項１に記載の画像処理方法、請求項３に記載の画像処理装置、および請求項４に記載の記録媒体においては、手続ブロックとデータブロックのそれぞれは、１つ以上のサブブロックで構成され、サブブロックには、ヘッダ部とデータ部とが設けられ、ヘッダ部には、手続ブロックとデータブロックの識別符号が配置され、データブロックのデータ部には画像データが配置され、手続ブロックのデータ部には手続が配置される。
【００１５】
請求項５に記載の画像処理方法、請求項６に記載の画像処理装置、および請求項７に記載の記録媒体においては、ポリゴンの１つの頂点が基準頂点とされ、絶対座標で表される。そのポリゴンの他の頂点、およびそのポリゴンに連結されている他のポリゴンの頂点の座標は、基準頂点または他の頂点に対する相対座標で表される。
【００１６】
請求項８に記載の画像処理方法、および請求項９に記載の画像処理装置においては、手続を実行可能な実行部が少なくとも２個設けられ、一方の処理状態に対応して手続が変更され、他方の処理状態が制御される。
【発明の効果】
【００１７】
以上の如く請求項１に記載の画像処理方法および請求項３に記載の画像処理装置よれば、データブロックのデータ部のデータを手続ブロックのデータ部の手続に対応して処理するようにしたので、自由度が向上し、ソフトウエアの低コストの開発が可能となり、またデータの転送量を少なくし、迅速な画像処理が可能となる。
【００１８】
請求項４に記載の記録媒体によれば、画像データを手続ブロックとデータブロックとに区分して記録するようにしたので、より変化に富んだ画像処理が可能なソフトウエアを提供することができる。
【００１９】
請求項５に記載の画像処理方法、請求項６に記載の画像処理装置および請求項７に記載の記録媒体によれば、ポリゴンの頂点のうちの１つの基準頂点の座標を絶対座標で表し、その他の頂点を、基準頂点または他の頂点に対する相対座標で表すようにしたので、ポリゴンを少ないデータ量で表現することが可能になる。従って、迅速な処理が可能となる。
【００２０】
請求項８に記載の画像処理方法および請求項９に記載の画像処理装置によれば、一方の実行部の処理状態に対応して手続を変更し、他方の実行部による処理状態を制御するようにしたので、効率的に画像データを処理することが可能となる。
【発明を実施するための最良の形態】
【００２１】
図１乃至図３は、本発明の画像処理方法が適用されるビデオゲーム機の構成例を表している。これらの図に示すように、ビデオゲーム機１は、ゲーム機本体２と、ゲーム機本体２に対してケーブル２７を介して接続されている操作装置１７とにより、基本的に構成されている。ゲーム機本体２の上面の中央部には、ディスク装着部３が設けられ、その内部に図４に示すようなＣＤ−ＲＯＭ５１が装着されるようになされている。ディスク装着部３の左側には、装置の電源をオンまたはオフするとき操作される電源スイッチ５と、ゲームを一旦リセットするとき操作されるリセットスイッチ４が設けられている。また、ディスク装着部３の右側には、ディスク装着部３に対してＣＤ−ＲＯＭ５１を着脱するとき操作されるディスク操作スイッチ６が設けられている。
【００２２】
ゲーム機本体２の正面には、接続部７Ａと７Ｂが設けられている。これらの接続部７Ａまたは７Ｂには、操作装置１７に対してケーブル２７を介して接続されている接続端子部２６と、メモリカードなどよりなる記録装置３８を、それぞれ接続することができるようになされている。すなわち、このゲーム機本体２には、２台の操作装置１７を接続することができるようになされている。
【００２３】
図２には、右側の接続部７Ｂに接続端子部２６が接続され、左側の接続部７Ａには接続端子部２６と記録装置３８のいずれもが装着されていない状態が示されている。同図に示すように、記録装置３８を装着する記録挿入部８には、シャッタ９が設けられており、記録装置３８をゲーム機本体２に対して装着するとき、記録装置３８の先端で、このシャッタ９を押し込むようにして、装着が行われる。
【００２４】
接続端子部２６の把持部３１Ａと記録装置３８の把持部４２Ａには、それぞれ凹凸のある形状（ギザギザ模様）にした滑り止め加工（例えばローレット加工）が施されている。接続端子部２６と、記録装置３８の長さＬは、ほぼ同一の長さとされている。
【００２５】
操作装置１７には、左右の手で把持される支持部２０，２１が設けられ、支持部２０，２１の先端には、操作部２４，２５が設けられている。また、支持部２０，２１の上面には、操作部１８，１９が設けられている。操作部２４，２５は、左右の手の人差し指で操作され、操作部１８，１９は、左右の手の親指で、それぞれ操作されるようになされている。
【００２６】
操作部１８と１９の間には、ゲーム中においてセレクト操作を行うとき操作されるセレクトスイッチ２２と、ゲームを開始するとき操作されるスタートスイッチ２３が設けられている。
【００２７】
図５は、ゲーム機本体２の内部の構成例を表している。ＣＰＵ（Central Processing Unit）６１は、メインバスを介して各種の処理を実行するようになされている。このＣＰＵ６１は、ＧＴＥ（Geometry Transfer Engine）６２とＰＫＥ（Programable Packet Engine）６３とを有している。ＧＴＥ６２は、例えば複数の演算を並列に実行する並列演算機能を備え、ＣＰＵ６１からの演算要求に対応して、座標変換、光源計算、行列あるいはベクトルなどの演算を高速に実行する。ＰＫＥ６３は、ＧＴＥ６２の演算結果に基づいて作成された描画命令やデータをパケット化またはアンパケット化する。
【００２８】
メインバスには、ＣＰＵ６１の他、ＲＡＭ（Random Access Meomory）からなるメインメモリ６４、ＤＭＡＣ（Direct Memory Access Controller）６５、およびレンダリングプロセッサとしてのＧＰＵ（Graphic Processing Unit）が接続されている。
【００２９】
メインメモリ６４には、各種のプログラムやデータなどが適宜記憶される。ＤＭＡＣ６５は、メインメモリ６４上のデータを、メインバスを介してＧＰＵ６６のローカルメモリ８３（図６）に転送する動作を実行する。
【００３０】
ＧＰＵ６６は、例えば図６に示すように、ＰＫＥ８１、演算部８２、および描画部８４により構成されている。ＰＫＥ８１はＰＫＥ６３と実質的に同一の機能を有し、メインバスを介してＣＰＵ６１またはＤＭＡＣ６５より入力されたパケット化されたプログラム（手順）とデータをアンパケット化して、演算部８２のローカルメモリ８３に直接書き込みを行う。演算部８２は、ローカルメモリ８３に書き込まれたアンパケット化されたプログラム（手順）に対応して、ローカルメモリ８３上のデータを処理する。
【００３１】
描画部８４は、演算部８２から供給された描画命令を解釈し、頂点の色データと奥行きを表すＺ値からポリゴン（三角形や四角形などの基本的な単位図形）を構成する全ての画素の色とＺ値を考慮し、フレームメモリ６７に画素データを書き込む処理（レンダリング処理）を行う。描画部８４は、演算部８２のローカルメモリ８３の特定の領域から、描画部８４の処理とは非同期に、描画命令を取り出すことができるようになされている。
【００３２】
ローカルメモリ８３は複数のバンクで構成されており、ＰＫＥ８１は、演算部８２が他の処理を実行している最中に、所定のバンクにデータを書き込むことが可能である。また、ローカルメモリ８３においては、データのみ、データの一部のみ、プログラム一部のみなどを、可変長の複数領域に書き込むことができる。
【００３３】
ＧＰＵ６６の描画部８４は、フレームメモリ６７に書き込んだ画素データを適宜読み出して、ＣＲＴＣ（Cathode Ray Tube Controler）６８を介して、ＣＲＴ８１に出力する。
【００３４】
メインバスより低速のサブバスにはＣＤ−ＲＯＭ５１をドライブするＣＤ−ＲＯＭドライブ７０、操作装置１７、これらを制御するサブＣＰＵ７１、サブメモリ７２が接続されている。バスコントローラ６９は、メインバスとサブバスのスイッチング処理を行う。
【００３５】
次に、その基本的な動作について説明する。サブＣＰＵ７１は、操作装置１７の操作に対応して、ＣＤ−ＲＯＭドライブ７０を制御し、ＣＤ−ＲＯＭ５１を再生させ、再生データをサブメモリ７２に記憶させる。
【００３６】
ＤＭＡＣ６５は、サブメモリ７２に記憶されたデータを所定のタイミングで読み出し、バスコントローラ６９とメインバスを介してメインメモリ６４にＤＭＡ転送させる。
【００３７】
ＣＰＵ６１は、メインメモリ６４のデータを読み出し、ＧＴＥ６２に供給し、ＧＴＥ６２の演算結果に基づいて、ポリゴンの組み合わせてとして、ＣＲＴ８１に表示すべき三次元モデルを定義する。そして、三次元画像を描画するための各ポリゴンに対応する描画命令を作成し、この描画命令をコマンドパケットとしてＰＫＥ６３でパケット化して、ＧＰＵ６６に転送する。
【００３８】
ＧＰＵ６６においては、ＰＫＥ８１で、この描画命令をアンパケット化し、ローカルメモリ８３に記憶する。演算部８２は、このローカルメモリ８３に記憶された描画命令を解釈し、ポリゴンの頂点から中間の頂点を補間生成するなどしてポリゴンを描画する命令を作成する。描画部８４は、この描画命令に対応して、ポリゴンの頂点の色データと奥行きを示すＺ値から、ポリゴンを構成する全ての画素の色とＺ値を考慮して、画素データをフレームメモリ６７に描画するレンダリング処理を実行する。
【００３９】
描画部８４はまた、フレームメモリ６７に描画された画素データを読み出して、ＣＲＴＣ６８を介してＣＲＴ８１に出力し、表示させる。
【００４０】
図７は、本実施例におけるデータフォーマットの構成例を表している。このフォーマットは、図７に示すように、手続ブロック（Procedure Block）と、データブロック（Data Block）とにより構成されている。手続ブロックとデータブロックは、それぞれ図８に示すような１つ以上のサブブロックにより構成されている。
【００４１】
図８に示すように、サブブロックはヘッダ部とデータ部とにより構成され、ヘッダ部には、サイズ（SIZE）、アトリビュート（ATTR）、およびアドレス（ADDR）が配置されている。サイズは、このサブブロックのデータ部（Data Area）の大きさを表しており、アトリビュートには、このサブブロックが手続ブロックのサブブロックであるのか、データブロックのサブブロックであるのかを表す識別符号が配置されている。また、アドレスは、ローカルメモリ８３のアドレスを表しており、このサブブロックのデータは、ローカルメモリ８３のそのアドレスの位置に書き込まれる。サイズの０は、データ部が省略されていることを表す。
【００４２】
データブロックのデータ部に配置されているデータは、手続ブロックのデータ部に配置されている手続に従って処理される。従って、本実施例においては、ブロック単位で任意のデータフォーマットを規定し、そのデータに対して任意の処理を行うようにすることができる。ＣＲＴ８１に表示する三次元オブジェクト（三次元画像）は、様々な形状をしているため、その形状によって、より適切な（データ量を低減することが可能な）データフォーマットが存在する。本実施例においては、任意のデータフォーマットを採用することができるため、三次元オブジェクトの形状を、より少ないデータ量で表現することができる。
【００４３】
図９と図１０は、第１のデータフォーマットの例を表している。この実施例においては、図９に示すように、三角形よりなるポリゴンが１つの辺を介して相互に隣接している。すなわち、頂点（代表点）Ｐ0，Ｐ1，Ｐ2により１つのポリゴンが形成され、頂点（代表点）Ｐ1，Ｐ2，Ｐ3により、他の１つのポリゴンが形成され、頂点（代表点）Ｐ2，Ｐ3，Ｐ4により、さらに他の１つのポリゴンが形成されている。そして、この実施例においては、頂点Ｐ0がポリゴン（三角形）の基準頂点とされ、絶対座標で表され、他の頂点Ｐ1，Ｐ2，Ｐ3，Ｐ4は、相対座標で表される。
【００４４】
すなわち、基準頂点Ｐ0の絶対座標が（Ｘ０，Ｙ０，Ｚ０）とされるとき、頂点Ｐ1は、頂点Ｐ0からのＸ，Ｙ，Ｚの各座標軸方向の距離ｄｘ１，ｄｙ１，ｄｚ１により表現される（なお図９においては、説明の便宜上、ｄｚ１は省略されている。後述する図１１と図１３でも同様）。すなわち頂点Ｐ1の絶対座標を（Ｘ１，Ｙ１，Ｚ１）とするとき、次の式が成立する。
【００４５】
ｄｘ１＝Ｘ１−Ｘ０
ｄｙ１＝Ｙ１−Ｙ０
ｄｚ１＝Ｚ１−Ｚ０
そして、頂点Ｐ2は、頂点Ｐ1からの相対座標（ｄｘ２，ｄｙ２，ｄｚ２）で表される。すなわち、頂点Ｐ2の絶対座標を（Ｘ２，Ｙ２，Ｚ２）とするとき、頂点Ｐ2の座標は次式で表される。
【００４６】
ｄｘ２＝Ｘ２−Ｘ１
ｄｙ２＝Ｙ２−Ｙ１
ｄｚ２＝Ｚ２−Ｚ１
同様に頂点Ｐ3は次式で示す相対座標（ｄｘ３，ｄｙ３，ｄｚ３）で表される。
【００４７】
ｄｘ３＝Ｘ３−Ｘ２
ｄｙ３＝Ｙ３−Ｙ２
ｄｚ３＝Ｚ３−Ｚ２
従って、図９に示すポリゴンのデータは、図１０に示すように、基準頂点の絶対座標（Ｘ０，Ｙ０，Ｚ０）と、他の頂点Ｐ1，Ｐ2，Ｐ3の相対座標（ｄｘ１，ｄｙ１，ｄｚ１），（ｄｘ２，ｄｙ２，ｄｚ２），（ｄｘ３，ｄｙ３，ｄｚ３），・・・により表される。
【００４８】
一方、図１１においては、頂点Ｐ0を中心として、５つのポリゴンが放射状に配置されている。この場合のデータフォーマットは、例えば図１２に示すように規定することができる。すなわち、頂点Ｐ0の絶対座標を（Ｘ０，Ｙ０，Ｚ０）とするとき、頂点Ｐ1の座標は頂点Ｐ0に対する相対座標（ｄｘ１，ｄｙ１，ｄｚ１）で表す。他の頂点Ｐ2乃至Ｐ5も同様に、頂点Ｐ0からの相対座標で表される。
【００４９】
そして、この実施例では、各頂点の色データ（例えば、頂点Ｐ0の色データ（Ｂ０，Ｇ０，Ｒ０）、頂点Ｐ1の色データ（Ｂ１，Ｇ１，Ｒ１））が、頂点座標とともに指定されている。
【００５０】
図１３は、さらに他のポリゴンの配置例を表している。この実施例では、頂点Ｐ0，Ｐ1，Ｐ2からなるポリゴンと、頂点Ｐ2，Ｐ3，Ｐ4からなるポリゴンは、頂点Ｐ2を介して結合されているのに対し、頂点Ｐ2，Ｐ3，Ｐ4からなるポリゴンと頂点Ｐ3，Ｐ5，Ｐ6からなるポリゴンは、頂点Ｐ3と頂点Ｐ6を結ぶ直線で接している。すなわち、この実施例においては、各ポリゴンの連結の状態に特定の規則は存在しない。
【００５１】
図１４は、図１３に示すポリゴンのデータのフォーマットの例を表している。この実施例においては、各ポリゴンの頂点の座標（例えば（Ｘ０，Ｙ０，Ｚ０），、各頂点における法線方向のベクトル（ＮＸ０，ＮＹ０，ＮＺ０）、このポリゴンに対するテクスチャの記憶されているアドレス（フレームメモリ６７のアドレス（ＴＵ０，ＴＶ０）、および頂点の色データ（Ｒ０，Ｇ０，Ｂ０）により表されている。
【００５２】
本発明においては、以上のような３つのフォーマットのいずれをも、同一のビデオゲームのソフトウエア上で適宜、場合によって採用することができる。
【００５３】
また、同一のフォーマットのデータであったとしても、その手続（処理方法）を変更することで、異なる画像を表現することができる。例えば、図１５は、正方形の４つの頂点Ｐ0乃至Ｐ3の座標データと、水平または垂直方向に隣接する２つの頂点間の間を４等分して、１６個のポリゴンを生成する手続を与えた場合における処理結果を表している。
【００５４】
これに対して、正方形の４つの頂点Ｐ0乃至Ｐ3のうち、２つの頂点の間を、図１５における場合と同様に４等分するように手続を規定するとともに、更に生成された点に対する法線を、４つの頂点Ｐ0乃至Ｐ3上の法線を線形に内挿補間することで生成し、その生成した法線に対応して、各点を移動するように、手続を規定すれば、図１６に示すようなポリゴンを表示することができる。
【００５５】
次に、図１７のフローチャートを参照して、メインメモリ６４上に記憶されているデータをＧＰＵ６６で処理し、ＣＲＴ８１に表示させる処理について説明する。最初にステップＳ１において、ＣＰＵ６１は、ＰＫＥ６３に対して、転送するデータのメインメモリ６４上のアドレスと、そのデータをパッキングする手順を通知する。ＰＫＥ６３は、ステップＳ２において、この通知に対応する処理を実行する。すなわち、通知されたメインメモリ６４のアドレスからデータを読み出し、これをやはり通知されたパッキング手順に従ってパケットにパッキングする。
【００５６】
次に、ＰＫＥ６３は、ステップＳ３において、転送先のＧＰＵ６６のＰＫＥ８１が、いま受信可能な状態であるか否かを判定する。受信可能であると判定された場合、ステップＳ４に進み、ＰＫＥ６３は、ＰＫＥ８１に対して、データを転送する。
【００５７】
これに対して、ステップＳ３において、ＰＫＥ８１が、いま受信可能な状態にはないと判定された場合、ステップＳ５に進み、ＰＫＥ６３は、ＤＭＡＣ６５に対して、メインメモリ６４上のＦＩＦＯ（Fast In Fast Out）への転送を要求する。ＤＭＡＣ６５は、この要求に対応して、メインメモリ６４上のデータをＦＩＦＯに転送する。そして、ステップＳ６において、ＤＭＡＣ６５は、ＰＫＥ８１が受信可能な状態になったとき、メインメモリ６４のＦＩＦＯのデータをＰＫＥ８１に転送する処理を実行する。
【００５８】
ＰＫＥ８１は、ＣＰＵ６１のＰＫＥ６３またはＤＭＡＣ６５よりデータの転送を受けたとき、これをアンパッキングし、そのデータをヘッダに表されているローカルメモリ８３のアドレスに展開する。
【００５９】
ＰＫＥ８１は、データのローカルメモリ８３に対する展開を終了したとき、ステップＳ８で演算部８２を起動し、手続を実行させる。演算部８２は、記憶された手続（手続ブロックのサブブロックのデータ部に配置されていた手続）に従って、記憶されたデータ（データブロックのサブブロックのデータ部に配置されていた画像データ）を処理し、三次元オブジェクトを表現するためのポリゴンデータ列を生成し、ローカルメモリ８３の所定のアドレスに記憶させる。
【００６０】
次にステップＳ９に進み、描画部８４は、演算部８２からポリゴンデータ列の配置アドレスの供給を受け、そのデータ列に対応するレンダリング処理を実行する。すなわち、フレームメモリ６７に画素データを描画する。そして、この画素データが描画部８４により読み出され、ＣＲＴＣ６８を介してＣＲＴ８１に出力され、表示される。
【００６１】
ステップＳ８における演算部８２のポリゴンデータ列生成処理について更に説明すると、次のようになる。すなわち、いま、演算部８２が、例えば図１８に示すようなデータ（データブロックのサブブロックのデータ部に配置されていたデータ）を受け取り、このデータから、図１９に示すようなポリゴンを生成するものとすると、このデータに対応する手続（手続ブロックのサブブロックのデータ部に配置される手続）としては、図２０のフローチャートに示すような手続が規定される。図１８のＴＹＰＥには、この手続を指定する情報が配置される。
【００６２】
最初にステップＳ２１において、データを解析する処理が実行される。この実施例の場合、図１８に示すＮｉ，Ｎｊは、ポリゴンのｉ，ｊの各方向（図１９における右方向と右斜め下方向）の分割数とされる。すなわち、Ｎｉは、頂点（代表点）Ｐ0（Ｘ０，Ｙ０，Ｚ０）と頂点（代表点）Ｐ1（Ｘ１，Ｙ１，Ｚ１）の間を分割する数とされ、Ｎｊは、頂点（代表点）Ｐ0（Ｘ０，Ｙ０，Ｚ０）と頂点（代表点）Ｐ2（Ｘ２，Ｙ２，Ｚ２）の間を分割する数とされる。Ｍｉ，Ｍｊは、データ内に保持されているｉ，ｊ各方向の法線データ数とされる。（Ｘ０，Ｙ０，Ｚ０），・・・，（Ｘ３，Ｙ３，Ｚ３）は、代表点の座標とされる。ＲＧＢ０，ＲＧＢ１，ＲＧＢ２，ＲＧＢ３は、それぞれ各代表点の輝度値とされる。
【００６３】
また、ｄＸｉ，ｄＹｉ，ｄＺｉ，ｄＸｊ，ｄＹｊ，ｄＺｊは、代表点の間をＮｉ，Ｎｊ個に分割した際の各方向のＸ，Ｙ，Ｚ軸上の変位量とされる。ＮＸ，ＮＹ，ＮＺは、Ｘ，Ｙ，Ｚ軸方向の、それぞれ代表法線とされ、Ｎ００，Ｎ０１，・・・，Ｎ７９，Ｎ８０は、代表点の間をＭｉ，Ｍｊ個に分割して生成される分割点上の法線の大きさとされる。
【００６４】
次にステップＳ２２に進み、１つの頂点（代表点と分割点により構成される点の中の１つ）が選択される。例えば図２１における頂点Ｐ0が選択される。そして、ステップＳ２３において、ステップＳ２２で選択した頂点の座標と輝度値が計算される。
【００６５】
さらにステップＳ２４に進み、ステップＳ２２で選択した頂点の法線の大きさから頂点上の法線ベクトルを計算する。そして、ステップＳ２５においては、ステップＳ２４で求めた頂点上の法線ベクトルを変位ベクトルとして、頂点座標を移動する処理が行われる。
【００６６】
ステップＳ２６では、ステップＳ２５で得られた頂点座標を回転マトリックスで変換し、所定の方向の画像となるようにする。次にステップＳ２７において、ステップＳ２６の三次元座標を、二次元上の座標に透視変換する。
【００６７】
ステップＳ２８において、演算部８２は、描画部８４に対する描画命令のパラメータとして、頂点の座標と輝度値をローカルメモリ８３上に設定する。
【００６８】
次にステップＳ２９に進み、演算部８２は、描画部８４に対して描画命令の格納アドレスを通知し、描画部８４にレンダリング処理を開始させる。描画部８４は、この通知を受けたとき、演算部８２が、ステップＳ２８においてローカルメモリ８３上に設定した頂点座標と輝度値を読み取り、レンダリング処理を行う。
【００６９】
ステップＳ３０においては、例えば図２１に示す全ての頂点の処理が終了したか否かを判定し、まだ処理を行っていない頂点が存在すると判定された場合においては、ステップＳ２２に戻り、新たな頂点を選択し、同様の処理を実行する。そして、ステップＳ３０において、全ての頂点の処理が終了したと判定された場合、処理が終了される。
【００７０】
なお、図１８のデータは、頂点Ｐ0乃至Ｐ3によるポリゴンを、１６×１６個に分割することができるように、Ｎ００乃至Ｎ８０のデータが用意されているが、図１９（図２１）の実施例では、そのうちの一部のデータのみを使用し、４×４個に分割している。
【００７１】
なお、ＣＰＵ６１が、ＧＰＵ６６に転送するデータは、同一の処理（手続）が連続するように、予めソーティングされる。ＧＰＵ６６においては、データに対して同一の処理を行う場合、手続ブロックは省略可能とされる。このためソーティングをかけることにより、データ転送量を軽減することができる。
【００７２】
以上のように、転送されるデータ中に、データ固有の解釈プログラム（手続）を内包させることにより、データ自身のフォーマットの自由度を向上させることができる。また、その処理の自由度も向上させることができる。
【００７３】
更に、処理と手続をまとめて扱うことが可能となるため、メモリの連続した領域に、そのデータが記憶されることとなり（メモリの極所性を高めることができ）、ＤＭＡ転送を効率よく行うことが可能となる。
【００７４】
また、ＣＰＵ６１（ＤＴＥ６２）とＧＰＵ６６の間において、その負荷に隔たりがある場合、データに内包される処理プログラム（手続）を適宜変更することにより、負荷を動的に調節することができる。例えば、基本的にメインバスの高速性を確保するために、ＣＰＵ６１（ＧＴＥ６２）における処理ができるだけ少なくなるようにして、ＧＰＵ６６に対してできるだけ多くの処理を行わせるようにするが、ＧＰＵ６６が過負荷になった場合においては、ＣＰＵ６１（ＧＥＴ６２）において、ＧＰＵ６６が行う処理の一部を肩代わりして実行するようにすることができる。
【００７５】
図２２のフローチャートは、この場合の処理例を表している。すなわち、最初にステップＳ４１において、ＧＰＵ６６の演算部８２の計算負荷が、ＣＰＵ６１の計算負荷に較べて非常に大きいか否かを判定する。図１７のステップＳ３とＳ５を参照して説明したように、ＣＰＵ６１のＰＫＥ６３は、ＧＰＵ６６のＰＫＥ８１が受信可能な状態でないと判定したとき、ＤＭＡＣ６５にメインメモリ６４上のＦＩＦＯへの転送を要求する。この要求が発生するということは、ＧＰＵ６６が、他の計算を行っていることを意味する。そこで、ＣＰＵ６１は、この要求の回数をカウントし、そのカウント値が、予め設定してある基準値より大きくなったとき、ＧＰＵ６６の計算負荷が、ＣＰＵ６１の計算負荷に較べて非常に大きい状態になったものと判定することができる。
【００７６】
あるいはまた、ソフトウエアを開発する段階において、所定の状況で操作装置１７により、所定の操作が行われたとき、ＧＰＵ６６の演算部８２の計算負荷が大きくなることを、予め予測できる場合がある。このような場合においては、ＣＰＵ６１は、所定の状況下で操作装置１７から所定の操作が行われたことを示す信号が供給されたとき、ＧＰＵ６６の計算負荷が非常に大きくなったものと判定するようにすることができる。
【００７７】
ステップＳ４１において、ＧＰＵ６６の演算部８２の計算負荷が非常に大きい状態になったと判定された場合、ステップＳ４２に進み、ＣＰＵ６１は、次に実行させるデータの手続ブロックの手続を解析する。そして、ステップＳ４３において、対応するデータブロックのデータに対して、ステップＳ４２で解析した手続を実行し、ＧＰＵ６６の描画部８４の描画命令を生成する。すなわち、ＧＰＵ６６の演算部８２が行う処理を、ＣＰＵ６１（ＧＴＥ６２）が実行する。
【００７８】
次にステップＳ４４に進み、ＣＰＵ６１（ＧＴＥ６２）は、次のような手続ブロックとデータブロックとを生成する。
【００７９】
すなわち、その手続ブロックの手続には、描画部８４にデータブロックの格納アドレスを通知し、レンダリングを開始させる手続を規定する。また、それに対応するデータブロックのデータとしては、ステップＳ４３で生成した描画部８４の描画命令を配置する。
【００８０】
ステップＳ４５においては、ステップＳ４４で生成したデータをＧＰＵ６６に転送するように、ＰＫＥ６３に通知する。ＰＫＥ６３は、この通知を受けたとき、ステップＳ４４で生成されたデータをＧＰＵ６６に転送する処理を実行する。
【００８１】
ＧＰＵ６６は、このデータの供給を受けたとき、通常の場合と同様の処理を実行するが、その手続ブロックの手続には、ステップＳ４４で説明したように、描画部８４にデータブロックの格納アドレスを通知し、レンダリングを開始させる手続が規定されているため、この処理を実行する。その結果、描画部８４は、通知を受けたローカルメモリ８３の格納アドレスからデータを読み取るが、このデータは、ステップＳ４４で説明しように、描画部８４の描画命令そのものとなっている。そこで、描画部８４は、直ちに、この描画命令を実行することになる。
【００８２】
なお、ステップＳ４１において、ＧＰＵ６６の演算部８２の計算負荷が過負荷になっていないと判定された場合においては、ステップＳ４２乃至Ｓ４５の処理はスキップされる。すなわち、この場合においては、通常通り、ＧＰＵ６６により手続の実行処理が行われる。
【００８３】
このように、この実施例においては、手続ブロックとデータとブロックとによりデータを構成するようにしたので、手続を適宜変更することが可能となり、ＣＰＵ６１（ＧＴＥ６２）とＧＰＵ６６（演算部８２）の一方が過負荷の状態となっているとき、その処理の一部を他方に実行させるようにすることができる。これにより、より効率的に、迅速に描画処理を行うことができる。
【００８４】
次に、以上のような手続ブロックとデータブロックとにより構成されるデータを有するＣＤ−ＲＯＭ５１を形成する装置の構成例を図２３を参照して説明する。図２３においては、高度なグラフィックス処理能力を有するワークステーション１００により生成された三次元オブジェクトのイメージデータが、記録装置１０１に出力されるようになされている。記録装置１０１は、このデータを原盤１０２に記録し、この原盤１０２から、ＣＤ−ＲＯＭ５１が生成されるようになされている。
【００８５】
次に、図２４のフローチャートを参照して、図２３の実施例の動作について説明する。最初にステップＳ６１において、使用者は、ワークステーション１００を利用して、オブジェクトデータを作成する処理を実行する。このとき、形状や材質などの情報も定義する。
【００８６】
次にステップＳ６２に進み、使用者は、このオブジェクトを複数のパッチに分割する処理を実行する。これにより、一定の曲率を有する曲面や、一定の材質の平面などの特定の処理単位で表現される部分（パッチ）にオブジェクトデータが分割される。
【００８７】
更にステップＳ６３においては、使用者は、パッチ毎の処理手続を作成する。例えばスプライン補間で補間することができる頂点データを削除し、その頂点データは残った代表点からスプライン補間により生成するプログラムを作成する。これにより、１つのパッチは、１つのデータブロックと、それに対応する１つの手続ブロックにより構成される。
【００８８】
次に、ステップＳ６４に進み、データのアロケーションのシミュレーションを実行する。すなわち、ローカルメモリ８３の配置情報を作成するために、配置シミュレーションを行う。またこのとき、同時に類似する処理プログラムの差分データも生成する。例えば１つのパッチにおいて、１つの手続が規定された場合、その手続に類似する他のパッチの手続は、その手続との違いだけを記述して規定することができる。このように規定された手続は、前定となる（類似する）手続と合成された手続として処理される。これにより、効率的な処理が可能となる。
【００８９】
次にステップＳ６５において、以上のようにして生成されたデータと処理手順を合成する処理が実行される。すなわち、ステップＳ６３で生成された手続が、手続ブロックのサブブロックのデータ部に配置され、その手続に対応する画像データが、データブロックのサブブロックのデータ部に配置される。そして、ステップＳ６４で得られた配置情報が、サブブロックのアドレス（ＡＤＤＲ）に配置される。
【００９０】
次にステップＳ６６に進み、記録処理が実行される。すなわち、ワークステーション１００で生成されたデータが記録装置１０１に供給される。記録装置１０１は、ワークステーション１００より供給されたデータを原盤１０２に記録する処理を実行する。この原盤１０２から、レプリカとしてのＣＤ−ＲＯＭ５１が大量に生成される。
【００９１】
以上、本発明をビデオゲーム機に応用した場合と例として説明したが、本発明は、その他の画像処理装置に応用することも可能である。また、記録媒体としては、ＣＤ−ＲＯＭ以外の光ディスク、磁気ディスク、光磁気ディスク、メモリカードなどを用いることができる。
【図面の簡単な説明】
【００９２】
【図１】本発明の画像処理方法を適用したビデオゲーム機の構成を示す平面図である。
【図２】図１のゲーム機本体の正面の構成を示す正面図である。
【図３】図１のゲーム機本体の側面の構成を示す右側面図である。
【図４】図１のゲーム機本体に装着されるＣＤ−ＲＯＭの構成を示す図である。
【図５】図１のゲーム機本体の内部の構成を示すブロック図である。
【図６】図５のＧＰＵの内部の構成を示すブロック図である。
【図７】データのフォーマットを説明する図である。
【図８】サブブロックのフォーマットを説明する図である。
【図９】ポリゴンの配置を説明する図である。
【図１０】図９のポリゴンを表すデータのフォーマットを示す図である。
【図１１】ポリゴンの他の配置状態を示す図である。
【図１２】図１１のポリゴンを表すデータフォーマットを示す図である。
【図１３】ポリゴンの他の配置例を示す図である。
【図１４】図１３のポリゴンのデータフォーマットを示す図である。
【図１５】ポリゴン分割の例を示す図である。
【図１６】ポリゴン分割の他の例を示す図である。
【図１７】図５の実施例の表示処理の動作を説明するフローチャートである。
【図１８】データフォーマットの例を示す図である。
【図１９】図１８のデータフォーマットに対応する手続を説明する図である。
【図２０】図１７のステップＳ８の処理例を示すフローチャートである。
【図２１】図２０のステップＳ２３の処理を説明する図である。
【図２２】図５の実施例の他の動作を説明するフローチャートである。
【図２３】データを記録する装置の構成例をブロック図である。
【図２４】図２３の実施例の動作を説明するフローチャートである。
【符号の説明】
【００９３】
６１  ＣＰＵ，  ６２  ＧＴＥ，  ６３  ＰＫＥ，  ６４  メインメモリ，  ６５  ＤＭＡＣ，  ６６  ＧＰＵ，  ６７  フレームメモリ，  ６８  ＣＲＴＣ，  ６９  ＣＲＴ，  ８１  ＰＫＥ，  ８２  演算部，  ８３  ローカルメモリ，  ８４  描画部
【図１】
2006079601.tif 000003
【図２】
2006079601.tif 000004
【図３】
2006079601.tif 000005
【図４】
2006079601.tif 000006
【図５】
2006079601.tif 000007
【図６】
2006079601.tif 000008
【図７】
2006079601.tif 000009
【図８】
2006079601.tif 000010
【図９】
2006079601.tif 000011
【図１０】
2006079601.tif 000012
【図１１】
2006079601.tif 000013
【図１２】
2006079601.tif 000014
【図１３】
2006079601.tif 000015
【図１４】
2006079601.tif 000016
【図１５】
2006079601.tif 000017
【図１６】
2006079601.tif 000018
【図１７】
2006079601.tif 000019
【図１８】
2006079601.tif 000020
【図１９】
2006079601.tif 000021
【図２０】
2006079601.tif 000022
【図２１】
2006079601.tif 000023
【図２２】
2006079601.tif 000024
【図２３】
2006079601.tif 000025
【図２４】
2006079601.tif 000026
【手続補正書】
【提出日】平成17年8月22日(2005.8.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データブロックと、該データブロックを処理対象とする手続ブロックとを設け、
前記手続ブロックと前記データブロックのそれぞれを、１つ以上のサブブロックで構成し、
前記サブブロックに、ヘッダ部と、データ部とを設け、
前記ヘッダ部に、前記手続ブロック或いは前記データブロックの識別符号を配置し、
前記データブロックを構成する前記サブブロックの前記データ部に画像データを配置するとともに、前記手続ブロックを構成する前記サブブロックの前記データ部に、前記画像データ毎に定めた処理の手順を示す手続を配置し、
前記データブロックおよび前記手続ブロックを、同じ手続が連続するようにソーティングを行い、
前記データブロックのデータ部の画像データを、前記手続ブロックのデータ部の手続に対応して処理すること
を特徴とする画像処理方法。
【請求項２】
前記ヘッダ部には、さらに、対応する前記データ部の大きさ、または前記ブロックを記憶するメモリのアドレスの少なくとも一方が配置されていること
を特徴とする請求項１に記載の画像処理方法。
【請求項３】
画像データを配置するためのデータブロックと、該画像データに対する手続を配置するための手続ブロックとを備えたデータであって、前記手続ブロックおよび前記データブロックのそれぞれが１つ以上のサブブロックで構成され、且つ前記サブブロックに、ヘッダ部と、データ部とが設けられているデータを生成し、該生成したデータを転送する制御手段と、
前記転送されたデータを受付け、該受付けたデータを処理する描画手段と、を有し、
前記制御手段は、
前記ヘッダ部に、前記手続ブロック或いは前記データブロックの識別符号を配置し、前記手続ブロックを構成する前記サブブロックの前記データ部に、前記画像データ毎に定めた処理の手順を示す手続を配置するとともに、前記データブロックを構成する前記サブブロックの前記データ部に、画像データおよび該画像データに対応する手続を指定する指定情報を配置し、さらに、前記手続ブロックに配置された手続用いて前記データをソートした上で転送を行い、
前記描画手段は、
前記データブロックのデータ部の前記画像データに対応する手続を、当該データ部に配置されている前記指定情報を用いて前記手続ブロックに配置されている手続の中から選択し、該画像データを該選択した手続を用いて処理すること
を特徴とする画像処理装置。
【請求項４】
請求項３に記載の画像処理装置であって、
前記制御手段は、
前記ソートの結果、前記手続ブロックの中に同じ手続を配置したサブブロックが連続する場合、連続するサブロックを省略して、前記データの転送を行うこと
を特徴とする画像処理装置。
【請求項５】
請求項３または４に記載の画像処理装置であって、
前記制御手段は、前記データブロックに、様々なデータ構造を持つ画像データを配置可能に構成されていること
を特徴とする画像処理装置。
【請求項６】
制御部および描画処理部を有する画像処理装置が行う画像処理方法であって、
前記制御部は、
画像データを配置するためのデータブロックと、該画像データに対する手続を配置するための手続ブロックとを備えたデータであって、前記手続ブロックおよび前記データブロックのそれぞれが１つ以上のサブブロックで構成され、且つ前記サブブロックに、ヘッダ部と、データ部とが設けられているデータを生成するステップと、
前記生成したデータを転送するステップと、を行い、
前記描画処理部は、前記転送された前記データを受付け、該受付けたデータを処理するステップを行い、
前記データを生成するステップは、前記ヘッダ部に、前記手続ブロック或いは前記データブロックの識別符号を配置し、前記手続ブロックを構成する前記サブブロックの前記データ部に、前記画像データ毎に定めた処理の手順を示す手続を配置するとともに、前記データブロックを構成する前記サブブロックの前記データ部に、画像データおよび該画像データに対応する手続を指定する指定情報を配置し、
前記転送するステップは、前記手続ブロックに配置された手続用いて前記データをソートした上で転送を行い、
前記データを処理するステップは、前記データブロックのデータ部の前記画像データに対応する手続を、当該データ部に配置されている前記指定情報を用いて前記手続ブロックに配置されている手続の中から選択し、該画像データを該選択した手続を用いて処理すること
を特徴とする画像処理方法。