(57)【特許請求の範囲】
【請求項１】
仮想３次元空間に存在する複数のオブジェクトのうちの対象オブジェクトに輪郭線を施し、該対象オブジェクトとは異なる非対象オブジェクトに輪郭線を施さないものとした画像を生成する画像生成装置であって、
前記仮想３次元空間において、仮想カメラの視点の位置と視軸の方向を所定の位置及び方向に設定する仮想カメラ設定手段と、
前記仮想カメラ設定手段により設定された仮想カメラに従って、前記複数のオブジェクトを透視変換した２次元画像を描画する２次元画像描画手段と、
前記２次元画像描画手段により描画される２次元画像に含まれる対象オブジェクトの輪郭を検出する輪郭検出手段と、
前記２次元画像描画手段により描画される２次元画像において、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定する重なり判定手段と、
前記輪郭検出手段により検出された輪郭に、輪郭線を描画する輪郭線描画手段と、
前記２次元画像描画手段により描画された２次元画像に前記輪郭線描画手段により描画された輪郭線の画像を合成した画像を生成する画像生成手段とを備え、
前記輪郭線描画手段は、
前記重なり判定手段により前記非対象オブジェクトが一切重なっていないと判定された場合に、前記輪郭検出手段により検出された前記対象オブジェクトの輪郭の全体に輪郭線を描画する非重なり時描画手段と、
前記重なり判定手段により前記非対象オブジェクトが部分的に重なっていると判定された場合に、前記輪郭検出手段により検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の非重なり部分に輪郭線を描画する重なり時描画手段とを含み、
前記重なり時描画手段は、前記非重なり部分が所定の長さ以上連続していることを条件に、輪郭線を描画する
ことを特徴とする画像生成装置。
【請求項２】
仮想３次元空間に存在する複数のオブジェクトのうちの対象オブジェクトに輪郭線を施し、該対象オブジェクトとは異なる非対象オブジェクトに輪郭線を施さないものとした画像を生成する画像生成装置であって、
前記仮想３次元空間において、仮想カメラの視点の位置と視軸の方向を所定の位置及び方向に設定する仮想カメラ設定手段と、
前記仮想カメラ設定手段により設定された仮想カメラに従って、前記複数のオブジェクトを透視変換した２次元画像を描画する２次元画像描画手段と、
前記２次元画像描画手段により描画される２次元画像に含まれる対象オブジェクトの輪郭を検出する輪郭検出手段と、
前記２次元画像描画手段により描画される２次元画像において、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定する重なり判定手段と、
前記輪郭検出手段により検出された輪郭に、輪郭線を描画する輪郭線描画手段と、
前記２次元画像描画手段により描画された２次元画像に前記輪郭線描画手段により描画された輪郭線の画像を合成した画像を生成する画像生成手段とを備え、
前記画像生成手段は、前記重なり判定手段により前記非対象オブジェクトが部分的に重なっていると判定された場合に、前記輪郭検出手段により検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の非重なり部分の輪郭線を合成する重なり時合成手段を含み、
前記重なり時合成手段は、前記非重なり部分が所定の長さ以上連続していることを条件に、輪郭線を合成する
ことを特徴とする画像生成装置。
【請求項３】
前記２次元画像描画手段は、描画した複数のオブジェクトの２次元画像の画像データを、前記仮想カメラの視点の位置に近い方のオブジェクトの前記仮想カメラの設定に応じて定められる近距離クリップ面からの距離を示す深度データとともに２次元画像記憶手段に記憶させ、
前記重なり判定手段は、前記２次元画像記憶手段に記憶された前記対象オブジェクトの深度データと前記非対象オブジェクトの深度データとを比較して、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定する
ことを特徴とする請求項１または２に記載の画像生成装置。
【請求項４】
前記輪郭検出手段は、前記２次元画像記憶手段に記憶された前記対象オブジェクトの深度データに基づいて、前記２次元画像描画手段により描画される２次元画像に含まれる対象オブジェクトの輪郭を検出する
ことを特徴とする請求項３に記載の画像生成装置。
【請求項５】
前記仮想３次元空間は、ビデオゲームのゲーム空間であり、
前記輪郭線描画手段は、前記ゲームの進行状況が所定の状況にあるときに、前記対象オブジェクトの輪郭線を描画しない
ことを特徴とする請求項１乃至４のいずれか１項に記載の画像生成装置。
【請求項６】
前記仮想３次元空間は、ビデオゲームのゲーム空間であり、
前記画像生成手段は、前記ゲームの進行状況が所定の状況にあるときに、前記輪郭線描画手段により描画された輪郭線を前記２次元画像描画手段により描画された２次元画像に合成しない
ことを特徴とする請求項１乃至４のいずれか１項に記載の画像生成装置。
【請求項７】
仮想３次元空間に存在する複数のオブジェクトのうちの対象オブジェクトに輪郭線を施し、該対象オブジェクトとは異なる非対象オブジェクトに輪郭線を施さないものとした画像を生成し、表示装置に表示させる画像生成方法であって、
前記仮想３次元空間における前記仮想カメラの視点の位置と視軸の方向を所定の位置及び方向に設定し、該仮想カメラの設定に関する情報を前記記憶装置に記憶させるステップと、
前記記憶装置に記憶された仮想カメラの設定に関する情報に従って、前記複数のオブジェクトを透視変換した２次元画像を描画して、前記記憶装置に書き込むステップと、
前記透視変換により描画される２次元画像に含まれる対象オブジェクトの輪郭を検出し、該検出した輪郭に関する情報を前記記憶装置に記憶させるステップと、
前記透視変換により描画されて前記記憶装置に書き込まれた２次元画像において、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定するステップと、
前記輪郭検出手段による検出で情報が前記記憶装置に書き込まれた輪郭に輪郭線の画像を描画して、前記記憶装置に書き込むステップと、
前記透視変換により描画されて前記記憶装置に書き込まれた前記複数のオブジェクトの２次元画像と、前記描画されて前記記憶装置に書き込まれた輪郭線の画像とを合成した画像を生成して、前記表示装置に表示させるステップとを含み、
前記輪郭線を描画するステップは、
前記非対象オブジェクトが一切重なっていないと判定された場合に、前記検出された前記対象オブジェクトの輪郭の全体に輪郭線を描画するステップと、
前記非対象オブジェクトが部分的に重なっていると判定された場合に、前記検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の非重なり部分に輪郭線を描画するステップとを含み、
前記非重なり部分に輪郭線を描画するステップは、前記非重なり部分が所定の長さ以上連続していることを条件に、輪郭線を描画する
ことを特徴とする画像生成方法。
【請求項８】
仮想３次元空間に存在する複数のオブジェクトのうちの対象オブジェクトに輪郭線を施し、該対象オブジェクトとは異なる非対象オブジェクトに輪郭線を施さないものとした画像を生成し、表示装置に表示させる画像生成方法であって、
前記仮想３次元空間における前記仮想カメラの視点の位置と視軸の方向を所定の位置及び方向に設定し、該仮想カメラの設定に関する情報を前記記憶装置に記憶させるステップと、
前記記憶装置に記憶された仮想カメラの設定に関する情報に従って、前記複数のオブジェクトを透視変換した２次元画像を描画して、前記記憶装置に書き込むステップと、
前記透視変換により描画される２次元画像に含まれる対象オブジェクトの輪郭を検出し、該検出した輪郭に関する情報を前記記憶装置に記憶させるステップと、
前記透視変換により描画されて前記記憶装置に書き込まれた２次元画像において、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定するステップと、
前記輪郭検出手段による検出で情報が前記記憶装置に書き込まれた輪郭に輪郭線の画像を描画して、前記記憶装置に書き込むステップと、
前記透視変換により描画されて前記記憶装置に書き込まれた前記複数のオブジェクトの２次元画像と、前記描画されて前記記憶装置に書き込まれた輪郭線の画像とを合成した画像を生成して、前記表示装置に表示させるステップとを含み、
前記複数のオブジェクトの画像と前記輪郭線の画像とを合成した画像を生成するステップは、前記非対象オブジェクトが部分的に重なっていると判定された場合に、前記検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の非重なり部分の輪郭線の画像を合成するステップを含み、
前記非重なり部分の輪郭線の画像を合成するステップは、前記非重なり部分が所定の長さ以上連続していることを条件に、輪郭線を合成する
ことを特徴とする画像生成方法。
【請求項９】
仮想３次元空間に存在する複数のオブジェクトのうちの対象オブジェクトに輪郭線を施し、該対象オブジェクトとは異なる非対象オブジェクトに輪郭線を施さないものとした画像を生成し、表示装置に表示させるための処理をコンピュータ装置に実行させるプログラムであって、
前記仮想３次元空間における前記仮想カメラの視点の位置と視軸の方向を所定の位置及び方向に設定し、該仮想カメラの設定に関する情報を前記コンピュータ装置が備えるコンピュータ装置が備える記憶装置に記憶させるステップと、
前記記憶装置に記憶された仮想カメラの設定に関する情報に従って、前記複数のオブジェクトを透視変換した２次元画像を描画して、前記記憶装置に書き込むステップと、
前記透視変換により描画される２次元画像に含まれる対象オブジェクトの輪郭を検出し、該検出した輪郭に関する情報を前記記憶装置に記憶させるステップと、
前記透視変換により描画されて前記記憶装置に書き込まれた２次元画像において、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定するステップと、
前記輪郭検出手段による検出で情報が前記記憶装置に書き込まれた輪郭に輪郭線の画像を描画して、前記コンピュータ装置が備える前記記憶装置に書き込むステップと、
前記透視変換により描画されて前記記憶装置に書き込まれた前記複数のオブジェクトの２次元画像と、前記描画されて前記記憶装置に書き込まれた輪郭線の画像とを合成した画像を生成して、前記表示装置に表示させるステップとを前記コンピュータ装置に実行させ、
前記輪郭線を描画するステップは、
前記非対象オブジェクトが一切重なっていないと判定された場合に、前記検出された前記対象オブジェクトの輪郭の全体に輪郭線を描画するステップと、
前記非対象オブジェクトが部分的に重なっていると判定された場合に、前記検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の非重なり部分に輪郭線を描画するステップとを含み、
前記非重なり部分に輪郭線を描画するステップは、前記非重なり部分が所定の長さ以上連続していることを条件に、輪郭線を描画する
ことを特徴とするプログラム。
【請求項１０】
仮想３次元空間に存在する複数のオブジェクトのうちの対象オブジェクトに輪郭線を施し、該対象オブジェクトとは異なる非対象オブジェクトに輪郭線を施さないものとした画像を生成し、表示装置に表示させるための処理をコンピュータ装置に実行させるプログラムであって、
前記仮想３次元空間における前記仮想カメラの視点の位置と視軸の方向を所定の位置及び方向に設定し、該仮想カメラの設定に関する情報を前記コンピュータ装置が備える記憶装置に記憶させるステップと、
前記記憶装置に記憶された仮想カメラの設定に関する情報に従って、前記複数のオブジェクトを透視変換した２次元画像を描画して、前記記憶装置に書き込むステップと、
前記透視変換により描画される２次元画像に含まれる対象オブジェクトの輪郭を検出し、該検出した輪郭に関する情報を前記記憶装置に記憶させるステップと、
前記透視変換により描画されて前記記憶装置に書き込まれた２次元画像において、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定するステップと、
前記輪郭検出手段による検出で情報が前記記憶装置に書き込まれた輪郭に輪郭線の画像を描画して、前記コンピュータ装置が備える前記記憶装置に書き込むステップと、
前記透視変換により描画されて前記記憶装置に書き込まれた前記複数のオブジェクトの２次元画像と、前記描画されて前記記憶装置に書き込まれた輪郭線の画像とを合成した画像を生成して、前記表示装置に表示させるステップとを前記コンピュータ装置に実行させ、
前記複数のオブジェクトの画像と前記輪郭線の画像とを合成した画像を生成するステップは、前記非対象オブジェクトが部分的に重なっていると判定された場合に、前記検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の非重なり部分の輪郭線の画像を合成するステップを含み、
前記非重なり部分の輪郭線の画像を合成するステップは、前記非重なり部分が所定の長さ以上連続していることを条件に、輪郭線を合成する
ことを特徴とするプログラム。
【請求項１１】
請求項９または１０に記載のプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想３次元空間に存在する複数のオブジェクトの画像を生成する画像生成装置等に関し、特に該複数のオブジェクトのうちで輪郭線を施すべき対象オブジェクトと輪郭線を施さない非対象オブジェクトとが重なり合う場合における輪郭線の描画に関するものである。
【背景技術】
【０００２】
ビデオゲームでは、近年のビデオゲーム機などの処理能力の向上によって、３次元コンピュータグラフィックスでの非常にリアルな画像の描画が可能になっている。もっとも、ゲームの内容によっては、あまりに画像がリアルすぎると却って面白味を低減させてしまうこととなるため、トゥーンレンダリングという手法を用いて、３次元コンピュータグラフィックスにおいてマンガやアニメ風の画像を描画するものがある。トゥーンレンダリングの対象となるオブジェクト（以下、トゥーンオブジェクト）には、その輪郭に輪郭線が付されるものとなる。
【０００３】
もっとも、例えば、実写の画像にアニメの画像を合成する場合のような表現をするためには、トゥーンオブジェクトだけでゲームの世界を表現するのではなく、地形のオブジェクトなどはトゥーンレンダリングの対象とせず、輪郭線を付さないままとしたオブジェクト（以下、ノントゥーンオブジェクト）とした方がよい。このように仮想３次元空間においてトゥーンオブジェクトとノントゥーンオブジェクトとが混在していると、透視変換により仮想スクリーン上に投影される画像においてトゥーンオブジェクトとノントゥーンオブジェクトとが重なり合う場合が当然のこととして生じてくる。
【０００４】
ところで、トゥーンオブジェクトに輪郭線を付するためには、まず、透視変換により仮想スクリーン上に投影される画像におけるトゥーンオブジェクトの輪郭を検出しなければならない。輪郭の検出は、例えば、仮想カメラからの視点からの距離に応じた輝度で描画した輪郭検出画像に基づいて行うことができる（例えば、特許文献１参照）。トゥーンオブジェクトとノントゥーンオブジェクトが混在すれば、その両者とも仮想スクリーン上に透視変換されるため、輪郭そのものの検出には、トゥーンオブジェクトとノントゥーンオブジェクトが区別されることはない。
【０００５】
【特許文献１】特開２００７−２６１１１号公報（段落００５１〜００９３）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
このようにオブジェクトの輪郭を検出する場合に、複数のオブジェクトが重なり合う部分では、当該重なり部分の境界が各々のオブジェクトの輪郭として検出される。トゥーンオブジェクトとノントゥーンオブジェクトとが重なり合う部分の境界は、トゥーンオブジェクトの輪郭でもあるため、トゥーンオブジェクトの輪郭に自動的に輪郭線を描いていくものとすると、本来は輪郭線が付されないノントゥーンオブジェクトの側にも輪郭線が付されたような画像が生成されてしまっていた。
【０００７】
このような場合でも、トゥーンオブジェクトの方が手前側（視点に近い側）にあれば、トゥーンオブジェクトの本来の外形に輪郭線が付されることとなるので、それほど違和感を感じることはない。しかしながら、ノントゥーンオブジェクトの方が手前側にあると、本来の外形とは異なる外形でトゥーンオブジェクトが浮き上がっているような印象を受ける不自然な画像が生成される場合があった。さらに、トゥーンオブジェクトとノントゥーンオブジェクトとの方が複雑に入り組んでいるような場所で、ノントゥーンオブジェクトの方が手前側にあると、輪郭線が非常に汚らしく感じられるような場合もあった。
【０００８】
本発明は、透視変換により生成される２次元画像において輪郭線を施す対象オブジェクト（トゥーンオブジェクト）と輪郭線を施さない非対象オブジェクト（ノントゥーンオブジェクト）とが混在する場合に、両者の重なり部分を自然に表現した画像を生成することのできる画像生成装置等を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の第１の観点にかかる画像生成装置は、仮想３次元空間に存在する複数のオブジェクトのうちの対象オブジェクトに輪郭線を施し、該対象オブジェクトとは異なる非対象オブジェクトに輪郭線を施さないものとした画像を生成する画像生成装置であって、前記仮想３次元空間において、仮想カメラの視点の位置と視軸の方向を所定の位置及び方向に設定する仮想カメラ設定手段と、前記仮想カメラ設定手段により設定された仮想カメラに従って、前記複数のオブジェクトを透視変換した２次元画像を描画する２次元画像描画手段と、前記２次元画像描画手段により描画された２次元画像に含まれる対象オブジェクトの輪郭を検出する輪郭検出手段と、前記２次元画像描画手段により描画された２次元画像において、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定する重なり判定手段と、前記輪郭検出手段により検出された輪郭に、輪郭線を描画する輪郭線描画手段と、前記２次元画像描画手段により描画された２次元画像に前記輪郭線描画手段により描画された輪郭線の画像を合成した画像を生成する画像生成手段とを備え、前記輪郭線描画手段は、前記重なり判定手段により前記非対象オブジェクトが一切重なっていないと判定された場合に、前記輪郭検出手段により検出された前記対象オブジェクトの輪郭の全体に輪郭線を描画する非重なり時描画手段と、前記重なり判定手段により前記非対象オブジェクトが部分的に重なっていると判定された場合に、前記輪郭検出手段により検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の非重なり部分に輪郭線を描画する重なり時描画手段とを含み、前記重なり時描画手段は、前記非重なり部分が所定の長さ以上連続していることを条件に、輪郭線を描画することを特徴とする。
【００１０】
上記目的を達成するため、本発明の第２の観点にかかる画像生成装置は、仮想３次元空間に存在する複数のオブジェクトのうちの対象オブジェクトに輪郭線を施し、該対象オブジェクトとは異なる非対象オブジェクトに輪郭線を施さないものとした画像を生成する画像生成装置であって、前記仮想３次元空間において、仮想カメラの視点の位置と視軸の方向を所定の位置及び方向に設定する仮想カメラ設定手段と、前記仮想カメラ設定手段により設定された仮想カメラに従って、前記複数のオブジェクトを透視変換した２次元画像を描画する２次元画像描画手段と、前記２次元画像描画手段により描画された２次元画像に含まれる対象オブジェクトの輪郭を検出する輪郭検出手段と、前記２次元画像描画手段により描画された２次元画像において、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定する重なり判定手段と、前記輪郭検出手段により検出された輪郭に、輪郭線を描画する輪郭線描画手段と、前記２次元画像描画手段により描画された２次元画像に前記輪郭線描画手段により描画された輪郭線の画像を合成した画像を生成する画像生成手段とを備え、前記画像生成手段は、前記重なり判定手段により前記非対象オブジェクトが部分的に重なっていると判定された場合に、前記輪郭検出手段により検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の非重なり部分の輪郭線を合成する重なり時合成手段を含み、前記重なり時合成手段は、前記非重なり部分が所定の長さ以上連続していることを条件に、輪郭線を合成することを特徴とする。
【００１１】
上記第１、第２の観点にかかる画像生成装置では、仮想３次元空間には、透視変換により生成される２次元画像において、輪郭線の施されない対象オブジェクトと輪郭線の施されない非対象オブジェクトとが存在する。対象オブジェクトよりも仮想カメラの視点に近い位置で非対象オブジェクトが重なっていなければ、対象オブジェクトの輪郭線の画像が複数のオブジェクトを透視変換した画像と合成された画像において、対象オブジェクトの輪郭全体に輪郭線が施されているものとなる。つまり、対象オブジェクトの外形形状に沿って輪郭線が施されているので、ユーザは、対象オブジェクトの全体像をハッキリ捉えることができる。
【００１２】
一方、対象オブジェクトよりも仮想カメラの視点に近い位置で非対象オブジェクトが重なっている場合、この境界部分は対象オブジェクトよりも仮想カメラの視点に近い位置で非対象オブジェクトが重なっている部分でもあるので、輪郭線が描画されない、或いは輪郭線の画像が合成されない。このため、ユーザが本来の外形とは異なる外形で対象オブジェクトが浮き上がっているような印象を受ける不自然な輪郭線の施された画像が生成されることがない。さらに、複雑な形状の非対象オブジェクトが重なっていても、その複雑な形状に沿って輪郭線が施されることがないので、最終的に生成された画像がユーザに汚らしく感じられてしまうことを防ぐことができる。
さらに、仮想カメラの視点に近い位置で非対象オブジェクトが重なっている対象オブジェクトの輪郭でも、該非対象オブジェクトが重なっていない部分であれば通常は輪郭線が描画される、或いは輪郭線の画像が合成されるが、そのような部分であっても所定の長さ以上連続して非対象オブジェクトと重なっていない部分でなければ、輪郭線が描画されない、或いは輪郭線の画像が合成されない。このため、特に透視変換された２次元画像における非対象オブジェクトの形状が複雑であって、対象オブジェクトの輪郭付近で非対象オブジェクトの複雑な形状の部分が重なっている場合であっても、最終的に生成される画像において極短い輪郭線が断続して表れて画面が汚らしくなるようなことがない。特に対象オブジェクトに施される輪郭線が太いときには、これによる効果がいっそう高まるものとなる。
【００１３】
なお、上記第１、第２の観点にかかる画像生成装置では、複数のオブジェクトを透視変換した２次元画像を第１のバッファに描画し、対象オブジェクトの輪郭線の画像を第１のバッファとは異なる第２のバッファに描画し、第１、第２のバッファに描画された画像を合成するものとすることができる。複数のオブジェクトの画像と輪郭線の画像とを合成した画像が書き込まれるバッファは、第１、第２のバッファの何れか一方を利用することも、第１、第２のバッファとは別の第３のバッファとすることもできる。複数のオブジェクトの画像と輪郭線の画像とを合成した画像が書き込まれたバッファから、これとは別に用意されたフレームバッファに画像を転送するものとしても、複数のオブジェクトの画像と輪郭線の画像とを合成した画像が書き込まれたバッファをそのままフレームバッファとして利用するものとしてもよい。
【００１４】
また、上記第１の観点にかかる画像生成装置では、複数のオブジェクトを透視変換した２次元画像をバッファに描画し、これと同じバッファに対象オブジェクトの輪郭線の画像を重ねて描画するものとすることができる。この場合、複数のオブジェクトの画像が描画されているバッファに対象オブジェクトの輪郭線の画像を重ねて描画することで、同時に複数のオブジェクトの画像と輪郭線の画像とを合成した画像が生成される。つまり、輪郭線描画手段と画像生成手段とは、同じ手段となる。
【００１５】
また、上記第１の観点にかかる画像生成装置において、前記輪郭検出手段により検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の部分に輪郭線を描画するとは、前記輪郭検出手段により検出された前記対象オブジェクトの輪郭の全体に輪郭線を描画した後に前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の部分に輪郭線を削除するものであってもよい。
【００１９】
上記第１、第２の観点にかかる画像生成装置において、前記２次元画像描画手段は、描画した複数のオブジェクトの２次元画像の画像データを、前記仮想カメラの視点の位置に近い方のオブジェクトの前記仮想カメラの設定に応じて定められる近距離クリップ面からの距離を示す深度データとともに２次元画像記憶手段に記憶させるものとすることができ、この場合において、前記重なり判定手段は、前記２次元画像記憶手段に記憶された前記対象オブジェクトの深度データと前記非対象オブジェクトの深度データとを比較して、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定することができる。
【００２０】
複数のオブジェクトを透視変換する場合、例えば、オブジェクト毎に順番に処理を行っていくが、異なるオブジェクトでは深度が異なることが多い。このため、深度データを調べることで、対象オブジェクトと非対象オブジェクトが重なり合っているかどうかが分かるものとなる。
【００２１】
また、この場合においては、前記輪郭検出手段は、前記２次元画像記憶手段に記憶された前記対象オブジェクトの深度データに基づいて、前記２次元画像描画手段により描画された２次元画像に含まれる対象オブジェクトの輪郭を検出するものとすることができる。
【００２２】
仮想３次元空間において複数の対象オブジェクトが存在する場合に、透視変換により生成された２次元画像において複数のオブジェクトが重なる境界を境として深度データが大きく変化することになる。このため、深度データに基づいて各対象オブジェクトの輪郭も検出することができるものとなる。また、深度データは、他の処理のためにも用いられることが多いデータであるので、データの有効活用ができる。
【００３３】
上記画像生成装置において、前記仮想３次元空間は、ビデオゲームのゲーム空間であってもよい。すなわち、上記画像生成装置は、ビデオゲームの画像を生成するものとすることができる。ここでは、前記ビデオゲームにおいて前記ゲーム空間内で動作するキャラクタを前記対象オブジェクトとすることができ、前記ゲーム空間に存在するキャラクタ以外のオブジェクトを前記非対象オブジェクトとすることができる。
【００３４】
この場合、ビデオゲームをプレイしているプレイヤは、ゲーム空間内に存在する各オブジェクトが、その輪郭に輪郭線が付されているものであるかどうかに応じてキャラクタであるかキャラクタ以外のオブジェクトであるかを容易に判別することができる。特に透視変換される範囲に全体的な形状だけではキャラクタであるかどうかの見分けが付かないオブジェクトが存在するときには、輪郭線の有無でキャラクタであるかどうかが容易に見分けが付くので、より高い効果を得ることができる。
【００３５】
また、前記仮想３次元空間がビデオゲームのゲーム空間である場合には、前記輪郭線描画手段が、前記ゲームの進行状況が所定の状況にあるときに、前記対象オブジェクトの輪郭線を描画しないものとすることもできる。
【００３６】
或いは、前記画像生成手段が、前記ゲームの進行状況が所定の状況にあるときに、前記輪郭線描画手段により描画された輪郭線を前記２次元画像描画手段により描画された２次元画像に合成しないものとすることもできる。
【００３７】
これらの場合には、本来は輪郭線の施される対象オブジェクトであっても、ゲームの進行状況が所定の状況にあるときには、その輪郭に輪郭線が施されない。このため、例えば、ゲームの進行状況によって対象オブジェクトも非対象オブジェクトと同様に扱う場合があるときが生じたときには、プレイヤは、その状況下において本来の設定通り対象オブジェクトとして扱われるオブジェクトを容易に判別することができる。
【００３８】
なお、対象オブジェクトの輪郭に輪郭線が描画されない、或いは輪郭線の画像が合成されない所定の状況とは、例えば、本来は、プレイヤキャラクタとしてプレイヤの操作に従って動作するオブジェクトがゲームの進行により生じたステータス異常によって一時的にプレイヤの操作に従って動作できないものとなっている状況等とすることができる。また、対象オブジェクトを目立たせてない方が臨場感の高まる場面（例えば、暗闇を探求している場面など）にあるとき等とすることができる。
【００３９】
上記目的を達成するため、本発明の第３の観点にかかる画像生成方法は、仮想３次元空間に存在する複数のオブジェクトのうちの対象オブジェクトに輪郭線を施し、該対象オブジェクトとは異なる非対象オブジェクトに輪郭線を施さないものとした画像を生成し、表示装置に表示させる画像生成方法であって、前記仮想３次元空間における前記仮想カメラの視点の位置と視軸の方向を所定の位置及び方向に設定し、該仮想カメラの設定に関する情報を前記記憶装置に記憶させるステップと、前記記憶装置に記憶された仮想カメラの設定に関する情報に従って、前記複数のオブジェクトを透視変換した２次元画像を描画して、前記記憶装置に書き込むステップと、前記透視変換により描画された２次元画像に含まれる対象オブジェクトの輪郭を検出し、該検出した輪郭に関する情報を前記記憶装置に記憶させるステップと、前記透視変換により描画されて前記記憶装置に書き込まれた２次元画像において、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定するステップと、前記輪郭検出手段による検出で情報が前記記憶装置に書き込まれた輪郭に輪郭線の画像を描画して、前記記憶装置に書き込むステップと、前記透視変換により描画されて前記記憶装置に書き込まれた前記複数のオブジェクトの２次元画像と、前記描画されて前記記憶装置に書き込まれた輪郭線の画像とを合成した画像を生成して、前記表示装置に表示させるステップとを含み、前記輪郭線を描画するステップは、前記非対象オブジェクトが一切重なっていないと判定された場合に、前記検出された前記対象オブジェクトの輪郭の全体に輪郭線を描画するステップと、前記非対象オブジェクトが部分的に重なっていると判定された場合に、前記検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の非重なり部分に輪郭線を描画するステップとを含み、前記非重なり部分に輪郭線を描画するステップは、前記非重なり部分が所定の長さ以上連続していることを条件に、輪郭線を描画することを特徴とする。
【００４０】
上記目的を達成するため、本発明の第４の観点にかかる画像生成方法は、仮想３次元空間に存在する複数のオブジェクトのうちの対象オブジェクトに輪郭線を施し、該対象オブジェクトとは異なる非対象オブジェクトに輪郭線を施さないものとした画像を生成し、表示装置に表示させる画像生成方法であって、前記仮想３次元空間における前記仮想カメラの視点の位置と視軸の方向を所定の位置及び方向に設定し、該仮想カメラの設定に関する情報を前記記憶装置に記憶させるステップと、前記記憶装置に記憶された仮想カメラの設定に関する情報に従って、前記複数のオブジェクトを透視変換した２次元画像を描画して、前記記憶装置に書き込むステップと、前記透視変換により描画された２次元画像に含まれる対象オブジェクトの輪郭を検出し、該検出した輪郭に関する情報を前記記憶装置に記憶させるステップと、前記透視変換により描画されて前記記憶装置に書き込まれた２次元画像において、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定するステップと、前記輪郭検出手段による検出で情報が前記記憶装置に書き込まれた輪郭に輪郭線の画像を描画して、前記記憶装置に書き込むステップと、前記透視変換により描画されて前記記憶装置に書き込まれた前記複数のオブジェクトの２次元画像と、前記描画されて前記記憶装置に書き込まれた輪郭線の画像とを合成した画像を生成して、前記表示装置に表示させるステップとを含み、前記複数のオブジェクトの画像と前記輪郭線の画像とを合成した画像を生成するステップは、前記非対象オブジェクトが部分的に重なっていると判定された場合に、前記検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の非重なり部分の輪郭線の画像を合成するステップを含み、前記非重なり部分の輪郭線の画像を合成するステップは、前記非重なり部分が所定の長さ以上連続していることを条件に、輪郭線を合成することを特徴とする。
【００４１】
なお、上記第３、第４の観点にかかる画像生成方法では、複数のオブジェクトを透視変換した２次元画像が書き込まれるバッファと対象オブジェクトの輪郭線の画像が書き込まれるバッファとを前記記憶装置において別々に用意し、各バッファに描画された画像を合成するものとすることができる。複数のオブジェクトの画像と輪郭線の画像とを合成した画像は、そのままフレームバッファに書き込むものとしても、フレームバッファとは別のバッファ（透視変換した２次元画像が書き込まれるバッファと輪郭線の画像が書き込まれるバッファの何れか一方を利用してもよい）に書き込んから、フレームバッファに転送することもできる。透視変換した２次元画像が書き込まれるバッファと輪郭線の画像が書き込まれるバッファの何れか一方に、透視変換した２次元画像と輪郭線の画像とを合成した画像を書き込んで、これをそのままフレームバッファとして利用することもできる。次に示す第５、第６の観点にかかるプログラムでも同じである。
【００４２】
また、上記第３の観点にかかる画像生成方法では、複数のオブジェクトを透視変換した２次元画像が書き込まれるバッファと対象オブジェクトの輪郭線が書き込まれるバッファとは、共通のバッファとして前記記憶装置に用意したものであってもよい。この場合、例えば、複数のオブジェクトを透視変換した２次元画像が書き込まれているバッファに、さらに対象オブジェクトの輪郭線の画像を重ねて書き込むが、対象オブジェクトの輪郭線の画像を書き込むことで、同時に複数のオブジェクトの画像と輪郭線の画像とを合成した画像が生成される。つまり、輪郭線の画像を描画して記憶装置に書き込むステップと、複数のオブジェクトと輪郭線の画像とを合成した画像を生成するステップは、同じステップになる。また、この場合に用いられるバッファは、そのままフレームバッファとして用いることができる。次に示す第５の観点にかかるプログラムでも同じである。
【００４３】
上記目的を達成するため、本発明の第５の観点にかかるプログラムは、仮想３次元空間に存在する複数のオブジェクトのうちの対象オブジェクトに輪郭線を施し、該対象オブジェクトとは異なる非対象オブジェクトに輪郭線を施さないものとした画像を生成し、表示装置に表示させるための処理をコンピュータ装置に実行させるプログラムであって、前記仮想３次元空間における前記仮想カメラの視点の位置と視軸の方向を所定の位置及び方向に設定し、該仮想カメラの設定に関する情報を前記コンピュータ装置が備える記憶装置に記憶させるステップと、前記記憶装置に記憶された仮想カメラの設定に関する情報に従って、前記複数のオブジェクトを透視変換した２次元画像を描画して、前記記憶装置に書き込むステップと、前記透視変換により描画された２次元画像に含まれる対象オブジェクトの輪郭を検出し、該検出した輪郭に関する情報を前記記憶装置に記憶させるステップと、前記透視変換により描画されて前記記憶装置に書き込まれた２次元画像において、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定するステップと、前記輪郭検出手段による検出で情報が前記記憶装置に書き込まれた輪郭に輪郭線の画像を描画して、前記記憶装置に書き込むステップと、前記透視変換により描画されて前記記憶装置に書き込まれた前記複数のオブジェクトの２次元画像と、前記描画されて前記記憶装置に書き込まれた輪郭線の画像とを合成した画像を生成して、前記表示装置に表示させるステップとを前記コンピュータ装置に実行させ、前記輪郭線を描画するステップは、前記非対象オブジェクトが一切重なっていないと判定された場合に、前記検出された前記対象オブジェクトの輪郭の全体に輪郭線を描画するステップと、前記非対象オブジェクトが部分的に重なっていると判定された場合に、前記検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の非重なり部分に輪郭線を描画するステップとを含み、前記非重なり部分に輪郭線を描画するステップは、前記非重なり部分が所定の長さ以上連続していることを条件に、輪郭線を描画することを特徴とする。
【００４４】
上記目的を達成するため、本発明の第６の観点にかかるプログラムは、仮想３次元空間に存在する複数のオブジェクトのうちの対象オブジェクトに輪郭線を施し、該対象オブジェクトとは異なる非対象オブジェクトに輪郭線を施さないものとした画像を生成し、表示装置に表示させるための処理をコンピュータ装置に実行させるプログラムであって、前記仮想３次元空間における前記仮想カメラの視点の位置と視軸の方向を所定の位置及び方向に設定し、該仮想カメラの設定に関する情報を前記コンピュータ装置が備える記憶装置に記憶させるステップと、前記記憶装置に記憶された仮想カメラの設定に関する情報に従って、前記複数のオブジェクトを透視変換した２次元画像を描画して、前記記憶装置に書き込むステップと、前記透視変換により描画された２次元画像に含まれる対象オブジェクトの輪郭を検出し、該検出した輪郭に関する情報を前記記憶装置に記憶させるステップと、前記透視変換により描画されて前記記憶装置に書き込まれた２次元画像において、前記対象オブジェクトよりも前記仮想カメラの視点に近い位置で前記非対象オブジェクトが重なっているかどうかを判定するステップと、前記輪郭検出手段による検出で情報が前記記憶装置に書き込まれた輪郭に輪郭線の画像を描画して、前記記憶装置に書き込むステップと、前記透視変換により描画されて前記記憶装置に書き込まれた前記複数のオブジェクトの２次元画像と、前記描画されて前記記憶装置に書き込まれた輪郭線の画像とを合成した画像を生成して、前記表示装置に表示させるステップとを前記コンピュータ装置に実行させ、前記複数のオブジェクトの画像と前記輪郭線の画像とを合成した画像を生成するステップは、前記非対象オブジェクトが部分的に重なっていると判定された場合に、前記検出された前記対象オブジェクトの輪郭のうちで該重なっていると判定された部分以外の非重なり部分の輪郭線の画像を合成するステップを含み、前記非重なり部分の輪郭線の画像を合成するステップは、前記非重なり部分が所定の長さ以上連続していることを条件に、輪郭線を合成することを特徴とする。
【００４５】
上記第５、第６の観点にかかるプログラムは、コンピュータ読み取り可能な記録媒体に記録して提供することができる。このコンピュータ読み取り可能な記録媒体は、上記コンピュータ装置に着脱可能に構成され、上記コンピュータ装置とは別個に提供される記録媒体としてもよい。このコンピュータ読み取り可能な記録媒体は、上記コンピュータ装置内に設けられ、上記コンピュータ装置と共に提供される固定ディスク装置などの記録媒体としてもよい。上記第５、第６の観点にかかるプログラムは、ネットワーク上に存在するサーバ装置から、そのデータ信号を搬送波に重畳して、ネットワークを通じて上記コンピュータ装置に配信することもできる。
【発明を実施するための最良の形態】
【００４６】
以下、添付図面を参照して、本発明の実施の形態について説明する。ここでは、本発明をビデオゲームにおける画像の生成に適用した場合を例として説明する。
【００４７】
図１は、この実施の形態に適用されるビデオゲーム装置の構成を示すブロック図である。図示するように、ビデオゲーム装置１００は、装置本体１０１を中心として構築される。この装置本体１０１は、その内部バス１１９に接続された制御部１０３、ＲＡＭ（Random Access Memory）１０５、ハードディスク・ドライブ（ＨＤＤ）１０７、サウンド処理部１０９、グラフィック処理部１１１、ＤＶＤ／ＣＤ−ＲＯＭドライブ１１３、通信インターフェイス１１５、及びインターフェイス部１１７を含む。
【００４８】
この装置本体１０１のサウンド処理部１０９は、スピーカーであるサウンド出力装置１２５に、グラフィック処理部１１１は、表示画面１２２を有する表示装置１２１に接続されている。ＤＶＤ／ＣＤ−ＲＯＭドライブ１１３には、記録媒体（本実施の形態では、ＤＶＤ−ＲＯＭまたはＣＤ−ＲＯＭ）１３１を装着し得る。通信インターフェイス１１５は、ネットワーク１５１に接続される。インターフェイス部１１７には、入力部（コントローラ）１６１とメモリーカード１６２とが接続されている。
【００４９】
制御部１０３は、ＣＰＵ（Central Processing Unit）やＲＯＭ（Read Only Memory）などを含み、ＨＤＤ１０７や記録媒体１３１上に格納されたプログラムを実行し、装置本体１０１の制御を行う。制御部１０３は、内部タイマを備えている。ＲＡＭ１０５は、制御部１０３のワークエリアである。ＨＤＤ１０７は、プログラムやデータを保存するための記憶領域である。サウンド処理部１０９は、制御部１０３により実行されているプログラムがサウンド出力を行うよう指示している場合に、その指示を解釈して、サウンド出力装置１２５にサウンド信号を出力する。
【００５０】
グラフィック処理部１１１は、制御部１０３から出力される描画命令に従って、フレームバッファ（フレームメモリ）１１２（図では、グラフィック処理部１１１の外側に描かれているが、グラフィック処理部１１１を構成するチップに含まれるＲＡＭ内に設けられる）に画像データを展開し、表示装置１２１の表示画面１２２上に画像を表示するビデオ信号を出力する。グラフィック処理部１１１から出力されるビデオ信号に含まれる画像の１フレーム時間は、例えば６０分の１秒である。
【００５１】
グラフィック処理部１１１は、仮想３次元空間に存在する複数のオブジェクト（後述するトゥーンオブジェクト及びノントゥーンオブジェクト）を仮想カメラにより透視変換した２次元画像の画像データを後述する処理バッファ１６３のうちの１つ（画像データ用処理バッファ１６３ａ）に展開する。グラフィック処理部１１１は、透視変換された画像データに含まれるオブジェクトのうちのトゥーンオブジェクトに対して輪郭線を描画し、この画像データを処理バッファ１６３のうちの別の１つ（輪郭線データ用処理バッファ１６３ｃ）に展開する。グラフィック処理部１１１は、輪郭線を描画する際に、後述する処理バッファ１６３に書き込まれたデータを画素（ピクセル）単位で処理するだけの処理能力を有している。なお、処理バッファ１６３の構成については、詳細を後述する。
【００５２】
ＤＶＤ／ＣＤ−ＲＯＭドライブ１１３は、記録媒体１３１に対しプログラム及びデータの読み出しを行う。通信インターフェイス１１５は、ネットワーク１５１に接続され、他のコンピュータとの通信を行う。入力部１６１は、方向キー及び複数の操作ボタンを備え、方向キーの操作により後述するプレイヤキャラクタを移動させ、操作ボタンの操作により所定の処理を行わせるものである。操作ボタンは、所定の指示を入力するために用いられる。
【００５３】
インターフェイス部１１７は、入力部１６１からの入力データをＲＡＭ１０５に出力し、制御部１０３がそれを解釈して演算処理を実施する。インターフェイス部１１７は、また、制御部１０３からの指示に基づいて、ＲＡＭ１０５に記憶されているゲームの進行状況を示すデータをメモリーカード１６２に保存させ、メモリーカード１６２に保存されている中断時のゲームのデータを読み出して、ＲＡＭ１０５に転送する。
【００５４】
ビデオゲーム装置１００でゲームを行うためのプログラム及びデータは、最初例えば記録媒体１３１に記憶されている。記録媒体１３１に記憶されているデータとしては、ゲーム空間（仮想３次元空間）に存在するオブジェクトを構成するためのグラフィックデータを含んでいる。記録媒体１３１に記憶されたプログラム及びデータは、実行時にＤＶＤ／ＣＤ−ＲＯＭドライブ１１３により読み出されて、ＲＡＭ１０５にロードされる。制御部１０３は、ＲＡＭ１０５にロードされたプログラム及びデータを処理し、描画命令をグラフィック処理部１１１に出力し、サウンド出力の指示をサウンド処理部１０９に出力する。制御部１０３が処理を行っている間の中間的なデータは、ＲＡＭ１０５に記憶される。
【００５５】
この実施の形態にかかるビデオゲームでは、ゲーム空間となる仮想３次元空間に複数の３次元オブジェクトが存在し、これらのオブジェクトを仮想カメラにより透視変換した画像がゲームの画像として表示装置１２１の表示画面１２２に表示される。仮想３次元空間に存在するオブジェクトには、プレイヤの操作に従って動作するプレイヤキャラクタ及びプレイヤキャラクタ以外のノンプレイヤキャラクタを含む複数のキャラクタと、例えば、地形、建物、草木などの固定物のようなキャラクタ以外のオブジェクトとが含まれる。各オブジェクトは、１以上のポリゴンによって構成される。
【００５６】
これらのオブジェクトのうちで、キャラクタには、ゲームの進行状況に応じて変化されるパラメータや、ゲームの進行状況に応じて変化する状態（ステータス）が設定されているものがある。プレイヤキャラクタは、複数存在するが、何れもパラメータやステータスが設定されているキャラクタとなっており、パラメータとしては体力値を示すＨＰ（これが０になると行動不能となる）が、ステータスには、正常／異常の状態があり、ステータス異常の状態にはプレイヤキャラクタが通常有する攻撃力や防御力を有しなくなっているような通常のステータス異常と、一時的に行動不能となっているような特殊なステータス異常とがある。
【００５７】
また、これらのオブジェクトのうちで、各キャラクタは、その輪郭に輪郭線が施されるトゥーンオブジェクトであり、キャラクタ以外のオブジェクトは、その輪郭に輪郭線が施されないノントゥーンオブジェクトである。なお、この実施の形態にかかるビデオゲームにおける各キャラクタは、説明を簡単にするため、キャラクタ単位で１つのオブジェクトとして扱われるものとする（一般的にビデオゲームとしては、キャラクタの部位毎に異なるオブジェクトとして扱うことも可能である）。
【００５８】
また、ここでは説明を簡単にするため、トゥーンオブジェクトとなるオブジェクトはキャラクタだけであり、全てのキャラクタがトゥーンオブジェクトであるものとする。従って、以下の説明で“キャラクタ”と言う場合と“トゥーンオブジェクト”と言う場合とがあるが、何れも同じ対象を指すものである。もっとも、ゲームの進行を主体として説明する場合は、主に“キャラクタ”と呼び、画像の生成を主体として説明する場合は、主に“トゥーンオブジェクト”と呼ぶこととする。
【００５９】
まず、仮想３次元空間に存在する各オブジェクトの透視変換の手法について説明する。トゥーンオブジェクトには透視変換の後に輪郭線が施されるものとなることを除いて、透視変換の手法そのものは、トゥーンオブジェクトとノントゥーンオブジェクトとで変わりがない。透視変換は、仮想３次元空間の所定の位置で所定の方向に向けて設定された仮想カメラにより、仮想３次元空間に存在する各オブジェクトを仮想スクリーン上に投影することにより行われる。
【００６０】
図２（ａ）は、仮想カメラにより、仮想３次元空間を透視変換する様子を模式的に示す。仮想３次元空間内に仮想カメラ３０１が置かれ、仮想スクリーン（近距離クリップ面）３０２上に投影された画像が表示装置１２１の表示画面１２２に表示される画像となる。この仮想カメラ３０１の位置が視点３０３、仮想カメラ３０１の向きが視軸３０４、視点３０３と仮想スクリーン３０２の頂点の四隅を結んだ４本の直線が作る領域が視界３０５となる。また、視点３０３から視軸３０４の方向の所定距離に後方クリップ面３０６が定められ、クリッピング範囲、すなわち仮想３次元空間において透視変換により画像が生成される範囲は、視界３０５の範囲内において前方クリップ面３０２から後方クリップ面３０６までの範囲となる。
【００６１】
このように、各オブジェクトが存在する仮想３次元空間における座標系は、ワールド座標系により表されるが、透視変換の処理によって視点座標系の座標に変換され、さらにスクリーン座標系（仮想スクリーン３０２上における座標系）の座標に変換される。透視変換により仮想スクリーン３０２上に投影した画像を生成する場合には、前面に他の物体があって隠されてしまう面を消去する隠面消去を行う必要がある。隠面消去を行う場合に、仮想スクリーン３０２からの深度に応じた深度データが用いられる。
【００６２】
透視変換を行う前提として、仮想カメラ３０１の視点３０３の位置、視軸３０４の方向、視点３０３から前方クリップ面３０２までの距離及び後方クリップ面３０６までの距離が決まっている必要がある（これらが決まると、視界３０５の広さは必然的に決まる）。もっとも、この実施の形態にかかるビデオゲームでは、視点３０３から前方クリップ面３０２及び後方クリップ面３０６までの距離は、固定化されており、透視変換の処理に先立って決める必要があるのは、視点３０３の位置及び視軸３０４の方向だけである。
【００６３】
視点３０３の位置及び視軸３０４の方向は、ゲームの進行状況に応じて設定されるが、これらを設定する手法は、従来より３次元ビデオゲームで適用されてきた各種手法を適用すればよい。また、仮想３次元空間に存在するオブジェクトを透視変換するためには、光源の位置も問題となるが、説明を簡単にするため、所定の光量の光源が視点３０３の位置に置かれているものとし、透視変換をする際に、オブジェクトの陰が映り込むことはないものとする。
【００６４】
なお、各オブジェクトには、そのほぼ重心位置が基準点として設定されており、各オブジェクトを単位として仮想３次元空間における位置を判断するときには、この基準点の位置が用いられる。もっとも、透視変換された後の画像データでは、仮想３次元空間における位置（特に深度）は画素単位で判断される。また、各オブジェクトは、仮想３次元空間において一定の形態を有しており、その表面の法線データも画素単位で判断される。
【００６５】
図２（ｂ）は、透視変換により仮想スクリーン３０２上に投影された後、輪郭線の施されたトゥーンオブジェクトの例を示す図である。トゥーンオブジェクト２００は、トゥーンオブジェクト本体２０１の輪郭に輪郭線２０２が施される。トゥーンオブジェクト本体２０１の色は、トゥーンオブジェクト毎に異なる場合があるが、輪郭線２０２は、それぞれのトゥーンオブジェクト本体２０１とは異系色で描画される。
【００６６】
また、輪郭線２０２の太さ（線幅）は、後述するように、予め定められた基準幅に基づいて、当該トゥーンオブジェクト２０１の視点３０３からの距離やゲームの進行状況に応じて定められる係数に応じた演算で算出される。つまり、同じトゥーンオブジェクトでも輪郭線２０２の線幅が異なることがあり、クリッピング範囲に複数のトゥーンオブジェクトが存在する場合には、トゥーンオブジェクト毎に輪郭線の線幅が異なっている場合がある。なお、トゥーンオブジェクト本体２０１と輪郭線２０２では、外枠が同じであり、輪郭線２０２は、トゥーンオブジェクト本体２０１の領域をはみ出さないように施され、線幅が広くなると、輪郭線の部分は内側に広がっていく。
【００６７】
次に、この実施の形態にかかるビデオゲームにおいて、このような透視変換の処理を経て、表示装置１２１に表示画面１２２として表示されるゲーム画面の例について説明する。図３（ａ）は、ビデオゲームのゲーム画面の例を示す図であり、図３（ｂ）は、（ａ）の画面での各オブジェクトの仮想空間内における配置を示す図である。図３（ａ）のゲーム画面では、説明を簡略化するためにトゥーンオブジェクト２１１〜２１３を円形や四角形の単純な形状で表しているが、実際には、ゲームに登場する各キャラクタの形態となる。
【００６８】
図３（ｂ）に示すように、仮想３次元空間のクリッピング範囲（図の台形の範囲）において、仮想スクリーン（近距離クリップ面）３０２に近い方から順に、すなわち、深度が小さい順に、ノントゥーンオブジェクト２５１、トゥーンオブジェクト２１２、トゥーンオブジェクト２１１、トゥーンオブジェクト２１３が存在している。（オブジェクトの位置関係によっては、全てこのようになるものではないが、ほとんどの場合は、仮想カメラ３０１の視点３０３の位置からの距離が短い方から並べても、深度で並べたのと同じ順番となる。また、トゥーンオブジェクト２１１とトゥーンオブジェクト２１３の仮想３次元空間における本来の大きさは同程度であるが、トゥーンオブジェクト２１２の仮想３次元空間における本来の大きさは、半分以下である。
【００６９】
もっとも、図３（ａ）に示すように、透視変換により生成されるゲーム画面においては、仮想スクリーン３０２からの遠近の影響で、トゥーンオブジェクト２１１とトゥーンオブジェクト２１３の大きさが同程度になり、トゥーンオブジェクト２１２の大きさは、これよりも大きくなる。また、トゥーンオブジェクト２１２の一部がトゥーンオブジェクト２１１の前面側に重なっており、さらに、ノントゥーンオブジェクト２５１の一部がトゥーンオブジェクト２１１、２１２の前面側に重なっている。
【００７０】
ここで、トゥーンオブジェクト２１１〜２１３には、何れもその輪郭に輪郭線が施されることとなるが、図３（ａ）に示すように、その輪郭のうちでもノントゥーンオブジェクト２５１と重なっている部分には輪郭線が施されないものとなっている。また、トゥーンオブジェクト２１１〜２１３には、個別に輪郭線の線幅が設定されるが、図３（ａ）に示すように、輪郭線の線幅の太いトゥーンオブジェクト２１１であっても、これより輪郭線の線幅の細いトゥーンオブジェクト２１２が前面側（仮想スクリーン３０２に近い側）に重なっている部分では、トゥーンオブジェクト２１２の輪郭線と同じ線幅で輪郭線が施されるものとなる。
【００７１】
次に、この実施の形態にかかるビデオゲームにおいて、ゲーム画面として表示する画像の画像データを生成するために用いられる処理バッファ１６３の構成について説明する。図４は、この実施の形態にかかるビデオゲームにおいて用いられる処理バッファ１６３の構成を示す図である。図示するように、処理バッファ１６３は、図４（ａ）に示す画像データ用処理バッファ１６３ａと、図４（ｂ）に示す法線データ用処理バッファ１６３ｂと、図４（ｃ）に示す輪郭線データ用処理バッファ１６３ｃとを含む。
【００７２】
グラフィック処理部１１１は、あるフレーム期間においては前のフレーム期間で描画した画像データに応じて画像を表示装置１２１の表示画面１２２として表示させるとともに、新たな画像データを描画する必要があるので、処理バッファ１６３としては、画像データ用処理バッファ１６３ａ、法線データ用処理バッファ１６３ｂ及び輪郭線データ用処理バッファ１６３ｃをセットとしたものが用意され、これらの処理バッファ１６３に描画された画像を表示画面１２２に表示させるための最終的な表示状態に合成して描画するフレームバッファ１１２が用意されている。
【００７３】
画像データ用処理バッファ１６３ａは、仮想３次元空間に存在する各トゥーンオブジェクト及び各ノントゥーンオブジェクトを仮想スクリーン３０２に透視変換した２次元画像の画像データを、画素毎に書き込むための処理バッファである。画像データ用処理バッファ１６３ａには、画素毎にＲＧＢそれぞれの色成分の画像データと、書き込まれた画像データの各画素における仮想３次元空間の深度を示す深度データとが書き込まれる。ここに書き込まれた深度データは、トゥーンオブジェクトの輪郭線を検出するためと、オブジェクト同士が重なり合っているかどうかを判定するために用いられる。
【００７４】
法線データ用処理バッファ１６３ｂは、仮想３次元空間に存在する各トゥーンオブジェクト及び各ノントゥーンオブジェクトを仮想スクリーン３０２に透視変換した２次元画像の画像データの各画素におけるオブジェクトの法線方向を示す法線データが書き込まれる処理バッファである。法線データは、ワールド座標系のｘ成分、ｙ成分、ｚ成分のそれぞれについて書き込まれる。また、法線データ用処理バッファ１６３ｂには、後述する演算によって求められた輪郭線の線幅に関するデータ（線幅データ）が書き込まれる。線幅に関するデータとしては、後述する基準幅を書き込んでおいて、最終的な線幅については、新たな処理バッファを設けてそこで演算を行うようにしてもよい。
【００７５】
輪郭線データ用処理バッファ１６３ｃは、仮想３次元空間に存在するトゥーンオブジェクトを透視変換した２次元画像の画像データに従って検出された各トゥーンオブジェクトの輪郭線に施すべき輪郭線の画像データ（輪郭線データ）と、書き込まれた輪郭線データの各画素における仮想３次元空間の深度を示す深度データとが書き込まれる処理バッファである。トゥーンオブジェクト毎に輪郭線の色が異なるため、ＲＧＢそれぞれの色成分の輪郭線データが書き込まれる。
【００７６】
なお、輪郭線の深度データは、対応するトゥーンオブジェクトの深度データ（画像データ用処理バッファ１６３ａに書き込まれた深度データ）と基本的に同じものとなるが、ノントゥーンオブジェクトが前面側で重なると画像データ用処理バッファ１６３ａに書き込まれる深度データが前面側のノントゥーンオブジェクトのものに書き換えられるため、トゥーンオブジェクトの輪郭のうちで前面側にノントゥーンオブジェクトが重なっている部分を判断することができるものとなっている。
【００７７】
次に、各トゥーンオブジェクトに施すべき輪郭線の線幅の設定と、輪郭線の色について説明する。図５は、各トゥーンオブジェクトの輪郭線を描画する際に参照される輪郭線テーブルを示す図である。輪郭線テーブルは、ゲームに用いられる固定的なデータとして記録媒体１３１に記録されており、ゲーム開始時にＲＡＭ１０５に転送されて制御部１０３により参照されるものである。
【００７８】
図示するように、輪郭線データテーブル４００には、オブジェクトＩＤ４０１と、基準幅４０２と、線色４０３とが対応づけて登録されている。オブジェクトＩＤ４０１は、各トゥーンオブジェクトを一意に識別するための識別情報である。なお、各ノントゥーンオブジェクトにも、トゥーンオブジェクトと同様に、各々を一意に識別するためのオブジェクトＩＤが付されている。
【００７９】
基準幅４０２は、各トゥーンオブジェクトに施される輪郭線の線幅を算出する際に基準とされる幅である。基準幅４０２は、仮想カメラ３０１の視点３０３からの距離（または仮想スクリーン３０２からの距離）が所定の基準距離（Ｄｂ）であると仮定した場合に仮想スクリーン３０２上に投影される各トゥーンオブジェクトの基準サイズに応じて予め定められている。基準サイズが同じトゥーンオブジェクト同士では、基準幅４０２も同じになる。また、基準サイズが大きいトゥーンオブジェクトほど、基準幅４０２も大きくなるように設定されている。
【００８０】
各トゥーンオブジェクトの輪郭線の線幅（Ｗ）は、それぞれに予め設定された基準幅４０２Ｅｂ）と、仮想カメラ３０１の視点３０３の位置から各トゥーンオブジェクトの基準点までの距離（Ｄ）と、ゲームの進行状況に応じて定められる係数（ａ）とに従って、数式１に示す演算式の演算で算出される。
【００８１】
（数１）
Ｗ＝ＲＮＤＵＰ（ａ×Ｅｂ×Ｄｂ÷Ｄ）
ここで、係数ａの値は、ＨＰが０になることや特殊なステータス異常により行動不能となっているキャラクタを示すトゥーンオブジェクトについては“０”に、通常のステータス異常が生じているキャラクタを示すトゥーンオブジェクトについては“０．７”に、それ以外のトゥーンオブジェクト（当初からＨＰやステータスの設定がないキャラクタを含む）については“１”に設定される。また、ＲＮＤＵＰ、小数点以下を切り上げて整数化することを示す関数である。
【００８２】
各トゥーンオブジェクトの輪郭線の線幅は、上記のように算出されるため、同じトゥーンオブジェクトであっても、仮想カメラ３０１の視点３０３からの距離（Ｄ）が基準距離（Ｄｂ）よりも大きく（すなわち、透視変換により生成される画像でのサイズが基準サイズより小さく）なれば基準幅４０２より小さくなることがあり、仮想カメラ３０１の視点３０３からの距離（Ｄ）が基準距離（Ｄｂ）よりも小さく（すなわち、透視変換により生成される画像でのサイズが基準サイズより大きく）なれば基準幅４０２より大きくなることがある。
【００８３】
また、線色４０３は、各トゥーンオブジェクトに施される輪郭線の色を示すもので、図では色そのものを示しているが、実際には当該色のＲＧＢ成分のデータで記憶されている。線色４０３は、対応するトゥーンオブジェクト本体の色とは異系色の色に設定され、例えば、本体色が黄色のトゥーンオブジェクト０００１の輪郭線の線色４０３は黒となるが、本体色が濃いグレーであるトゥーンオブジェクト０００２や濃紺であるトゥーンオブジェクト０００３の輪郭線の線色は赤となる。
【００８４】
次に、この実施の形態にかかるビデオゲームにおいて、各フレーム期間においてゲーム画面として表示装置１２１の表示画面１２２に表示される画像の画像データを生成するための手順を説明する。図６（ａ）〜（ｄ）は、各フレーム期間においてゲーム画面として表示される画像の画像データを生成するための手順を模式的に示す図である。この手順の処理を行う前提として、仮想カメラ３０１の視点３０３の位置及び視軸３０４の方向が決められ、クリッピング範囲が定まっているものとする。
【００８５】
まず、クリッピング範囲に含まれるオブジェクトのうちでトゥーンオブジェクトだけが透視変換される。これにより、図６（ａ）に示すように、クリッピング範囲に含まれるトゥーンオブジェクトのＲＧＢ成分毎の画像データと深度データとが画素毎に画像データ用処理バッファ１６３ａに書き込まれるとともに、当該トゥーンオブジェクトの法線データが画素毎に法線データ用処理バッファ１６３ｂに書き込まれる。また、上記した数式１に従ってトゥーンオブジェクト毎に算出された線幅を示す線幅データが法線データ用処理バッファ１６３ｂに書き込まれる。
【００８６】
次に、画像データ用処理バッファ１６３ａに書き込まれた深度データと、法線データ用処理バッファ１６３ｂに書き込まれた法線データ及び線幅データとを参照して、クリッピング範囲に含まれるトゥーンオブジェクトの輪郭を抽出する。トゥーンオブジェクトの輪郭は、深度データおよび／または法線データが隣接する画素と大きく変化している部分を見つけ出し、このような部分がトゥーンオブジェクトの輪郭であるとして検出されるものである。複数のトゥーンオブジェクトが重なり合っている部分では、その境界において、各々のトゥーンオブジェクトの輪郭が検出されるものとなる。なお、このトゥーンオブジェクトの輪郭を検出する手法そのものは、従来のビデオゲームにおける手法と変わりがない。
【００８７】
クリッピング範囲に含まれるトゥーンオブジェクトの輪郭が検出されると、図６（ｂ）に示すように、法線データ用処理バッファ１６３ｂに記憶された線幅データが示す線幅で輪郭線が描画される。複数のトゥーンオブジェクトが重なり合っている部分では、必ずしも当該オブジェクトに設定された線幅の輪郭線とはならないが、これについての詳細は後述する。ここで、輪郭線のＲＧＢ成分毎の画像データと深度データとが画素毎に輪郭線データ用処理バッファ１６３ｃに書き込まれる。ここで書き込まれる深度データは、対応する画素について画像データ用処理バッファ１６３ａに書き込まれている深度データと同じものとなる。
【００８８】
次に、クリッピング範囲に含まれるオブジェクトのうちで、図６（ａ）の段階で透視変換されていなかったノントゥーンオブジェクトが透視変換される。これにより、図６（ｃ）に示すように、クリッピング範囲に含まれるノントゥーンオブジェクトのＲＧＢ成分毎の画像データと深度データとが画素毎に画像データ用処理バッファ１６３ａに書き込まれる。ノントゥーンオブジェクトの画素毎の法線データは、法線データ用処理バッファ１６３ｂに書き込むものとしても、書き込まないものとしてもよい（これより後から法線データを処理に用いることはないので）。
【００８９】
また、既に透視変換されているトゥーンオブジェクトと新たに透視変換されたノントゥーンオブジェクトが重なり合う部分の各画素では、ノントゥーンオブジェクトの深度がトゥーンオブジェクトよりも大きければ画像データ及び深度データともに更新されないが、ノントゥーンオブジェクトの深度がトゥーンオブジェクトよりも小さければ画像データ及び深度データともに、ノントゥーンオブジェクトのものに更新されて画像データ用処理バッファ１６３ａに書き込まれる。
【００９０】
最後に、図６（ｄ）に示すように、輪郭線データ用処理バッファ１６３ｃに書き込まれている輪郭線データを、画像データ用処理バッファ１６３ａに書き込まれているトゥーンオブジェクト及びノントゥーンオブジェクトの画像データに合成し、フレームバッファ１１２に描画する。但し、深度データの異なっている画素では、輪郭線データ用処理バッファ１６３ｃに書き込まれている輪郭線データが合成されることはない。なお、最終的に合成された画像データは、フレームバッファ１１２に描画せずに、既に不要となっているデータが記憶されている法線データ用処理バッファ１６３ｂに書き込むようにしてもよい。
【００９１】
次に、トゥーンオブジェクトの輪郭線を描画する手順について説明する。クリッピング範囲に含まれる各トゥーンオブジェクトについては、上記したように予め設定された基準幅に応じて輪郭線の線幅が算出される。また、トゥーンオブジェクトを透視変換することにより画像データ用処理バッファ１６３ａに書き込まれた深度データと法線データ用処理バッファ１６３ｂに書き込まれた法線データ及び線幅データとに従って、透視変換された画像における各トゥーンオブジェクトの輪郭が検出される。ここで、各トゥーンオブジェクトについて算出された輪郭線の線幅に応じて輪郭線を描画するか否かの判断対象となる画素（輪郭の部分から線幅分内側以内に含まれる画素）が決まる。
【００９２】
図７は、トゥーンオブジェクトの輪郭線の線幅を決定する手順、特に複数のトゥーンオブジェクトが重なり合う場合における重なり部分の輪郭線の線幅を決定する手順を模式的に示す図である。この例では、輪郭線の線幅が３に設定されたトゥーンオブジェクトＡに対して、輪郭線の線幅が１に設定されたトゥーンオブジェクトＢが仮想スクリーン３０２に近い位置で重なっているものとする。
【００９３】
トゥーンオブジェクトＡにおいては、線幅が３に設定されているので、トゥーンオブジェクトＡの内部に含まれる各画素が順次輪郭とするか否かの処理対象となる対象ピクセルとされる。各対象ピクセルに対して３つ隣にあるピクセルが、全て輪郭とするか否かの判断に用いられる判定ピクセルとして設定される。判定ピクセルは、対象ピクセルの上下左右の４方向に対してそれぞれ１つずつ設定されるが、以下では、説明を簡単にするために、対象ピクセルの右方向に存在する判定ピクセルとの関係についてのみ言及する。また、輪郭とするかどうかの判断には、実際には深度データの他に法線データ用処理バッファ１６３ｂに書き込まれた法線データも用いているが、説明を簡単にするために、深度データについてのみ言及する。
【００９４】
図７（ａ）に○で示す画素を対象ピクセルとする場合、当該対象ピクセルが含まれるトゥーンオブジェクトに設定された線幅（ここでは、３画素）分だけシフトした画素（図７（ｂ）において□で示す）が判定ピクセルとなる。そして、対象ピクセルと判定ピクセルの深度データ及び線幅データを比較する。ここで、判定ピクセルの深度データの方が小さいと判定する（すなわち、次に示すような処理が続けて行われることとなる）のは、両者の深度データの間に輪郭とする程に大きな差がある場合（すなわち、差分が所定の閾値を越える場合）に限ってもよい。
【００９５】
対象ピクセルと判定ピクセルの深度データ及び線幅データを比較すると、判定ピクセルの方が深度データも線幅データも小さくなっているので、図７（ｃ）に示すように、対象ピクセルの輪郭線の線幅は、判定ピクセルの輪郭線の線幅である“１”に上書きされる。そこで、図７（ｄ）に示すように、今度は対象ピクセルから１画素分だけ離れた画素（図中、☆で示す）を新たな判定ピクセルとして、対象ピクセルと判定ピクセルの深度データを比較する。このとき、対象ピクセルの深度データが判定ピクセルの深度データよりも小さくないため、この対象ピクセルは輪郭線の描画される輪郭ピクセルとしないことが決定される。
【００９６】
同様に、図７（ｅ）に◎で示す各画素を判定ピクセルとする場合、図７（ｅ）に◇で示す画素を判定ピクセルとして、対象ピクセルと判定ピクセルの深度データ及び線幅データを比較する。このとき、判定ピクセルの方が深度データも線幅データも小さくなっているので、図７（ｆ）に示すように、対象ピクセルの線幅データが判定ピクセルの線幅データである“１”に上書きされる。そして、図７（ｇ）に示すように、対象ピクセルから１画素分だけ離れた画素（図中、★で示す）を新たな判定ピクセルとして、対象ピクセルと判定ピクセルの深度データを比較する。このとき、対象ピクセルの深度データが判定ピクセルの深度データよりも大きいため、対象ピクセルとなっている◎で示す画素が輪郭ピクセルである判断され、図７（ｈ）に示すように、トゥーンオブジェクトＡに設定された線色で輪郭線が描画されるものとなり、当該色に応じたＲＧＢ成分の輪郭線データが輪郭線データ用処理バッファ１６３ｃに書き込まれるものとなる。
【００９７】
トゥーンオブジェクトＢにおいても同様の処理が行われる。図７（ｉ）に◆で示す画素を対象ピクセルとすると、トゥーンオブジェクトＢは線幅が１に設定されているので、１画素分シフトした図７（ｅ）に◎で示した画素が判定ピクセルとなる。トゥーンオブジェクトＡの画素は、トゥーンオブジェクトＢに含まれる対象ピクセルよりも深度データが大きいので、図７（ｊ）に示すように、判定ピクセルをそのままとして対象ピクセルと判定ピクセルの深度データが比較され、比較の結果から対象ピクセルが輪郭線ピクセルとなって、輪郭線データが輪郭線データ用処理バッファ１６３ｃに書き込まれる。
【００９８】
以下、この実施の形態にかかるビデオゲームにおける処理について説明する。この実施の形態にかかるビデオゲームは、プレイヤがプレイヤキャラクタを操作することによりゲームにおいて設定されたイベントを順次クリアすることにより進められる。ゲームのシーンとしては、イベントシーンとバトルシーンとがあり、バトルシーンには、イベントシーンにおいて所定の状況が発生したときに切り替えられ、バトルシーンで行われるバトルにプレイヤキャラクタが勝利すると、元のイベントシーンに切り替えられる。
【００９９】
イベントシーンでは、プレイヤキャラクタが１体だけ登場し、プレイヤは、入力部１６１の方向キーを操作することで仮想３次元空間に形成されたイベントマップ上でプレイヤキャラクタを移動させながらゲームを進行していく。イベントマップには、この１体のプレイヤキャラクタ以外に複数のノンプレイヤキャラクタが登場し、プレイヤキャラクタをノンプレイヤキャラクタに近づけた状態でプレイヤが入力部１６１から所定の入力を行うことでプレイヤキャラクタがノンプレイヤキャラクタに話しかけるようにすると、ゲームにおける有用な情報が得られたりする。イベントシーンで登場するノンプレイヤキャラクタには、ＨＰなどのパラメータやステータスは設定されていない。
【０１００】
バトルシーンでは、イベントシーンに登場していたものを含む複数のプレイヤキャラクタが登場するとともに、当該複数のプレイヤキャラクタとバトルを行う敵キャラクタ（ノンプレイヤキャラクタ）が１体以上登場し、仮想３次元空間に形成されたバトルマップ上でバトルを行う。バトルシーンでは、複数のプレイヤキャラクタは所定の順番でアクティブ状態となり、プレイヤは、入力部１６１から所定の入力を行うことでアクティブとなっているプレイヤキャラクタに敵キャラクタへの攻撃などの動作を行わせることができる。また、敵キャラクタも順次アクティブになり、各プレイヤキャラクタに対して攻撃を行ってくる。
【０１０１】
プレイヤキャラクタ及び敵キャラクタの互いの攻撃で、敵キャラクタのＨＰまたはプレイヤキャラクタのＨＰが減少させられていき、ＨＰが０となったキャラクタは、行動不能となる。全ての敵キャラクタが行動不能になると、プレイヤキャラクタの勝利でバトルが終了し、プレイヤキャラクタが行動不能になると、ゲームオーバーとなる。バトルシーンで登場するプレイヤキャラクタ及び敵キャラクタには、何れもＨＰなどのパラメータやステータスが設定されていることとなる。イベントシーンでも登場するプレイヤキャラクタのＨＰは、イベントシーンに移行しても値が変わらない（すなわち、０となっていることもある）が、イベントシーンでは、ＨＰが０となっていることは無視される。
【０１０２】
このようにしてゲームが進行していく様子は、１フレーム期間毎にゲームの進行状況に応じて生成されるゲーム画面としてプレイヤに示される。図８は、この実施の形態にかかるビデオゲームにおいて、ゲーム画面として表示装置１２１の表示画面１２２に表示される画像の画像データを生成するために、１フレーム期間毎に行われる画像生成処理を示すフローチャートである。
【０１０３】
なお、以下の説明では全てのステップが、グラフィック処理部１１１が実行する処理として説明されているが、実際には制御部１０３が実行し、その処理結果がグラフィック処理部１１１に実行されている場合が含まれるものとする。この実施の形態にかかるビデオゲーム装置１００のようにマスター−スレーブ関係のあるマルチプロセッサシステムではなく、シングルプロセッサシステムであれば、図８、及び所定のステップの処理を詳細に記述する図９〜図１１のフローチャートに示すような手順で処理が行われるものであるため、全体的な処理の流れを分かり易くするために、このように記述しているものである。
【０１０４】
画像生成処理において、グラフィック処理部１１１は、まず、ゲームの進行状況に応じて、仮想カメラ３０１の視点３０３の位置及び視軸３０４の方向を設定する。視点３０３の位置及び視軸３０４の位置が決まると、自ずと近距離クリップ面（仮想スクリーン）３０２、後方クリップ面３０６及び視界３０５の範囲も決まるものとなり、仮想３次元空間のうちで透視変換される範囲であるクリッピング範囲が決まるものとなる（ステップＳ１０１）。なお、ここでの仮想カメラ３０１の設定は、従来のビデオゲームで行っていたように行うものとすればよい。
【０１０５】
次に、グラフィック処理部１１１は、クリッピング範囲に含まれるオブジェクトのうちの各トゥーンオブジェクトを透視変換し、各トゥーンオブジェクトのＲＧＢの各成分の画像データと深度データとを画素毎に画像データ用処理バッファ１６３ａに書き込むとともに、各トゥーンオブジェクトの法線データを画素毎に法線データ用処理バッファ１６３ｂに書き込む。ここで、複数のトゥーンオブジェクトが重なり合っている部分の画素については、深度が最も小さい（つまり、仮想スクリーン３０２に最も近い）トゥーンオブジェクトの画像データ及び深度データ、並びに法線データが書き込まれる（ステップＳ１０２）。なお、ゲームの進行上、少なくともプレイヤキャラクタはクリッピング範囲に含まれるので、トゥーンオブジェクトが全く透視変換されないということは生じない。
【０１０６】
次に、グラフィック処理部１１１は、詳細を後述する個別輪郭線幅算出処理を行って、クリッピング範囲に含まれる各トゥーンオブジェクトについての輪郭線の線幅を算出する。ここで算出されたトゥーンオブジェクト毎の輪郭線の線幅は、対応するトゥーンオブジェクト内の画素について画素毎に法線データ用処理バッファ１６３ｂに記憶される（ステップＳ１０３）。なお、算出されたトゥーンオブジェクト毎の線幅は、画素毎に記憶するのではなく、トゥーンオブジェクトと対応付けてＲＡＭ１０５（またはグラフィック処理部１１１に含まれるＲＡＭ）に記憶されるものであってもよい。この場合、ステップＳ１０２とステップＳ１０３の実行順は、逆順であってもよい。
【０１０７】
次に、グラフィック処理部１１１は、画像データ用処理バッファ１６３ａに書き込まれているトゥーンオブジェクトの画素毎の深度データと法線データ用処理バッファ１６３ｂに書き込まれているトゥーンオブジェクトの画素毎の法線データとに従って、トゥーンオブジェクト毎にその輪郭を検出する。各トゥーンオブジェクトの輪郭の検出は、従来のビデオゲームで行っていたように行うものとすればよい。ここで検出されたトゥーンオブジェクト毎の輪郭の位置に関する情報は、ＲＡＭ１０５（またはグラフィック処理部１１１に含まれるＲＡＭ）に一時記憶される（ステップＳ１０４）。
【０１０８】
次に、グラフィック処理部１１１は、詳細を後述する輪郭線描画処理を行って、クリッピング範囲に含まれる各トゥーンオブジェクトの輪郭線をトゥーンオブジェクト毎に設定された色及び線幅で描画し、輪郭線のＲＧＢの各成分の画像データ（輪郭線データ）と深度データとを画素毎に輪郭線データ用処理バッファ１６３ｃに書き込む。ここで書き込む画素毎の深度データは、画像データ用処理バッファ１６３ａに書き込まれている同じ画素の深度データと同じものとなる（ステップＳ１０５）。
【０１０９】
次に、グラフィック処理部１１１は、クリッピング範囲に含まれるオブジェクトのうちステップＳ１０２で透視変換されていなかったノントゥーンオブジェクトを透視変換し、各ノントゥーンオブジェクトのＲＧＢの各成分の画像データと深度データとを画素毎に画像データ用処理バッファ１６３ａに書き込む。ここで、既に透視変換されているトゥーンオブジェクトと重なり合う部分の画素については、トゥーンオブジェクトよりも深度が小さい（つまり、仮想スクリーン３０２に近い）のであればＲＧＢの各成分の画像データ及び深度データが改めて書き込まれるが、トゥーンオブジェクトよりも深度が大きい（つまり、仮想スクリーン３０２から遠い）のであれば画像データ及び深度データを書き込まない（ステップＳ１０６）。なお、クリッピング範囲にノントゥーンオブジェクトが全く存在しないことは生じ得るが、この場合には、ノントゥーンオブジェクトが透視変換されないまま、次のステップＳ１０７の処理に進むこととなる。
【０１１０】
さらに、グラフィック処理部１１１は、詳細を後述する画像合成処理を行って、輪郭線データ用処理バッファ１６３ｃに書き込まれている輪郭線データと、画像データ用処理バッファ１６３ａに書き込まれている画像データを合成した画像データをフレームバッファに描画する（ステップＳ１０７）。そして、今回のフレーム期間での画像生成処理が終了する。この画像生成処理で最終的にフレームバッファ１１２に書き込まれた画像データは、次のフレーム期間ではグラフィック処理部１１１により順次読み出され、ビデオ信号として表示装置１２１に出力されるものとなる。
【０１１１】
なお、画像データ用処理バッファ１６３ａに書き込まれている画像データと輪郭線データ用処理バッファ１６３ｃに書き込まれている画像データを合成した画像データは、既に不要となっているデータが記憶されている法線データ用処理バッファ１６３ｂに一旦記憶した後、フレームバッファ１１２に送るようにしてもよい。
【０１１２】
次に、ステップＳ１０３の個別輪郭線幅算出処理について、詳細に説明する。図９は、ステップＳ１０３の個別輪郭線幅算出処理を詳細に示すフローチャートである。個別輪郭線幅算出処理では、グラフィック処理部１１１は、クリッピング範囲に含まれる全てのトゥーンオブジェクトを順次処理対象として、ループ処理１を行う（ステップＳ２０１−Ｓ２０１’）。
【０１１３】
ループ処理１においては、グラフィック処理部１１１は、処理対象となっているトゥーンオブジェクトについて、輪郭線データテーブル４００に登録されている基準幅（Ｅｂ）４０２を読み出す（ステップＳ２０２）。次に、グラフィック処理部１１１は、処理対象となっているトゥーンオブジェクトの基準点の位置の仮想カメラ３０１の視点３０３の位置からの距離（Ｄ）を算出する（ステップＳ２０３）。
【０１１４】
その後、グラフィック処理部１１１は、処理対象となっているトゥーンオブジェクトに対応したキャラクタに設定されているパラメータとステータスを参照して、パラメータのうちのＨＰの値が０となっていたり特殊なステータス異常が生じているかどうかにより当該キャラクタが行動不能となっているかどうかを判定する（ステップＳ２０４）。当該キャラクタが行動不能となっていれば、グラフィック処理部１１１は、ゲームの進行状況に応じて定められる係数（ａ）に“０”をセットする（ステップＳ２０５）。そして、ステップＳ２０９の処理に進む。
【０１１５】
当該キャラクタが行動不能となっていなければ、グラフィック処理部１１１は、さらに当該キャラクタのステータスを参照して、通常のステータス異常が生じているかどうかを判定する（ステップＳ２０６）。当該キャラクタに通常のステータス異常が生じていれば、グラフィック処理部１１１は、ゲームの進行状況に応じて定められる係数（ａ）に“０．７”をセットする（ステップＳ２０７）。そして、ステップＳ２０９の処理に進む。
【０１１６】
当該キャラクタに通常のステータス異常も生じていなければ、グラフィック処理部１１１は、ゲームの進行状況に応じて定められる係数（ａ）に“１”をセットする。なお、イベントシーンに存在するノンプレイヤキャラクタにはＨＰなどのパラメータもステータスも設定されていないので、ステップＳ２０４とＳ２０６の判定結果は何れもＮＯとなって、これに対応するトゥーンオブジェクトについてのゲームの進行状況に応じて定められる係数（ａ）には“１”がセットされる。また、イベントシーンにあるときのプレイヤキャラクタも、仮にＨＰの値が０になっていても無視され、イベントシーンではステータス異常は起こらないのでこれに対応するトゥーンオブジェクトについてのゲームの進行状況に応じて定められる係数（ａ）には“１”がセットされる（ステップＳ２０８）。そして、ステップＳ２０９の処理に進む。
【０１１７】
ステップＳ２０９では、グラフィック処理部１１１は、数式２の演算を行って、当該トゥーンオブジェクトの施すべき輪郭線の線幅（Ｗ）を算出する。算出された線幅（Ｗ）は、当該トーンオブジェクトのオブジェクトＩＤ４０１に対応づけてＲＡＭ１０５（またはグラフィック処理部１１１に含まれるＲＡＭ）に記憶される。
【０１１８】
（数２）
Ｗ＝ＲＮＤＵＰ（ａ×Ｅｂ×Ｄｂ÷Ｄ）
ここで、ＲＮＤＵＰは、小数点以下を切り上げて整数化することを示す関数である。
【０１１９】
その後、グラフィック処理部１１１は、クリッピング範囲に含まれる全てのトゥーンオブジェクトをループ処理１での処理対象としたかどうかを判定し、全てのトゥーンオブジェクトを処理対象としていればループ処理１を抜ける。ループ処理１を抜けると、そのまま個別輪郭線幅算出処理を終了して、図８の画像生成処理に復帰するものとなる。
【０１２０】
次に、ステップＳ１０５の輪郭線描画処理について、詳細に説明する。図１０は、ステップＳ１０５の輪郭線描画処理を詳細に示すフローチャートである。輪郭線描画処理では、グラフィック処理部１１１は、透視変換された各トゥーンオブジェクトに含まれる画素を１ずつ対象ピクセルとして順次処理対象として、ループ処理２を行う（ステップＳ３０１−Ｓ３０１’）。
【０１２１】
ループ処理２においては、グラフィック処理部１１１は、処理対象となっている対象ピクセルの線幅データを法線データ用処理バッファ１６３ｂから取り出し、該線幅データが示す線幅分をシフトした位置にある画素を判定ピクセルとして特定する（ステップＳ３０２）。グラフィック処理部１１１は、ここで特定した判定ピクセルの深度データ対象ピクセルの深度データとを画像データ用処理バッファ１６３ａから取り出して、判定ピクセルの深度データが処理対象となっている対象ピクセルの深度データよりも小さいかどうかを判定する（ステップＳ３０３）。判定ピクセルの深度データが対象ピクセルの深度データよりも小さくなければ、そのままステップＳ３０７の処理に進む。
【０１２２】
判定ピクセルの深度データが対象ピクセルの深度データよりも小さければ、グラフィック処理部１１１は、さらに判定ピクセルの線幅データを法線データ用処理バッファ１６３ｂから取り出して、対象ピクセルの線幅データが判定ピクセルの線幅データよりも小さいかどうかを判定する（ステップＳ３０４）。対象ピクセルの線幅データが判定ピクセルの線幅データよりも小さくなければ、そのままステップＳ３０７の処理に進む。
【０１２３】
対象ピクセルの線幅データが判定ピクセルの線幅データよりも小さければ、グラフィック処理部１１１は、判定ピクセルに設定されている線幅データで対象ピクセルの線幅データを上書きする（ステップＳ３０５）。グラフィック処理部１１１は、新たに設定された線幅データが示す線幅分をシフトした位置にある画素を判定ピクセルとして特定する（ステップＳ３０６）。そして、ステップＳ３０７の処理に進む。
【０１２４】
ステップＳ３０７では、グラフィック処理部１１１は、判定ピクセルの深度データと、処理対象となっている対象ピクセルの深度データとを画像データ用処理バッファ１６３ｂから取り出して、両者の深度データを比較する。そして、対象ピクセルの深度データの方が判定ピクセルの深度データよりも小さいかどうかを判定する。
【０１２５】
対象ピクセルの深度データが判定ピクセルの深度データよりも小さいと判定された場合には、グラフィック処理部１１１は、処理対象としているトゥーンオブジェクトに設定された線色４０３を読み出し、この線色の輪郭線データを対象ピクセルについて輪郭線データ用処理バッファ１６３ｃに書き込むとともに、対象ピクセルについての深度データ（画像データ用処理バッファ１６３ａに書き込まれていたものと同じ深度データ）を輪郭線データ用処理バッファ１６３ｃに書き込む（ステップＳ３０８）。
【０１２６】
ステップＳ３０８で輪郭線データの書き込みを終了した後、或いは、ステップＳ３０７で処理対象としている対象ピクセルとなる画素が処理対象としているトゥーンオブジェクトの輪郭線にならない対象ピクセルの深度データが判定ピクセルの深度データよりも小さくないと判定されると、グラフィック処理部１１１は、そのまま全ての画素をループ処理２での処理対象としたかどうかを判定し、全ての画素を処理対象としていればループ処理２を抜ける。ループ処理２を抜けると、そのまま輪郭線描画処理を終了して、図８の画像生成処理に復帰するものとなる。
【０１２７】
次に、ステップＳ１０７の画像合成処理について、詳細に説明する。図１１は、ステップＳ１０７の画像合成処理を詳細に示すフローチャートである。画像合成処理では、グラフィック処理部１１１は、全ての画素を順次処理対象として、ループ処理３を行う（ステップＳ４０１−Ｓ４０１’）。
【０１２８】
ループ処理３では、グラフィック処理部１１１は、処理対象としている画素について輪郭線データ用処理バッファ１６３ｃに輪郭線データが書き込まれているかどうかを判定する（ステップＳ４０２）。輪郭線データが書き込まれていれば、グラフィック処理部１１１は、当該画素について輪郭線データ用処理バッファ１６３ｃに書き込まれている深度データが、同じ画素について画像データ用処理バッファ１６３ａに書き込まれている深度データ以下であるかどうかを判定する（ステップＳ４０３）。
【０１２９】
当該画素について輪郭線データ用処理バッファ１６３ｃに書き込まれている深度データが画像データ用処理バッファ１６３ａに書き込まれている深度データ以下でであれば、グラフィック処理部１１１は、当該画素について輪郭線データ用処理バッファ１６３ｃに書き込まれているＲＧＢの各成分の輪郭線データを、フレームバッファ１１２の同じ画素の画像データとして書き込む（ステップＳ４０４）。その後、グラフィック処理部１１１は、全ての画素をループ処理３での処理対象としたかどうかを判定し、全ての画素を処理対象としていればループ処理３を抜ける。
【０１３０】
また、処理対象としている画素について輪郭線データが書き込まれていなかった場合、或いは処理対象としている画素について輪郭線データ用処理バッファ１６３ｃに書き込まれている深度データと画像データ用処理バッファ１６３ａに書き込まれている深度データとが同じでなければ、グラフィック処理部１１１は、当該画素について画像データ用処理バッファ１６３ａに書き込まれているＲＧＢ各成分の画像データを、フレームバッファ１１２の同じ画素の画像データとして書き込む（ステップＳ４０５）。その後、グラフィック処理部１１１は、そのまま全ての画素をループ処理３での処理対象としたかどうかを判定し、全ての画素を処理対象としていればループ処理３を抜ける。
【０１３１】
そして、ループ処理３を抜けると、そのまま画像合成処理を終了して、図８の画像生成処理に復帰するものとなる。画像生成処理は、ステップＳ１０７の画像合成処理からの復帰によって、そのまま終了するものとなる。
【０１３２】
以下、この実施の形態にかかるビデオゲームにおいてゲーム画面として表示されるトゥーンオブジェクト及びノントゥーンオブジェクトの画像について、具体例を示して詳細に説明する。
【０１３３】
図１２（ａ）〜（ｄ）は、表示画面上に表示されるトゥーンオブジェクトと輪郭線の線幅の関係の具体例を示す図である。ここでは、図３で説明した３つのトゥーンオブジェクト２１１〜２１３の仮想カメラ３０１の視点３０３からの距離と、表示画面１２２上でトゥーンオブジェクト２１１〜２１３がそれぞれ表示されるサイズと、トゥーンオブジェクト２１１〜２１３に施される輪郭線の太さとの関係について説明する。ここでは、ゲームの進行状況に応じて定められる係数（ａ）により輪郭線の線幅が変えられる場合は考えないものとする。
【０１３４】
図１２（ａ）は、トゥーンオブジェクト２１１〜２１３が何れも視点３０３の位置から基準距離の位置にある場合において表示画面１２２に表示される状態を示している。トゥーンオブジェクト２１１と２１３は、仮想３次元空間における本来のサイズがほぼ同じであるので、仮想スクリーン３０２上に透視変換されて表示画面１２２に表示されるサイズもほぼ同じになる。これに対して、トゥーンオブジェクト２１２は、仮想３次元空間における本来のサイズがトゥーンオブジェクト２１１、２１３よりも小さいので、表示画面１２２に表示されるサイズも小さくなる。
【０１３５】
また、この場合には、トゥーンオブジェクト２１１〜２１３の輪郭線は、それぞれに対して設定された基準幅４０２で描画されるが、トゥーンオブジェクト２１１と２１３は基準サイズがほぼ同じであるので基準幅４０２も同じになり、表示画面１２２に表示される画像における輪郭線の線幅も同じになる。これに対して、トゥーンオブジェクト２１２は、基準サイズがトゥーンオブジェクト２１１、２１３よりも小さいので基準幅４０２も細くなり、表示画面１２２に表示される画像における輪郭線の線幅もトゥーンオブジェクト２１１、２１３に比べて細くなる。
【０１３６】
図１２（ｂ）は、図１２（ａ）に比べて、トーンオブジェクト２１２が視点３０３に近づいた場合において表示画面１２２に表示される状態を示している。ここでは、トゥーンオブジェクト２１２は、視点３０３に近づいたことにより表示画面１２２に表示されるサイズが大きくなり、トゥーンオブジェクト２１１、２１３とほぼ同じサイズになる。このとき、トゥーンオブジェクト２１２の輪郭線の線幅は、基準幅よりも太くなってトゥーンオブジェクト２１１、２１３の輪郭線の線幅と同等になっている。
【０１３７】
図１２（ｃ）は、図１２（ｂ）に比べて、トゥーンオブジェクト２１３が視点３０３から遠ざかった場合において表示画面１２２に表示される状態を示している。ここでは、トゥーンオブジェクト２１３は、視点３０３から遠ざかったことにより表示画面１２２に表示されるサイズが小さくなり、仮想３次元空間においてほとんど同じサイズのトゥーンオブジェクト２１１よりも小さくなる。このとき、トゥーンオブジェクト２１３の輪郭線の線幅は、基準幅よりも細くなって、トゥーンオブジェクト２１１の輪郭線の線幅よりも細くなる。また、基準幅は細く設定されているトゥーンオブジェクト２１２の輪郭線の線幅に比べても、細くなっている。
【０１３８】
図１２（ｄ）は、図１２（ａ）に比べて、トゥーンオブジェクト２１３が視点３０３に近づいた場合において表示画面１２２に表示される状態を示している。ここでは、トゥーンオブジェクト２１３は、視点３０３に近づいたことにより表示画面１２２に表示されるサイズが大きくなり、仮想３次元空間においてほとんど同じサイズのトゥーンオブジェクト２１１よりも大きくなる。このとき、トゥーンオブジェクト２１３の輪郭線の線幅は、基準幅よりも太くなって、トゥーンオブジェクト２１１の輪郭線の線幅よりも太くなる。
【０１３９】
図１３は、複数のトゥーンオブジェクトが重なり合う場合の具体例を示す図である。図１３（ａ）は、輪郭線の線幅が太いトゥーンオブジェクト２２１が輪郭線の線幅が細いトゥーンオブジェクト２２２よりも仮想スクリーン３０２に近い位置にある場合を示している。図１３（ｂ）は、輪郭線の線幅が太いトゥーンオブジェクト２２１が輪郭線の線幅が細いトゥーンオブジェクト２２２よりも仮想スクリーン３０２から遠い位置にある場合を示している。
【０１４０】
図１３（ａ）の例では、トゥーンオブジェクト２２１が仮想スクリーン３０２に近い方にあるので、トゥーンオブジェクト２２１の輪郭線は、その全体が本来の線幅で現れる。一方、仮想スクリーン３０２から遠い方にあるトゥーンオブジェクト２２２は、輪郭線の線幅がトゥーンオブジェクト２２１よりも細いものであるため、輪郭線の全体が本来の線幅で現れる。
【０１４１】
これに対して、図１３（ｂ）の例では、トゥーンオブジェクト２２２が仮想スクリーン３０２に近い方にあるので、トゥーンオブジェクト２２２の輪郭線は、その全体が本来の線幅で現れる。一方、仮想スクリーン３０２から遠い方にあるトゥーンオブジェクト２２１は、本来の輪郭線の線幅がトゥーンオブジェクト２２２よりも太い。トゥーンオブジェクト２２１の輪郭線は、トゥーンオブジェクト２２２と重なり合わない部分では本来の線幅で現れるが、トゥーンオブジェクト２２１と重なり合う部分では、仮想スクリーン３０２に近い方にあるトゥーンオブジェクト２２２の輪郭線の線幅と同じ線幅で現れるものとなる。
【０１４２】
なお、図１３（ａ）及び図１３（ｂ）で右側に拡大図で示すように、トゥーンオブジェクト２２１、２２２は、何れが仮想スクリーン３０２に近い位置で重なり合っているかに関係なく、その輪郭の全体に輪郭線が現れていることが分かる。
【０１４３】
図１４は、トゥーンオブジェクトとノントゥーンオブジェクトとが重なり合う場合の具体例を示す図である。図示するように、この例では、トゥーンオブジェクト２２３に対して、これよりも仮想スクリーン３０２に近い位置でノントゥーンオブジェクト２５２の一部が重なり、これよりも仮想スクリーン２０３から遠い位置でノントゥーンオブジェクト２５３の一部が重なっている。ノントゥーンオブジェクト２５２がトゥーンオブジェクト２２３に重なる部分と重ならない部分は複雑に入り組んでいる。
【０１４４】
図１４から分かるように、トゥーンオブジェクト２２３の輪郭線は、仮想スクリーン３０２に近い位置にあるノントゥーンオブジェクト２５２が重なっている部分では現れないものとなっている。一方、仮想スクリーン３０２から遠い位置でノントゥーンオブジェクト２５３が重なっている部分であっても、その部分ではトゥーンオブジェクト２２３の方が現れるので、トゥーンオブジェクト２２３の輪郭線も現れるものとなっている。
【０１４５】
以上説明したように、この実施の形態にかかるビデオゲームでは、ゲーム空間である仮想３次元空間内に存在するオブジェクトには、ゲーム画面として表示される画像において輪郭線の施されるトゥーンオブジェクトと輪郭線の施されないノントゥーンオブジェクトとが含まれている。トゥーンオブジェクトとされるオブジェクトは、プレイヤキャラクタ及びノンプレイヤキャラクタを含むキャラクタであり、ノントゥーンオブジェクトとされるオブジェクトは、キャラクタ以外のオブジェクトである。
【０１４６】
このようにキャラクタかキャラクタ以外のオブジェクトであるかに応じてトゥーンオブジェクトとノントゥーンオブジェクトとを区分することによって、プレイヤは、輪郭線の有無に応じて、ゲーム画面に表示されているオブジェクトの中からキャラクタを容易に判別することができる。特にクリッピング範囲において、全体的な形状だけではキャラクタであるかどうかの見分けが付かないオブジェクトが存在するときには、輪郭線の有無だけでキャラクタであるかどうかを容易に見分けられるので、より高い効果を得ることができる。
【０１４７】
また、各トゥーンオブジェクトに施される輪郭線の線色は、その本体の色に応じて該本体の色とは異系色の色に設定され、予め線色４０３として輪郭線データテーブル４００に登録されている。一方、輪郭線の線幅については、仮想カメラ３０１の視点３０３からの距離が所定の基準距離（Ｄｂ）であると仮定した場合に仮想スクリーン３０２上に投影される各トゥーンオブジェクトの基準サイズに応じて基準幅が設定され、予め基準幅４０２として輪郭線データテーブル４００に登録されている。基準幅４０２は、仮想３次元空間における各トゥーンオブジェクトの本来のサイズに応じたものとなる。
【０１４８】
また、輪郭線の施されるトゥーンオブジェクトを仮想カメラ３０１により仮想スクリーン３０２上に透視変換して２次元画像を生成した場合、生成された画像におけるトゥーンオブジェクトのサイズは、仮想スクリーン３０２から当該トゥーンオブジェクトまでの距離に応じて変化する。厳密にはこのようであるが、透視変換により生成された画像におけるトゥーンオブジェクトのサイズは、ほぼ仮想カメラ３０１の視点３０３から当該トゥーンオブジェクトまでの距離（Ｄ）に応じて変化すると言ってもよい。
【０１４９】
ここで、透視変換により生成されたトゥーンオブジェクトの画像において各トゥーンオブジェクトに施される輪郭線の線幅は、仮想３次元空間における各トゥーンオブジェクトの本来のサイズに応じた基準幅４０２がそのまま適用されるのではなく、基準幅（Ｅｂ）４０２に対して仮想カメラ３０１の視点３０３からの距離（Ｄ）に応じた演算を行って算出した線幅（Ｗ）が適用される。
【０１５０】
また、各トゥーンオブジェクトの輪郭線の線幅（Ｗ）を算出する演算では、基準幅（Ｅｂ）４０２を視点３０３からの距離（Ｄ）で除算するものであるため、トゥーンオブジェクトが視点３０３（仮想スクリーン３０２）に近づいてゲーム画面におけるサイズが大きくなると輪郭線の線幅が太くなるが、視点３０３（仮想スクリーン３０２）から遠ざかってゲーム画面におけるサイズが小さくなると輪郭線の線幅が細くなる。このように各トゥーンオブジェクトの画面上でのサイズに対して、適切な線幅の輪郭線が施されるようになる。また、仮想スクリーン３０２に近い位置にあるトゥーンオブジェクトを、より目立たせることができるものとなる。
【０１５１】
これによって、透視変換により生成された２次元画像において、トゥーンオブジェクトの輪郭線の線幅が当該画像におけるトゥーンオブジェクトのサイズに対して太すぎたり細すぎたりしてしまうことを防ぐことができるので、各トゥーンオブジェクトに対して自然な輪郭線を施すことができる。また、透視変換により生成された画像におけるトゥーンオブジェクトのサイズに応じて輪郭線の色や透明度を変化させている訳でもないので、トゥーンオブジェクトが仮想スクリーン３０２（或いは視点３０３）の位置から遠ざかるにつれて輪郭線がぼやけてしまうようなこともない。
【０１５２】
また、クリッピング範囲に複数のトゥーンオブジェクトが含まれる場合、各々のトゥーンオブジェクトに対して透視変化により生成された２次元画像におけるサイズに応じた線幅の輪郭線が施されることになる。これにより、仮想３次元空間における本来の大きさに関わらずに、画面表示された大きさに応じて各トゥーンオブジェクトに適切な線幅で輪郭線が施されるので、プレイヤがゲーム画面上で複数のトゥーンオブジェクトを見比べた場合でも、各々のトゥーンオブジェクトに施されている輪郭線の線幅を比べても違和感を覚えることがない。
【０１５３】
さらに、透視変換により生成された画像におけるトゥーンオブジェクトのサイズは、正確には仮想スクリーン３０２からの距離（すなわち、深度）に応じて変化するものではあるが、輪郭線の線幅（Ｗ）は、仮想カメラ３０１の視点３０３からの距離（Ｄ）に応じて変化させるものとしている。視点３０３から各トゥーンオブジェクトまでの距離は、各トゥーンオブジェクトの深度に比べて比較的容易な計算で算出することができるので、輪郭線の線幅も容易に算出できるものとなる。また、深度に応じた厳密な計算としなくても、実用上は問題のない程度に各トゥーンオブジェクトの輪郭線の線幅が算出されるものとなる。
【０１５４】
また、この実施の形態では、ゲーム空間に存在する各キャラクタがトゥーンオブジェクトに定められているが、そのようなキャラクタの中には、ゲームの進行状況に応じて値の変化するＨＰなどのパラメータや状態の変化するステータスが設定されているプレイヤキャラクタや敵キャラクタが含まれている。ここで、バトルシーンに登場するプレイヤキャラクタや敵キャラクタに対応したトゥーンオブジェクトの輪郭線の線幅は、視点３０３からの距離（Ｄ）に加えて、さらにゲームの進行状況に応じて定められる係数（ａ）によって変化させられる。
【０１５５】
ここで、係数（ａ）の値は、ＨＰの値が０になったり特殊なステータス異常が生じて対応するキャラクタが行動不能となっていたりする場合には“０”とされ、対応するキャラクタに通常のステータス異常が生じている場合には“０．７”とされている。つまり、対応するキャラクタが行動不能となっているトゥーンオブジェクトには輪郭線が描かれず、対応するキャラクタに通常のステータス異常が生じているトゥーンオブジェクトの輪郭線は、通常のステータス異常が生じていないときよりも細くなる。
【０１５６】
これに対して、一般にゲーム画面上において、輪郭線の施されるトゥーンオブジェクトは輪郭線の施されないノントゥーンオブジェクトよりも目立ち、同じサイズで表示されるトゥーンオブジェクト同士であれば施されている輪郭線の太いトゥーンオブジェクトの方が目立つこととなる。このように各トゥーンオブジェクトの輪郭線の線幅（Ｗ）を算出する演算において、ゲームの進行状況に応じて値が変化させられる係数（ａ）を乗算することによって、ゲームの進行上において特定のキャラクタが他のキャラクタに比べて目立ちにくいようにして、プレイヤがゲームを行い易いようにすることができる。
【０１５７】
また、対応するキャラクタが行動不能となって係数（ａ）の値が“０”に設定されたトゥーンオブジェクトでは、それ自体にはゲーム画面上において輪郭線が施されないものとなる。もっとも、そのようなキャラクタが現時点で行動することはないので、プレイヤは、輪郭線の施されているトゥーンオブジェクトが現時点で行動することのできるキャラクタであると容易に判別することができるものとなる。
【０１５８】
また、クリッピング範囲に複数のトゥーンオブジェクトが存在していると、透視変換により生成される画像において、異なるトゥーンオブジェクト同士が重なり合うことがある。ここで、仮想スクリーン３０２から遠い位置にあるトゥーンオブジェクトの方が輪郭線の線幅が太く、仮想スクリーン３０２から近い位置にあるトゥーンオブジェクトの方が輪郭線の線幅が細い場合、それぞれのトゥーンオブジェクトに本来設定された線幅で輪郭線を描いてしまうと、後側にあるトゥーンオブジェクトが本来の形状とは異なる形状で前面側に浮き上がってしまっているような印象を受ける画像が生成されてしまう場合がある。
【０１５９】
これに対して、この実施の形態にかかるビデオゲームでは、仮想スクリーン３０２から遠い位置にあるトゥーンオブジェクトの方が輪郭線の線幅が太く、仮想スクリーン３０２から近い位置にあるトゥーンオブジェクトの方が輪郭線の線幅が細い場合には、その重なり部分の輪郭において、仮想スクリーン３０２から遠い位置にあるトゥーンオブジェクトについても仮想スクリーン３０２から近い位置にあるトゥーンオブジェクトと同じ線幅で輪郭線を施すものとなっている。これにより、本来は仮想スクリーン３０２から遠くにあるトゥーンオブジェクトが本来の形状とは異なる形状で太いままの輪郭線が全体に施されて前面側に浮き上がっているような画像が生成されることがなく、自然な画像が生成されるものとなる。
【０１６０】
さらに、輪郭線自体は、仮想スクリーン３０２から近い位置にある他のトゥーンオブジェクトの輪郭線に合わせて線幅が変えられることはあるものの、トゥーンオブジェクト毎に描画されるものとなる。このため、奥側にあるトゥーンオブジェクトの輪郭がぼやけてしまうようなこともなく、ユーザが見て違和感を生じない自然な画像が生成されるものとなる。
【０１６１】
しかも、各トゥーンオブジェクトに含まれる画素を順次対象ピクセルとして、それぞれの対象ピクセルから当該トゥーンオブジェクトに設定された輪郭線の線幅分だけ離れた画素を判定ピクセルとし、また、判定ピクセルの方が深度が浅く（仮想スクリーン３０２に近い位置にある）、線幅が細い場合には対象ピクセルの線幅データを判定ピクセルに設定された線幅データで上書きするものとしている。対象ピクセルからここで上書きされた線幅データの分だけ離れた画素を新たな判定ピクセルとして、両者の深度データに違いが生じていれば、対象ピクセルを輪郭線ピクセルとして輪郭線データを書き込むものとしている。これにより、本来の線幅で輪郭線を描画すると生成される画像に違和感を生じさせてしまう部分を確実に探し出すことができる。
【０１６２】
また、各トゥーンオブジェクトの輪郭線の線色４０３は、それぞれの本体の色に応じて、本体の色とは異系色に設定されているが、複数のトゥーンオブジェクトが重なり合う部分の輪郭では、輪郭線の線幅が本来の線幅よりも細くなることはあるものの、何れのトゥーンオブジェクトに対しても輪郭線が描画される。このため、重なり合うトゥーンオブジェクトの一方の輪郭線の線色４０３が他方の本体の色に近くても、重なり合う部分に検出された輪郭が分かりにくくなってしまうことがない。
【０１６３】
また、プレイヤキャラクタはトゥーンオブジェクトとされているので、少なくとも１のトゥーンオブジェクトがクリッピング範囲に必ず存在することとなるが、このクリッピング範囲にノントゥーンオブジェクトも存在する場合もある。透視変換により生成された画像においてノントゥーンオブジェクトがトゥーンオブジェクトに重なっていなければ、トゥーンオブジェクトの輪郭全体に輪郭線が施されるので、プレイヤは、プレイヤキャラクタを含む各トゥーンオブジェクトの外形形状をハッキリと捉えることができる。
【０１６４】
一方、ノントゥーンオブジェクトも存在する場合には、透視変換により生成される画像においてトゥーンオブジェクトとノントゥーンオブジェクトとが重なり合っている場合も生じ得る。トゥーンオブジェクトよりも仮想スクリーン３０２に近い位置でノントゥーンオブジェクトが重なり合う部分において、トゥーンオブジェクトの輪郭が検出されていたとしても、この部分の画素について輪郭データ用処理バッファ１６３ｃに書き込まれた輪郭データは、トゥーンオブジェクト及びノントゥーンオブジェクトを透視変換して画像データ用処理バッファ１６３ａに書き込まれた画像データに合成されない。つまり、ゲーム画面として表示装置１２１に表示される表示画面１２２において、この部分の輪郭線は現れない。
【０１６５】
このため、本来の外形とは異なる形状でトゥーンオブジェクトに輪郭が施され、本来の外形とは異なるトゥーンオブジェクトが浮き上がっている印象をプレイヤが受けることになるような不自然な画像が表示画面１２２に表示されることがない。さらに、複雑な形状のノントゥーンオブジェクトがトゥーンオブジェクトに対して仮想スクリーン３０２に近い位置で重なっていたとしても、その境界が輪郭として検出されて輪郭線が施されることがないので、ゲーム画面として表示画面１２２に表示された画像がプレイヤに汚らしく感じられてしまうことがない。
【０１６６】
また、トゥーンオブジェクトを透視変換する際、画像データ用処理バッファ１６３ａには、画素毎にトゥーンオブジェクトのＲＧＢの各成分の画像データとともに、仮想スクリーン３０２からの深度を示す深度データが書き込まれる。また、法線データ用処理バッファ１６３ｂには、画素毎にトゥーンオブジェクトの法線データとともにトゥーンオブジェクトの輪郭線の基準幅と視点３０３からの距離に応じて算出された輪郭線の線幅データが書き込まれる。深度データは、隠面消去などの他の処理を行う際にも使用されるデータであるため、このデータをトゥーンオブジェクトの輪郭を検出する際にも有効活用することができる。
【０１６７】
また、クリッピング範囲に複数のオブジェクトが含まれる場合は、オブジェクト毎に、特に透視変換により生成された画像で重なり合っているオブジェクトでは深度データが大きく異なることになる場合が多いので、深度データを参照することで、トゥーンオブジェクトの輪郭を検出することができるとともに、１のトゥーンオブジェクトに対して他のトゥーンオブジェクトやノントゥーンオブジェクトが重なっているかどうかが分かるものとなる。
【０１６８】
また、画像データ用処理バッファ１６３ａに書き込まれた深度データのみでトゥーンオブジェクトの輪郭を検出することが不可能ではないが、法線データ用処理バッファ１６３ｂに書き込まれた法線データもトゥーンオブジェクトの輪郭を検出する際に併用しているため、深度データのみではトゥーンオブジェクトの輪郭を適切に検出できない場合であっても、トゥーンオブジェクトの輪郭を適切に検出することができる。法線データは、隣接する画素同士が異なるオブジェクトのものになっている場合に、一般的に方向が大きく異なるという性質があるので、トゥーンオブジェクトの輪郭を検出するのに適したデータということができる。
【０１６９】
また、各フレーム期間におけるゲーム画面の画像を生成するための手順として、まず、クリッピング範囲に含まれるオブジェクトのうちのトゥーンオブジェクトだけを透視変換し、これにより生成されたデータに基づいてトゥーンオブジェクトの輪郭を検出して、トゥーンオブジェクトの輪郭線の輪郭線データを輪郭線データ用処理バッファ１６３ｃに画素毎に書き込むものとしている。その後に、クリッピング範囲に含まれるノントゥーンオブジェクトを透視変換し、この時点で画像データ用処理バッファ１６３ａに画素毎に書き込まれているオブジェクトを透視変換した画像データに輪郭線データを合成するものとしている。
【０１７０】
このような処理手順で各フレーム期間における画像を生成するものとしていることから、トゥーンオブジェクトに対してノントゥーンオブジェクトが仮想スクリーン３０２に近い位置で重なっている場合の重なり部分の境界がトゥーンオブジェクトの輪郭として検出されることがない。トゥーンオブジェクトの輪郭として余分な輪郭が検出されることがないので、無駄に処理負荷が大きくならない。
【０１７１】
ノントゥーンオブジェクトの透視変換により先に画像データの書き込まれていたトゥーンオブジェクトより仮想スクリーン３０２に近い位置でノントゥーンオブジェクトが重なっている画素では、画像データ用処理バッファ１６３ａに書き込まれている深度データが更新されるが、深度データが構成されていた画素については、輪郭線データ用処理バッファ１６３ｃに輪郭線データが書き込まれていても、画像データ用処理バッファ１６３ａの画像データに合成されることがない。このため、ノントゥーンオブジェクトの領域内でトゥーンオブジェクトの輪郭線が透けているような不自然な画像が生成されてしまうこともない。
【０１７２】
本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形態様について説明する。
【０１７３】
上記の実施の形態では、トゥーンオブジェクト及びノントゥーンオブジェクトの画像データと輪郭線データとを合成する処理は、透視変換により画像データ用処理バッファ１６３ａに画素毎に書き込まれたＲＧＢの各成分の画像データと輪郭線データ用処理バッファ１６３ｃに画素毎に書き込まれたＲＧＢの各成分の輪郭線データとの何れかをフレームバッファ１１２（または法線データ用処理バッファ１６３ｂ）を書き込んでいくことにより行っていた。
【０１７４】
これに対して、画像データ用処理バッファ１６３ａに画素毎に書き込まれたＲＧＢの各成分の画像データに、深度データに応じて輪郭線データ用処理バッファ１６３ｃに画素毎に書き込まれたＲＧＢの各成分の輪郭線データを上書きすることにより行い、その後に画像データ用処理バッファ１６３ａのデータをフレームバッファ１１２に転送するものとしてもよい。また、トゥーンオブジェクト及びノントゥーンオブジェクトの画像データと輪郭線データとを合成する処理は、画像データ用処理バッファ１６３ａに画素毎に書き込まれたＲＧＢの各成分の画像データを、深度データに応じて輪郭線データの書き込まれた輪郭線データ用処理バッファ１６３ｃに上書きして書き込むことにより行い、その後に輪郭線データ用処理バッファ１６３ｃのデータをフレームバッファ１１２に転送するものとしてもよい。
【０１７５】
画像データ用処理バッファ１６３ａ、法線データ用処理バッファ１６３ｂまたは輪郭線データ用処理バッファ１６３ｃに合成された画像データが書き込まれるものとなる場合には、これらの処理バッファ１６３ａ〜１６３ｃをそのままフレームバッファ１１２として利用してしまってもよい。もっとも、この場合には、画像データ用処理バッファ１６３ａ、法線データ用処理バッファ１６３ｂまたは輪郭線データ用処理バッファ１６３ｃを２セット用意しておき、１フレーム毎にデータの書き込み用のものとデータの読み出し用のものとを切り替える必要がある。
【０１７６】
上記の実施の形態では、トゥーンオブジェクト２００の輪郭線２０２の線色４０３は、トゥーンオブジェクト本体２０１の色に応じて、該本体２０１の色とは異系色の色に設定されるものとなっていた。もっとも、輪郭線２０２の線色は、トゥーンオブジェクト本体２０１の色に関わらずに全てのトゥーンオブジェクトについて同一の色が設定されるものとしてもよい。また、各トゥーンオブジェクトの輪郭線２０２の色は、同系色の色とするが、トゥーンオブジェクト本体２０１の明度に応じて、輪郭線の明度が設定されたものであってもよい。
【０１７７】
例えば、トゥーンオブジェクト本体２０１の明度が比較的高いトゥーンオブジェクト２００の輪郭線２０２は、比較的明度が高い（但し、トゥーンオブジェクト本体２０１よりは低い）ものとするが、明度の低いトゥーンオブジェクト２００の輪郭線２０２は、明度が低いものとすることができる。この場合、仮想カメラ３０１の視点３０３に近い方のトゥーンオブジェクトの方が本体の明度が低く、視点３０３から遠い方のトゥーンオブジェクトの本体の明度に近くなっていても、複数のトゥーンオブジェクトが重なり合う部分において両方のトゥーンオブジェクトに対して輪郭線が描画されるので、各トゥーンオブジェクトの輪郭が分かりにくくなってしまうことがない。
【０１７８】
また、トゥーンオブジェクトの輪郭線が半透明画像で描画される場合、トゥーンオブジェクト本体２０１の明度に応じて輪郭線の透明度を設定するものとしてもよい。この場合も、トゥーンオブジェクト本体２０１の明度に応じて輪郭線の明度が設定されている場合と同様の効果を得ることができる。このようにトゥーンオブジェクト本体２０１の明度に応じて、輪郭線２０２の明度や透明度が設定されるものでは、特にモノクローム画像を生成する場合などにおいて、複数のトゥーンオブジェクトが重なり合う場合に、各トゥーンオブジェクトの輪郭が分かりにくくなってしまうことがないという効果が顕著に発揮されるものとなる。
【０１７９】
なお、トゥーンオブジェクトの輪郭線画像を半透明画像で描画するためには、ステップＳ４０４の処理で、グラフィック処理部１１１は、処理対象としている画素についての画像データ用処理バッファ１６３ａに書き込まれた画像データと輪郭線データ用処理バッファ１６３ｃに書き込まれた輪郭線データとを当該輪郭線の半透明度に応じて合成して、フレームバッファ１１２の対応する画素を書き込むものとすればよい。
【０１８０】
上記の実施の形態では、クリッピング範囲に含まれる各トゥーンオブジェクトの輪郭線の線幅（Ｗ）は、各トゥーンオブジェクトについて予め設定された基準幅（Ｅｂ）４０２と、仮想カメラ３０１の視点３０３から各トゥーンオブジェクトまでの距離（Ｄ）に応じて算出されるものとしていた。もっとも、各トゥーンオブジェクトの輪郭線の線幅（Ｗ）は、近距離クリップ面（仮想スクリーン）３０２から各トゥーンオブジェクトまでの深度を距離（Ｄ）として、これと基準幅（Ｅｂ）４０２に従って算出されるものとしてもよい。この場合には、透視変換により生成される２次元画像における各トゥーンオブジェクトのサイズに忠実な輪郭線の線幅を算出することができるようになる。
【０１８１】
上記の実施の形態では、ＨＰが０になったり特殊なステータス異常を生じて行動不能となったりしているキャラクタに対応したトゥーンオブジェクトでは、ゲームの進行状況に応じて定められる係数（ａ）の値が０に設定され、これによって線幅（Ｗ）が０に算出されることで、ゲーム画面において当該キャラクタのトゥーンオブジェクトには輪郭線が現れないものとなっていた。もっとも、ゲームの進行状況に応じて輪郭線が現れないキャラクタを生じさせる手法はこれに限るものではなく、キャラクタについてはトゥーンオブジェクトとノントゥーンオブジェクトを動的に切り替えられるものとし、例えば、行動不能になっているときにはノントゥーンオブジェクトに切り替えるものとしてもよい。
【０１８２】
上記の実施の形態では、輪郭線描画処理において判定ピクセルの深度データが対象ピクセルの深度データよりも小さいときに、法線データ用処理バッファ１６３ｂの線幅データを上書きすることにより処理を行っていたが、ローカル変数を用いて処理を行い、法線データ用処理バッファ１６３ｂに書き込まれている線幅データが書き換えられることがないようにしてもよい。この場合、ステップＳ３０３の処理を行わなくてもよい。
【０１８３】
上記の実施の形態では、透視変換された画像データにおける各トゥーンオブジェクトの輪郭は、画像データ用処理バッファ１６３ａにＲＧＢの各成分の画像データとともに書き込まれた画素毎の深度データと、法線データ用処理バッファ１６３ｂに書き込まれた画素毎の法線データ及び輪郭線データとを参照して、検出されるものとしていた。もっとも、画像データ用処理バッファ１６３ａに書き込まれた画素毎の深度データ、または法線データ用処理バッファ１６３ｂに書き込まれた画素毎の法線データのうちでは何れか一方のみを参照して、各トゥーンオブジェクトの輪郭を検出するものとしてもよい。深度データのみを用いて輪郭を検出する場合には、法線データを書き込む処理バッファが必要ないので、法線データ用処理バッファ１６３ｂを設けずに、トゥーンオブジェクト毎の輪郭線の線幅を示す線幅データをグラフィック処理部１１１内のＲＡＭなどに記憶させるものとしてもよい。
【０１８４】
また、トゥーンオブジェクトの輪郭を検出するための情報は、上記した深度データや法線データに限るものではない。例えば、トゥーンオブジェクトを透視変換した画像そのものとは別に輪郭検出用の画像を別の処理バッファに描画し、この別の処理バッファに描画した輪郭検出用の画像を参照して、各トゥーンオブジェクトの輪郭を検出するものとしてもよい。
【０１８５】
上記の実施の形態では、輪郭線描画において、透視変換により生成された２次元画像に含まれるトゥーンオブジェクト内の各画素を順次対象ピクセルに設定して、ループ処理３を行うものとしていた。これに対して、ステップＳ１０４において各トゥーンオブジェクトの輪郭として検出されなかった画素には何れにしても輪郭線が描画されることはないので、ループ処理２においては、ステップＳ１０４で輪郭として検出された画素のみを順次対象ピクセルとしていくものとしてもよい。
【０１８６】
上記の実施の形態では、トゥーンオブジェクトに施すべき輪郭線の線幅は、各々のトゥーンオブジェクトに予め設定された基準幅４０２を基本として、仮想カメラ３０１の視点３０３から各トゥーンオブジェクトまでの距離などに従って算出するものとしていた。そして、複数のトゥーンオブジェクトが重なり合う部分について輪郭線の線幅を調整したり、トゥーンオブジェクトとノントゥーンオブジェクトとが重なり合う部分について輪郭線を示す輪郭線データを合成しないものとしたりしていた。
【０１８７】
これに対して、各トゥーンオブジェクトの輪郭線の線幅が、仮想カメラ３０１の設定に応じて変えられるものではなく、トゥーンオブジェクト毎に予め設定されて基準幅４０２の代わりに輪郭線データテーブル４００に登録されているものとしてもよい。この場合、各トゥーンオブジェクトの輪郭線は、透視変換により生成される２次元画像における各トゥーンオブジェクトのサイズに関わらずに、輪郭線データテーブル４００に基準幅４０２の代わりとして登録されている線幅で描画すればよい。
【０１８８】
このような場合にも、輪郭線の線幅が小さいトゥーンオブジェクトが仮想スクリーン３０２に近い位置で輪郭線の線幅が大きいトゥーンオブジェクトと重なり合っている場合に、重なり合う部分の両者のトゥーンオブジェクトの輪郭に施すべき輪郭線の線幅を、仮想スクリーン３０２に近い方のトゥーンオブジェクトについて設定された輪郭線の線幅にすることができる。また、ノントゥーンオブジェクトが仮想スクリーン３０２に近い位置でトゥーンオブジェクトと重なり合っている場合に、重なり合う部分ではトゥーンオブジェクトの輪郭線の輪郭線データを、オブジェクトを透視変換した画像データに合成しないものとすることができる。
【０１８９】
さらに、各トゥーンオブジェクトの輪郭線の線幅は、何れも予め同じ線幅に設定されているものとしてもよい。この場合、各トゥーンオブジェクトの輪郭線は、透視変換により生成される２次元画像における各トゥーンオブジェクトのサイズに関わらずに、同じ線幅で描画すればよい。このような場合にも、ノントゥーンオブジェクトが仮想スクリーン３０２に近い位置でトゥーンオブジェクトと重なり合っている場合に、重なり合う部分ではトゥーンオブジェクトの輪郭線の輪郭線データを、オブジェクトを透視変換した画像データに合成しないものとすることができる。
【０１９０】
上記の実施の形態では、トゥーンオブジェクトには、予め設定された基準幅に基づいて算出された線幅の輪郭線が施されるものとなっていたが、より輪郭線の線幅が細い他のトゥーンオブジェクトが仮想スクリーン３０２に近い位置で重なっていると、当該重なっている部分の輪郭線は、他のトゥーンオブジェクトの輪郭線の線幅と同じ線幅で施されるものとなっていた。また、ノントゥーンオブジェクトが仮想スクリーン３０２に近い位置で重なっていると、当該重なっている部分には輪郭線が施されなかった。
【０１９１】
これに対して、トゥーンオブジェクトの中でも特に存在を目立たせたいものを特定トゥーンオブジェクトとして設定しておき、特定トゥーンオブジェクトに対して他のオブジェクト（特定トゥーンオブジェクト以外のトゥーンオブジェクトまたはノントゥーンオブジェクト）が仮想スクリーン３０２に近い位置で重なっている場合であっても、特定トゥーンオブジェクトの輪郭線は、重なり部分を含めて基準幅に基づいて算出された線幅で描画し、輪郭線データをオブジェクトの画像データに合成させるものとすることができる。
【０１９２】
このように特定トゥーンオブジェクトは、全ての輪郭に本来の線幅で輪郭線が施されるため、プレイヤは、ゲーム画面上で特定トゥーンオブジェクトが表示されている領域を容易に識別することができるものとなる。なお、プレイヤキャラクタとノンプレイヤキャラクタとがトゥーンオブジェクトとなる場合には、プレイヤキャラクタを特定トゥーンオブジェクトとすることができる。また、キャラクタの他にもトゥーンオブジェクトがある場合には、キャラクタを特定トゥーンオブジェクトとし、キャラクタ以外のトゥーンオブジェクトを特定トゥーンオブジェクト以外のトゥーンオブジェクトとすることができる。
【０１９３】
また、特定トゥーンオブジェクトは、ゲームの進行状況に応じて動的に定めることもできる。例えば、ゲームの進行状況が所定の状況であるときには、全てのトゥーンオブジェクトを特定トゥーンオブジェクトとして扱って、他のオブジェクトが仮想スクリーン３０２に近い位置で重なっていても、各トゥーンオブジェクトの輪郭線は、重なり部分を含めて各トゥーンオブジェクトに対して基準幅に基づいて算出された線幅で描画し、輪郭線データをオブジェクトの画像データに合成させるものとすることができる。
【０１９４】
これにより、プレイヤは、ゲームの進行状況が所定の状況であるときに、ゲーム画面上で各トゥーンオブジェクトが表示されている領域を容易に識別することができるものとなる。なお、このような処理を行うゲームの進行状況は、プレイヤが各トゥーンオブジェクトの画面上に占める領域を区別したいようなシーンを適用することができるが、このようなシーンとして、例えば、画面上に表示される標的（動くものでも可）に対して、プレイヤが画面上の所望の位置をポインティングしてシューティングを行うようなシーンを挙げることができる。
【０１９５】
上記の実施の形態では、ＨＰが０になることや特殊なステータス異常により行動不能となっているキャラクタを示すトゥーンオブジェクトについては係数ａの値が“０”となるので、トゥーンオブジェクトであっても輪郭線の線幅が“０”に設定されてしまうことがあり得る。そして、輪郭線の線幅が“０”に設定されたトゥーンオブジェクトが他のトゥーンオブジェクト（線幅が“０”でないもの）に仮想スクリーン３０２に近い位置で重なることもあり得るものとなる。この場合には、当該他のトゥーンオブジェクトには重なり部分でも輪郭線（線幅を“１”としてもよい）が施されるものとしてもよい。これにより、当該他のオブジェクトのノントゥーンオブジェクトが重なっているものと見間違えられることがなくなる。
【０１９６】
上記の実施の形態では、トゥーンオブジェクトの輪郭線は、線幅（Ｗ）が０と算出される場合を除いて、仮想スクリーン３０２に近い位置でノントゥーンオブジェクトが重なっている部分の画素以外では必ず輪郭線データがオブジェクトの画像データに合成され、ゲーム画面として表示画面１２２に表示される画像に現れるものとなっていた。仮想スクリーン３０２に近い位置にあるノントゥーンオブジェクトが複雑な形状を有しているような場合、極めて短くしか連続していない輪郭線も現れるものとなっていた。しかし、極めて短い長さで輪郭線が断続していると、特に線幅の太い輪郭線の場合には、極めて短い輪郭線が現れている部分が汚らしく感じられてしまう場合も生じてしまうことがある。
【０１９７】
そこで、トゥーンオブジェクトの輪郭線であって仮想スクリーン３０２に近い位置でノントゥーンオブジェクトの重なっていない部分であっても、その部分が所定の長さ以上に連続していなければ、輪郭線データをオブジェクトの画像データに合成しないものとしてもよい。輪郭線データをオブジェクトの画像データに合成するかどうかの分かれ目となる所定の長さは、輪郭線の線幅に応じて定めるものとしてもよい。
【０１９８】
例えば、トゥーンオブジェクトの輪郭線のうちで仮想スクリーン３０２に近い位置でノントゥーンオブジェクトの重なっていない部分が所定の長さ（例えば、３画素分）以上連続するかどうかを判断するために、まず、１画素分の線幅で輪郭線が描画されているものと考える。ここで、輪郭線データの何れか１画素を参照ピクセルとして周囲の８つの画素を調べ、輪郭線データがあるかどうかを判断する。周囲の８つの画素のうちに１つも輪郭線データがなければ、輪郭線が３画素分連続していないと判断できることとなる。周囲の８つの画素のうちの１つだけに輪郭線データがある場合には、その輪郭線データのある画素を新たな参照ピクセルとして、周囲の８つの画素を調べ、輪郭線データがあるかどうかを判断する。ここでも周囲の８つの画素のうち１つだけにしか輪郭線データがなければ、輪郭線が３画素分連続していないと判断できることとなる。所定の長さが３画素分よりも長いときは、上記のような処理を繰り返せばよい。
【０１９９】
図１５は、トゥーンオブジェクトとノントゥーンオブジェクトとが重なり合う場合において、トゥーンオブジェクトの輪郭線のうちで仮想スクリーン３０２に近い位置でノントゥーンオブジェクトの重なっていない部分が所定の長さ以上連続しない部分の輪郭線データを画像データに合成しない場合の例を示す図である。図示するように、仮想スクリーン３０２に近い位置にあるノントゥーンオブジェクト２５２に生じている隙間の中でも隙間の間隔が小さい部分ではトゥーンオブジェクト２２３の輪郭線が現れないものとなっている。
【０２００】
このように、透視変換により生成された２次元画像におけるノントゥーンオブジェクトの形状が複雑であって、トゥーンオブジェクトの輪郭付近にノントゥーンオブジェクトの複雑な形状の部分が重なっている場合であっても、最終的に生成される画像においてトゥーンオブジェクトの輪郭のうちに極短い輪郭線が断続して現れることがない。このため、極短く断続する輪郭線によって、ゲーム画面が汚らしく感じられてしまうことを防ぐことができる。特にトゥーンオブジェクトに施される輪郭線の線幅が太いとき程、これによる効果が顕著に現れるものとなる。
【０２０１】
上記の実施の形態では、仮想３次元空間内に存在する複数のオブジェクトは、互いに離れた状態で存在することを前提として説明した。もっとも、仮想３次元空間内に存在する複数のオブジェクトのうちで、１のオブジェクトの一部が他のオブジェクトにめり込んだ状態を許容するようにすることもできる。この場合、１のトゥーンオブジェクトの一部が他のトゥーンオブジェクトにめり込んだ状態にすることもできる。この場合、１のトゥーンオブジェクトが他のトゥーンオブジェクトにめり込んでいる境界の部分も、各々のトゥーンオブジェクトの輪郭として検出されるものとなる。
【０２０２】
１のトゥーンオブジェクトが他のトゥーンオブジェクトにめり込んでいる境界の部分に検出される輪郭には、輪郭線を描画するものとしても描画しない（或いは、輪郭線データの書き込みは行うが、各オブジェクトを透視変換した画像データとは合成しない）ものとしてもよい。特に双方のトゥーンオブジェクトの本体の色が異系色である場合には、この境界の部分に検出される輪郭に輪郭線を描画しないものとしてもよい。
【０２０３】
１のトゥーンオブジェクトが他のトゥーンオブジェクトにめり込んでいる境界の部分に検出される輪郭に輪郭線を描画する場合には、当該部分の輪郭線の線幅は、双方のトゥーンオブジェクトについて仮想カメラ３０１の視点３０３からの距離（Ｄ）に応じて算出された線幅（Ｗ）に関わらずに、最小単位である１画素分の幅としてもよい。当該部分の輪郭で、めり込まれている他のトゥーンオブジェクトについて検出された輪郭にのみ、１画素分の幅の輪郭線を描画するものとしてもよい。
【０２０４】
図１６は、１のトゥーンオブジェクトの一部が他のトゥーンオブジェクトにめり込んでいる場合に、表示画面１２２として表示される両トゥーンオブジェクトの画像の例を示す図である。ここでは、トゥーンオブジェクト２３２の一部が他のトゥーンオブジェクト２３１にめり込んでいるものとする。図示するように、表示画面１２２上で表示されるサイズの大きいトゥーンオブジェクト２３１には非常に線幅の太い輪郭線が、これよりもサイズの小さいトゥーンオブジェクト２３２でもトゥーンオブジェクト２３１の輪郭線よりは細いが比較的線幅の太い輪郭線が施されているが、トゥーンオブジェクト２３２がトゥーンオブジェクト２３１にめり込む部分の輪郭では、非常に線幅の細い輪郭線しか現れないものとなっている。
【０２０５】
この場合、１のトゥーンオブジェクトの一部が他の１のトゥーンオブジェクトにめり込んでいる場合には、双方のトゥーンオブジェクトについて算出されている輪郭線の線幅に関わらずに、めり込んでいる部分に検出される輪郭に最小幅で輪郭線が施されるものとなる。従って、めり込んでいる部分に検出される輪郭で輪郭線が目立ちすぎることがなく、両者が全く別々に存在して何れかが浮き上がってしまっている印象を生じるような画像が生成されることがない。一方、線幅が１画素分の最小幅になるとは言っても、１のトゥーンオブジェクトの一部が他の１のトゥーンオブジェクトにめり込んでいる部分に検出される輪郭線が施されるので、両者が完全に一体化した１つのオブジェクトであるような印象をプレイヤに感じさせてしまうのが防がれる。
【０２０６】
なお、１のトゥーンオブジェクトが他のトゥーンオブジェクトにめり込んでいる場合には、めり込んでいる部分においては深度データに変化は生じないものの法線データに大きな変化が生じていることとなる。従って、上記したトゥーンオブジェクトの輪郭を検出する処理において深度データに変化がないものの法線データに変化が生じている部分を探しだし、ここを１のトゥーンオブジェクトが他のトゥーンオブジェクトにめり込んでいる部分として抽出すればよい。
【０２０７】
上記の実施の形態では、各フレーム期間において、クリッピング範囲に存在するオブジェクトのうちでトゥーンオブジェクトだけを最初に透視変換し、ここで各トゥーンオブジェクトの輪郭を検出して輪郭線を描画し、その後にクリッピング範囲に存在するノントゥーンオブジェクトを透視変換するものとしていた。そして、ノントゥーンオブジェクトまでを透視変換した時点で画像データ用処理バッファ１６３ａに画素毎に書き込まれている画像データに、輪郭線データ用処理バッファ１６３ｃに画素毎に書き込まれている輪郭線データを合成するものとしていた。
【０２０８】
これに対して、各フレーム期間において、トゥーンオブジェクトであるかノントゥーンオブジェクトであるかに関わらずにクリッピング範囲に存在するオブジェクトの透視変換を先に行い、ここで各オブジェクトの輪郭を検出してトゥーンオブジェクトの輪郭には輪郭線を描画し、その後、画像データ用処理バッファ１６３ａに画素毎に書き込まれている画像データに、輪郭線データ用処理バッファ１６３ｃに画素毎に書き込まれている輪郭線データを合成するものとしてもよい。
【０２０９】
図１７（ａ）〜（ｄ）は、この変形例で、各フレーム期間においてゲーム画面として表示される画像の画像データを生成するための手順を模式的に示す図である。この変形例の手順の処理を行う場合も、その前提として、仮想カメラ３０１の視点３０３の位置及び視軸３０４の方向が決められ、クリッピング範囲が定まっているものとする。
【０２１０】
まず、トゥーンオブジェクトであるかノントゥーンオブジェクトであるかに関わらず、クリッピング範囲に含まれる全てのオブジェクトが透視変換される。これにより、図１７（ａ）に示すように、クリッピング範囲に含まれる各オブジェクトのＲＧＢ成分毎の画像データと深度データとが画素毎に画像データ用処理バッファ１６３ａに書き込まれるとともに、各オブジェクトの法線データが画素毎に法線データ用処理バッファ１６３ｂに書き込まれる。ここで、複数のオブジェクトが重なり合う部分の画素では、深度データが最も小さい（つまり、仮想スクリーン３０２に最も近い）オブジェクトの画像データ及び法線データが書き込まれるものとなる。また、トゥーンオブジェクトについて輪郭線の線幅が算出され、線幅データが法線データ用処理バッファ１６３ｂに書き込まれる。
【０２１１】
次に、図１７（ｂ）に示すように、画像データ用処理バッファ１６３ａに書き込まれた深度データと、法線データ用処理バッファ１６３ｂに書き込まれた法線データ及び線幅データとを参照して、クリッピング範囲に含まれるトゥーンオブジェクトの輪郭を検出する。輪郭を検出する手法は、上記の実施の形態でトゥーンオブジェクトの輪郭を検出する場合の手法と同じであるが、ここでは、トゥーンオブジェクトとノントゥーンオブジェクトが重なり合っている部分にも輪郭が検出される。そして、ここで検出されたトゥーンオブジェクトの輪郭線の輪郭線データが、深度データとともに一旦輪郭線データ用処理バッファ１６３ｃに書き込まれる。
【０２１２】
次に、輪郭線データ用処理バッファ１６３ｃに書き込まれている輪郭線データを画素毎に処理対象とし、処理対象となる画素から輪郭線の線幅分だけシフトした画素において画像データ用処理バッファ１６３ａに書き込まれた画像データが輪郭線データよりも深度データの小さいノントゥーンオブジェクトの画像データとなっているかを調べる。輪郭線の線幅分だけシフトした画素における画像データが輪郭線データよりも深度データの小さいノントゥーンオブジェクトの画像データとなっていれば、当該画素の輪郭線データを輪郭線データ用処理バッファ１６３ｃから削除する。これにより、図１７（ｃ）に示すように、輪郭線データ用処理バッファ１６３ｃには、トゥーンオブジェクトの輪郭線のうちのノントゥーンオブジェクトと重なり合わない部分だけの輪郭線データだけが書き込まれた状態となる。
【０２１３】
最後に、輪郭線データ用処理バッファ１６３ｃに書き込まれている輪郭線データを、画像データ用処理バッファ１６３ａに書き込まれているトゥーンオブジェクト及びノントゥーンオブジェクトの画像データに合成した画像データをフレームバッファ１２２に書き込む。これにより、図１７（ｄ）に示すように、フレームバッファ１２２には、トゥーンオブジェクト及びノントゥーンオブジェクトの画像に対して、ノントゥーンオブジェクトが仮想スクリーン３０２に近い側で重なっていない部分以外に輪郭線の施された画像が生成されるものとなる。
【０２１４】
以上説明したように、この変形例では、クリッピング範囲に含まれるオブジェクトであれば、トゥーンオブジェクトとノントゥーンオブジェクトであるかに関わらずに先に透視変換を行っており、透視変換により生成された画像におけるトゥーンオブジェクトとノントゥーンオブジェクトとの境界部分は、ノントゥーンオブジェクトの方が仮想スクリーン３０２に近い位置にあったとしても、トゥーンオブジェクトの輪郭として検出されてしまう。
【０２１５】
もっとも、この境界部分の輪郭線データは、ノントゥーンオブジェクトの方が仮想スクリーン３０２に近い方にあれば、輪郭線データ用処理バッファ１６３ｃから削除されることとなり、この部分の削除された輪郭線データだけがトゥーンオブジェクト及びノントゥーンオブジェクトの画像データと合成される。このため、トゥーンオブジェクト及びノントゥーンオブジェクトを含むクリッピング範囲に含まれる各オブジェクトを透視変換して得られた画像データに対して輪郭線データを合成しても、最終的に生成される画像において当該部分に輪郭線が現れることがなく、上記の実施の形態の場合と同じ効果を得ることができる。
【０２１６】
なお、図１７に示した例では、図１７（ｂ）に示すようにトゥーンオブジェクト及びノントゥーンオブジェクトを透視変換した画像から検出された輪郭の全体に対して輪郭線データを書き込んだ後、図１７（ｃ）に示すようにノントゥーンオブジェクトが仮想スクリーン３０２に近い位置で重なり合う部分の輪郭線データを削除するものとしていた。これに対して、トゥーンオブジェクト及びノントゥーンオブジェクトを透視変換した画像において輪郭として検出された各画素についてノントゥーンオブジェクトが仮想スクリーン３０２に近い位置で重なり合うかどうかを判断しながら、ノントゥーンオブジェクトが仮想スクリーン３０２に近い位置で重なり合うと判断された画素について輪郭線データを書き込むものとしてもよい。
【０２１７】
本発明において、ゲーム画面として最終的に生成される画像においてトゥーンオブジェクトに輪郭線が現れないようにするための処理としては、上記の実施の形態のように輪郭線データ用処理バッファ１６３ｃに書き込まれた輪郭線データを画像データ用処理バッファ１６３ａに書き込まれた画像データに合成しないこと、輪郭線データ用処理バッファ１６３ｃに一旦書き込まれた輪郭線データを削除してしまうこと、輪郭線の線幅を０に設定して輪郭線データが輪郭線データ用処理バッファ１６３ｃに書き込まれないようにすること、輪郭線の線幅を０に設定して処理を行う訳ではないが輪郭線が現れないようにする部分の画素では輪郭線データを輪郭線データ用処理バッファ１６３ｃに書き込まないようにすること、本来はトゥーンオブジェクトであっても動的にノントゥーンオブジェクトと見なすようにすること、の何れによっても実現することができる。
【０２１８】
上記の実施の形態では、ＨＰが０であったり特殊なステータス異常が生じていることによって行動不能になったりしているキャラクタに対応したトゥーンオブジェクトについては、ゲームの進行状況に応じた係数（ａ）として“０”が設定されることで、ゲーム画面上で輪郭線が現れないようになっていた。もっとも、本来は輪郭線が施されるトゥーンオブジェクトに輪郭線を施さないものとするゲームの状況はこれに限るものではなく、トゥーンオブジェクトを目立たせない方が臨場感の高まるようなシーン（例えば、プレイヤキャラクタが暗闇の中を探求しているシーン）にある状況などを適用することができる。
【０２１９】
また、輪郭線の線幅を算出する際に乗算される係数（ａ）として、“０”を設定する場合に限らず“１”以外の値を設定するゲームの進行状況としては、ＨＰ以外のパラメータでもキャラクタに設定されたパラメータ（例えば、経験値、レベルなど）が所定の値になっていることを適用することができる。また、プレイヤキャラクタが存在するゲーム空間の地形などの周囲の環境の違い（例えば、岩の上に存在する、水の中に存在する、宇宙空間に存在する等）を適用することもできる。
【０２２０】
また、バトルシーンにおいては、複数のプレイヤキャラクタが登場し、各プレイヤキャラクタが順次アクティブ状態となっていくが、各プレイヤキャラクタのアクティブ／非アクティブの状態の違いとしてもよい。さらに、ゲームにおいてパーティを構成するプレイヤキャラクタの数の違いとしてもよい（例えば、パーティを構成するプレイヤキャラクタの数が多いほど、各プレイヤキャラクタに対応したトゥーンオブジェクトの輪郭線を細くする）。また、ゲームにおけるシーンの違い（イベントシーンとバトルシーンの違い、昼間のシーンと夜のシーンの違い）としてもよい。
【０２２１】
バトルシーンにおいては、プレイヤキャラクタまたは敵キャラクタが、相手方のキャラクタに対して優勢／劣勢な状況にあるかの違いとしてもよい。イベントシーンにおいては、当該シーンに設定したイベントをプレイヤキャラクタがクリアしたかどうかの違いとしてもよい。プレイヤキャラクタがゲームにおいて使用可能なアイテムをトゥーンオブジェクトとする場合には、当該アイテムが未使用であるか使用済みであるかの違いとしてもよい。ゲーム空間に存在する宝箱（プレイヤキャラクタが使用可能なアイテムを入れておく箱）をトゥーンオブジェクトとする場合には、当該宝箱が未開封であるか開封済みであるかの違いとしてもよい。
【０２２２】
また、上記の実施の形態では、光源は、仮想カメラの位置に設定されるものとしていたが、仮想カメラの位置とは異なる位置に光源が設定される場合には、トゥーンオブジェクトの輪郭線の線幅を算出する演算において、光源から各トゥーンオブジェクトまでの距離に応じて定められる所定の係数を乗算するものとしてもよい。
【０２２３】
また、トゥーンオブジェクトの種類の違い（例えば、プレイヤキャラクタであるかノンプレイヤキャラクタであるか）に応じて、輪郭線の線幅を変えるものとしてもよい。もっとも、プレイヤキャラクタとノンプレイヤキャラクタのように、トゥーンオブジェクトの種類の区分がゲームの進行状況に応じて変化しない場合には、その種類に応じて基準幅４０２を予め設定しておくものとすればよい。例えば、基準サイズがほぼ同じであっても、プレイヤキャラクタであれば基準幅４０２を大きめに設定するが、ノンプレイヤキャラクタであれば基準幅４０２を小さめに設定しておけばよい。
【０２２４】
上記の実施の形態では、キャラクタをトゥーンオブジェクトとしていた。つまり、トゥーンオブジェクトは、プレイヤに一体性のあるオブジェクトとして認識されるものであって、一体性のあるオブジェクトとして認識される範囲の輪郭に輪郭線を施すものとなっていた。これに対して、例えば、同じキャラクタの中でも輪郭線を施したい部位と施したくない部位とが存在する場合もある。この場合には、プレイヤには一体性のあるオブジェクトとして認識されるが、その中にトゥーンオブジェクトにより構成される部位とノントゥーンオブジェクトにより構成される部位とが存在するものとなっていてもよい。例えば、馬車のようなオブジェクトの場合、馬の部分はノントゥーンオブジェクトとするが、車の部分はトゥーンオブジェクトとするなどである。
【０２２５】
上記の実施の形態では、本発明にかかる画像生成の手法をスタンドアローン型のビデオゲームでの画像を生成する場合に適用していたが、複数のビデオゲーム装置１００をネットワーク１５１を介してサーバ装置に接続してゲームを進めるネットワークゲームでの画像を生成する場合に適用してもよい。ネットワークゲームで各々のビデオゲーム装置１００のプレイヤの操作に従ってゲーム空間で動作するプレイヤ毎のプレイヤキャラクタは、何れもトゥーンオブジェクトとすることができる。
【０２２６】
また、ネットワークゲームでは、他のプレイヤのプレイヤキャラクタでも、プレイヤ自身のプレイヤキャラクタの仲間となっている（ゲームを進行する際に、協力関係が構築されている）プレイヤキャラクタと、仲間となっていないプレイヤキャラクタとが存在する。さらに、ネットワークゲームにおいても、何れのプレイヤの操作によって動作するものでもないノンプレイヤキャラクタがゲーム空間内に存在するが、これらのノンプレイヤキャラクタも、トゥーンオブジェクトとすることができる。
【０２２７】
この場合、各トゥーンオブジェクトの輪郭線の線幅を各々に設定された基準幅に応じて算出する場合に、自身のプレイヤキャラクタ、仲間となっている他のプレイヤのプレイヤキャラクタ、仲間となっていない他のプレイヤのプレイヤキャラクタ、ノンプレイヤキャラクタの区分に応じて値が異なる係数を掛け合わせるものとしてもよい。これにより、例えば、ゲーム空間に存在する複数のキャラクタのうちで、自身のプレイヤキャラクタと仲間となっている他のプレイヤのプレイヤキャラクタの輪郭線を表示画面１２２に表示されているサイズに対して相対的に太くして、これらのキャラクタが目立ちやすいものとすることもできる。
【０２２８】
また、ビデオゲームの画像を生成する場合以外でも、３次元コンピュータグラフィックスの処理で仮想３次元空間に存在するオブジェクトを透視変換して画像を生成するものであって、仮想３次元空間に存在するオブジェクトの中に輪郭線の施されるトゥーンオブジェクトと輪郭線の施されないノントゥーンオブジェクトが含まれているのであれば、本発明における画像生成の処理を適用することができる。
【０２２９】
上記の実施の形態では、本発明にかかる画像生成の手法をビデオゲームでの画像を生成する場合に適用し、各プレイヤがゲームを進めるために用いる端末装置としてゲーム専用機であるビデオゲーム装置１００を適用していた。これに対して、ビデオゲーム装置１００と同様の構成要素を備え、画像を描画する機能を有するものであれば、汎用のパーソナルコンピュータなどを適用してもよい。３次元コンピュータグラフィックスを処理でき、処理バッファ１６３に書き込まれたデータを画素単位で処理する能力があれば、表示装置１２１及びサウンド出力装置１２５を装置本体１０１と同一の筐体内に納めた構成を有する携帯ゲーム機（アプリケーションの実行機能を有する携帯電話機を含む）を適用するものとしてもよい。
【０２３０】
記録媒体１３１としては、ＤＶＤ−ＲＯＭやＣＤ−ＲＯＭの代わりに半導体メモリーカードを適用することができる。このメモリーカードを挿入するためのカードスロットをＤＶＤ／ＣＤ−ＲＯＭドライブ１１３の代わりに設けることができる。汎用のパーソナルコンピュータの場合には、本発明に係るプログラム及びデータを記録媒体１３１に格納して提供するのではなく、ＨＤＤ１０７に予め格納して提供してもよい。本発明にかかるプログラム及びデータを格納して提供するための記録媒体は、ハードウェアの物理的形態及び流通形態に応じて任意のものを適用することができる。
【０２３１】
上記の実施の形態では、ビデオゲーム装置１００のプログラム及びデータは、記録媒体１３１に格納されて配布されるものとしていた。これに対して、これらのプログラム及びデータをネットワーク１５１上に存在するサーバ装置が有する固定ディスク装置に格納しておき、装置本体１０１にネットワーク１５１を介して配信するものとしてもよい。ビデオゲーム装置１００において、通信インターフェイス１１５がサーバ装置から受信したプログラム及びデータは、ＨＤＤ１０７に保存し、実行時にＲＡＭ１０５にロードすることができる。
【図面の簡単な説明】
【０２３２】
【図１】本発明の実施の形態に適用されるビデオゲーム装置の構成を示すブロック図である。
【図２】（ａ）は、透視変換の説明図であり、（ｂ）は、透視変換により生成される画像におけるトゥーンオブジェクトの構成を示す図である。
【図３】（ａ）は、ビデオゲームのゲーム画面の例を示す図であり、（ｂ）は、（ａ）の画面での各オブジェクトの仮想空間内における配置を示す図である。
【図４】図１のビデオゲーム装置において用いられる処理バッファの構成を示す図である。
【図５】各トゥーンオブジェクトの輪郭線を描画する際に参照される輪郭線テーブルを示す図である。
【図６】各フレーム期間においてゲーム画面として表示される画像の画像データを生成するための手順を模式的に示す図である。
【図７】トゥーンオブジェクトの輪郭線の線幅を決定する手順を模式的に示す図である。
【図８】本発明の実施の形態にかかるビデオゲームにおいて、１フレーム期間毎に行われる画像生成処理を示すフローチャートである。
【図９】図８の個別輪郭線幅算出処理を詳細に示すフローチャートである。
【図１０】図８の輪郭線描画処理を詳細に示すフローチャートである。
【図１１】図８の画像合成処理を詳細に示すフローチャートである。
【図１２】表示画面上に表示されるトゥーンオブジェクトと輪郭線の線幅の関係の具体例を示す図である。
【図１３】複数のトゥーンオブジェクトが重なり合う場合の具体例を示す図である。
【図１４】トゥーンオブジェクトとノントゥーンオブジェクトとが重なり合う場合の具体例を示す図である。
【図１５】トゥーンオブジェクトとノントゥーンオブジェクトとが重なり合う場合の変形例を示す図である。
【図１６】トゥーンオブジェクトの一部が他のトゥーンオブジェクトにめり込んでいる場合の変形例を示す図である。
【図１７】各フレーム期間においてゲーム画面として表示される画像の画像データを生成するための手順の変形例を模式的に示す図である。
【符号の説明】
【０２３３】
１００  ビデオゲーム装置
１０１  ビデオゲーム本体
１０３  制御部
１０５  ＲＡＭ
１０７  ＨＤＤ
１０９  サウンド処理部
１１１  グラフィック処理部
１１２  フレームバッファ
１１３  ＤＶＤ／ＣＤ−ＲＯＭドライブ
１１５  通信インターフェイス
１１７  インターフェイス部
１１９  内部バス
１２１  表示装置
１２２  表示画面
１２５  サウンド出力装置
１３１  記録媒体
１５１  ネットワーク
１６１  入力部
１６２  メモリーカード
１６３ａ  画像データ用処理バッファ
１６３ｂ  法線データ用処理バッファ
１６３ｃ  輪郭線データ用処理バッファ
２００、２１１〜２１３、２２１〜２２３、２３１、２３２  トゥーンオブジェクト
２０１  トゥーンオブジェクト本体
２０２  輪郭線
２５１〜２５３  ノントゥーンオブジェクト
３０１  仮想カメラ
３０２  仮想スクリーン（近距離クリップ面）
３０３  視点
３０４  視軸
４００  輪郭線データテーブル
４０２  基準幅
４０３  線色
【図１】
0004387429.tif 000002
【図２】
0004387429.tif 000003
【図３】
0004387429.tif 000004
【図４】
0004387429.tif 000005
【図５】
0004387429.tif 000006
【図６】
0004387429.tif 000007
【図７】
0004387429.tif 000008
【図８】
0004387429.tif 000009
【図９】
0004387429.tif 000010
【図１０】
0004387429.tif 000011
【図１１】
0004387429.tif 000012
【図１２】
0004387429.tif 000013
【図１３】
0004387429.tif 000014
【図１４】
0004387429.tif 000015
【図１５】
0004387429.tif 000016
【図１６】
0004387429.tif 000017
【図１７】
0004387429.tif 000018