(57)【特許請求の範囲】
【請求項１】
階層構造でリンクされた複数のモデルを有し、少なくとも第１のモデルはポリゴンを構成する複数の頂点を有し、少なくとも第１の頂点の位置は複数のモデルの位置と当該モデルからのウエイト値に従って求められる一体整形モデルを描画する画像処理方法において、
前記一体整形モデルのデータが、
前記複数のモデル内における複数の頂点のデータを、モデル毎に格納する共有頂点バッファのフォーマットデータと、
前記頂点の位置に影響を与えるモデル毎に形成され、前記共有頂点バッファ内の前記複数の頂点に与えられた頂点ＩＤによって特定された頂点データを有する頂点リストと、
前記ポリゴンを有するモデル毎に形成され、前記頂点ＩＤを属性データとするポリゴンデータを含むポリゴンリストとを有し、
前記画像処理方法は、
前記階層構造に従うモデルの処理順に前記複数のモデルに対応する共有頂点バッファの領域を前記フォーマットデータに従ってメモリ内に生成する工程と、
ゲーム進行データに基づいてモデルの位置を設定したモデルマトリクスデータを生成する工程と、
前記階層構造に従うモデルの処理順に、前記モデルの頂点リストが有する頂点データに対して、前記モデルマトリクスデータに従って移動後の頂点データを生成するマトリクス演算と、前記移動後の頂点データに前記モデルからのウエイト値を反映するウエイト演算とを行い、当該演算された頂点データを、前記共有頂点バッファ内の前記頂点ＩＤに従う領域に格納又は加算して共有頂点データを生成する工程と、
前記ポリゴンを、前記共有頂点データに従ってレンダリングするレンダリング工程とを有し、
前記頂点リスト内の頂点データは、少なくとも頂点の位置データと、前記頂点リストが属するモデルからのウエイト値及び当該頂点に対応する前記共有頂点バッファ内の頂点ＩＤとを有し、
前記頂点リストは、前記階層構造に従うモデルの処理順に処理した時に最初に前記ウエイト演算が行われるスタートウエイト頂点と、前記ウエイト演算が最初でも最後でもないミドルウエイト頂点と、前記ウエイト演算が最後に行われるエンドウエイト頂点とに分けられ、
前記共有頂点データを生成する工程は、前記マトリクス演算では前記位置データに前記モデルマトリクスを乗算し、前記ウエイト演算では前記演算された位置データに前記ウエイト値を乗算し、前記スタートウエイト頂点に対する前記演算された頂点データを、前記共有頂点バッファ内の前記頂点ＩＤに従う領域に格納し、前記ミドルウエイト頂点及びエンドウエイト頂点に対する前記演算された頂点データを、前記共有頂点バッファ内の前記頂点ＩＤに従う領域内の頂点データに加算することを特徴とする画像処理方法。
【請求項２】
請求項１において、
前記ポリゴンリストは、所定のモデルの前記ポリゴンの描画を指示する描画コマンド又は当該ポリゴンリストが属するモデルのポリゴンの未描画を指示する未描画コマンドを有し、
前記レンダリング工程は、各モデルの前記共有頂点データ生成が終了するたびに、当該終了したモデルのポリゴンリストを参照し、ポリゴンリスト内の前記描画コマンドに従って当該描画コマンドが指示するモデルについて前記レンダリングを行うことを特徴とする描画処理方法。
【請求項３】
階層構造でリンクされた複数のモデルを有し、少なくとも第１のモデルはポリゴンを構成する複数の頂点を有し、少なくとも第１の頂点の位置は複数のモデルの位置と当該モデルからのウエイト値に従って求められる一体整形モデルを描画する画像処理プログラムを記録した記録媒体において、
前記記録媒体は、前記一体整形モデルのデータを記録し、
当該一体整形モデルのデータが、
前記複数のモデル内における複数の頂点のデータを、モデル毎に格納する共有頂点バッファのフォーマットデータと、
前記頂点の位置に影響を与えるモデル毎に形成され、前記共有頂点バッファ内の前記複数の頂点に与えられた頂点ＩＤによって特定された頂点データを有する頂点リストと、
前記ポリゴンを有するモデル毎に形成され、前記頂点ＩＤを属性データとするポリゴンデータを含むポリゴンリストとを有し、
前記画像処理プログラムは、
前記階層構造に従うモデルの処理順に前記複数のモデルに対応する共有頂点バッファの領域を前記フォーマットデータに従ってメモリ内に生成する手順と、
ゲーム進行データに基づいてモデル間の相対位置関係を設定したモデルマトリクスデータを生成する手順と、
前記階層構造に従うモデルの処理順に、前記モデルの頂点リストが有する頂点データに対して、前記モデルマトリクスデータに従って移動後の頂点データを生成するマトリクス演算と、前記移動後の頂点データに前記モデルからのウエイト値を反映するウエイト演算とを行い、当該演算された頂点データを、前記共有頂点バッファ内の前記頂点ＩＤに従う領域に格納又は加算して共有頂点データを生成する手順と、
前記ポリゴンを、前記共有頂点データに従ってレンダリングするレンダリング手順とをコンピュータに実行させ、
前記頂点リスト内の頂点データは、少なくとも頂点の位置データと、前記頂点リストが属するモデルからのウエイト値及び当該頂点に対応する前記共有頂点バッファ内の頂点ＩＤとを有し、
前記頂点リストは、前記階層構造に従うモデルの処理順に処理した時に最初に前記ウエイト演算が行われるスタートウエイト頂点と、前記ウエイト演算が最初でも最後でもないミドルウエイト頂点と、前記ウエイト演算が最後に行われるエンドウエイト頂点とに分けられ、
前記共有頂点データを生成する手順は、前記マトリクス演算では前記位置データに前記モデルマトリクスを乗算し、前記ウエイト演算では前記演算された位置データに前記ウエイト値を乗算し、前記スタートウエイト頂点に対する前記演算された頂点データを、前記共有頂点バッファ内の前記頂点ＩＤに従う領域に格納し、前記ミドルウエイト頂点及びエンドウエイト頂点に対する前記演算された頂点データを、前記共有頂点バッファ内の前記頂点ＩＤに従う領域内の頂点データに加算することを特徴とする画像処理プログラムを記録した記録媒体。
【請求項４】
請求項３において、
前記ポリゴンリストは、所定のモデルの前記ポリゴンの描画を指示する描画コマンド又は当該ポリゴンリストが属するモデルのポリゴンの未描画を指示する未描画コマンドを有し、
前記レンダリング手順は、各モデルの前記共有頂点データ生成が終了するたびに、当該終了したモデルのポリゴンリストを参照し、ポリゴンリスト内の前記描画コマンドに従って当該描画コマンドが指示するモデルについて前記レンダリングを行うことを特徴とする画像処理プログラムを記録した記録媒体。
【請求項５】
階層構造でリンクされた複数のモデルを有し、少なくとも第１のモデルはポリゴンを構成する複数の頂点を有し、少なくとも第１の頂点の位置は複数のモデルの位置と当該モデルからのウエイト値に従って求められる一体整形モデルを描画する画像処理部を有するゲーム機器において、
前記一体整形モデルのデータが、
前記複数のモデル内における複数の頂点のデータを、モデル毎に格納する共有頂点バッファのフォーマットデータと、
前記頂点の位置に影響を与えるモデル毎に形成され、前記共有頂点バッファ内の前記複数の頂点に与えられた頂点ＩＤによって特定された頂点データを有する頂点リストと、
前記ポリゴンを有するモデル毎に形成され、前記頂点ＩＤを属性データとするポリゴンデータを含むポリゴンリストとを有し、
前記画像処理部は、
前記階層構造に従うモデルの処理順に前記複数のモデルに対応する共有頂点バッファの領域を前記フォーマットデータに従ってメモリ内に生成する手段と、
ゲーム進行データに基づいてモデルの位置を設定したモデルマトリクスデータを生成する手段と、
前記階層構造に従うモデルの処理順に、前記モデルの頂点リストが有する頂点データに対して、前記モデルマトリクスデータに従って移動後の頂点データを生成するマトリクス演算と、前記移動後の頂点データに前記モデルからのウエイト値を反映するウエイト演算とを行い、当該演算された頂点データを、前記共有頂点バッファ内の前記頂点ＩＤに従う領域に格納又は加算して共有頂点データを生成する手段と、
前記ポリゴンを、前記共有頂点データに従ってレンダリングするレンダリング手段とを有し、
前記頂点リスト内の頂点データは、少なくとも頂点の位置データと、前記頂点リストが属するモデルからのウエイト値及び当該頂点に対応する前記共有頂点バッファ内の頂点ＩＤとを有し、
前記頂点リストは、前記階層構造に従うモデルの処理順に処理した時に最初に前記ウエイト演算が行われるスタートウエイト頂点と、前記ウエイト演算が最初でも最後でもないミドルウエイト頂点と、前記ウエイト演算が最後に行われるエンドウエイト頂点とに分けられ、
前記共有頂点データを生成する手段は、前記マトリクス演算では前記位置データに前記モデルマトリクスを乗算し、前記ウエイト演算では前記演算された位置データに前記ウエイト値を乗算し、前記スタートウエイト頂点に対する前記演算された頂点データを、前記共有頂点バッファ内の前記頂点ＩＤに従う領域に格納し、前記ミドルウエイト頂点及びエンドウエイト頂点に対する前記演算された頂点データを、前記共有頂点バッファ内の前記頂点ＩＤに従う領域内の頂点データに加算することを特徴とするゲーム機器。
【請求項６】
請求項５において、
前記ポリゴンリストは、所定のモデルの前記ポリゴンの描画を指示する描画コマンド又は当該ポリゴンリストが属するモデルのポリゴンの未描画を指示する未描画コマンドを有し、
前記レンダリング手段は、各モデルの前記共有頂点データ生成が終了するたびに、当該終了したモデルのポリゴンリストを参照し、ポリゴンリスト内の前記描画コマンドに従って当該描画コマンドが指示するモデルについて前記レンダリングを行うことを特徴とするゲーム機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、リアルタイムで画像処理を行う画像処理方法、リアルタイムで画像処理を行うに適した画像データ構造を生成する画像処理方法、及び当該画像データ構造または画像処理プログラムを記録した記録媒体に関する。
【０００２】
【従来の技術】
家庭用のビデオゲーム機等において、ゲームの進行に同期してリアルタイムでゲーム内のオブジェクトの動画が作成される。かかるゲーム機における画像処理は、例えばフレーム期間という短い期間内でオペレータからの入力操作信号に応答して、ゲーム内のオブジェクトの位置を移動させ、その移動位置に対応した画像を画像メモリ（フレームメモリ）内に描画する必要がある。
【０００３】
ゲーム内のオブジェクトのうち、生き物などのキャラクタは、動作の中で手足や首の動きに伴いそれらの関節部分や筋肉の部分も動き、しかも、その関節部分等では他のポリゴンの動きに応じて異なる形状の関節になることが、より自然な動きを表現するためには必要である。或いは、例えば人間の上腕と肩の部分や上腕と腕の部分では、ポリゴンの動きによっては、上腕や肩の筋肉が盛り上がるなどの動きが含まれることが、より自然な動きを表現するためには必要である。
【０００４】
このような関節部分などに自然な動きを与える描画方法として、関節の両側のモ デルに対して接続すべき頂点を指定し、その頂点間に関節用のポリゴンを追加する方法がある。しかし、かかる描画方法では画一的なポリゴンによって関節部分が描画されることになり、関節の角度の変化に対して対応する動きを与えることができず、不自然な画像しか生成できない。
【０００５】
より自然な動きを描画するために、三次元モデラによりエンベロープと呼ばれる一体整形モデルを利用することが、映画などのリアルタイム処理を必要としないＣＧムービー（コンピュータ・グラフィックを利用した映画）における画像処理の分野で提案されている。この一体整形モデルは、オブジェクト（キャラクタ）をポリゴンとそれに影響を与える骨部分とで構成したモデルを利用する。即ち、一体整形モデルは、キャラクタの外面であって実際に動いて描画されるポリゴンと、そのポリゴンの位置に一定のウエイトで影響を与える骨部分（bone）とで構成される。そして、ポリゴンの位置に影響を与える骨部分の新たな位置を、オペレータの操作入力に従って求められる位置変換用マトリクスにより演算し、その骨部分からの影響度（ウエイト）に応じてポリゴンの頂点の位置を求める。その求められた頂点に対してポリゴンをレンダリング（描画）することで、複雑な動きをポリゴンに与えることができる。
【０００６】
図１は、上記のＣＧムービーにおける一体整形モデルの動きの例を示す図である。図１に示されたモデルは、腕部分１と手の部分２とで構成されるモデルであり、図１（Ａ）は、その基本姿勢の状態を示す。かかる状態から、腕部分１の上腕３がより垂直になり、腕部分１の肘の部分４はより水平方向に曲げられるとすると、図１（Ｂ）の如き状態になることが望まれる。即ち、上腕３と肘の部分４を接続する関節部分が自然に曲がった形状になり、かつ上腕３の内側の筋肉３Ａが盛り上がるような動きが望まれる。
【０００７】
図２は、従来のＣＧムービーにおける一体整形モデルを利用した画像処理を説明する図である。また、図３は、その画像処理手順を示すフローチャート図である。図２には、一体整形モデル（エンベロープ）のモデルのデータ構造６２０が示される。この例では、モデル１〜７の合計７個のモデルが図示されるツリー状の階層構造をなす。そして、各モデルのデータ構造は、モデル４のデータ６２４とモデル７のデータ６２７に示される通りである。
【０００８】
モデルは、表示されるポリゴンを有する場合は、そのポリゴンの構成要素である頂点を有する。従って、モデル４のデータ構造６２４には、頂点リスト６３２とその頂点の組み合わせからなるポリゴンリスト６３５が含まれる。頂点リスト６３２には、各頂点のモデルのローカル座標系での位置情報と法線データとが含まれる。また、各モデルは、通常その上の階層のモデルに対する相対的な位置を示す情報であるモデルマトリクス６３１を有する。例えば、モデル４の場合は、モデル３に対する相対的な位置情報として、回転（ローテーション）、移動（トランスレーション）及びサイズ（スケール）を有する。かかる位置情報からなるモデルマトリクス６３１は、モデル３の座標系からモデル４の座標系に変換する時のマトリクスデータともいえる。
【０００９】
更に、モデル４のデータ構造６２４は、モデル４が影響を与える他のモデルの頂点と、その影響度であるウエイト値からなるウエイトリスト６３３を有する。例えば、図１の例では、肘の部分４のモデルは、上腕３の筋肉３Ａの部分に対して所定のウエイト値で影響を与える。従って、肘部分４のモデルのウエイトリストには、上腕３のモデルのＩＤとその頂点インデックス（頂点ＩＤ）及びそのウエイト値が含まれる。
【００１０】
仮に、図２のモデル構造の内、モデル４を図１の肘部分４、モデル７を上腕部分３とすると、上腕部分３の動きと肘部分４の動きに影響を受けた結果、上腕部分３のモデルにおける筋肉部分３Ａでの頂点の位置が変化し、筋肉部分３Ａが盛り上がった画像が描画される。そこで、図３に従って、ＣＧムービーなどで一般的に行われている三次元モデラーの画像処理の手順を説明する。まず、全てのモデルの動きを実現するためのマトリクスを計算し、各モデルのデータ構造に格納する（ステップ６０２）。そして、ウエイトリスト６３３を参照し、自分（モデル４）が影響するモデル（モデル７）の頂点インデックス（頂点ＩＤ）が示す頂点座標と法線データ（頂点データ）を、モデル７の頂点リスト６３２から読み出し（ステップ６０３）、その読み出した頂点データを、基本姿勢時の関係からモデル４のローカル座標系に所属させた場合の頂点データに変換し、その変換した頂点座標と法線データに、モデル４のモデルマトリクスを乗算する（ステップ６０４）。更に、モデルマトリクスを乗算した頂点座標と法線データに、ウエイトリスト内のウエイト値を乗算した値を、モデル７のデータ構造６２７内におけるウエイト頂点リスト６３４内の値に積算する。
【００１１】
上記の手順６０３，６０４，６０５を、ウエイトリスト全てについて実行し（ステップ６０６）、更に、全てのモデルについて実行する（ステップ６０７）。その結果、全てのモデルが持つ実頂点におけるキャラクタの動きに対応する座標変換と、他のモデルからの影響度に応じた位置移動が行われる。そこで、全てのモデルにおけるウエイト頂点リストの法線ベクトルを正規化し、後のレンダリング時における光源処理に使用できる形態にする（ステップ６０８）。そして、ウエイト頂点リスト内の頂点位置を参照しながら、ポリゴンリストにあるポリゴンの描画（レンダリング）を実行する（ステップ６０９）。
【００１２】
上記の演算は、全てのモデルの頂点に対して全てマトリクス演算とウエイト演算を行い、それらの演算が終了してからポリゴンのレンダリング処理を行う。或いは、一つの頂点に注目して、その頂点に対して影響を与えるモデルのマトリクス演算、ウエイト演算を行い、その頂点の新たな頂点座標を求め、最後のレンダリング処理を行う。
【００１３】
【発明が解決しようとする課題】
しかしながら、上記のＣＧムービーにおける画像処理方法は、ゲーム機において行われるリアルタイムでの高速画像処理には適用不可能である。即ち、全てのモデルの頂点に対してマトリクス演算とウエイト演算を行う場合は、モデルのデータ構造内において、異なるモデルの頂点リストやモデルマトリクスを参照しながら、演算を行う必要がある。かかる演算を、メモリ上に分散されたモデルデータの階層構造内をポインタを利用した参照手順を伴って行う場合、ポインタの変更を頻繁に且つ多数回行わなければならない。従って、かかる演算をゲーム機で行おうとすると、ゲーム機内のＣＰＵに設けられたキャッシュメモリの使用効率が悪い。また、一つの頂点に注目してマトリクス演算とウエイト演算を行う場合でも、全ての頂点に対してウエイト演算のためのバッファ領域を確保する必要がある。かかる演算も、スーパーコンピュータ等の大容量のメモリと高速の演算能力を有する場合は別として、簡単な構成のゲーム機で実行すると、利用すべきメモリ領域が膨大になり、リアルタイムでの処理は困難であり、現実的ではない。
【００１４】
そこで、本発明の目的は、一体整形モデルを利用してリアルタイムで画像処理を行うことができる画像処理方法、その画像処理に利用する一体整形モデルの画像データを生成する画像処理方法、及び当該画像データや画像処理プログラムを記録した記録媒体を提供することにある。
【００１５】
更に、本発明の目的は、一体整形モデルを利用してリアルタイムで画像処理を可能にする画像データを三次元モデルデータから生成するコンバータプログラムによる画像処理方法を提供することにある。
【００１６】
更に、本発明の目的は、キャラクタの動きに応じて関節部分などが自然な形に変形することができる画像処理方法、それを実行する画像処理プログラムを記録した記録媒体、その画像処理に適した構造のデータを記録した記録媒体を提供することにある。
【００１７】
【課題を解決するための手段】
上記の目的を達成するために、本発明は、階層構造でリンクされた複数のモデルを有し、少なくとも第１のモデルはポリゴンを構成する複数の頂点を有し、少なくとも第１の頂点の位置は複数のモデルの位置と当該モデルからのウエイト値に従って影響を受ける一体整形モデルデータを記録した記録媒体において、
前記複数のモデル内における複数の頂点のデータを、モデル毎に格納する共有頂点バッファのフォーマットデータと、
前記頂点に影響を与えるモデル毎に形成され、前記共有頂点バッファ内の頂点ＩＤによって特定された頂点データを有する頂点リストと、
前記モデル毎に形成され、前記複数のモデルの基本姿勢におけるモデル位置を設定したモデルマトリクスデータと、
前記ポリゴンを有するモデル毎に形成され、前記頂点ＩＤを属性データとするポリゴンデータを有するポリゴンリストとを有し、
前記頂点リスト内の頂点データには、少なくとも頂点の位置データと、前記頂点リストが属するモデルからのウエイト値及び当該頂点に対応する前記共有頂点バッファ内の頂点ＩＤとを有することを特徴とする一体整形モデルデータを記録したコンピュータ読みとり可能な記録媒体を提供する。
【００１８】
上記の一体整形モデルデータを記録した記録媒体は、ゲーム機器などにおいてリアルタイムでモデルの描画に必要な画像処理を行うことを可能にする。
【００１９】
更に、本発明は、上記の発明において、
前記複数のモデルから影響を受ける前記第１の頂点は、前記複数のモデルの個数分だけの分配頂点データを有し、当該分配頂点データは、前記第１の頂点に影響を与えるモデルの前記頂点リストに属することを特徴とする。
【００２０】
更に、本発明は、上記の発明において、
前記頂点リストは、前記モデルの階層構造に従ってトレースした時に最初に頂点演算が行われるスタートウエイト頂点と、前記頂点演算が最初でも最後でもないミドルウエイト頂点と、前記頂点演算が最後に行われるエンドウエイト頂点とに分けられていることを特徴とする。
【００２１】
更に、本発明は、上記の発明において、
前記頂点リストは、更に、当該頂点リストが属するモデルからのみ影響を受けるネイティブ頂点のデータを有することを特徴とする。
【００２２】
更に、本発明は、上記の発明において、
前記頂点データは、前記頂点の座標データと法線データとを有することを特徴とする。
【００２３】
更に、本発明は、上記の発明において、
前記頂点データは、それが属する頂点リストのモデルのローカル座標系に従うことを特徴とする。
【００２４】
更に、本発明は、上記の発明において、
前記共有頂点バッファ内の頂点ＩＤは、各モデル毎の頂点のエントリ番号と各モデル毎の頂点数に対応するオフセット値とを有することを特徴とする。
【００２５】
更に、本発明は、上記の発明において、
前記ポリゴンリストは、所定のモデルの前記ポリゴンの描画を指示する描画コマンド又は当該ポリゴンリストが属するモデルのポリゴンの未描画を指示する未描画コマンドを有することを特徴とする。
【００２６】
上記の目的を達成するために、本発明は、階層構造でリンクされた複数のモデルを有し、少なくとも第１のモデルはポリゴンを構成する複数の頂点を有し、少なくとも第１の頂点の位置は複数のモデルの位置と当該モデルからのウエイト値に従って影響を受ける一体整形モデルデータを記録した記録媒体において、
前記複数のモデル内における複数の頂点のデータを、モデル毎に格納する共有頂点バッファのフォーマットデータと、
前記頂点に影響を与えるモデル毎に形成され、前記共有頂点バッファ内の頂点ＩＤによって特定された頂点データを有する頂点リストと、
前記ポリゴンを有するモデル毎に形成され、前記頂点ＩＤを属性データとするポリゴンデータを含むポリゴンリストとを有することを特徴とする一体整形モデルデータを記録したコンピュータ読みとり可能な記録媒体を提供する。
【００２７】
上記の目的を達成するために、本発明は、階層構造でリンクされた複数のモデルを有し、少なくとも第１のモデルはポリゴンを構成する複数の頂点を有し、少なくとも第１の頂点の位置は複数のモデルの位置と当該モデルからのウエイト値に従って影響を受ける一体整形モデルデータを元モデルデータから変換する画像処理方法において、
前記元モデルデータは、前記階層構造でリンクされた複数のモデルデータを有し、前記元モデルデータは、当該モデル内の頂点データを有する元頂点リストと、当該モデルが影響を与える頂点データを有するウエイトリストと、前記頂点リスト内の頂点ＩＤを属性データとする元ポリゴンリストとを有し、
前記画像処理方法は、
前記複数のモデル内における複数の頂点のデータを、モデル毎に格納する共有頂点バッファのフォーマットデータを生成する工程と、
前記頂点に影響を与えるモデル毎に形成され、前記共有頂点バッファ内の頂点ＩＤによって特定された頂点データを有する頂点リストを生成する工程と、
前記ポリゴンを有するモデル毎に形成され、前記頂点ＩＤを属性データとするポリゴンデータを有するポリゴンリストを生成する工程とを有することを特徴とするモデルデータ変換用の画像処理方法を提供する。
【００２８】
上記の画像処理方法によれば、リアルタイムでの画像処理を可能にする一体整形モデルの変換データを生成することができる。
【００２９】
更に、本発明は、上記の画像処理方法において、
前記頂点リスト内の頂点データには、少なくとも頂点の位置データと、前記頂点リストが属するモデルからのウエイト値及び当該頂点に対応する前記共有頂点バッファ内の頂点ＩＤとを有することを特徴とする。
【００３０】
更に、本発明は、上記の画像処理方法において、
前記頂点リストを生成する工程は、前記複数のモデルから影響を受ける前記第１の頂点に対して、前記複数のモデルの個数分だけの分配頂点を生成し、当該第１の頂点に影響を与えるモデルの前記頂点リストに前記分配頂点のデータを分配することを特徴とする。
【００３１】
更に、本発明は、上記の画像処理方法において、
前記頂点リストを生成する工程は、前記頂点リスト内に前記頂点データを、前記モデルの階層構造に従ってトレースした時に最初に頂点演算が行われるスタートウエイト頂点と、前記頂点演算が最初でも最後でもないミドルウエイト頂点と、前記頂点演算が最後に行われるエンドウエイト頂点とに分けることを特徴とする。
【００３２】
更に、本発明は、上記の画像処理方法において、
前記頂点ＩＤは、各モデル毎の頂点のエントリ番号と各モデル毎の頂点数に対応するオフセット値とを有することを特徴とする。
【００３３】
更に、本発明は、上記の画像処理方法において、
前記画像処理方法は、更に、
前記モデルの階層構造に従うトレース順にモデルの頂点リスト内の頂点データに対するダミー頂点演算を行い、
１つのモデルの頂点リストに対する前記ダミー頂点演算を終了した時に、当該モ デル内の頂点に対するウエイト演算が終了しない場合は、当該モデルのポリゴンリスト内に未描画コマンドを発生し、
未描画モデル内の頂点に対するウエイト演算が終了した場合は、前記ダミー頂点演算の対象モデルのポリゴンリスト内に前記未描画モデルに対する描画コマンドを発生する描画コマンド生成工程を有することを特徴とする。
更に、本発明は、上記の画像処理方法において、
前記画像処理方法は、更に、
前記複数のモデルから影響を受ける前記第１の頂点を、前記複数のモデルからの影響度が最も大きいモデルからのみ影響を受ける頂点に変換し、当該モデルの前記頂点リストに前記頂点のデータを分配するワンウエイト用頂点リスト生成工程を有することを特徴とする。
【００３４】
上記目的を達成するために、本発明は、階層構造でリンクされた複数のモデルを有し、少なくとも第１のモデルはポリゴンを構成する複数の頂点を有し、少なくとも第１の頂点の位置は複数のモデルの位置と当該モデルからのウエイト値に従って影響を受ける一体整形モデルを描画する画像処理方法において、
前記一体整形モデルのデータが、
前記複数のモデル内における複数の頂点のデータを、モデル毎に格納する共有頂点バッファのフォーマットデータと、
前記頂点に影響を与えるモデル毎に形成され、前記共有頂点バッファ内の頂点ＩＤによって特定された頂点データを有する頂点リストと、
前記ポリゴンを有するモデル毎に形成され、前記頂点ＩＤを属性データとするポリゴンデータを含むポリゴンリストとを有し、
前記画像処理方法は、
前記階層構造のトレース順に前記複数のモデルに対応する共有頂点バッファを前記フォーマットデータに従って生成する工程と、
ゲーム進行データに基づいてモデルの位置を設定したモデルマトリクスデータを生成する工程と、
前記モデルの頂点リストが有する頂点データに対して、前記モデルマトリクスデータに従って移動後の頂点データを生成するマトリクス演算と、前記移動後の頂点データに前記モデルからのウエイト値を反映するウエイト演算とを行い、当該演算された頂点データを、前記共有頂点バッファ内の前記頂点ＩＤに従う領域に格納又は加算して共有頂点データを生成する工程と、
前記ポリゴンを、前記共有頂点データに従ってレンダリングするレンダリング工程とを有することを特徴とする画像処理方法を提供する。
【００３５】
上記の画像処理方法によれば、一体整形モデルのキャラクタの描画をリアルタイムで行うことができる。
【００３６】
更に、本発明は、上記の画像処理方法において、
前記頂点リスト内の頂点データは、少なくとも頂点の位置データと、前記頂点リストが属するモデルからのウエイト値及び当該頂点に対応する前記共有頂点バッファ内の頂点ＩＤとを有し、
前記共有頂点データを生成する工程において、前記マトリクス演算では前記位置データに前記モデルマトリクスを乗算し、前記ウエイト演算では前記演算された位置データに前記ウエイト値を乗算することを特徴とする。
【００３７】
更に、本発明は、上記の画像処理方法において、
前記頂点リストは、前記モデルの階層構造に従ってトレースした時に最初に頂点演算が行われるスタートウエイト頂点と、前記頂点演算が最初でも最後でもないミドルウエイト頂点と、前記頂点演算が最後に行われるエンドウエイト頂点とに分けられ、
前記共有頂点データを生成する工程において、前記スタートウエイト頂点に対する前記演算された頂点データを、前記共有頂点バッファ内の前記頂点ＩＤに従う領域に格納し、前記ミドルウエイト頂点及びエンドウエイト頂点に対する前記演算された頂点データを、前記共有頂点バッファ内の前記頂点ＩＤに従う領域内の頂点データに加算することを特徴とする。
【００３８】
更に、本発明は、上記の画像処理方法において、
前記ポリゴンリストは、所定のモデルの前記ポリゴンの描画を指示する描画コマンド又は当該ポリゴンリストが属するモデルのポリゴンの未描画を指示する未描画コマンドを有し、
前記レンダリング工程は、各モデルの前記共有頂点データ生成工程が終了するたびに、当該モデルのポリゴンリストを参照し、前記描画コマンドに従って前記レンダリングを行うことを特徴とする。
【００３９】
更に、本発明は、上記の画像処理方法において、
更に、前記レンダリングが行われたモデルに対応する前記共有頂点バッファの領域を開放する工程を有することを特徴とする。
【００４０】
更に、本発明は、上記の画像処理方法において、
前記モデルデータは、更に、前記複数のモデルから影響を受ける前記第１の頂点を、前記複数のモデルからの影響度が最も大きいモデルからのみ影響を受ける頂点に変換し、当該モデルの前記頂点リストに前記頂点のデータを分配したワンウエイト用頂点リストを有し、
前記画像処理方法は、所定のモデルに対しては、前記ワンウエイト用頂点リストに従って前記共有頂点データの生成を行うことを特徴とする。
【００４１】
上記の目的を達成するために、本発明は、上記した画像処理方法をコンピュータに実行させるプログラムを記録した記録媒体を提供する。この記録媒体によれば、ゲーム機器などにおいて一体整形モデルのキャラクタをリアルタイムで描画処理することができる。
【００４２】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。
【００４３】
図４は、本実施の形態例における三次元モデラーを利用して生成される一体整形モデルの例を示す図である。図４の一体整形モデルは、図１に示したような腕の動きを実現するための例である。モデルＭ１は、実際に表示されるポリゴンを有し、かかるポリゴンは全部で１３個の実頂点Ｖ１０１〜Ｖ１１３を有する。このモデルＭ１は、例えば図１における上腕３と肘部分４を含むエンベロープである。また、モデルＭ１は、自分自身の位置が例えば頂点Ｖ１０１，Ｖ１０７に対して１００％影響を与える。従って、モデルＭ１は、実頂点に対してウエイト値を有する骨モデルでもある。
【００４４】
モデルＭ２，Ｍ３，Ｍ４は、それぞれポリゴンを含まず、従って、実頂点も有しない。但し、モデルＭ２，Ｍ３，Ｍ４の動きは、モデルＭ１内の一部の頂点に対して所定のウエイト値に従って影響を与える。即ち、モデルＭ２，Ｍ３，Ｍ４は、実頂点に対してウエイト値を有する骨モデルである。更に、モデル５は、図１の手の部分２に該当するポリゴンを有し、ポリゴンを形成する６個の実頂点Ｖ５０１〜Ｖ５０６は、他のモデルからの影響は受けずに、モデルＭ５自身の位置によって１００％の影響を受ける。従って、モデル５は、自分の頂点Ｖ５０１〜Ｖ５０６に影響を与える骨モデルでもある。
【００４５】
図４に示した一体整形モデルは、エンベロープとも呼ばれ、一般にゲームをデザインするデザイナにより三次元モデラーの利用を介してデザインされる。そして、デザイナは、各頂点が一つの或いは複数のモデルから所定の割合で影響を受けることをデザインし、ゲームプログラムの実行に伴い各モデルの位置を移動させることで、初期値として決めた影響度（ウエイト値）に応じて頂点の位置を移動させ、キャラクタに所望の動きを与える。
【００４６】
図５は、図４の一体整形モデルのデータ構成例である。モデルＭ１の下にモデルＭ２，Ｍ３，Ｍ５がつなげられ（リンクされ）、更に、モデルＭ１の下にモデルＭ４がつなげられる。このようなデータのツリー構造は、モデルの階層構造の一例であり、それぞれのプログラムに適した階層構造内に一体整形モデルを構成するモデルがつなげられればよい。図５に示したようなツリー構造の場合、一般には、モデルＭ１，Ｍ２，Ｍ３，Ｍ５，Ｍ４の順にトレースされモデルデータへの処理が行われる。かかるトレースの順番もプログラムに適した順番にすることができる。
【００４７】
図５のデータ構成例において、各モデルは、上層のモデルの座標系に対してそのモデルの座標系がどれだけ移動すべきかを示すモデルマトリクスを有する。即ち、モデルマトリクスは、モデルの位置を設定するデータである。座標系については後に詳述するが、例えば、各モデルはそれぞれのローカル座標系を有する。それとは別に、全てのモデルに共通のグローバル座標系が存在する。そして、例えば、モデルＭ２の移動後の位置を定義するために、モデルＭ１のローカル座標系に対するモデルＭ２のローカル座標系の位置関係として、回転（ローテーション）、平行移動（トランスレーション）、縮尺（スケール）を含むモデルマトリクスが利用される。従って、モデルＭ２のローカル座標系の位置座標データや法線データに、このモデルマトリクスを積算するマトリクス演算を行うことにより、モデルＭ１のローカル座標系の位置座標データや法線データに変換される。また、モデルＭ１のローカル座標系の位置座標データや法線データに、モデル１のモデルマトリクスを積算すれば、グローバル座標系における位置座標データや法線データを求めることが可能になる。
【００４８】
このように、各モデル間のモデルマトリクスによって、複数のモデルから構成されるキャラクタに動きが与えられる。通常は、ゲームプログラム中のジオミトリ機能によりかかるキャラクタの動きを示すモデルマトリクスが作成される。また、モデルマトリクスは、グローバル座標系とそのモデルのローカル座標系の位置関係を示してもよい。
【００４９】
図６は、デザイナにより設定された各頂点へのモデルからの影響度（ウエイト値）を示す図である。図６の例では、モデルＭ１の頂点Ｖ１０１，Ｖ１０７は、モデルＭ１の動きに１００％影響を受ける。従って、モデルＭ１の骨部分の移動に伴って頂点Ｖ１０１，Ｖ１０７の位置も同じ位置関係を保って移動する。また、モデルＭ１の頂点Ｖ１０２，Ｖ１０３はモデルＭ２，Ｍ３，Ｍ４の影響を図示されるウエイト値の割合で受ける。従って、これらの頂点は、モデルＭ２，Ｍ３，Ｍ４の移動に伴って図示されるウエイト値の分だけそれらの移動の影響を受ける。例えば、モデルＭ４が大きく上方に移動すると、その移動の程度の４０％分だけこれらの頂点は影響を受ける。例えば、頂点Ｖ１０２，Ｖ１０３を上腕部の筋肉の部分３Ａに対応付けると、モデルＭ４を適宜移動することで、上腕部の筋肉部３Ａを適切に盛り上げることが可能になる。
【００５０】
モデルＭ１の頂点Ｖ１０４，Ｖ１０５，Ｖ１０８〜Ｖ１１１は、図示される通り、モデルＭ２，Ｍ３から図示されるウエイト値の割合で影響を受ける。更に、頂点Ｖ１０６，Ｖ１１２は、モデルＭ３からのみ影響を受ける。従って、頂点Ｖ１０６，Ｖ１１２は、モデルＭ３が移動するとそのままの位置関係を維持して移動する。更に、頂点Ｖ１１３は、モデルＭ４から１００％のウエイト値で影響を受ける。
【００５１】
モデルＭ５は、モデルＭ１に接続される部分で、図１の例では手の部分２に対応する。この手の部分２は、特に腕の位置によってその形状が変化する必要はなく、モデルＭ５の骨部分に１００％の影響を受ける。
【００５２】
図６に示した各頂点のウエイト値は、キャラクタをデザインしたデザイナによって初期値として設定される。デザイナは、かかるウエイト値を設定することにより、ゲーム進行中にモデルマトリクスによりモデルの移動を行うことで、各頂点の位置を自在に制御することができる。頂点の位置が決定すれば、その後複数の頂点により決められたポリゴンが、描画部（レンダリング部）により画像メモリ内にレンダリングされる。
【００５３】
図７は、一体整形モデル（エンベロープ）の移動例を示す図である。この例は、図４に示した基本姿勢にある一体整形モデルが、図１（Ｂ）の如く移動した場合に対する一体整形モデルを示す。図１（Ｂ）に示したような動きを実現するために、一体整形モデルを構成するモデルＭ１〜Ｍ４が次の通り移動する。即ち、モデルＭ１，Ｍ２は、より垂直方向に回転し、モデルＭ３はより水平方向に回転移動する。それに伴い、モデルＭ５もモデルＭ３の先端の位置に整合するように移動する。また、モデルＭ４は、主に上腕の筋肉の盛り上がり３Ａを表現するためのモデルであり、図７に示される通り、より上方により垂直方向に回転移動する。
【００５４】
その結果、頂点Ｖ１０２，Ｖ１０３はモデルＭ４の動きに影響を受けて筋肉が盛り上がるように移動し、また頂点Ｖ１１３はモデルＭ４の動きに連動して移動する。頂点Ｖ１０１，Ｖ１０７は、それぞれモデルＭ１の動きに連動して移動するだけであり、更に、頂点Ｖ１０４，Ｖ１０５，Ｖ１０８〜Ｖ１１１は、モデルＭ２，Ｍ３の動きに影響を受けた位置に移動する。従って、頂点Ｖ１０４，Ｖ１０９，Ｖ１１０などにより形成さえるポリゴンは、腕を曲げた時の自然な肘の関節形状に変化する。また、頂点Ｖ１１２はモデルＭ３の動きに連動して移動する。更に、モデルＭ５の各頂点は、それぞれモデルＭ５の動きにあわせてそのまま移動する。
【００５５】
そして、移動後の頂点の位置に対して、各頂点の間を埋めるポリゴンがそれぞれレンダリングされることで、図１（Ｂ）の如き上腕３をより垂直方向に下げて肘４をより水平方向に曲げ、上腕の筋肉部分３Ａが盛り上がり、腕の先に手の部分２が接続された画像が生成される。モデルＭ２，Ｍ３，Ｍ４は、それぞれポリゴンを有していないので実頂点はなく、これらのモデルは画像内には表示されない。
【００５６】
図８は、一体整形モデルにおけるウエイト計算方法を説明する図である。図８には、図４の基本姿勢の状態であった一体整形モデルが、図７の移動後の状態になる場合について、特に頂点Ｖ１０２，Ｖ１０３とそれに影響を与えるモデルＭ２，Ｍ３，Ｍ４の関係が示される。また、図９は、一体整形モデルにおけるモデルの移動計算（マトリクス計算）と頂点のウエイト計算の手順を示すフローチャート図である。
【００５７】
図８（Ａ）は基本姿勢の状態のモデルＭ２，Ｍ３，Ｍ４を示す。すでに述べた通り、モデルＭ２，Ｍ３，Ｍ４は、それぞれのローカル座標系ＣＤＭ２，ＣＤＭ３，ＣＤＭ４を有する。また、全てのモデルに共通のグローバル座標系ＣＤＧＢも設定される。図４に示された一体整形モデルにおいて、頂点Ｖ１０２，Ｖ１０３は、モデルＭ２、Ｍ３、Ｍ４から影響（ウエイト値）を受けるようにデザイナにより設定される。即ち、図６に示したようなウエイト値があらかじめ初期値として設定される。そこで、ウエイト計算を行うために、この頂点Ｖ１０２，Ｖ１０３は、それぞれその頂点に影響を与えるモデルＭ２，Ｍ３，Ｍ４に属する３つの頂点（分配頂点）に分けられ、それぞれの対応するモデルに分配される（図９中Ｓ１）。例えば、頂点Ｖ１０２は、分配頂点Ｖ１０２（Ｍ２）、Ｖ１０２（Ｍ３）、Ｖ１０２（Ｍ４）に分けられ、それぞれの影響を与えるモデルＭ２，Ｍ３，Ｍ４に分配される。頂点Ｖ１０３についても、同様に３つの分配頂点に分けられ、影響を与えるモデルに分配される。
【００５８】
その結果、モデルＭ２には、頂点Ｖ１０２（Ｍ２）とＶ１０３（Ｍ２）が属することになる。同様にして、モデルＭ３には、頂点Ｖ１０２（Ｍ３）とＶ１０３（Ｍ３）が属し、モデルＭ４には、Ｖ１０２（Ｍ４）とＶ１０３（Ｍ４）が属する。そして、各モデルに属する頂点の基本姿勢状態での位置座標は、各モデルのローカル座標系に変換される（図９中Ｓ２）。例えば、頂点Ｖ１０２（Ｍ２）と頂点Ｖ１０３（Ｍ２）の絶対座標は、モデルＭ２のモデルマトリクスに従ってモデルＭ２のローカル座標系ＣＤＭ２に変換される。それ以外の頂点についても同様に属するモデルのローカル座標系に変換される。この結果、各頂点は、それらが属するモデルと一体に移動することになる。
【００５９】
次に、図８（Ｂ）は、各モデルＭ２，Ｍ３，Ｍ４がそれぞれ図７の如く移動した状態を示す。各モデルの移動は、それぞれのモデルマトリクスを設定することにより制御される（図９中Ｓ３）。例えば、モデルＭ２のローカル座標系ＣＤＭ２は、図示しないモデルＭ１のローカル座標系に対してモデルＭ２のモデルマトリクスに対応する回転、平行移動、拡大・縮小した位置に移動する。また、モデルＭ２に属する頂点Ｖ１０２（Ｍ２）とＶ１０３（Ｍ２）は、基本姿勢の状態のモデルＭ２に対する位置を保ちながら、モデルＭ２の移動に従って移動する。即ち、頂点Ｖ１０２（Ｍ２）とＶ１０３（Ｍ２）の位置は、モデルＭ２のローカル座標系の中では何ら移動することはない。従って、モデルＭ２が移動することに伴う頂点Ｖ１０２（Ｍ２）とＶ１０３（Ｍ２）の位置も、モデルＭ２のモデルマトリクスを利用したマトリクス計算をすることにより、求めることができる（図９中Ｓ４）。
【００６０】
モデルＭ３に属する頂点Ｖ１０２（Ｍ３）とＶ１０３（Ｍ３）も、モデルＭ４に属する頂点Ｖ１０２（Ｍ４）とＶ１０３（Ｍ４）も同様にして、それぞれのモデルの移動に伴い移動し、それらの位置は、それぞれのモデルのモデルマトリクスを利用したマトリクス計算をすることで求められる。
【００６１】
次に、各モデルに分配した頂点の例えばグローバル座標系における位置が求められると、各モデルが頂点に与えるウエイト値（影響度）に応じたウエイト演算が行われる（図９中Ｓ５）。例えば、図６のウエイト値によれば、モデルＭ２，Ｍ３，Ｍ４からのウエイト値は、両頂点共に、３０％、３０％、４０％である。従って、頂点Ｖ１０２について説明すれば、頂点Ｖ１０２（Ｍ２）の頂点座標値に０．３を乗算し、頂点Ｖ１０２（Ｍ３）の頂点座標値に０．３を乗算し、更に頂点Ｖ１０２（Ｍ４）の頂点座標に０．４を乗算し、それらを積算（加算）することにより、各モデルからの影響度（ウエイト値）に応じた新たな頂点Ｖ１０２の位置座標が求められる。即ち、図８（Ｂ）中に二重丸で示した頂点Ｖ１０２が、３つの分配頂点Ｖ１０２（Ｍ２）、Ｖ１０２（Ｍ３）、Ｖ１０２（Ｍ４）から３０％、３０％、４０％のウエイト値により求められた実頂点の位置である。
３つの分配頂点Ｖ１０２（Ｍ２）、Ｖ１０２（Ｍ３）、Ｖ１０２（Ｍ４）のグローバル座標系におけるＸ座標値を、Ｘ２，Ｘ３，Ｘ４とすると、二重丸で示した実頂点Ｖ１０２のＸ座標値Ｘ102は、
Ｘ102＝０．３×Ｘ２＋０．３×Ｘ３＋０．４×Ｘ４
で求められる。かかる計算が、ウエイト計算である。
【００６２】
このようにして求められた二重丸で示したウエイト計算後の頂点の座標値や法線データを利用して、複数の頂点からなるポリゴンのレンダリングが行われる。例えば、複数の頂点で結ばれたポリゴン内のピクセルの色データは、ラスタスキャン法により頂点座標に対するピクセル座標の内分比を求め、頂点データやテキスチャデータなどから、その内分比を利用した補間演算により求められる。上記の頂点座標に加えて、通常は頂点の法線ベクトルについてのデータも利用される。上記と同じウエイト演算により二重丸の頂点における法線データが求められ、かかる法線データを利用して光源に対する拡散光の演算などが行われる。これらのレンダリング方法は、本発明の話題とするところではなく、一般的なレンダリング方法が利用されことができる。
【００６３】
以上が、３Ｄモデラーを利用した一体整形モデル（エンベロープ）によるキャラクタの動きを実現する方法である。上記説明した通り、一体整形モデルを利用した場合、各モデルは自分の実頂点データに加えて、影響を与える頂点のデータも有する必要があり、各モデルの位置をモデルマトリクスを利用した演算により求める工程、同様にモデルマトリクスを利用して影響を与える頂点の位置を求める工程、それら頂点に対してウエイト演算により影響度を考慮した新たな位置と法線データを求める工程、そうして求めた頂点データを利用して各モデルのポリゴンのレンダリングを行う工程などが必要である。このような工程を伴う一体整形モデルに対する処理を、ゲーム機器のようなスーパーコンピュータと比較すると簡単な演算機能や少ないメモリ容量しか有しないハードウエアを利用して、リアルタイムで行う必要がある。
【００６４】
本実施の形態例では、一体整形モデルの元モデルデータから、上記のデータ処理の一部を予め行って得られた変換データを利用する。この変換データは、ゲーム機器によるリアルタイムでの演算、処理に適した形態を有し、かかる変換データが、キャラクタデータとしてゲーム機器用の記録媒体、例えばＣＤＲＯＭやゲームカセット、に記録される。
【００６５】
図１０は、本実施の形態例における一体整形モデルの元データと描画ライブラリ用の変換データの関係を示す図である。本実施の形態例によれば、ＣＧムービーなどにおいて利用される三次元モデラーにより生成された一体整形モデルの元データ１００が、本発明により提供される新規なコンバータプログラムにより、描画ライブラリ用の変換データ１１０に変換される。この変換データ１１０は、ゲーム進行中にダイナミックに変化するデータを含まず、ゲーム機が実行するゲームプログラムを記録した記録媒体内の描画ライブラリ（描画処理プログラム）によって、ゲーム進行中のキャラクタ等のダイナミックな動きを演算するために最適化されたデータフォーマットを有する。従って、この変換データ１１０は、あらかじめコンバータプログラムによって元データから変換されて生成され、ゲーム用の記録媒体、例えばＣＤＲＯＭ内に記録される。
【００６６】
図１１は、ゲーム用の記録媒体（例えばＣＤＲＯＭ）内の構成と、ゲーム機のハードウエアとの関係を示す図である。図１１に示されるとおり、ゲーム用の記録媒体１０内には、ゲームの進行に同期して、ゲームのストーリやキャラクタを含むオブジェクトの動きを制御するゲームプログラム１２と、コンバータにより元データから変換されて生成されたモデルの変換データ１１０と、画像処理を行う描画ライブラリ（プログラムの一種）１４などが記録される。かかるゲーム用記録媒体１０は、ゲーム機のハードウエア２０に装着され、適宜読み出されて、そのゲームプログラムが実行され、モデルの変換データを利用して描画ライブラリ１２が実行され、その結果、例えばフレーム毎の様に短時間毎の画像が生成される。
【００６７】
図１１には、ゲーム機のハードウエア２０の構成が示される。ゲーム機のハードウエア２０は、演算処理を行うＣＰＵ２２と、ゲーム用記録媒体１０のプログラムやモデルの変換データを一時的に読み込み、また演算処理のバッファメモリとして利用されるシステムメモリ（ＲＡＭ）２４とがバスにより接続される。また、バスアービタ３８を介して、描画ライブラリによって生成される描画コマンドに従ってレンダリングを行うレンダリングプロセッサ２６と、そのプロセッサ２６により描画された画像信号が記録されるフレームメモリ２８と、音声データを生成するオーディオプロセッサ３０と、その生成した音声データを記録するオーディオメモリ３２とが接続される。フレームメモリ２８に記録された画像データ及びオーディオメモリ３２に記録された音声データが、モニタテレビ等の表示装置３４から表示され、出力される。また、ゲーム機器２０内のバスアービタ３８はインターフェースとしての機能も有し、ゲームの入力用操作パッド４２が入力手段として接続され、モデム４０を介して外部の通信回線と接続される。また、バスアービタ３８は、ブートＲＯＭ３６とも接続され、電源投入時のブート動作が、このブートＲＯＭのデータを実行することにより行われる。更に、ゲーム機器２０は、ゲーム用の記録媒体１０、例えばＣＤＲＯＭやゲームカートリッジ、をバスアービタ３８を介して接続し、外部記録装置として利用する。
【００６８】
ゲーム用記録媒体１０に記録されているモデルの変換データ１１０は、描画ライブラリ１４による画像処理の負担を軽減できるデータフォーマットに変換されている。このデータフォーマットについては、後述するが、モデルの変換データ１１０は、描画ライブラリ１４に最適なデータ構造であるので、ゲーム進行中に移動するキャラクタの一体整形モデルの画像処理がリアルタイムで可能になる。
【００６９】
図１２は、三次元モデラによる一体整形モデルのデータから変換データを作成するまでの概略的フローチャート図である。ゲームの作成には、通常ゲームのストーリなどを創作する企画と、ゲーム内のキャラクタなどのオブジェクトをデザインするデザイナと、ゲームプログラムを創作するプログラマとにより行われる。三次元モデラーは、より自然な動きを持つキャラクタを提供するために上記のデザイナにより利用され、エンベロープと呼ばれる一体整形モデルの元データが生成される（Ｓ１０）。この一体整形モデルについては、前述した通りであり、例えば、従来例として図２に示した通り、モデル毎に、モデルマトリクスと、頂点データと、ウエイトリストなどを有する。モデルマトリクスは、モデルの階層構造（ツリー構造）における上層のモデルに対する回転、平行移動、拡大・縮小についてのマトリクスデータである。また、頂点データは、実頂点に対応するデータであり、頂点の位置座標データと法線ベクトルについての法線データを少なくとも含む。それ以外に、頂点データには、例えば不透明度を示すα値、テキスチャデータに対応するテキスチャ座標などが含まれる。また、ウエイトリストは、そのモデルが影響を与える実頂点のＩＤ（モデルＩＤとそれに属する頂点ＩＤ）と、ウエイト値を少なくとも有する。このウエイトリストを展開したのが、図６に示されたデータである。
【００７０】
次に、コンバータプログラムにより、一体整形モデルの元データから描画ライブラリ用のデータフォーマットに対応した変換データが生成される（Ｓ１２）。この変換データの詳細は後に説明するが、概略的に述べると、実頂点をウエイトなしのネイティブ頂点と、ウエイト計算が必要なスタートウエイト頂点、ミドルウエイト頂点及びエンドウエイト頂点とからなる４つのグループに分ける。スタートウエイト頂点は、ウエイト計算において最初にウエイト値の乗算が行われる頂点であり、ミドルウエイト頂点は、ウエイト計算においてその次にウエイト値の乗算が行われる頂点であり、エンドウエイト頂点は、ウエイト計算で最後にウエイト値の乗算が行われる頂点である。ウエイト計算の順番は、通常モデルの階層構造（ツリー構造）のトレース順に従って決定される。各グループに分配された頂点は、それぞれの頂点が属するモデル毎にソーティングされる。
【００７１】
そして、実頂点を重複することなく示すネイティブ頂点とスタートウエイト頂点からなる共有頂点バッファのフォーマットが生成され、その共有頂点バッファに並べられる実頂点に対して、モデルの属性にかかわらず統一的な頂点ＩＤが与えられる。共有頂点バッファ内のネイティブ頂点とスタートウエイト頂点とで構成される実頂点のリストは、それら実頂点が属するモデル毎の固まりになる。各モデル毎の共有頂点リストは、更に、それらの実頂点に影響を与えるモデル毎にソーティングされ、モデル毎の順番で格納される。かかる共有頂点バッファに並べられたモデル毎の実頂点リストに対して、統一的な頂点ＩＤが与えられ、後のウエイト計算での参照手順を簡素化する。上記の様に生成された共有頂点バッファは、従来のウエイト計算を伴わないモデルの実頂点リストと同等の単純なデータ構造を有する。
【００７２】
共有頂点バッファのフォーマットに加えて、４つのグループに分けられた頂点は、それらの頂点に対して影響を与えるモデルに分配される。そして、各モデル毎に分配された頂点からなる頂点リストが生成される。この頂点リストは、上記４つのグループ、ネイティブ、スタートウエイト、ミドルウエイト及びエンドウエイトにソーティングされ、格納される。また、この頂点リスト内の頂点データには、モデル内のローカル座標に従う頂点座標データと、法線データ、及び必要に応じて影響を与える実頂点の共有頂点バッファ内の頂点ＩＤを引用したウエイトデータを含む。即ち、スタートウエイト、ミドルウエイト、及びエンドウエイトに属する頂点データには、上記のウエイトデータが含まれ、ネイティブに属する頂点データには含まれない。
【００７３】
このモデル毎の頂点リストには、そのモデルからのみ影響を受ける（ワンウエイトの）ネイティブ頂点と、他のモデルと共にそのモデルが影響を与える（マルチウエイトの）スタートウエイト頂点、ミドルウエイト頂点、エンドウエイト頂点とが、一元的にまとめられる。かかる頂点リストと共有頂点バッファにより、描画ライブラリは、リアルタイムでの画像処理を行う。
【００７４】
モデルの変換データには、更に、ポリゴンリストが含まれる。このポリゴンリストは、そのポリゴンを構成する複数の頂点データを有する。但し、このポリゴンリスト内の頂点データは、共有頂点バッファ内の実頂点に与えられた頂点ＩＤを属性データとする。更に、ポリゴンリストには、好ましくはそのモデルのレンダリング（描画）を行うべきか否かを示す描画コマンドも含まれる。この描画コマンドは、コンバータにより生成され、描画ライブラリにより参照される。
【００７５】
以上の通り、コンバータにより生成される変換データ１１０には、実頂点のリストを意味する共有頂点バッファのフォーマットと、各モデルに分配された頂点リストと、各モデルのポリゴンリストとを有する。図９に戻って説明すると、コンバータによる変換手順には、図９の実頂点のモデルへの分配（Ｓ１）と、そのモデル内のローカル座標系への変換（Ｓ２）とを含み、更に、描画ライブラリにより実行されるモデルマトリクスを利用した移動計算（マトリクス演算）（Ｓ３、Ｓ４）とその後のウエイト値を利用したウエイト演算（Ｓ５）を行うのに最適な変換データの生成が行われる。この変換データについては、後に図４，図７の例を元に再度説明する。
【００７６】
さて、変換データ１１０の生成と共に、上記したプログラマによりゲームプログラムが作成される（Ｓ１４）。そして、図１１に示したとおり、ゲームプログラム１２と、モデルの変換データ１１０と、描画ライブラリ１４とが、ゲーム用記録媒体１０内に記録される（Ｓ１６）。
【００７７】
図１３は、ゲームにおけるのフローチャート図である。ゲームを行う場合、まずゲーム用記録媒体１０をゲーム機器に装着する（Ｓ２０）。ゲーム装置は、記録媒体のゲームプログラムに従ってゲームを実行し、キャラクタを構成するモデルの移動用のモデルマトリクスを生成する（Ｓ２２）。移動用のモデルマトリクスは、前述した通り、上層のモデルに対する移動、回転、拡大・縮小などのパラメータからなるマトリクスであり、モデル或いはそのポリゴンの頂点座標にモデルマトリクスを乗算することにより新たな移動後の座標が求められる。
【００７８】
次に、ゲーム機器は、描画ライブラリを実行する（Ｓ２４）。モデルの変換データ１１０は、全てのモデルの実頂点について統一したＩＤを与えた共有頂点バッファのフォーマット、モデル毎に分配された頂点リスト、モデル毎のポリゴンリストを有する。モデル毎の頂点リストは、後述する通り他のモデルから影響を受けない頂点（ネイティブ頂点）と、他のモデルからも影響を受ける頂点（スタートウエイト、ミドルウエイト、エンドウエイト）とからなり、更に他のモデルから影響を受ける頂点は、影響を与える当該他のモデル毎にソートされている。また、モデル毎の頂点リストは、共有頂点バッファ内の統一された頂点ＩＤに従って、影響を与える他の頂点ＩＤを引用する。そして、モデル毎のポリゴンリストには、モデルを構成するポリゴンの頂点ＩＤを属性データとする頂点データが含まれ、またウエイト計算が終了したモデルについての描画コマンドや、ウエイト計算が終了しないモデルについての未描画コマンドが含まれる。更に、共有頂点バッファは、描画ライブラリが画像処理を行う段階で、ゲーム機器内のシステムメモリ（ＲＡＭ）内に展開される。
【００７９】
描画ライブラリの概略的手順では、まず、ゲームプログラムにより作成された移動用マトリクスを各モデルの頂点の座標データに対して乗算することで、新たな移動後の頂点の座標データを求める。この工程は、図９のステップＳ４に対応する。更に、その頂点データに基づき、モデルの階層構造のトレース順に従って且つモデル内の頂点リストの順番にウエイト計算を行い、影響を与える頂点に対応する共有頂点バッファ内の領域にその計算結果を書込みまたは積算（加算）する。この工程は、図９のステップＳ５に対応する。次に、描画ライブラリは、各モデルのポリゴンリスト内の描画コマンドに従って、共有頂点バッファ内に格納された頂点座標及び法線データを参照してモデル内のポリゴンの描画（レンダリング）を行い、ポリゴン内のピクセルの色データなどを含む画像データを、フレームバッファ２８内に記録する。
【００８０】
フレームバッファ２６内に描画された画像データに従って、表示装置３４にその画像を表示する（Ｓ２６）。フレーム毎にこの描画された画像を表示することにより、オペレータの操作入力信号に応答して動くキャラクタを含む画像を表示することができる。しかも、三次元モデラーにより生成された一体整形モデルによるモデルが利用されているので、キャラクタの関節部分はより自然な動きをなし、キャラクタの筋肉も盛り上がり等の動きも表現することができる。以上の工程Ｓ２０〜Ｓ２６が、フレーム期間毎に繰り返される。
【００８１】
図１４及び図１５は、コンバータの手順を示すフローチャート図である。本実施の形態例のコンバータは、ゲーム用の記録媒体に格納される描画コマンドと違ってリアルタイムでの処理は要求されない。このフローチャートの工程Ｓ３０，Ｓ３２，Ｓ３３が、モデルの元データから共有頂点バッファのフォーマットの作成と、モデル毎の頂点リストの作成を行う段階である。また、フローチャートの工程Ｓ３６〜Ｓ６０は、描画ライブラリが実行する画像処理のシュミレーション演算段階であり、このシュミレーション演算を行うことにより、モデルの階層構造をトレースした時の各モデルの描画（レンダリング）を行うタイミングを検出し、未描画コマンドや描画コマンドをモデルのポリゴンリスト内に挿入することができる。これにより作成される共有頂点バッファのフォーマットと頂点リストは、描画ライブラリが画像処理を行うに適したデータ形式であり、更に、シュミレーション演算により生成される未描画コマンド又は描画コマンド付きのポリゴンリストは、描画ライブラリによる各モデルの描画タイミングの管理負担を軽減させる。
【００８２】
図１４に示された処理手順を有するコンバータプログラムは、ゲーム機器よりもより高速演算機能を有しより大容量のメモリを有する汎用のコンピュータによって実行される。この汎用コンピュータのハードディスク等の外部記録媒体内に、コンバータプログラムが記録され、元データに対して処理手順が実行され、変換データが生成される。
【００８３】
さて、図９において説明した一体整形モデルの描画における移動計算（マトリクス計算）とウエイト計算を行うためには、実頂点をそれに影響を与えるモデルに分配し（Ｓ１）、その分配したモデルのローカル座標系に頂点の位置の座標データや法線データを変換する（Ｓ２）必要がある。本実施の形態例のコンバータは、上記の２つの手順Ｓ１，Ｓ２に加えて、実頂点を分配されるモデルの数だけ発生して、単一のモデルの位置に依存する（ウエイトを持たない）ネイティブ頂点、複数のモデルから影響を受ける頂点（ウエイトを持つ頂点）のうちモデル階層をトレースした時に最初にウエイト計算を行う必要があるスタートウエイト頂点、同様に２番目以降にウエイト計算を行う必要があるミドルウエイト頂点、同様に最後にウエイト計算を行う必要があるエンドウエイト頂点の４つのグループに分ける（Ｓ３０）。
【００８４】
更に、コンバータは、それら４グループの頂点の内、ネイティブ頂点とスタート頂点が実頂点に対応するので、それらの頂点グループをそれらが属するモデル毎に並び替えて、共有頂点バッファのフォーマットを作成する（Ｓ３２）。この共有頂点バッファに展開されるこれらの頂点に対して、統一的な通し番号が新たな頂点ＩＤとして与えられる。この新たな頂点ＩＤは、種々の形態の番号が採用可能である。例えば、各モデル毎の頂点のエントリ番号とそのモデル内の頂点数に対応するオフセット値を利用することにより、共有頂点バッファのフォーマットデータを形成することができ、同時に頂点ＩＤにも利用することができる。
【００８５】
更に、コンバータは、各モデルに分配された４グループの頂点に対して、それら頂点に影響を与えるモデル毎に並び変えて、各モデルの頂点リストを作成する（Ｓ３４）。
【００８６】
上記の処理Ｓ３０，Ｓ３２，Ｓ３４を、図４，図６のモデル例を使ってより具体的に説明すると、以下の通りである。図１６は、より詳細な実頂点のモデルへの分配と頂点リストの生成の手順を示すフローチャート図である。また、図１７は、元データから変換データへの手順を示す図である。そして、図１８は、具体的モデル例に適用した時の元データの頂点リストと共有頂点リストを示し、図１９は、具体的モデル例に適用した時の頂点リストを示す図である。適宜図１８，１９を参照しながら、図１６，１７に示された手順を説明する。
【００８７】
図１７の左側若しくは図１８の左側に示される通り、元データのモデルＭ１，Ｍ５のデータには、頂点リスト（図１７中１０７）が含まれる。この元データのモデルデータは、３Ｄモデラーにより生成されるデータであり、例えば図２に示した様に、各モデルにはモデルマトリクス（図１７中１０９）を、ポリゴンを有するモデルは頂点リスト（図１７中１０７）及びポリゴンリスト（図１７中１０６）を、そして、頂点に影響を与えるモデルはウエイトリスト（図１７中１０８）を有する。図１８の左側の元頂点リストは、上記のポリゴンを有するモデルＭ１，Ｍ５の頂点リストに対応する。従って、ここに示された頂点が実頂点であり、頂点リストには、少なくとも頂点の位置座標データと法線データとが含まれる。
【００８８】
最初に、コンバータは、基本姿勢における一体整形モデルの実頂点の位置座標及び法線データのグローバル座標を求める（Ｓ６２）。この演算は、例えばモデルＭ１，Ｍ５のモデルマトリクスを、それぞれのモデルの実頂点データに乗算することで行われる。この結果、図４に示された実頂点Ｖ１０１〜Ｖ１１３及びＶ５０１〜Ｖ５０６のデータがグローバル座標系に変換される。
【００８９】
次に、元のモデルデータの実頂点を、モデル階層のトレース順に従って、ウエイトの有無に基づく４つのグループに分ける（Ｓ６２、図１７内の工程１２１〜１２４参照）。図１８の具体例で説明すると、モデル階層のトレース順は、モデルＭ１，Ｍ２，Ｍ３，Ｍ５，Ｍ４になる。また、モデルＭ１の頂点Ｖ１０１は、モデルＭ１の位置に１００％依存する頂点であり、ウエイト計算を必要としないウエイトを持たないネイティブ頂点グループに属する。モデルＭ１の頂点Ｖ１０２は、図６のウエイト表に示され、図８で示した通り、モデルＭ２，Ｍ３，Ｍ４にそれぞれ３０％、３０％、４０％で影響を受けるので、モデルＭ２に影響を受ける頂点Ｖ１０２（Ｍ２）はスタートウエイトグループに、モデルＭ３に影響を受ける頂点Ｖ１０２（Ｍ３）はミドルウエイトグループに、そして、モデルＭ４に影響を受ける頂点Ｖ１０２（Ｍ４）はエンドウエイトグループに分類される。
【００９０】
同様に、モデルＭ１の頂点Ｖ１０３についても、モデルＭ２に影響を受ける頂点Ｖ１０３（Ｍ２）はスタートウエイトグループに、モデルＭ３に影響を受ける頂点Ｖ１０３（Ｍ３）はミドルウエイトグループに、そして、モデルＭ４に影響を受ける頂点Ｖ１０３（Ｍ４）はエンドウエイトグループに分類される。モデルＭ１の頂点Ｖ１０４は、モデルＭ２に影響を受ける頂点Ｖ１０４（Ｍ２）をスタートウエイトグループに、モデルＭ３に影響を受ける頂点Ｖ１０４（Ｍ４）をエンドウエイトグループに分類される。図１８に示される通り、頂点Ｖ１０５，Ｖ１０８〜Ｖ１１２も、同様にスタートウエイトグループとエンドウエイトグループとに分類される。
【００９１】
更に、図１８に示される通り、モデルＭ１の頂点Ｖ１０６は、モデルＭ３に１００％影響を受けるので、ネイティブグループに分類され、頂点Ｖ１０７は、モデルＭ１に１００％影響を受け、頂点Ｖ１１３は、モデルＭ４に１００％影響を受けるので、それぞれの頂点Ｖ１０７（Ｍ１）、Ｖ１１３（Ｍ４）は、ネイティブグループに分類される。
【００９２】
また、モデルＭ５の実頂点Ｖ５０１〜Ｖ５０６は、全て別のモデルからのウエイトを受けないでモデルＭ５の位置に依存するので、それぞれ頂点Ｖ５０１（Ｍ５）〜Ｖ５０６（Ｍ５）は、ネイティブグループに分類され、モデルＭ５に分配される。以上の通り、実頂点は、４つの頂点グループに分類される。
次に、コンバータは、上記４つのグループの頂点を、それら頂点に影響を与えるモデル毎にソーティングする（Ｓ６６，図１７中の工程１２５〜１２８）。例えば、図１８の具体例で説明すると、モデルＭ１のネイティブグループの４つの頂点Ｖ１０１（Ｍ１）、Ｖ１０６（Ｍ３）、Ｖ１０７（Ｍ１）、Ｖ１１３（Ｍ４）は、それら頂点に影響を与えるモデルＭ１，Ｍ３，Ｍ４毎にソーティングされ、例えば、Ｖ１０１（Ｍ１）、Ｖ１０７（Ｍ１）、Ｖ１０６（Ｍ３）、Ｖ１１３（Ｍ４）の順番に並び替えられる。また、モデルＭ１のスタートウエイトグループの９つの頂点Ｖ１０２（Ｍ２）〜Ｖ１０５（Ｍ２）及びＶ１０８（Ｍ２）〜Ｖ１１２（Ｍ２）は、全てモデルＭ２から影響を受けるのでそのままの順番になる。更に、モデルＭ１のミドルウエイトグループに属する２つの頂点Ｖ１０２（Ｍ３）、Ｖ１０３（Ｍ３）は、そのままの順番になる。そして、エンドウエイトグループに属する９つの頂点Ｖ１０２（Ｍ４）、Ｖ１０３（Ｍ４）、Ｖ１０４（Ｍ３）、Ｖ１０５（Ｍ３）、Ｖ１０８（Ｍ３）〜Ｖ１１２（Ｍ３）は、それらの頂点に影響を与えるモデルＭ３，Ｍ４毎に並び替えられる。モデルＭ５の６つの頂点は、全てモデルＭ５から影響を受けるので、その並びは変わらない。
【００９３】
次に、コンバータは、上記４つのグループの内、ネイティブグループとスタートウエイトグループの頂点に対して、共有頂点バッファのフォーマットを生成する（Ｓ６８、図１７中の工程１２９）。かかる共有頂点バッファは、実質的には実頂点リストを格納するバッファであり、第１に実頂点が属するモデル毎にまとめられ、第２にその中でネイティブグループとスタートウエイトグループ毎にまとめられ、第３にそれらの頂点に影響を与えるモデル毎にまとめられる。
【００９４】
図１８の例で示すと、モデルＭ１についての共有頂点バッファ内のリストは、ネイティブグループにおいて、影響を与えるモデルＭ１に対して頂点Ｖ１０１，Ｖ１０７を、モデルＭ３に対して頂点Ｖ１０６を、そしてモデルＭ４に対して頂点Ｖ１１３を有する。同様に、スタートウエイトグループにおいて、影響を与えるモデルＭ２に対して９つの頂点Ｖ１０２〜Ｖ１１２を有する。スタートウエイトグループにおいて、モデルＭ１，Ｍ３，Ｍ４に対する頂点は存在しない。
【００９５】
そして、共有頂点バッファ内に割り当てられる頂点に対して、新たな通し番号vx0〜vx12を新たな頂点ＩＤとして与える。この頂点ＩＤの与え方は、図１７中工程１２９に説明される通り、共有頂点バッファ上で各モデルの頂点数からなるオフセットを先頭とする通し番号をエントリ番号とすることもできる。例えば、モデルＭ１については、先頭アドレスをADD（Ｍ１）と与え、頂点Ｖ１０２の領域は、それから５番目のエントリ番号になるということを示す頂点ＩＤとして、ADD(M1)＋４なるＩＤが設定される。そして、モデルＭ１内の頂点数は１３個であるので、モデルＭ１に対するオフセット値は１３になる。従って、次のモデルＭ５の先頭アドレスADD(M5)は、モデルＭ１のオフセット値１３が利用され、それを先頭とするエントリ番号０〜６がモデルＭ５の共有頂点に与えられる。
【００９６】
このようなオフセット値とエントリ番号を利用することで、各モデルの共有頂点リストをバッファ上に展開する時、メモリ領域内のバッファ上での各頂点の領域を示すアドレスを簡単に設定することができる。この点については、後で詳述する。また、かかるオフセット値とエントリ番号が、ここでいう共有頂点バッファのフォーマット情報になる。
【００９７】
上記した共有頂点リストは、各モデルの実頂点リストと実質的に同じであり、かかるリストをメモリ内に展開して共有頂点バッファを作成することで、ウエイト演算におけるウエイト値と座標又は法線データの乗算値の積算（加算）を共有頂点バッファに対して行うことができる。しかも、各頂点に新たな頂点ＩＤを与えて、後述する頂点リストやポリゴンリスト内においてもこの頂点ＩＤを利用することで、描画ライブラリによる演算時の頂点の参照ＩＤを簡素化することができる。
【００９８】
新たな頂点ＩＤが与えられたことに対応して、各モデルが有するポリゴンリスト内の頂点ＩＤも、新たな頂点ＩＤに変換される（Ｓ６８）。そうすることにより、モデルのウエイト演算が終了した後のポリゴンの描画（レンダリング）を行う際に、共有頂点バッファ内のデータの参照を容易にすることができ、リアルタイムでの処理が要求される描画ライブラリによる描画工程（レンダリング工程）を高速化することができる。
【００９９】
図８で説明した通り、生成された各頂点は、その頂点に影響を与えるモデルに分配される必要がある。従って、コンバータは、４種類の頂点を、その頂点に影響を与えるモデルにそれぞれ分配する（Ｓ７０）。ここで分配とは、具体的にいえば、頂点をそれに影響を与えるモデルの頂点リストに含ませ、更に、その頂点の座標データと法線データをモデルのローカル座標系に変換することを意味する。ローカル座標系への変換は、工程Ｓ６２で求めた各頂点のグローバル座標系のデータに、モデルの位置を示すモデルマトリクスの逆マトリクスを乗算することで行われる。
【０１００】
コンバータは、上記分配された頂点を、分配先のモデルの頂点リストに登録する（Ｓ７２）。この頂点リストは、４つのグループ毎にまとめられる。そして、その登録された頂点の参照ＩＤには、共有頂点バッファのフォーマットに従う新たな頂点ＩＤ（例えばオフセット値とエントリ番号）を使用する。その結果、頂点リスト上の頂点に対してウエイト演算を行う時、演算結果を格納する共有頂点バッファの領域へのアクセスを容易にすることができる。
【０１０１】
図１８，図１９の具体例で説明すると、図１８の４グループの頂点に対し、それに影響を与えるモデル、つまり図中括弧内に示したモデル（Ｖ１０１（Ｍ１）の場合はモデルＭ１）の頂点リストに分配される。その結果、図１９に示される頂点リストが、各モデル毎に生成される。例えば、モデルＭ１の頂点リストには、ネイティブの頂点Ｖ１０１（Ｍ１）とＶ１０７（Ｍ１）の座標データVERTと、法線データNORMとが並べられる。そして、それぞれの頂点の参照ＩＤは、図中「頂点ＩＤ（vx0、２）」で示される。即ち、「頂点ＩＤ（vx0、２）」は、図１８の共有頂点バッファ内の頂点ＩＤがvx0の領域から２つの頂点領域を示す。別の参照ＩＤの与え方としては、例えば、頂点リスト内の頂点データに、新たな頂点ＩＤであるvx0、vx1を属性データとして与えることもできる。
【０１０２】
図１９の例に示される通り、モデルＭ２の頂点リストは、ネイティブの頂点は存在せず、スタートウエイトの９つの頂点が存在する。スタートウエイトの頂点の場合は、頂点データに座標データVERT、法線データNORMに加えて、ウエイト値WTと格納すべき実頂点のＩＤ（図１９の例ではvx4、vx5）を有するウエイトデータNFlagsWを有する。この実頂点ＩＤは、共有頂点バッファの各頂点ブロックのオフセット値とそのブロック内のエントリ番号とによっても特定される。従って、ウエイトデータＮＦlagsWには、そのエントリ値を頂点ＩＤとして利用することもできる。
【０１０３】
図１９に示したモデルＭ３の頂点リストの場合は、ネイティブの頂点として頂点Ｖ１０６（Ｍ３）の頂点データと、ミドルウエイトの頂点として頂点Ｖ１０２（Ｍ３）とＶ１０３（Ｍ３）の頂点データ（座標データ、法線データ及びウエイトデータ）と、エンドウエイトの頂点として７個の頂点データ（座標データ、法線データ及びウエイトデータ）とが含まれる。また、モデルＭ４の頂点リストの場合は、ネイティブの頂点が１個、エンドウエイトの頂点が２個含まれる。
【０１０４】
以上の工程Ｓ６２〜Ｓ７２が、全てのモデルに対して行われた結果、図１７に示される通り、各モデルデータ１１５として、新たな頂点ＩＤによるポリゴンリスト１１６と、４つのグループ毎に分けられた頂点リスト１１７が生成される。具体例は、図１９に示した通りである。更に、図１８に示した通りの、共有頂点リストが生成され、それに対応する共有頂点バッファのフォーマット情報（例えば、オフセット値とエントリ番号）が生成される。その結果、描画ライブラリは、実頂点のデータを格納する共有頂点バッファを作成することができ、各モデルに分配された頂点リストに従って、ネイティブ頂点用の演算、スタートウエイト頂点用の演算、ミドルウエイト頂点用の演算、そしてエンドウエイト用の演算を順番にまとめて行うことができ、更に、共有頂点バッファ内に書き込まれたウエイト演算後の頂点データを利用して、新たな頂点ＩＤによるポリゴンリストを参照して描画を行うこともできる。
【０１０５】
図１４に戻り、コンバータは、上記の共有頂点バッファのフォーマット情報、モデル毎の頂点リストとポリゴンリストの作成に加えて、各モデルの描画（レンダリング）タイミングをシュミレーションして、ポリゴンリスト内に描画コマンドまたは未描画コマンドを加える。そのために、モデル内の実頂点に影響を与える頂点のウエイト計算が終了するタイミングを検出する。
【０１０６】
そのタイミングを検出するために、ポリゴンを有するモデル毎にウエイト計算回数を示すカウンタ値を決定する（Ｓ３６）。このカウンタ値は、各モデルにおいて４つのグループに分けられた頂点の数に等しい。即ち、モデルＭ１のカウンタ値は、２３になり、モデルＭ５のカウント値は６になる。このカウント値は、別の言い方をすれば、描画ライブラリが共有頂点バッファ内に書き込み又は積算（加算）を行う回数を意味し、各モデルにおいてこのカウント値のウエイト計算が終了すると、そのモデルの頂点に影響を与えるモデルのウエイト計算が終了したことを意味し、実頂点のデータが確定し描画（レンダリング）を行う準備ができたことを意味する。
【０１０７】
描画ライブラリによる描画シュミレーションでは、各モデルの頂点リストの頂点データに対して順番にマトリクス計算とウエイト計算を行い共有頂点バッファ内の頂点領域内に書き込み又は積算を行い（Ｓ４２）、書き込んだ又は積算した頂点が属するモデルのカウンタを＋１する（Ｓ４３）。図１９の例で説明すれば、まず、モデルＭ１の共有頂点バッファ領域をメモリ内に確保し、モデルＭ１の頂点リストについて、頂点Ｖ１０１（Ｍ１）の座標データVERTと法線データNORMに対し、モデルＭ１のモデルマトリクスを乗算して新たな位置での座標データと法線データを求め、ウエイト値１．０（１００％）を乗算し、図１８に示した共有頂点バッファ内のvx0の領域にそれらのデータを書き込む。この頂点Ｖ１０１（Ｍ１）はネイティブグループであり、モデルＭ１に１００％影響を受けるから、ウエイト値は１．０であり、ウエイト値を乗算してもデータに変更はない。従って、ネイティブグループの頂点については、ウエイト計算（乗算）を行うことなく共有頂点バッファ内にデータを書き込んでもよい。次に、頂点Ｖ１０７（Ｍ１）についても同様の計算を行い、共有頂点バッファ内のvx1の領域に求めたデータを書き込む。その結果、モデルＭ１のカウンタ値は２になる。
【０１０８】
上記工程Ｓ４２、Ｓ４４が、各モデルの頂点リストの順で繰り返される。そして、モデルの全ての頂点が終了すると（Ｓ４６）、そのモデルに対するウエイト計算が終了したか否かを、モデルのカウンタ値が設定値と同じか否かにより判定する（Ｓ４８）。図１９のモデルＭ１の例でいえば、２つの頂点Ｖ１０１（Ｍ１）と頂点Ｖ１０７（Ｍ１）のウエイト計算が終了しても、カウント値は２であり、設定値の２４に達していないので、モデルＭ１の描画を行うことはできない。従来の複数のポリゴンからなるモデルでは、そのポリゴンを構成する頂点の位置（座標）と法線は、モデルの位置が決まれば画一的に確定していた。即ち、モデルのモデルマトリクスが求められ、座標データや法線データにそのモデルマトリクスを積算すると、新たな座標データと法線データが確定する。従って、その時点でそのモデルの描画（レンダリング）を行うことができる。即ち、基本的にはマトリクス演算が終われば、そのモデルの描画を行うことはできる。
【０１０９】
しかし、一体整形モデル（エンベロープ）の場合は、ほかのモデルからの影響を受けるので、それらの影響についても全てのウエイト演算が終了しないとそのモデルの描画を行うことはできない。
【０１１０】
そこで、本実施の形態例では、モデルのウエイト計算が終了していない場合は、未描画コマンドDRAWCP（ADD）をそのモデルのポリゴンリストに発生し、図２１で後述する未描画テーブルに登録し、次のモデルの共有頂点バッファ領域を確保する（Ｓ５０）。上記未描画コマンドの属性データADDは、ポリゴンリストの番地を示す。図１９の例でいえば、モデルＭ１のポリゴンリストの先頭に、未描画コマンドDRAWCP(ADD)が書き込まれる。この結果、モデルＭ１のポリゴンリストは完成する。尚、DRAWCPは、DRAW  cash  polygonの略称である。
【０１１１】
一方、モデルのウエイト計算が終了している場合は、描画コマンドDRAMCP(ADD)をそのモデルのポリゴンリストに加える（Ｓ５２）。そして、共有頂点バッファの領域を開放する。或いは、描画コマンドを加えることなく、ポリゴンリスト内に未描画コマンドが記載されていなければ、即そのモデルの描画（レンダリング）を実行してもよいというルールにすることもできる。即ち、モデルの頂点リストに対するマトリクス計算とウエイト計算が終了すれば描画（レンダリング）を行うことをデフォルトにすることもできる。その場合は、モデルのポリゴンリスト内に上記の描画コマンドは加えられず、未描画コマンドの存在が意味を持つことになる。
【０１１２】
モデルの頂点リストに対する計算が終了すると、そのモデルの頂点リスト、ポリゴンリスト等が出力される（Ｓ５４）。ポリゴンリスト内には、未描画コマンドに対する未描画テーブルの登録IDや描画コマンドに対する未描画テーブルの登録ID等が含まれる。
【０１１３】
モデルの頂点リスト内の頂点に対する演算が全て終了しなくても、未描画モデルのウエイト計算の終了を、モデル毎のカウント値を参照することで検出する必要がある（Ｓ５８）。そして、ウエイト計算が終了した未描画モデルに対して、現在処理中のモデル内のポリゴンリストに、描画コマンドDRAWDP(ADD)を発生する。その結果、描画可能状態になったモデルに対する共通頂点バッファの領域が解放される（Ｓ６０）。尚、DRAWDPとは、DRAW  draw  polygonの略称である。
【０１１４】
上記のシュミレーション演算が、全てのモデルの頂点リストに対して行われる。
【０１１５】
より具体的に理解するために、図１８，１９の実例で説明する。図２０は、その場合に生成されるポリゴンリスト例であり、図２１は未描画テーブルの例である。まず、コンバータは、モデルＭ１の頂点リストについて、マトリクス演算とウエイト演算を行い、その結果を共有頂点バッファ内の対応する領域に書き込む。そして、頂点リストの全ての頂点データに対する演算が終了しても、ウエイト演算は終了していないので、モデルＭ１に対するポリゴンリスト１４５の先頭に、未描画コマンドDRAWCP(0)を登録する。この時、未描画テーブル１４３内には、このコマンドの属性データの「０」に対するポリゴンリスト先頭番地ADD1の対応が登録される。
【０１１６】
次に、モデルＭ２の頂点リストについても、同様にマトリクス演算とウエイト演算を行い、共有頂点バッファの対応する領域に書き込み又は積算（加算）を行う。そして、モデルＭ２の頂点リストの頂点全ての演算が終了した時点で、モデルＭ１の頂点に対するウエイト演算は終了していないので、次のモデルＭ３について同様の処理を行う。モデルＭ４の頂点リストの処理が終了すると、モデルＭ１の実頂点に対するウエイト演算は終了しモデルＭ１の描画が可能な状態になる。そこで、モデルＭ４のポリゴンリスト１４７の先頭に、未描画状態にあったモデルＭ１の描画コマンドDRAWDP(0)が登録される。
【０１１７】
モデルＭ５の頂点リストは、図１９に示されないが、全ての頂点がネイティブであるので、モデルＭ５の頂点リストのマトリクス演算とウエイト演算が終了した時点で描画可能状態にあるので、モデルＭ５のポリゴンリスト１４６内には、モデルＭ５の描画コマンドDRAWが登録される。或いは、未描画コマンドの登録がなければ描画処理を行うことがデフォルトで設定される場合は、かかるモデルＭ５の描画コマンドDRAWの登録は必要がない。
【０１１８】
いずれのポリゴンリスト１４５、１４６、１４７にも、ポリゴン名ＰＧとそれを構成する頂点IDを含む、頂点IDは、図２０の例では、共有頂点バッファにおいて新たに与えた統一的な頂点ＩＤであるvx0,vx1が利用される。共有頂点バッファが生成された時のエントリ番号とオフセット値を利用した実際のアドレスを頂点ＩＤにして、ポリゴンリストを形成することもできる。その例については、後で詳述する。
【０１１９】
図２１の未描画テーブル１４３には、モデルＭ１のＩＤ＝０に対して、そのモデルのポリゴンリストの先頭番地ADD1が対応付けされる。未描画テーブル１４３は、必ずしも必要なく、未描画コマンドDRAWCPの属性データに直接ポリゴンリストの先頭番地ADD1を与えることでもよい。
【０１２０】
以上説明した通り、コンバータは、三次元モデラーにより生成された一体整形モデルの元データから、共有頂点バッファのフォーマット情報と、各モデル毎の頂点リストとポリゴンリスト等を有する変換データを、非リアルタイムで生成する。この変換データは、ゲームプログラムや描画ライブラリと共にゲーム用の記録媒体、例えばＣＤＲＯＭ内に記録される。
【０１２１】
次に、共有頂点バッファの生成と解放に伴う、頂点ＩＤについて説明する。図２２は、頂点ＩＤを説明するための図である。図２２の例では、頂点ＩＤを説明する都合上、上記してきたモデルＭ１〜Ｍ５に、その後トレースされるポリゴン付きのモデルＭ６が加えられている。図２２（Ａ）は、モデルの頂点をネイティブ、スタートウエイト、ミドルウエイト、エンドウエイトに分類し、ネイティブとスタートウエイトの頂点から頂点バッファのフォーマットが形成された状態を示す。この状態では、全ての実頂点に通し番号vx0〜vx(h+i+j-1)が与えられる。但し、ｈ，ｉ，ｊはそれぞれモデルＭ１，Ｍ５，Ｍ６のオフセット値とする。そこで、コンバータによるシュミレーション演算を行うことにより、図２２（Ｂ）に示される様に、共有頂点バッファの領域が生成され、解放されたとする。
【０１２２】
上記してきたモデルＭ１〜Ｍ５では、モデルＭ１とＭ５が実頂点を有する。そして、モデル階層のトレース順では、モデルＭ１，Ｍ２，Ｍ３，Ｍ５，Ｍ４で頂点リストに対する演算が行われる。従って、共有頂点バッファ領域の先頭番地がADDmとすると、モデルＭ１の共有頂点バッファの領域が番地ADDm以降に最初に生成される（図２２（Ｂ−１））。次に、モデルＭ５の共有頂点バッファ領域が、モデルＭ１の領域の後に生成される（図２２（Ｂ−２））。この時点では、モデルＭ１の頂点のアドレスは、先頭番地ADDmとエントリ値０〜（ｈ−１）により特定される。また、モデルＭ５の頂点のアドレスは、先頭番地ADDmに加えてモデルＭ１のオフセット値ｈとモデルＭ５のエントリ値０〜ｉによって特定される。従って、この時点では、モデルＭ１とＭ５の共有頂点のアドレスは、先頭番地ADDmから、０〜（h+i−1）の連続番号で特定される。このアドレスが頂点ＩＤに利用される。
【０１２３】
即ち、この時点で、モデルＭ１とモデルＭ２の描画が行われ、その後モデルＭ１，Ｍ５の共有頂点バッファ領域は開放される。従って、各モデルの頂点リストの頂点ＩＤと、モデルＭ１，Ｍ５のポリゴンリストの頂点ＩＤを、全てこのアドレスにすることができる。そうすることにより、描画ライブラリの処理効率を高くすることができる。
【０１２４】
次に、モデルＭ１，Ｍ５の描画が終了すると、それらの共有頂点バッファ領域はもはや不要になる。そこで、次に描画すべきモデルＭ６の共有頂点バッファ領域は、再度先頭番地ADDmからエントリ番号０〜（ｊ−１）に生成される。従って、このアドレスが、モデルＭ６等の頂点リストやポリゴンリスト内の頂点ＩＤとして利用される。つまり、共有頂点バッファ領域の生成と維持を必要最小限に止めるために、異なるモデルの共有頂点バッファ領域のアドレスが重複することになる。しかし、モデルの階層構造のトレース順に頂点リストを参照し、ポリゴンリストを参照するので、そのようなアドレスの重複に不都合は生じない。
【０１２５】
別の変形例として、頂点リストやポリゴンリストに統一的な頂点ＩＤvx0〜vx(h+i+j-1)を利用し、コンバータのシュミレーション演算により、共有頂点バッファ領域のアドレスと統一頂点ＩＤとの対応テーブルを生成することもできる。その場合は、描画ライブラリは、頂点リストとポリゴンリストの頂点ＩＤに対するバッファ領域のアドレスを、その対応テーブルを参照することで知ることができる。
【０１２６】
図２３は、具体的な頂点リストの別の例を示す図である。この例は、上記の共有頂点バッファ領域のアドレスを頂点ＩＤとして積極的に利用した場合の例である。この頂点リスト２００は、頂点リスト開始の記述２０１と終了の記述２０３の間に、４グループ毎の頂点データの固まり（チャンク）有する。２０２は、頂点データチャンクの終了を示す記述である。即ち、頂点リスト２００は、ウエイトを持たないネイティブ頂点のチャンク２１８、スタートウエイトの頂点のチャンク２２８、ミドルウエイトの頂点のチャンク２３８、及びエンドウエイトの頂点のチャンク２４８を有する。各チャンクには、ウエイトなしの頂点グループのデータチャンク名を示す記述２１１と、ウエイトありの頂点グループのデータチャンク名を示す記述２２１とを有する。それらの記述には、ウエイト計算継続中のフラグ２１２とチャンクサイズ２１３と、スタート、ミドル、エンドの区別表示２２２，２３２，２４２とを含む。
【０１２７】
更に、各チャンクには、共有頂点バッファの頂点リストブロックのオフセット値２１４とそのチャンク内の頂点データの数２１５を示す記述も含まれる。頂点データには、図１９に示したのと同様に、座標データ２１６と法線データ２１７と、ウエイトデータとを有する。ウエイトデータには、頂点の共有頂点バッファ上でのエントリ番号２２６とウエイト値（％）２２７とを有する。オフセット値２１４とエントリ番号２２６とにより、共有頂点バッファ内の実頂点の領域（頂点ＩＤ）を特定することができる。
【０１２８】
次に、描画ライブラリの手順について説明する。図２４は、描画ライブラリの手順のフローチャート図である。図１３で説明した通り、ゲーム進行中は、オペレータからの操作データに応答してゲームプログラムがキャラクタを構成しているモデルの移動用のマトリクスを生成する（Ｓ２２）。そこで、描画ライブラリがポリゴンの描画を行う（Ｓ２４）。
【０１２９】
描画ライブラリの手順は、コンバータのシュミレーション演算に類似する。描画 ライブラリは、変換データを利用してリアルタイムでポリゴンの描画を行う。描画ライブラリは、モデル階層構造のトレース順に従い、各モデルの頂点リスト順に、マトリクス演算により移動後の頂点の座標データと法線データを求める（Ｓ８０）。かかる求められた座標データと法線データは、変換データにモデルマトリクスを乗算することにより求められ、グローバル座標系に変換される。
このマトリクス演算に伴い、そのモデルの共有頂点バッファ領域をメモリ内に確保する（Ｓ７８）。かかる共有頂点バッファ領域は、変換データ内のフォーマット情報により必要なだけ確保することができる。そして、マトリクス演算を行った頂点が、ネイティブグループに分類された頂点の場合は（Ｓ８２）、ウエイト演算では、単に１００％（１．０）を乗算するだけであるので、実際には、マトリクス演算により求めた座標データと法線データを、対応する共有頂点バッファの領域に記録する（Ｓ８４）。
【０１３０】
また、マトリクス演算を行った頂点が、ウエイトありの頂点、即ち、スタートウエイト、ミドルウエイト或いはエンドウエイトの頂点の場合は（Ｓ８６）、ウエイトデータを利用してウエイト計算を行い、対応する共有頂点バッファにその計算結果の座標データ及び法線データを書き込むか積算（加算）する。スタートウエイトの頂点の場合は、最初に登場した頂点であるので、計算結果は共有頂点バッファ内に書き込まれるが、ミドルウエイト又はエンドウエイトの頂点の場合は、すでに書き込まれている値に、その計算結果を積算（加算）する。そして、計算結果を記録したモデルのカウンタを＋１する（Ｓ９０）。
【０１３１】
上記のマトリクス演算とウエイト演算とが、モデルの頂点リスト内のすべての頂点データに対して行われる（Ｓ９２）。全ての頂点ＩＤが統一されたＩＤを利用し、その頂点ＩＤと共有頂点バッファの頂点データ領域の参照インデックスとが対応しているので、このウエイト演算は、非常に高速に行うことができる。更に、頂点リストは、モデル毎に分けられている。従って、マトリクス演算において、モデル内の頂点に対しては同じモデルマトリクスを使用することができる。このことは、描画ライブラリによるマトリクス演算において、ＣＰＵ内に設定されるモデルマトリクスを頻繁に変更する必要がないことを意味する。従って、マトリクス演算効率が高くなり、リアルタイムでの描画を可能にする。
【０１３２】
更に、頂点リストは、頂点グループ毎にまとめられているので、まとめられた頂点に対するウエイト演算における手順を、均一化することができる。即ち、ネイティブの頂点であれば、マトリクス演算結果をそのまま共有頂点バッファに書き込み、スタートウエイトの頂点であれば、マトリクス演算してウエイト演算した結果を共有頂点バッファに書き込み、ミドルウエイトとエンドウエイトの頂点は、両演算結果を共有頂点バッファ内のデータに積算（加算）する。このように手順を均一化することができるので、描画ライブラリの演算効率は高くなり、リアルタイムでの演算を可能にする。
【０１３３】
描画ライブラリは、一つのモデルの頂点リストに対する演算が終了すると、そのモデルのポリゴンリストを参照する。ポリゴンリスト内に未描画コマンドDRAWCPが記載されている場合（Ｓ９４）は、そのモデルの描画（レンダリング）を行うことができないので、未描画テーブルに登録する（Ｓ９６）。また、ポリゴンリスト内に描画コマンドDRAWDPが記載されている場合は（Ｓ９８）、未描画モデルについて、未描画テーブルに登録された番地を参照して、ポリゴンリストの順にポリゴンの描画（レンダリング）を行う（Ｓ１００）。かかるポリゴンのレンダリングは、共有頂点バッファ内に格納された演算結果のグローバル座標系における座標データと法線データを利用して行われる。従って、そのモデルの描画が終了すると、そのモデルに対する共有頂点バッファの領域は不要になり、解放される。解放とは、必要があれば別の共有頂点バッファ領域に割り当てられる状態にすることを意味する。また、ポリゴンリスト内にそのモデルの描画を指示する描画コマンドDRAWが記載される場合は、自分のモデルの描画（レンダリング）し、それに対応する共有頂点バッファ領域を開放する（Ｓ１０２）。
【０１３４】
なお、デフォルトの手順として、モデル内の頂点リストの演算が終了したら、未描画コマンドが存在しない限り自動的にそのモデルのポリゴンリストに従ってポリゴンの描画を行わせることもできる。更に、描画（レンダリング）を行う前に、頂点計算が終了した法線データについて正規化を必要に応じて行う（Ｓ９３）。法線データは、レンダリング工程において光源からの光のベクトルと正規化された法線ベクトルとの内積値（ｃｏｓθ、θは両ベクトル間の角度）を求める時に利用される。この内積値に応じてポリゴン内のピクセルにおける拡散光等の処理が行われる。従って、レンダリング工程における演算によっては、予め法線ベクトルの正規化（スカラー値を１にする処理）を行うことが必要になる。
【０１３５】
描画ライブラリによる描画（レンダリング）工程において、全てのモデルの共有頂点バッファ領域をメモリ内に確保する必要はない。必要なウエイト演算が終了するまでは、モデルに対応する共有頂点バッファ領域を確保しておく必要がある。しかし、一旦全てのウエイト演算が終了して、そのモデルを描画できる状態になると、予めポリゴンリスト内に登録されている描画コマンドに従ってモデル内のポリゴンの描画（レンダリング）を行うことができる。描画が終了すれば、もはやその共有頂点バッファ領域内の頂点データは不要になるので、係る領域を開放して、他のモデルの共有頂点バッファ領域に提供することができる。従って、メモリ内の共有頂点バッファ領域の容量を平均的に小さくすることができる。かかる点は、比較的少ない容量のメモリしか利用できないゲーム機器にとっては大きなメリットになる。
【０１３６】
以上の様に、コンバータによって予め変換テーブルが作成されているので、リアルタイムでのレンダリングが要求される描画ライブラリは、上記の通り非常に効率よくマトリクス演算やウエイト演算を行うことができる。更に、メモリ内に確保すべき実頂点のデータ領域（共有頂点バッファ領域）の容量を小さくすることができる。従って、描画ライブラリは、ゲーム機器を利用してリアルタイムでオペレータからの操作に応答したキャラクタの画像を作成することができる。
【０１３７】
上記の実施の形態例では、一体整形モデルにおいて、実頂点が複数のモデルから影響をうけるマルチウエイトのデータについて、コンバータによる変換データと描画ライブラリの処理について説明した。かかるマルチウエイト方式による一体整形モデルを利用することで、ポリゴン間を接続する関節部分や表面の筋肉の形状をより自然な形で描画することが可能になる。
【０１３８】
しかしながら、ゲーム内のシーンによっては、マルチウエイトの一体整形モデルからなるキャラクタであっても、例えば視点から遠隔の位置にある場合は、複雑なマルチウエイトに従う頂点演算を行う必要がない場合もある。視点から遠隔に位置するキャラクタには、視点から近い位置でスクリーンの中央部に位置するキャラクタのようなより高級な画像を必要としないからである。そのような場合は、演算処理に時間とハードウエア資源を必要とするマルチウエイトに従う頂点演算ではなく、ワンウエイトに従う頂点演算にすることで、画面全体の画像処理時間とハードウエア資源を節約することができる。ワンウエイトとは、一つのモデルからのみ影響を受ける頂点、つまりネイティブグループに属する頂点、のみからなるモデルを意味する。
【０１３９】
図２５は、マルチウエイトの一体整形モデルのデータからワンウエイトの頂点リストを得るコンバータの手順を示すフローチャート図である。本フローチャートは、図１６に示したマルチウエイトのデータに対する頂点のモデルへの分配と頂点リストの生成のフローチャートに一部変更を加えている。
【０１４０】
工程Ｓ６２での、基本姿勢における一体整形モデルの実頂点の座標と法線データをグローバル座標系に変換することは、マルチウエイトの場合と同じである。次に、コンバータは、元のモデルデータの実頂点を、モデル階層のトレース順に従って、ウエイトの有無に基づくグループに分ける（Ｓ６４）。即ち、マルチウエイトの場合の、ネイティブグループとそれ以外のグループとに分ける。そして、コンバータは、複数モデルからのウエイト（影響）を有する頂点のうち、最大のウエイトを与えるモデルのネイティブの頂点にする（Ｓ６５）。例えば、図８の例で説明すると、３つのモデルＭ２，Ｍ３，Ｍ４からのウエイトを有する頂点Ｖ１０２は、モデルＭ４からのウエイト値が４０％と最大であるので、３つの頂点Ｖ１０２（Ｍ２）、Ｖ１０２（Ｍ３）、Ｖ１０２（Ｍ４）のうち、頂点Ｖ１０２（Ｍ４）のみをモデルＭ４に属する頂点にし、残りのウエイト値が小さい頂点Ｖ１０２（Ｍ２）、Ｖ１０２（Ｍ３）は無視する。その結果、頂点Ｖ１０２は、モデルＭ４から１００％の影響を受けるネイティブの頂点になる。
【０１４１】
工程Ｓ６５の処理により、全ての頂点は１つのモデルから影響を受けるシングルウエイトの頂点になる。その後の処理は、図１６のマルチウエイの場合と同じである。即ち、頂点を、それに影響を与えるモデル毎にソーティングし（Ｓ６６）、全ての頂点に対して統一した番号を新たな頂点ＩＤとして与え、各モデルのポリゴンリストに反映する（Ｓ６８）。或いは、マルチウエイトの場合と同様に、共有頂点バッファのオフセット値とエントリー番号による頂点ＩＤを利用してもよい。
【０１４２】
更に、コンバータは、全ての頂点をその頂点に影響を与えるモデル（頂点が属するモデル）に分配し、頂点データをモデル内のローカル座標系に変換する（Ｓ７０）。そして、分配先のモデルの頂点リストに、それら分配した頂点を登録する（Ｓ７２）。シングルウエイトであるので、各モデルの頂点リストには、マルチウエイトの様にネイティブグループ、スタートウエイトグループなどのグループは存在せず、全てネイティブの頂点になる。むろん、頂点リストでの実頂点の引用は、共有頂点バッファのフォーマットに従う頂点ＩＤになる。
【０１４３】
即ち、シングルウエイトの場合は、共有頂点バッファ領域には、各モデル毎にそのモデルのポリゴンを構成する実頂点のリストが形成され、各モデルの頂点リストには、そのモデルが影響を与えるネイティブ頂点のリストが形成される。従って、かかるシングルウエイトの変換データを利用すると、描画ライブラリは頂点演算の回数を１つの頂点に対して１回にすることができ、描画工程を簡単にし、高速描画処理を可能にする。
【０１４４】
シングルウエイトの変換データは、コンバータによりマルチウエイト形式の全てのモデルに対して生成されることが好ましい。従って、コンバータは、マルチウエイト形式のモデルに対しては、図１６に従ってマルチウエイト形式の変換データと、図２５に従ってシングルウエイト形式の変換データとを生成する。そして、描画ライブラリは、ゲームの進行中に、描画すべきキャラクタの位置が、例えば視点位置から遠い位置にある場合や、画面の中央部以外の位置にある場合、更に、例えば半透明ポリゴンの背後に位置する場合等、精密なモデルの動作を要求されない状況にある場合は、シングルウエイト形式の変換データを利用して描画処理を行う。その結果、画面中央部のもっとも目立つ位置にあるキャラクタにのみマルチウエイトの変換データを利用して描画処理を行う。その結果、画面全体に必要な描画処理を軽くすることができる。
【０１４５】
【発明の効果】
以上、本発明によれば、ゲーム（またはシミュレーション）用記録媒体に記録されリアルタイムで画像処理を行う描画ライブラリに最適なデータ構造のモデルの変換データを提供することができるので、より自然な関節や外面の動きを実現できる一体整形モデルを、リアルタイムに描画することが可能になる。
【０１４６】
また、本発明によれば、三次元モデラなどにより生成される一体型モデルのデータを、ゲーム（またはシミュレーション）用記録媒体に記録されリアルタイムで画像処理を行う描画ライブラリに最適なデータ構造のモデルのデータに変換する画像処理方法（コンバータ）を提供するので、三次元モデラを利用した一体整形モデル形式のモデルデータを、ゲーム機器（またはシミュレーション）に利用することができ、より自然なオブジェクトの動きをゲームにおいて提供することができる。
【０１４７】
更に、本発明によれば、変換データを利用して一体整形モデルの描画を効率よく行う画像処理方法またはそれをコンピュータに実行させるプログラムを記録した記録媒体を提供することができるので、ゲーム機器において、リアルタイムで一体整形モデルによるキャラクタを描画することができ、より自然な動きのキャラクタの画像を形成することができる。
【図面の簡単な説明】
【図１】ＣＧムービーにおける一体整形モデルの動きの例を示す図である。
【図２】従来のＣＧムービーにおける一体整形モデルを利用した画像処理を説明する図である。
【図３】図２の画像処理手順を示すフローチャート図である。
【図４】本実施の形態例における三次元モデラーを利用して生成される一体整形モデルの例を示す図である。
【図５】図４の一体整形モデルのデータ構成例である。
【図６】デザイナーにより設定された各頂点へのモデルからの影響度（ウエイト値）を示す図である。
【図７】一体整形モデル（エンベロープ）の移動例を示す図である。
【図８】一体整形モデルにおけるウエイト計算方法を説明する図である。
【図９】一体整形モデルにおけるモデルの移動計算と頂点のウエイト計算の手順を示すフローチャート図である。
【図１０】本実施の形態例における一体整形モデルの元データと描画ライブラリ用の変換データの関係を示す図である。
【図１１】ゲーム用の記録媒体内の構成と、ゲーム機のハードウエアとの関係を示す図である。
【図１２】三次元モデラによる一体整形モデルのデータから変換データを作成するまでの概略的フローチャート図である。
【図１３】ゲームにおけるのフローチャート図である。
【図１４】コンバータの手順を示すフローチャート図である。
【図１５】コンバータの手順を示すフローチャート図である。
【図１６】詳細な実頂点のモデルへの分配と頂点リストの生成の手順を示すフローチャート図である。
【図１７】元データから変換データへの手順を示す図である。
【図１８】具体的モデル例に適用した時の元データの頂点リストと共有頂点リストを示す図である。
【図１９】具体的モデル例に適用した時の頂点リストを示す図である。
【図２０】ポリゴンリスト例を示す図である。
【図２１】未描画テーブルの例を示す図である。
【図２２】共有頂点バッファの展開と解放の例を示す図である。
【図２３】具体的な頂点リストの別の例を示す図である。
【図２４】未描画テーブルの例を示す図である
【図２５】描画ライブラリの手順のフローチャート図である。
【符号の説明】
１００      一体整形モデルの元データ
１１０      一体整形モデルの変換データ
１０        ゲーム用記録媒体、ＣＤＲＯＭ
１２        ゲームプログラム
１４        描画ライブラリ
２０        ゲーム機器
Ｍ１〜Ｍ６  モデル
ｖｘ        頂点ＩＤ
【図１】
0004206547.tif 000002
【図２】
0004206547.tif 000003
【図３】
0004206547.tif 000004
【図４】
0004206547.tif 000005
【図５】
0004206547.tif 000006
【図６】
0004206547.tif 000007
【図７】
0004206547.tif 000008
【図８】
0004206547.tif 000009
【図９】
0004206547.tif 000010
【図１０】
0004206547.tif 000011
【図１１】
0004206547.tif 000012
【図１２】
0004206547.tif 000013
【図１３】
0004206547.tif 000014
【図１４】
0004206547.tif 000015
【図１５】
0004206547.tif 000016
【図１６】
0004206547.tif 000017
【図１７】
0004206547.tif 000018
【図１８】
0004206547.tif 000019
【図１９】
0004206547.tif 000020
【図２０】
0004206547.tif 000021
【図２１】
0004206547.tif 000022
【図２２】
0004206547.tif 000023
【図２３】
0004206547.tif 000024
【図２４】
0004206547.tif 000025
【図２５】
0004206547.tif 000026