(57)【特許請求の範囲】
【請求項１】
３次元仮想空間内のキャラクタオブジェクトを表示するゲーム装置であって、
前記キャラクタオブジェクトの各部分の輪郭を形成するための輪郭情報を生成する輪郭情報生成部、
前記輪郭情報に基づいて、前記キャラクタオブジェクトの第１部分の輪郭に沿う線ポリゴンモデルである第１線モデルを生成する第１線モデル生成部、
前記輪郭情報に基づいて、前記キャラクタオブジェクトの第２部分の輪郭に沿う線ポリゴンモデルであって、前記第１線モデルよりもＺ奥に配置される第２線モデルを生成する第２線モデル生成部、
前記輪郭情報に基づいて、前記第１線モデルよりＺ奥かつ前記第２線モデルよりＺ手前に配置される透明ポリゴンモデルであって、前記第１部分に沿った輪郭を有する第１マスクモデルを生成する第１マスクモデル生成部、
背景を描画する背景描画部、および
前記背景描画部による描画の後に各前記モデルをＺ比較を行いながら描画していくモデル描画処理部を備え、
前記モデル描画処理部は、
最初に前記第１マスクモデルを描画し、
前記第１マスクモデルの後に前記第２線モデルを描画し、そして
前記第２線モデルの後に前記第１線モデルを描画する、ゲーム装置。
【請求項２】
前記輪郭情報に基づいて、前記キャラクタオブジェクトの第３部分の輪郭に沿う線ポリゴンモデルであって、前記第１線モデルよりもＺ手前に配置される第３線モデルを生成する第３線モデル生成部、および
前記輪郭情報に基づいて、前記第１線モデルよりＺ手前かつ前記第３線モデルよりＺ奥に配置される透明ポリゴンモデルであって、前記第３部分に沿った輪郭を有する第２マスクモデルを生成する第２スクモデル生成部をさらに備え、
前記モデル描画処理部はさらに、
前記第１マスクモデルの後であって前記第２線モデルよりも先に前記第２マスクモデルを描画し、そして
前記第１線モデルの後に前記第３線モデルを描画する、請求項１記載のゲーム装置。
【請求項３】
前記輪郭情報は、前記輪郭に沿う各点の座標情報を含む、請求項１または２記載のゲーム装置。
【請求項４】
操作装置から入力を受け付ける受け付け部、および
前記受け付け部によって受け付けられた入力に応じて、および／または所定のアルゴリズムに基づいて、前記キャラクタオブジェクトに対するアニメーション制御を含むゲーム処理を繰り返し実行するゲーム処理部をさらに備え、
前記輪郭情報生成部は、前記ゲーム処理が実行される度に前記座標情報を生成する、請求項３記載のゲーム装置。
【請求項５】
前記輪郭情報生成部は、前記アニメーション制御による前記キャラクタオブジェクトの移動状態に応じて前記座標情報をオフセットさせる、請求項４記載のゲーム装置。
【請求項６】
前記輪郭情報は、前記輪郭に沿う各点の前記移動状態に応じたオフセットの度合いを示すパラメータ情報をさらに含み、
前記輪郭情報生成部は、前記パラメータ情報に基づいて各点のオフセット量を変化させる、請求項５記載のゲーム装置。
【請求項７】
各前記線モデル生成部は、各部分の輪郭に沿う所定幅の線ポリゴンモデルを前記座標情報に基づいて生成する、請求項３ないし５のいずれかに記載のゲーム装置。
【請求項８】
各前記線モデル生成部は、
輪郭に対する法線ベクトルを各点において求め、
各点に対して、当該点における法線ベクトルと平行でかつ前記所定幅を有する線分を割り当て、そして
各線分の一対の端点を共通の頂点とするような一連のポリゴンを生成する、請求項７記載のゲーム装置。
【請求項９】
前記モデル描画処理部は、各前記線モデルを描画する際に、前記一連のポリゴンを所定数個一組に区切りながら単位テクスチャを繰り返しマッピングする、請求項８記載のゲーム装置。
【請求項１０】
前記単位テクスチャの繰り返しマッピングによって毛糸模様が形成される、請求項９記載のゲーム装置。
【請求項１１】
各前記線モデルのＺ方向の配列を示すＺ配列情報を生成するＺ配列情報生成部、および
各前記線モデルの描画順序を示すＺソート情報を生成するＺソート情報生成部をさらに備え、
前記モデル描画処理部は、前記Ｚソート情報に従う順序で、前記Ｚ配列情報に基づくＺ比較を行いながら、各線モデルを描画する、請求項１ないし１０のいずれかに記載のゲーム装置。
【請求項１２】
３次元仮想空間内のキャラクタオブジェクトを表示するゲーム装置のコンピュータを、
前記キャラクタオブジェクトの各部分の輪郭を形成するための輪郭情報を生成する輪郭情報生成部、
前記輪郭情報に基づいて、前記キャラクタオブジェクトの第１部分の輪郭に沿う線ポリゴンモデルである第１線モデルを生成する第１線モデル生成部、
前記輪郭情報に基づいて、前記キャラクタオブジェクトの第２部分の輪郭に沿う線ポリゴンモデルであって、前記第１線モデルよりもＺ奥に配置される第２線モデルを生成する第２線モデル生成部、
前記輪郭情報に基づいて、前記第１線モデルよりＺ奥かつ前記第２線モデルよりＺ手前に配置される透明ポリゴンモデルであって、前記第１部分に沿った輪郭を有する第１マスクモデルを生成する第１マスクモデル生成部、
背景を描画する背景描画部、および
前記背景描画部による描画の後に各前記モデルをＺ比較を行いながら描画していくモデル描画処理部として機能させ、
前記モデル描画処理部は、
最初に前記第１マスクモデルを描画し、
前記第１マスクモデルの後に前記第２線モデルを描画し、そして
前記第２線モデルの後に前記第１線モデルを描画する、ゲームプログラム。
【請求項１３】
３次元仮想空間内のキャラクタオブジェクトを表示するゲームシステムであって、
前記キャラクタオブジェクトの各部分の輪郭を形成するための輪郭情報を生成する輪郭情報生成部、
前記輪郭情報に基づいて、前記キャラクタオブジェクトの第１部分の輪郭に沿う線ポリゴンモデルである第１線モデルを生成する第１線モデル生成部、
前記輪郭情報に基づいて、前記キャラクタオブジェクトの第２部分の輪郭に沿う線ポリゴンモデルであって、前記第１線モデルよりもＺ奥に配置される第２線モデルを生成する第２線モデル生成部、
前記輪郭情報に基づいて、前記第１線モデルよりＺ奥かつ前記第２線モデルよりＺ手前に配置される透明ポリゴンモデルであって、前記第１部分に沿った輪郭を有する第１マスクモデルを生成する第１マスクモデル生成部、
背景を描画する背景描画部、および
前記背景描画部による描画の後に各前記モデルをＺ比較を行いながら描画していくモデル描画処理部を備え、
前記モデル描画処理部は、
最初に前記第１マスクモデルを描画し、
前記第１マスクモデルの後に前記第２線モデルを描画し、そして
前記第２線モデルの後に前記第１線モデルを描画する、ゲームシステム。
【請求項１４】
３次元仮想空間内のキャラクタオブジェクトを表示するゲーム装置であって、
前記キャラクタオブジェクトの各部分の輪郭を形成するための輪郭情報を生成する輪郭情報生成部、
前記輪郭情報に基づいて、前記キャラクタオブジェクトの各部分の輪郭に沿う線ポリゴンモデルである各線モデルを生成する線モデル生成部、
前記輪郭情報に基づいて、前記キャラクタオブジェクトの少なくとも１つの部分について、当該部分に沿った輪郭を有する透明ポリゴンモデルであるマスクモデルを生成するマスクモデル生成部、
各前記線モデルのＺ方向の配列を示すＺ配列情報を生成するＺ配列情報生成部、
各前記線モデルの描画順序を示すＺソート情報を生成するＺソート情報生成部、
背景を描画する背景描画部、および
前記背景描画部による描画の後に、各前記モデルを前記Ｚソート情報に従う順序で、前記Ｚソート情報に基づくＺ比較を行いながら描画していくモデル描画処理部を備え、
前記Ｚソート情報生成部は、
各前記線モデルのうちマスク対象の線モデルよりも先に、各前記マスクモデルを前記Ｚ配列情報に従う順序で描画させ、そして
各前記マスクモデルの後に、各前記線モデルを前記Ｚ配列情報に従う順序で描画させるようなＺソート情報を生成する、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ゲーム装置、ゲームプログラムおよびゲームシステムに関し、特にたとえば、オブジェクトを輪郭で表現する、ゲーム装置、ゲームプログラムおよびゲームシステムに関する。
【背景技術】
【０００２】
従来、この種の画像処理装置として非特許文献１に開示されたものが知られている。この背景技術では、プレイヤがペンでタッチスクリーンに絵を描くと、その絵が画面内で動き出す。
【非特許文献１】株式会社バンダイナムコゲームス、“パックピクス”（登録商標）、［ｏｎｌｉｎｅ］、［平成２２年５月２５日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｂａｎｄａｉｎａｍｃｏｇａｍｅｓ．ｃｏ．ｊｐ／ｃｓ／ｌｉｓｔ／ｐａｃ−ｐｉｘ／ｉｎｄｅｘ．ｐｈｐ＞
【発明の概要】
【発明が解決しようとする課題】
【０００３】
上記の背景技術では、画面内で動く絵は、「パックマン」（登録商標）のような単純な図形（一筆書きによる線画）であって、図形（を形成する線で囲まれた部分）を通して奥の背景が見えており、また、移動したり向きを変えたりといった単純な動きしか表現できなかった。
【０００４】
そこで、たとえば、体と足を持ったキャラクタを画面内に登場させ、体とは独立に足を動かすことで、“歩く”といった複雑な動きを表現することが考えられる。さらには、足が体の奥に位置する状態で、体（を形成する線で囲まれた部分）を通して足が見えないようにする（足が体の後ろに隠れているように見せる）ことで単なる線ではなく輪郭らしい表現をすることも考えられる。
【０００５】
しかし、背景技術では、タッチスクリーンに手書きするので、複雑なキャラクタは生成が困難である。また、仮に、体と足を持ったキャラクタを生成できたとしても、体と独立に足を動かすことは困難である。さらには、仮に、足が体の奥に位置する状態で、体を通して足が見えないようにしたとすると、体を通して背景も見えなくなってしまうので、背景の透視性という線画の特徴が損なわれる。
【０００６】
一方、背景の透視性を優先すると、体を通して足も見えることになるが、これは、特に、既存のキャラクタを線画で表現する場合に、プレイヤに違和感を覚えさせる要因となる。
【０００７】
それゆえに、この発明の主たる目的は、新規な、ゲーム装置、ゲームプログラムおよびゲームシステムを提供することである。
【０００８】
この発明の他の目的は、複雑な線形状を有し、かつ多様な動きをするキャラクタオブジェクトを生成して、背景の透視性という線画の特徴を損なうことなく、しかも違和感なしに描画することができる、ゲーム装置、ゲームプログラムおよびゲームシステムを提供することである。
【課題を解決するための手段】
【０００９】
この発明は、上記の課題を解決するために、以下の構成を採用した。
【００１０】
第１の発明は、３次元仮想空間内のキャラクタオブジェクトを表示するゲーム装置であって、キャラクタオブジェクトの各部分の輪郭を形成するための輪郭情報を生成する輪郭情報生成部、輪郭情報に基づいて、キャラクタオブジェクトの第１部分の輪郭に沿う線ポリゴンモデルである第１線モデルを生成する第１線モデル生成部、輪郭情報に基づいて、キャラクタオブジェクトの第２部分の輪郭に沿う線ポリゴンモデルであって、第１線モデルよりもＺ奥に配置される第２線モデルを生成する第２線モデル生成部、輪郭情報に基づいて、第１線モデルよりＺ奥かつ第２線モデルよりＺ手前に配置される透明ポリゴンモデルであって、第１部分に沿った輪郭を有する第１マスクモデルを生成する第１マスクモデル生成部、背景を描画する背景描画部、および背景描画部による描画の後に各モデルをＺ比較を行いながら描画していくモデル描画処理部を備え、モデル描画処理部は、最初に第１マスクモデルを描画し、第１マスクモデルの後に第２線モデルを描画し、そして第２線モデルの後に第１線モデルを描画する。
【００１１】
第１の発明では、輪郭情報生成部が、キャラクタオブジェクトの各部分の輪郭を形成するための輪郭情報を生成する。なお、輪郭情報は、好ましくは下記第３の発明のように、輪郭に沿う各点の座標情報を含むが、このような座標情報に代えて、輪郭に沿う線それ自体を示す情報を含んでもよい。
【００１２】
この輪郭情報に基づいて、第１線モデル生成部は、キャラクタオブジェクトの第１部分の輪郭に沿う線ポリゴンモデルである第１線モデルを生成し、第２線モデル生成部は、キャラクタオブジェクトの第２部分の輪郭に沿う線ポリゴンモデルであって、第１線モデルよりもＺ奥に配置される第２線モデルを生成し、そして第１マスクモデル生成部は、第１線モデルよりＺ奥かつ第２線モデルよりＺ手前に配置される透明ポリゴンモデルであって、第１部分に沿った輪郭を有する第１マスクモデルを生成する。
【００１３】
こうして生成された各モデルは、背景描画部による背景描画の後に、モデル描画処理部によってＺ比較を行いながら、最初に第１マスクモデル、第１マスクモデルの後に第２線モデル、そして第２線モデルの後に第１線モデル、という順序で描画される。
【００１４】
第１の発明によれば、輪郭情報を生成し、これに基づいて、キャラクタオブジェクトの各部分の輪郭に沿う線ポリゴンモデルを生成するので、輪郭情報を通しして、複雑な線形状を有し、かつ多様な動きをするキャラクタオブジェクトを生成することができる。
【００１５】
また、このようなキャラクタオブジェクトを描画する際には、背景描画の後、最初に第１マスクモデルを描画したことで、第１線モデルおよび第２線モデルはいずれも、第１マスクモデルとのＺ比較を受ける。第１線モデルは、第１マスクモデルよりもＺ手前なので、第１マスクモデルによるマスクを受けることなく描画される。一方、第２線モデルは、第１マスクモデルよりもＺ奥なので、第１マスクモデルと重なる部分はマスクされ、第１マスクモデルと重ならない部分だけが描画される。また、第１マスクモデルは透明なので、背景の見通しには影響しない。したがって、第１線モデルの内部（第１線モデルで囲まれた部分）を通して、背景は見えているのに、第２線モデルは見えないようにできる。こうして、背景の透視性という線画の特徴を損なうことなく、しかも違和感なしに、キャラクタオブジェクトを描画することができる。
【００１６】
なお、キャラクタオブジェクトに加えて、これよりもＺ奥に配置される他のオブジェクトをさらに描画する場合、第１マスクモデルの前に他のオブジェクトを描画することで、第１線モデルの内部を通して他のオブジェクトが見えるようにできる。
【００１７】
第２の発明は、第１の発明に従属するゲーム装置であって、輪郭情報に基づいて、キャラクタオブジェクトの第３部分の輪郭に沿う線ポリゴンモデルであって、第１線モデルよりもＺ手前に配置される第３線モデルを生成する第３線モデル生成部、および、輪郭情報に基づいて、第１線モデルよりＺ手前かつ第３線モデルよりＺ奥に配置される透明ポリゴンモデルであって、第３部分に沿った輪郭を有する第２マスクモデルを生成する第２スクモデル生成部をさらに備え、モデル描画処理部はさらに、第１マスクモデルの後であって第２線モデルよりも先に第２マスクモデルを描画し、そして第１線モデルの後に第３線モデルを描画する。
【００１８】
第２の発明では、輪郭情報に基づいてさらに、第３線モデル生成部が、キャラクタオブジェクトの第３部分の輪郭に沿う線ポリゴンモデルであって、第１線モデルよりもＺ手前に配置される第３線モデルを生成し、第２スクモデル生成部は、第１線モデルよりＺ手前かつ第３線モデルよりＺ奥に配置される透明ポリゴンモデルであって、第３部分に沿った輪郭を有する第２マスクモデルを生成する。モデル描画処理部はさらに、第１マスクモデルの後であって第２線モデルよりも先に第２マスクモデルを描画し、そして第１線モデルの後に第３線モデルを描画する。
【００１９】
第２の発明によれば、背景描画の後、最初に第１マスクモデルを描画し、次いで第２マスクモデルを描画したことで、第１線モデル，第２線モデルおよび第３線モデルはいずれも、第１マスクモデルさらには第２マスクモデルとのＺ比較を受ける。なお、第１マスクモデルよりも先に第２マスクモデルを描画すると、Ｚ比較によって第１マスクモデルに欠損が生じる場合があり、好ましくない。
【００２０】
第１線モデルは、第１マスクモデルよりＺ手前なので、第１マスクモデルによるマスクを受けることはないが、第２マスクモデルよりはＺ奥なので、第２マスクモデルと重なる部分はマスクされ、第２マスクモデルと重ならない部分だけが描画される。第２線モデルは、第１マスクモデルおよび第２マスクモデルのいずれよりもＺ奥なので、第１マスクモデルおよび／または第２マスクモデルと重なる部分はマスクされ、第１マスクモデルおよび第２マスクモデルのいずれとも重ならない部分だけが描画される。第３線モデルは、第１マスクモデルおよび第２マスクモデルのいずれよりもＺ手前なので、第１マスクモデルおよび第２マスクモデルのいずれによるマスクも受けることなく描画される。また、第２マスクモデルも、第１マスクモデルと同様に透明なので、背景の見通しには影響しない。
【００２１】
したがって、第１線モデルおよび／または第３線モデルの内部（第１線モデルおよび／または第３線モデルで囲まれた部分）を通して、背景は見えているのに、第２線モデルは見えないようにできる。
【００２２】
第３の発明は、第１または第２の発明に従属するゲーム装置であって、輪郭情報は、輪郭に沿う各点の座標情報を含む。
【００２３】
第３の発明では、各部分の輪郭は、これに沿う各点の座標情報に基づいて形成される。
【００２４】
第３の発明によれば、輪郭に沿う各点の座標を制御することで、多彩な輪郭を効率よく生成できる。
【００２５】
第４の発明は、第３の発明に従属するゲーム装置であって、操作装置から入力を受け付ける受け付け部、および、受け付け部によって受け付けられた入力に応じて、および／または所定のアルゴリズムに基づいて、キャラクタオブジェクトに対するアニメーション制御を含むゲーム処理を繰り返し実行するゲーム処理部をさらに備え、輪郭情報生成部は、ゲーム処理の実行に関連して座標情報を生成する。
【００２６】
第４の発明では、操作装置からの入力に応じて、および／または所定のアルゴリズムに基づいて、キャラクタオブジェクトに対するアニメーション制御を含むゲーム処理が実行される。各点の座標情報は、このようなゲーム処理の実行に関連して生成される。
【００２７】
第４の発明によれば、アニメーション制御に従って動的に変化するような輪郭の生成が可能になる。この結果、より複雑な動きを表現することができる。
【００２８】
第５の発明は、第４の発明に従属するゲーム装置であって、輪郭情報生成部は、アニメーション制御によるキャラクタオブジェクトの移動状態に応じて座標情報をオフセットさせる。
【００２９】
第５の発明によれば、座標情報をアニメーション制御による移動状態に応じてオフセットさせることで、キャラクタオブジェクトには移動状態に応じた変形が生じる。たとえば、キャラクタオブジェクトに“ジャンプ”アニメーションを加える場合、あたかも空気抵抗によって進行方向とは逆向きに引っ張られたかような変形を生じさせることができる。
【００３０】
第６の発明は、第５の発明に従属するゲーム装置であって、輪郭情報は、輪郭に沿う各点の移動状態に応じたオフセットの度合いを示すパラメータ情報をさらに含み、輪郭情報生成部は、パラメータ情報に基づいて各点のオフセット量を変化させる。
【００３１】
第６の発明では、パラメータ情報を通して各点のオフセット量を変化させることで、変形の度合いを部分的に制御することができる。たとえば、キャラクタオブジェクトに“ジャンプ”アニメーションを加える場合、頭頂部は大きく、こう頬や背中は小さくオフセットさせることで、進行方向とは逆向きに引っ張られたような自然な変形が可能となる。
【００３２】
第７の発明は、第３ないし第５のいずれかの発明に従属するゲーム装置であって、各線モデル生成部は、各部分の輪郭に沿う所定幅の線ポリゴンモデルを座標情報に基づいて生成する。
【００３３】
第７の発明では、輪郭に沿う所定幅の線ポリゴンモデルは、座標情報に基づいて生成される。
【００３４】
第８の発明は、第７の発明に従属するゲーム装置であって、各線モデル生成部は、輪郭に対する法線ベクトルを各点において求め、各点に対して、当該点における法線ベクトルと平行でかつ所定幅を有する線分を割り当て、そして、各線分の一対の端点を共通の頂点とするような一連のポリゴンを生成する。
【００３５】
第８の発明では、点毎に法線を求めて、各法線にこれと平行な一定幅の線分を割り当て、そして各線分の一対の端点を共通の頂点とする（各線分を介して連結された）ような一連のポリゴンを生成する。
【００３６】
第７および第８の発明によれば、輪郭に沿う所定幅の線ポリゴンモデルが容易に得られる。
【００３７】
第９の発明は、第８の発明に従属するゲーム装置であって、モデル描画処理部は、各線モデルを描画する際に、一連のポリゴンを所定数個（たとえば２個）一組に区切りながら単位テクスチャを繰り返しマッピングする。
【００３８】
第１０の発明は、第９の発明に従属するゲーム装置であって、単位テクスチャの繰り返しマッピングによって毛糸模様が形成される。
【００３９】
第９および第１０の発明によれば、毛糸など同じ模様が繰り返すテクスチャを各線モデルに効率よくマッピングできる。
【００４０】
第１１の発明は、第１ないし第１０のいずれかの発明に従属するゲーム装置であって、各線モデルのＺ方向の配列を示すＺ配列情報を生成するＺ配列情報生成部、および各線モデルの描画順序を示すＺソート情報を生成するＺソート情報生成部をさらに備え、モデル描画処理部は、Ｚソート情報に従う順序で、Ｚ配列情報に基づくＺ比較を行いながら、各線モデルを描画する。
【００４１】
第１１の発明によれば、Ｚ配列情報およびＺソート情報を通して、各線モデルの動的な描画制御が可能となる。
【００４２】
第１２の発明は、３次元仮想空間内のキャラクタオブジェクトを表示するゲーム装置のコンピュータを、キャラクタオブジェクトの各部分の輪郭を形成するための輪郭情報を生成する輪郭情報生成部、輪郭情報に基づいて、キャラクタオブジェクトの第１部分の輪郭に沿う線ポリゴンモデルである第１線モデルを生成する第１線モデル生成部、輪郭情報に基づいて、キャラクタオブジェクトの第２部分の輪郭に沿う線ポリゴンモデルであって、第１線モデルよりもＺ奥に配置される第２線モデルを生成する第２線モデル生成部、輪郭情報に基づいて、第１線モデルよりＺ奥かつ第２線モデルよりＺ手前に配置される透明ポリゴンモデルであって、第１部分に沿った輪郭を有する第１マスクモデルを生成する第１マスクモデル生成部、背景を描画する背景描画部、および背景描画部による描画の後に各モデルをＺ比較を行いながら描画していくモデル描画処理部として機能させるためのゲームプログラムであり、モデル描画処理部は、最初に第１マスクモデルを描画し、第１マスクモデルの後に第２線モデルを描画し、そして第２線モデルの後に第１線モデルを描画する。
【００４３】
第１３の発明は、３次元仮想空間内のキャラクタオブジェクトを表示するゲームシステムであって、キャラクタオブジェクトの各部分の輪郭を形成するための輪郭情報を生成する輪郭情報生成部、輪郭情報に基づいて、キャラクタオブジェクトの第１部分の輪郭に沿う線ポリゴンモデルである第１線モデルを生成する第１線モデル生成部、輪郭情報に基づいて、キャラクタオブジェクトの第２部分の輪郭に沿う線ポリゴンモデルであって、第１線モデルよりもＺ奥に配置される第２線モデルを生成する第２線モデル生成部、輪郭情報に基づいて、第１線モデルよりＺ奥かつ第２線モデルよりＺ手前に配置される透明ポリゴンモデルであって、第１部分に沿った輪郭を有する第１マスクモデルを生成する第１マスクモデル生成部、背景を描画する背景描画部、および背景描画部による描画の後に各モデルをＺ比較を行いながら描画していくモデル描画処理部を備え、モデル描画処理部は、最初に第１マスクモデルを描画し、第１マスクモデルの後に第２線モデルを描画し、そして第２線モデルの後に第１線モデルを描画する。
【００４４】
第１２，第１３の各発明でも、第１の発明と同様に、輪郭情報を通して、複雑な線形状を有し、かつ多様な動きをするキャラクタオブジェクトを生成することができる。また、こうして生成されたキャラクタオブジェクトを、背景の透視性という線画の特徴を損なうことなく、しかも違和感なしに、描画することができる。
【００４５】
第１４の発明は、３次元仮想空間内のキャラクタオブジェクトを表示するゲーム装置であって、キャラクタオブジェクトの各部分の輪郭を形成するための輪郭情報を生成する輪郭情報生成部、輪郭情報に基づいて、キャラクタオブジェクトの各部分の輪郭に沿う線ポリゴンモデルである各線モデルを生成する線モデル生成部、輪郭情報に基づいて、キャラクタオブジェクトの少なくとも１つの部分について、当該部分に沿った輪郭を有する透明ポリゴンモデルであるマスクモデルを生成するマスクモデル生成部、各線モデルのＺ方向の配列を示すＺ配列情報を生成するＺ配列情報生成部、各線モデルの描画順序を示すＺソート情報を生成するＺソート情報生成部、背景を描画する背景描画部、および、背景描画部による描画の後に、各モデルをＺソート情報に従う順序で、Ｚソート情報に基づくＺ比較を行いながら描画していくモデル描画処理部を備え、Ｚソート情報生成部は、各線モデルのうちマスク対象の線モデルよりも先に、各マスクモデルをＺ配列情報に従う順序で描画させ、そして、各マスクモデルの後に、各線モデルをＺ配列情報に従う順序で描画させるためのＺソート情報を生成する。
【００４６】
なお、マスクしたくない線モデルは、各マスクモデルよりも先に描画すればよい。
【００４７】
第１４の発明では、輪郭情報生成部が、キャラクタオブジェクトの各部分の輪郭を形成するための輪郭情報を生成する。この輪郭情報に基づいて、線モデル生成部は、キャラクタオブジェクトの各部分の輪郭に沿う線ポリゴンモデルである各線モデルを生成し、マスクモデル生成部は、キャラクタオブジェクトの少なくとも１つの部分について、当該部分に沿った輪郭を有する透明ポリゴンモデルであるマスクモデルを生成する。また、Ｚ配列情報生成部は、各線モデルのＺ方向の配列を示すＺ配列情報を生成し、Ｚソート情報生成部は、各線モデルの描画順序を示すＺソート情報を生成する。
【００４８】
こうして生成された各モデルは、背景描画部による背景描画の後に、モデル描画処理部によって、Ｚソート情報に従う順序で、Ｚソート情報に基づくＺ比較を行いながら描画される。Ｚソート情報には、各線モデルのうちマスク対象の線モデルよりも先に、各マスクモデルをＺ配列情報に従う順序で描画させ、そして、各マスクモデルの後に、各線モデルをＺ配列情報に従う順序で描画させる旨が記述される。
【００４９】
第１４の発明によれば、輪郭情報を生成し、これに基づいて、キャラクタオブジェクトの各部分の輪郭に沿う線ポリゴンモデルを生成するので、輪郭情報を通して、複雑な線形状を有し、かつ多様な動きをするキャラクタオブジェクトを生成することができる。
【００５０】
また、このようなキャラクタオブジェクトを描画する際には、背景描画の後、各線モデルのうちマスクしたい線モデルよりも先に各マスクモデルを描画することで、マスクしたい線モデルはどれも、各マスクモデルとのＺ比較を受ける。マスクモデル間の描画順序はＺ配列情報に従うので、どのマスクモデルにも欠損が生じることはない。各マスクモデルよりもＺ手前の線モデルは、いずれのマスクモデルによるマスクを受けることなく描画される。一方、各マスクモデルよりもＺ奥の線モデルは、少なくとも１つのマスクモデルと重なる部分はマスクされ、どのマスクモデルとも重ならない部分だけが描画される。そして、各マスクモデルはどれも透明なので、背景の見通しには影響しない。したがって、各線モデルの内部（各線モデルで囲まれた部分）を通して、背景は見えているのに、当該線モデルよりもＺ奥の各線モデルは見えないようにできる。こうして、背景の透視性という線画の特徴を損なうことなく、しかも違和感なしに、キャラクタオブジェクトを描画することができる。
【発明の効果】
【００５１】
この発明によれば、複雑な線形状を有し、かつ多様な動きをするキャラクタオブジェクトを生成して、背景の透視性という線画の特徴を損なうことなく、しかも違和感なしに描画することができる、ゲーム装置およびゲームプログラムが実現される。
【００５２】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００５３】
【図１】この発明のゲームシステムの一実施例を示す図解図である。
【図２】ゲームシステムの電気的な構成を示すブロック図である。
【図３】第１コントローラの外観を説明するための図解図である。
【図４】第２コントローラの外観を説明するための図解図である。
【図５】コントローラ（第１コントローラおよび第２コントローラを互いに接続したもの）の電気的な構成を示すブロック図である。
【図６】コントローラを用いて仮想ゲームをプレイするときの状態を概説するための図解図である。
【図７】マーカおよびコントローラの視野角を説明するための図解図である。
【図８】コントローラによる撮像画像の一例を示す図解図である。
【図９】ゲーム画面の一例を示す図解図である。
【図１０】キャラクタを描画する処理の概要を説明するための図解図であり、（Ａ）が制御点を定義する処理を示し、（Ｂ）が制御点から線モデルを生成する処理を示す。
【図１１】制御点から線モデルを生成する処理の詳細を説明するための図解図であり、（Ａ）が各制御点の法線ベクトルを求める処理を示し、（Ｂ）が各制御点に一対のオフセット点を割り付ける処理を示し、そして（Ｃ）がオフセット点を繋いでポリゴンを生成する処理を示す。
【図１２】ポリゴンに貼り付けられるテクスチャを示す図解図であり、（Ａ）が単位テクスチャを示し、（Ｂ）が単位テクスチャに基づく周期的なテクスチャを示す。
【図１３】オフセット点の繋ぎ変えによる重ね書きの補正を示す図解図であり、（Ａ）が繋ぎかえる前のオフセット点を示し、（Ｂ）が繋ぎ変えた後のオフセット点を示す。
【図１４】図１３の補正の効果を示す図解図であり、（Ａ）が補正前の線モデルの一例を示し、（Ｂ）が補正後の線モデルの一例を示す。
【図１５】線モデルの端点処理の一例を示す図解図である。
【図１６】プレイヤキャラクタの描画例を示す図解図であり、（Ａ）が停止状態を示し、（Ｂ）が“歩き”アニメーションに従う移動状態を示す。
【図１７】プレイヤキャラクタの他の描画例を示す図解図であり、（Ａ）が“ジャンプ”アニメーションに従う移動状態（オフセットなし）を示し、（Ｂ）が（Ａ）の移動状態で生じるオフセット（変形）を示す。
【図１８】プレイヤキャラクタを構成する各要素のＺ位置を示す図解図であり、（Ａ）が図１６（Ａ）の停止状態に対応し、（Ｂ）が図１６（Ｂ）の“歩き”状態に対応する。
【図１９】メインメモリのメモリマップの一部を示す図解図である。
【図２０】図１８（Ａ）に対応するＺデータの一例を示す図解図であり、（Ａ）が描画用Ｚデータを示し、（Ｂ）がソートＺデータを示す。
【図２１】図１８（Ｂ）に対応するＺデータの他の一例を示す図解図であり、（Ａ）が描画用Ｚデータを示し、（Ｂ）がソートＺデータを示す。
【図２２】ＣＰＵ動作の一部を示すフロー図である。
【図２３】ＣＰＵ動作の他の一部を示すフロー図である。
【図２４】ＣＰＵ動作の他の一部を示すフロー図である。
【図２５】ＣＰＵ動作のその他の一部を示すフロー図である。
【図２６】（Ａ）はプレイヤキャラクタが敵キャラクタと重なった場合の描画例を示す図解図であり、（Ｂ）は（Ａ）に対応する描画用Ｚデータを示し、（Ｃ）は（Ａ）に対応するソート用Ｚデータを示す。
【発明を実施するための形態】
【００５４】
図１を参照して、この発明の一実施例であるゲームシステム１０は、ゲーム装置１２およびコントローラ１４を含む。図示は省略するが、この実施例のゲーム装置１２は、最大４つのコントローラ１４と通信可能に設計されている。また、ゲーム装置１２と各コントローラ１４とは、無線によって接続される。たとえば、無線通信は、ＭＰ(Multilink Protocol)またはＢｌｕｅｔｏｏｔｈ（登録商標）規格に従って実行されるが、赤外線や無線ＬＡＮなど他の規格に従って実行されてもよい。さらには、有線で接続されてもよい。
【００５５】
ゲーム装置１２は、略直方体のハウジング１６を含み、ハウジング１６の前面にはディスクスロット１８が設けられる。ディスクスロット１８から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク２４が挿入されて、ハウジング１６内のディスクドライブ５４（図２参照）に装着される。図示は省略するが、ディスクスロット１８の周囲には、ＬＥＤと導光板とが配置され、様々な処理に応答させて、ディスクスロット１８を点灯または点滅させることが可能である。
【００５６】
また、ゲーム装置１２のハウジング１６の前面の上部には、電源ボタン２０ａおよびリセットボタン２０ｂが設けられ、その下部には、イジェクトボタン２０ｃが設けられる。さらに、リセットボタン２０ｂとイジェクトボタン２０ｃとの間であり、ディスクスロット１８の近傍には、外部メモリカード用コネクタカバー２２が設けられる。この外部メモリカード用コネクタカバー２２の内側には、外部メモリカード用コネクタ６２（図２参照）が設けられ、外部メモリカード３８（以下、単に「メモリカード３８」という。）が挿入される。メモリカード３８は、光ディスク２４から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（ゲームの結果データまたは途中データ、あるいは後述するリプレイデータ）を保存（セーブ）しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカード３８に対して行うことに代えて、たとえばゲーム装置１２の内部に設けられるフラッシュメモリ４４（図２参照）のような内部メモリに対して行うようにしてもよい。また、メモリカード３８は、内部メモリのバックアップメモリとして用いるようにしてもよい。さらに、ゲーム装置１２では、ゲーム以外の他のアプリケーションを実行することも可能であり、かかる場合には、メモリカード３８には当該他のアプリケーションのデータを保存することができる。
【００５７】
なお、メモリカード３８としては、汎用のＳＤカードを用いることができるが、メモリスティックやマルチメディアカード（登録商標）のような他の汎用のメモリカードを用いることもできる。メモリカード３８は、ゲーム装置１２と同様の構成を有する他のゲーム装置でも利用することができるので、ゲームデータをメモリカード３８を介して他のプレイヤに提供することもできる。
【００５８】
図１では省略するが、ゲーム装置１２のハウジング１６の後面には、ＡＶコネクタ５８（図２参照）が設けられ、そのＡＶコネクタ５８を用いて、ＡＶケーブル２６を通してゲーム装置１２にモニタ２８およびスピーカ３０を接続する。このモニタ２８およびスピーカ３０は典型的にはカラーテレビジョン受像機であり、ＡＶケーブル２６によって、ゲーム装置１２からの映像信号がカラーテレビのビデオ入力端子に入力され、ゲーム装置１２からの音声信号が音声入力端子に入力される。したがって、カラーテレビ（モニタ）２８の画面上にたとえば３次元（３Ｄ）ビデオゲームの仮想３次元ゲーム画像が表示され、左右のスピーカ３０からゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ２８の周辺（この実施例では、モニタ２８の上側）には、２つの赤外ＬＥＤ（マーカ）３２Ａおよび３２Ｂを備えるマーカ部３２が設けられる。このマーカ部３２は、電源線３２ｃを通してゲーム装置１２に接続される。したがって、マーカ部３２には、ゲーム装置１２から電源が供給される。これによって、マーカ３２Ａおよび３２Ｂは発光し、それぞれモニタ２８の前方に向けて赤外光を出力する。
【００５９】
なお、ゲーム装置１２の電源は、一般的なＡＣアダプタ（図示せず）によって与えられる。ＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置１２は、家庭用電源（商用電源）を、駆動に適した低いＤＣ電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【００６０】
コントローラ１４は、詳細は後述されるが、第１の操作ユニットおよび第２の操作ユニットとして、それぞれが片手で把持可能な第１コントローラ３４および第２コントローラ３６を含む。第２コントローラ３６の後端から延びるケーブル３６ａの先端にはコネクタ３６ｂが設けられており、当該コネクタ３６ｂは、第１コントローラ３４の後端面に設けられるコネクタ３４ａ（図３、図５）に接続される。第２コントローラ３６において取得される入力データは、ケーブル３６ａを介して第１コントローラ３４に与えられる。第１コントローラ３４は、第１コントローラ３４自身の入力データと第２コントローラ３６の入力データとを含むコントローラデータをゲーム装置１２に送信する。
【００６１】
このゲームシステム１０において、ユーザまたはプレイヤがゲーム（またはゲームに限らず、他のアプリケーション）をプレイするために、ユーザは電源スイッチ２０ａによってまずゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）のプログラムを記録している適宜の光ディスク２４を選択し、その光ディスク２４をゲーム装置１２のディスクドライブ５４にローディングする。応じて、ゲーム装置１２がその光ディスク２４に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始める。ユーザはゲーム装置１２に入力を与えるためにコントローラ１４を操作する。たとえば操作部８２のどれかの操作ボタンを操作することによって、ゲームもしくは他のアプリケーションをスタートさせる。また、操作部８２に対する操作以外にも、コントローラ１４自体を動かすことによって、動画オブジェクト（プレイヤオブジェクト）を異なる方向に移動させ、または３Ｄのゲーム世界におけるユーザの視点（仮想カメラの位置）を変化させることができる。
【００６２】
ただし、ビデオゲームや他のアプリケーションのプログラムは、ゲーム装置１２の内部メモリ（フラッシュメモリ４４（図２参照））に記憶（インストール）しておき、当該内部メモリから実行するようにしてもよい。かかる場合には，光ディスク２４のような記憶媒体に記憶されたプログラムを内部メモリにインストールしてもよいし、ダウンロードされたプログラムを内部メモリにインストールしてもよい。
【００６３】
図２は図１実施例のゲームシステム１０の電気的な構成を示すブロック図である。図示は省略するが、ハウジング１６内の各コンポーネントは、プリント基板に実装される。図２に示すように、ゲーム装置１２には、ＣＰＵ４０が設けられ、ゲームプロセッサとして機能する。また、ＣＰＵ４０には、システムＬＳＩ４２が接続される。このシステムＬＳＩ４２には、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８、ディスクドライブ５４およびＡＶ  ＩＣ５６が接続される。
【００６４】
外部メインメモリ４６は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりして、ＣＰＵ４０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ４８は、いわゆるブートＲＯＭであり、ゲーム装置１２の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ５４は、光ディスク２４からプログラムやテクスチャデータ等を読み出し、ＣＰＵ４０の制御の下で、後述する内部メインメモリ４２ｅまたは外部メインメモリ４６に書き込む。
【００６５】
システムＬＳＩ４２には、入出力プロセッサ４２ａ、ＧＰＵ(Graphics Processor Unit)４２ｂ，ＤＳＰ(Digital Signal Processor)４２ｃ，ＶＲＡＭ４２ｄおよび内部メインメモリ４２ｅが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。入出力プロセッサ（Ｉ／Ｏプロセッサ）４２ａは、データの送受信を実行したり、データのダウンロードを実行したりする。ＧＰＵ４２ｂは、描画手段の一部を形成し、ＣＰＵ４０からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、ＣＰＵ４０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ４２ｂに与える。
【００６６】
図示は省略するが、上述したように、ＧＰＵ４２ｂにはＶＲＡＭ４２ｄが接続される。ＧＰＵ４２ｂが作画命令を実行するにあたって必要なデータ（画像データ：ポリゴンデータやテクスチャデータなどのデータ）は、ＧＰＵ４２ｂがＶＲＡＭ４２ｄにアクセスして取得する。ただし、ＣＰＵ４０は、描画に必要な画像データを、ＧＰＵ４２ｂを介してＶＲＡＭ４２ｄに書き込む。ＧＰＵ４２ｂは、ＶＲＡＭ４２ｄにアクセスして描画のためのゲーム画像データを作成する。
【００６７】
なお、この実施例では、ＧＰＵ４２ｂがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、ＧＰＵ４２ｂは当該任意のアプリケーションについての画像データを生成する。
【００６８】
また、ＤＳＰ４２ｃは、オーディオプロセッサとして機能し、内部メインメモリ４２ｅや外部メインメモリ４６に記憶されるサウンドデータや音波形（音色）データを用いて、スピーカ３０から出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【００６９】
上述のように生成されたゲーム画像データおよびオーディオデータは、ＡＶ  ＩＣ５６によって読み出され、ＡＶコネクタ５８を介してモニタ２８およびスピーカ３０に出力される。したがって、ゲーム画面がモニタ２８に表示され、ゲームに必要な音（音楽）がスピーカ３０から出力される。
【００７０】
また、入出力プロセッサ４２ａには、フラッシュメモリ４４、無線通信モジュール５０および無線コントローラモジュール５２が接続されるとともに、拡張コネクタ６０およびメモリカード用コネクタ６２が接続される。また、無線通信モジュール５０にはアンテナ５０ａが接続され、無線コントローラモジュール５２にはアンテナ５２ａが接続される。
【００７１】
入出力プロセッサ４２ａは、無線通信モジュール５０を介して、ネットワークに接続された他のゲーム装置やサーバ（いずれも図示せず）と通信することができる。入出力プロセッサ４２ａは、定期的にフラッシュメモリ４４にアクセスし、ネットワークへ送信する必要があるデータ（「送信データ」とする）の有無を検出し、当該送信データが有る場合には、無線通信モジュール５０およびアンテナ５０ａを介してネットワークに送信する。また、入出力プロセッサ４２ａは、他のゲーム装置から送信されるデータ（「受信データ」とする）を、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、当該受信データをフラッシュメモリ４４に記憶する。ただし、受信データが一定の条件を満たさない場合には、当該受信データはそのまま破棄される。さらに、入出力プロセッサ４２ａは、ネットワークに接続されたサーバからダウンロードしたデータ（ダウンロードデータとする）をネットワーク、アンテナ５０ａおよび無線通信モジュール５０を介して受信し、そのダウンロードデータをフラッシュメモリ４４に記憶することもできる。
【００７２】
また、入出力プロセッサ４２ａは、コントローラ１４から送信される入力データをアンテナ５２ａおよび無線コントローラモジュール５２を介して受信し、内部メインメモリ４２ｅまたは外部メインメモリ４６のバッファ領域に記憶（一時記憶）する。入力データは、ＣＰＵ４０の処理（たとえば、ゲーム処理）によって利用された後、バッファ領域から消去される。
【００７３】
ただし、入出力プロセッサ４２ａは、無線通信モジュール５０を介して、ネットワークを通すことなく直接的に、他のゲーム装置と通信することも可能である。
【００７４】
さらに、入出力プロセッサ４２ａには、拡張コネクタ６０およびメモリカード用コネクタ６２が接続される。拡張コネクタ６０は、ＵＳＢやＳＣＳＩのようなインタフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、コントローラ１４とは異なる他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ６０に有線ＬＡＮアダプタを接続し、無線通信モジュール５０に代えて当該有線ＬＡＮを利用することもできる。メモリカード用コネクタ６２には、メモリカード３８のような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ４２ａは、拡張コネクタ６０やメモリカード用コネクタ６２を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００７５】
詳細な説明は省略するが、図１にも示したように、ゲーム装置１２（ハウジング１６）には、電源ボタン２０ａ，リセットボタン２０ｂおよびイジェクトボタン２０ｃが設けられる。電源ボタン２０ａは、システムＬＳＩ４２に接続される。この電源ボタン２０ａがオンされると、システムＬＳＩ４２には、ゲーム装置１２の各コンポーネントに図示しないＡＣアダプタを経て電源が供給され、通常の通電状態となるモード（「通常モード」と呼ぶこととする）が設定される。一方、電源ボタン２０ａがオフされると、システムＬＳＩ４２には、ゲーム装置１２の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード（以下、「スタンバイモード」という）が設定される。
【００７６】
この実施例では、スタンバイモードが設定された場合には、システムＬＳＩ４２は、入出力プロセッサ４２ａ、フラッシュメモリ４４、外部メインメモリ４６、ＲＯＭ／ＲＴＣ４８および無線通信モジュール５０、無線コントローラモジュール５２以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、この実施例では、スタンバイモードにおいて、ＣＰＵ４０がアプリケーションを実行することはない。
【００７７】
リセットボタン２０ｂもまた、システムＬＳＩ４２に接続される。リセットボタン２０ｂが押されると、システムＬＳＩ４２は、ゲーム装置１２の起動プログラムを再起動する。イジェクトボタン２０ｃは、ディスクドライブ５４に接続される。イジェクトボタン２０ｃが押されると、ディスクドライブ５４から光ディスク２４が排出される。
【００７８】
図３には第１コントローラ３４の外観の一例が示される。図３（Ａ）は、第１コントローラ３４を上面後方から見た斜視図であり、図３（Ｂ）は、第１コントローラ３４を下面前方から見た斜視図である。第１コントローラ３４は、たとえばプラスチック成型によって形成されたハウジング８０を有している。ハウジング８０は、その前後方向（図３に示すＺ軸方向）を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。一例として、ハウジング８０は人間の掌とほぼ同じ長さまたは幅を持つ大きさをしている。プレイヤは、第１コントローラ３４を用いて、それに設けられたボタンを押下することと、第１コントローラ３４自体を動かしてその位置や向きを変えることとによって、ゲーム操作を行うことができる。
【００７９】
ハウジング８０には、複数の操作ボタン（操作キー）が設けられる。すなわち、ハウジング８０の上面には、十字キー８２ａ、１ボタン８２ｂ、２ボタン８２ｃ、Ａボタン８２ｄ、−ボタン８２ｅ、メニューボタン８２ｆ、および＋ボタン８２ｇが設けられる。一方、ハウジング８０の下面には凹部が形成されており、当該凹部の後方側傾斜面にはＢボタン８２ｈが設けられる。これら各ボタン（スイッチ）８２ａ〜８２ｈには、ゲーム装置１２が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。また、ハウジング８０の上面には、遠隔からゲーム装置１２本体の電源をオン／オフするための電源スイッチ８２ｉが設けられる。第１コントローラ３４に設けられる各ボタン（スイッチ）は、包括的に参照符号８２を用いて示されることもある。
【００８０】
また、ハウジング８０の後面には、上述のコネクタ３４ａが設けられている。コネクタ３４ａは、たとえば３２ピンのエッジコネクタであり、第１コントローラ３４に他の機器を接続するために利用される。この実施例では、コネクタ３４ａには第２コントローラ３６のコネクタ３６ｂが接続される。また、ハウジング８０上面の後端側には複数のＬＥＤ８４が設けられ、この複数のＬＥＤ８４によって当該コントローラ１４のコントローラ番号（コントローラの識別番号）が示される。ゲーム装置１２には、たとえば最大４つのコントローラ１４が接続可能であり、ゲーム装置１２に複数のコントローラ１４が接続される場合には、各コントローラ１４には、たとえば接続順にコントローラ番号が付与される。各ＬＥＤ８４はコントローラ番号と対応付けられており、当該コントローラ番号に対応するＬＥＤ８４が点灯される。
【００８１】
また、第１コントローラ３４のハウジング８０内には加速度センサ８６（図５）が設けられている。加速度センサ８６としては、典型的には静電容量式の加速度センサが用いられ得る。加速度センサ８６は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸ごとの直線成分の加速度や重力加速度を検出する。具体的には、この実施例では、３軸加速度センサが適用され、第１コントローラ３４の上下方向（図３に示すＹ軸方向）、左右方向（図３に示すＸ軸方向）および前後方向（図３に示すＺ軸方向）の３軸方向のそれぞれで加速度を検知する。
【００８２】
なお、加速度センサ８６としては、ハウジング８０の形状または第１コントローラ３４の持たせ方の限定等に応じて、上下方向、左右方向および前後方向のうちいずれか２方向の加速度を検出する２軸加速度センサが用いられてもよい。場合によっては１軸加速度センサが用いられてもよい。
【００８３】
さらに、コントローラ２２は、撮像情報演算部８８（図５参照）を有している。図３（Ｂ）に示すように、ハウジング８０の先端面には撮像情報演算部８８の光入射口９０が設けられ、光入射口９０からはセンサバー４４のマーカ４４ｍ、４４ｎの発する赤外線が取り込まれる。
【００８４】
図４には第２コントローラ３６の外観の一例が示される。図４（Ａ）は、第２コントローラ３６を上面後方から見た斜視図であり、図４（Ｂ）は、第２コントローラ３６を下面前方から見た斜視図である。なお、図４では、第２コントローラ３６のケーブル３６ａは省略されている。
【００８５】
第２コントローラ３６は、たとえばプラスチック成型によって形成されたハウジング９２を有している。ハウジング９２は、平面視では、前後方向（図４のＺ軸方向）に略細長い楕円形状を有し、後端側の左右方向（図４のＸ軸方向）の幅が先端側のそれよりも狭くされている。また、ハウジング９２は、側面視では、全体として湾曲した形状を有しており、先端側の水平部分から後端側に向かって下がるように湾曲している。ハウジング９２は、第１コントローラ３４と同様に、全体として大人や子供の片手で把持可能な大きさであるが、長手方向（Ｚ軸方向）の長さは、第１コントローラ３４のハウジング８０よりもやや短くされている。この第２コントローラ３６でも、プレイヤは、ボタンやスティックを操作することと、コントローラ自体を動かしてその位置や向きを変えることとによって、ゲーム操作を行うことができる。
【００８６】
ハウジング９２の上面の先端側には、アナログジョイスティック９４ａが設けられる。ハウジング９２の先端には、後方にやや傾斜する先端面が設けられており、この先端面には、上下方向（図４に示すＹ軸方向）に並べて、Ｃボタン９４ｂおよびＺボタン９４ｃが設けられる。アナログジョイスティック９４ａおよび各ボタン９４ｂ，９４ｃには、ゲーム装置１２が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。第２コントローラ３６に設けられるアナログジョイスティック９４ａおよび各ボタン９４ｂ，９４ｃは、包括的に参照符号９４を用いて示されることもある。
【００８７】
また、第２コントローラ３６のハウジング９２内には加速度センサ９６（図５）が設けられている。この加速度センサ９６としては、第１コントローラ３４の加速度センサ８６と同様の加速度センサが適用される。具体的には、この実施例では３軸加速度センサが適用され、第２コントローラ３６の上下方向（図４に示すＹ軸方向）、左右方向（図４に示すＸ軸方向）および前後方向（図４に示すＺ軸方向）の３軸方向のそれぞれで加速度を検知する。
【００８８】
なお、図３に示した第１コントローラ３４および図４に示した第２コントローラ３６の形状や、ボタン（スイッチまたはスティック等）の形状、数および設置位置等は一例であり、他の形状、数および設置位置等に適宜変更され得る。
【００８９】
また、コントローラ１４の電源は、第１コントローラ３４内に取替可能に収容されるバッテリ（図示せず）によって与えられる。第２コントローラ３６には、コネクタ３４ａ、コネクタ３６ｂおよびケーブル３６ａを介してこの電源が供給される。
【００９０】
図５には、第１コントローラ３４と第２コントローラ３６とが接続されたときのコントローラ１４の電気的構成の一例が示される。第１コントローラ３４は、その内部に通信部９８を備え、通信部９８には、操作部８２、加速度センサ８６、撮像情報演算部８８およびコネクタ３４ａが接続される。操作部８２は、上述の操作ボタンないし操作スイッチ８２ａ‐８２ｉを示す。操作部８２が操作されると、その操作信号（キー情報）が通信部９８に与えられる。加速度センサ８６が検出した加速度を示すデータは、通信部９８へ出力される。加速度センサ８６は、たとえば最大２００フレーム／秒程度のサンプリング周期を有する。
【００９１】
撮像情報演算部８８が取得したデータもまた通信部９８に出力される。撮像情報演算部８８は、赤外線フィルタ１００、レンズ１０２、撮像素子１０４および画像処理回路１０６によって構成される。赤外線フィルタ１００は、第１コントローラ３４の前方の光入射口９０から入射する光から赤外線のみを通過させる。上述したように、モニタ３０の表示面近傍（周辺）に配置されるセンサバー４４のマーカ４４ｍおよび４４ｎは、モニタ３０の前方に向かって赤外光を出力する赤外ＬＥＤである。したがって、赤外線フィルタ１００を設けることによってマーカ４４ｍおよび４４ｎの画像をより正確に撮像することができる。レンズ１０２は、赤外線フィルタ１００を透過した赤外線を集光して撮像素子１０４へ出射する。撮像素子１０４は、たとえばＣＭＯＳセンサあるいはＣＣＤのような固体撮像素子であり、レンズ１０２によって集光された赤外線を撮像する。したがって、撮像素子１０４は、赤外線フィルタ１００を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子１０４によって撮像された画像を撮像画像と呼ぶ。撮像素子１０４によって生成された画像データは、画像処理回路１０６で処理される。画像処理回路１０６は、撮像画像内における撮像対象（マーカ４４ｍおよび４４ｎ）の位置を算出し、所定時間（たとえば１フレーム）毎に、当該位置を示す各座標値を含むマーカ座標データを通信部９８に出力する。なお、画像処理回路１０６における処理については後述する。
【００９２】
コネクタ３４ａには、第２コントローラ３６から延びるケーブル３６ａのコネクタ３６ｂが接続される。コネクタ３６ｂには、第２コントローラ３６の操作部９４および加速度センサ９６が接続される。操作部９４は、上述のアナログジョイスティック９４ａおよび操作ボタン９４ｂ、９４ｃを示す。操作部９４が操作されると、その操作信号がケーブル３６ａ、コネクタ３６ｂおよびコネクタ３４ａ等を介して通信部９８に与えられる。また、加速度センサ９６も、加速度センサ８６と同様のサンプリング周期を有しており、検出された加速度を示すデータを通信部９８に与える。
【００９３】
通信部９８は、マイクロコンピュータ（マイコン）１０８、メモリ１１０、無線モジュール７８およびアンテナ１１２を含む。マイコン１０８は、処理の際にメモリ１１０を記憶領域（作業領域やバッファ領域）として用いながら、無線モジュール７８を制御して、取得したデータをゲーム装置１２に送信したりゲーム装置１２からのデータを受信したりする。
【００９４】
第１コントローラ３４の操作部８２、加速度センサ８６および撮像情報演算部８８ならびに第２コントローラ３６の操作部９４および加速度センサ９６からマイコン１０８へ出力されたデータは、一時的にメモリ１１０に格納される。通信部９８からゲーム装置１２のＢｌｕｅｔｏｏｔｈ通信ユニット７６への無線送信は所定の周期毎に行われる。なお、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、第１コントローラ３４からの送信はそれと同等かそれより短い周期で行うことが必要となる。マイコン１０８は、ゲーム装置１２への送信タイミングが到来すると、メモリ１１０に格納されている操作部８２および９４の操作データ、加速度センサ８６および９６の加速度データならびに撮像情報演算部８８のマーカ座標データを含むデータを、コントローラデータとして無線モジュール７８へ出力する。無線モジュール７８は、Ｂｌｕｅｔｏｏｔｈのような近距離無線通信技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ１１２から放射する。つまり、コントローラデータは、無線モジュール７８で微弱電波信号に変調されて第１コントローラ３４から送信される。微弱電波信号はゲーム装置１２側のＢｌｕｅｔｏｏｔｈ通信ユニット７６で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置１２はコントローラデータを取得することができる。ゲーム装置１２のＣＰＵ４６は、コントローラ１４から取得したコントローラデータに基づいてゲーム処理を行う。
【００９５】
なお、加速度センサ８６および９６から出力される加速度の信号に基づいて、ゲーム装置１２のプロセッサ（例えばＣＰＵ４６）またはコントローラ１４のプロセッサ（例えばマイコン１０８）などのコンピュータが処理を行うことによって、コントローラ１４に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ８６および９６を搭載する第１コントローラ３４および第２コントローラ３６が静的な状態であることを前提としてコンピュータ側で処理する場合（すなわち、加速度センサ８６および９６によって検出される加速度が重力加速度のみであるとして処理する場合）、第１コントローラ３４および第２コントローラ３６が現実に静的な状態であれば、検出された加速度に基づいて第１コントローラ３４および第２コントローラ３６の姿勢が重力方向に対して傾いているか否か又はどの程度傾いているかをそれぞれ知ることができる。具体的には、加速度センサ８６および９６の検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かだけで、第１コントローラ３４および第２コントローラ３６がそれぞれ傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかも知ることができる。また、多軸加速度センサが適用される場合には、さらに各軸の加速度の信号に対して処理を施すことによって、第１コントローラ３４および第２コントローラ３６がそれぞれ重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ８６および９６からの出力に基づいて、コンピュータが第１コントローラ３４および第２コントローラ３６の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ８６および９６からの出力に基づいて、おおよその傾き具合を推定するような処理としてもよい。このように、加速度センサ８６および９６をコンピュータと組み合わせて用いることによって、第１コントローラ３４および第２コントローラ３６の傾き、姿勢または位置を判定することができる。
【００９６】
一方、加速度センサ８６および９６が動的な状態であることを前提とする場合には、重力加速度成分に加えて加速度センサ８６および９６の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、動き方向などを知ることができる。具体的には、加速度センサ８６および９６を備える第１コントローラ３４および第２コントローラ３６がユーザの手で動的に加速されて動かされる場合に、加速度センサ８６および９６によって生成される加速度信号を上記コンピュータによって処理することによって、第１コントローラ３４および第２コントローラ３６のさまざまな動きおよび／または位置を算出することができる。なお、加速度センサ８６および９６が動的な状態であることを前提とする場合であっても、加速度センサ８６および９６の動きに応じた加速度を所定の処理により除去すれば、重力方向に対する傾きを知ることが可能である。他の実施例では、加速度センサ８６および９６は、信号をマイコン１０８に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ８６および９６が静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００９７】
このゲームシステム１０では、ユーザがコントローラ１４を動かすことによってゲームに対する操作または入力を行うことができる。ゲームをプレイする際には、たとえば図６に示すように、ユーザは、その右手で第１コントローラ３４を持ち、その左手で第２コントローラ３６を持つ。上述のように、この実施例では、第１コントローラ３４には３軸方向の加速度を検出する加速度センサ８６が内蔵され、第２コントローラ３６にも同様の加速度センサ９６が内蔵されている。第１コントローラ３４および第２コントローラ３６がそれぞれユーザによって動かされると、加速度センサ８６および加速度センサ９６によって、それぞれのコントローラ自身の動きを示す加速度値が検出される。ゲーム装置１２では、当該検出された加速度値に応じてゲーム処理が実行され得る。
【００９８】
また、第１コントローラ３４には撮像情報演算部８８が設けられるので、ユーザは第１コントローラ３４をポインティングデバイスとして使用して操作を行うことができる。この場合、ユーザは、第１コントローラ３４の先端面（光入射口９０）がマーカ４４ｍおよび４４ｎの方を向く状態で第１コントローラ３４を把持する。ただし、図１から分かるように、マーカ４４ｍおよび４４ｎは、モニタ３０の画面の所定の１辺（上辺または下辺）の近傍に、当該所定の１辺に対して平行に配置されている。この状態で、ユーザは、第１コントローラ３４自体を動かして、第１コントローラ３４が指示する画面上の位置を変更したり、第１コントローラ３４と各マーカ４４ｍおよび４４ｎとの距離を変更したりすることによって、ゲーム操作を行うことができる。
【００９９】
図７は、マーカ４４ｍおよび４４ｎと第１コントローラ３４の視野角を説明するための図である。図７に示すように、マーカ４４ｍおよび４４ｎは、それぞれ、視野角αの範囲で赤外光を放射する。また、撮像情報演算部８８の撮像素子１０４は、第１コントローラ３４の視線方向（図３に示すＺ軸方向）を中心とした視野角βの範囲で入射する光を受光することができる。たとえば、マーカ４４ｍおよび４４ｎの視野角αは、共に３４°（半値角）であり、一方、撮像素子１０４の視野角βは４２°である。ユーザは、撮像素子１０４が２つのマーカ４４ｍおよび４４ｎからの赤外光を受光することが可能な位置および向きとなるように、第１コントローラ３４を把持する。具体的には、撮像素子１０４の視野角βの中に少なくとも一方のマーカ４４ｍまたは４４ｎが存在し、かつ、マーカ４４ｍおよび４４ｎの少なくとも一方の視野角αの中に第１コントローラ３４が存在する状態となるように、ユーザは第１コントローラ３４を把持する。この状態にあるとき、第１コントローラ３４は、マーカ４４ｍおよび４４ｎの少なくとも一方を検知することができる。ユーザは、この状態を満たす範囲で第１コントローラ３４の位置および向きを変化させることによってゲーム操作を行うことができる。なお、マーカ４４ｍおよび４４ｎのいずれか一方のみが検出される場合には、たとえば、直前の２つのマーカ４４ｍおよび４４ｎを検出したデータを利用して、検出されない他方のマーカの代わりに仮のマーカ座標を設定することによって、第１コントローラ３４の指示位置を算出することができる。
【０１００】
なお、第１コントローラ３４の位置および向きがこの範囲外となった場合、第１コントローラ３４の位置および向きに基づいたゲーム操作を行うことができなくなる。したがって、上記範囲は「操作可能範囲」と呼ばれる。
【０１０１】
操作可能範囲内で第１コントローラ３４が把持される場合、撮像情報演算部８８によってマーカ４４ｍおよび４４ｎの画像が撮像される。すなわち、撮像素子１０４によって得られる撮像画像には、撮像対象であるマーカ４４ｍおよび４４ｎの画像（対象画像）が含まれる。図８は、対象画像を含む撮像画像の一例を示す図である。対象画像４４ｍ’および４４ｎ’を含む撮像画像の画像データを用いて、画像処理回路１０６は、各マーカ４４ｍおよび４４ｎの撮像画像における位置を表す座標（マーカ座標）を算出する。
【０１０２】
撮像画像の画像データにおいて対象画像４４ｍ’および４４ｎ’は高輝度部分として現れるため、画像処理回路１０６は、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路１０６は、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、２つの対象画像（マーカ画像）４４ｍ’および４４ｎ’だけではなく、窓からの太陽光や部屋の蛍光灯の光等のような他の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、マーカ４４ｍおよび４４ｎの画像４４ｍ’および４４ｎ’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。撮像画像における対象画像４４ｍ’および４４ｎ’と他の画像との区別のために、撮像対象４４ｍおよび４４ｎは既知のものである必要があり、この実施例ではその大きさが予め決められるので、マーカ画像４４ｍ’および４４ｎ’の大きさを予測することができる。したがって、高輝度部分の大きさに基づいて、マーカ画像４４ｍ’および４４ｎ’の判定を行うことができる。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【０１０３】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路１０６は当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子１０４の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子１０４によって撮像された撮像画像の解像度が１２６×９６であるとし、重心位置は１０２４×７６８のスケールで算出されるものとする。つまり、マーカ座標は、（０，０）から（１０２４，７６８）までの整数値で表現される。
【０１０４】
なお、図８に示すように、撮像画像における位置は、撮像画像の左上を原点Ｏとし、下向きをＹ軸正方向とし、右向きをＸ軸正方向とする座標系（撮像画像のＸＹ座標系）で表現されるものとする。
【０１０５】
また、対象画像４４ｍ’および４４ｎ’が正しく検出される場合には、判定処理によって２つの高輝度部分が対象画像として判定されるので、２箇所のマーカ座標が算出される。画像処理回路１０６は、算出された２箇所のマーカ座標を示すデータ、つまり、撮像対象の位置を示す撮像対象データを通信部９８に出力する。出力された撮像対象データ（マーカ座標データ）は、上述したように、マイコン１０８によってコントローラデータに含められて、ゲーム装置１２に送信される。
【０１０６】
ゲーム装置１２（ＣＰＵ４６）は、受信したコントローラデータからマーカ座標データを取得すると、このマーカ座標データに基づいて、モニタ３０の画面上における第１コントローラ３４の指示位置（指示座標）と、第１コントローラ３４からマーカ４４ｍおよび４４ｎまでの各距離とを算出することができる。なお、たとえば、第１コントローラ３４がモニタ３０の画面の左端を指示するとき、対象画像４４ｍ’および４４ｎ’は撮像画像の右側に検出され、第１コントローラ３４が画面の下端を指示するとき、対象画像４４ｍ’および４４ｎ’は撮像画像の上側に検出され、つまり、画面上の第１コントローラ３４の指示位置と逆側に撮像画像上のマーカ座標が検出される。したがって、第１コントローラ３４の指示位置の座標をマーカ座標から算出する際には、座標系が図８の撮像画像の座標系から画面上の位置を表すための座標系に適宜に変換される。
【０１０７】
なお、この実施例では、第１コントローラ３４で撮像データに所定の演算処理を行ってマーカ座標を検出して、そのマーカ座標データをゲーム装置１２に送信するようにしている。しかし、他の実施例では、撮像データをコントローラデータとして第１コントローラ３４からゲーム装置１２に送信し、ゲーム装置１２のＣＰＵ４６が撮像データに所定の演算処理を行って、マーカ座標および指示位置の座標を検出するようにしてもよい。
【０１０８】
また、撮像画像における対象画像間の距離は、第１コントローラ３４と、マーカ４４ｍおよび４４ｎとの距離に応じて変化する。マーカ４４ｍおよび４４ｎ間の距離、撮像画像の幅、撮像素子１０４の視野角βが予め決まっているので、２つのマーカ座標間の距離を算出することによって、ゲーム装置１２は第１コントローラ３４とマーカ４４ｍおよび４４ｎとの間の現在の距離を算出することができる。
【０１０９】
なお、ゲームの操作の仕方は他の態様であってもよく、第１コントローラ３４のみを使ってゲームをするようにしてもよい。例えば、第１コントローラ３４を横向きに両手で持って操作するようなゲームであってもよい。
【０１１０】
以上のように構成されたゲームシステム１０で、この実施例の「毛糸のキャラクタ」ゲームをプレイするとき、モニタ２８には、たとえば図９に示すようなゲーム画面が表示される。このゲーム画面では、最も奥手（Ｚ奥）に、パッチワークでできた城壁，植え込みなどが背景Ｂｇとして描画され、そして、この背景Ｂｇの手前（Ｚ手前）に、キャラクタＣｒたとえばプレイヤキャラクタＰＣｒおよび敵キャラクタＯＣｒなどが描画される。なお、プレイヤキャラクタＰＣｒと敵キャラクタＯＣｒとでは、前者が後者よりも手前に描画される（図２６参照：詳細は後述）。
【０１１１】
プレイヤキャラクタＰＣｒは、たとえばピンク色の毛糸の輪を有する体Ｂｄと、たとえば赤色の毛糸の輪をそれぞれ有する足Ｆｔ１およびＦｔ２と、体Ｂｄの内部（つまり体Ｂｄを構成する毛糸の輪の内側）に配置される目，頬および口など（単に「目Ｅｙ」と記す）とで構成される。なお、図示は省略するが、目Ｅｙは背景Ｂｇに紛れて見えにくくなる場合があるので、目Ｅｙの後方に半透明の「霞」が配置されている。
【０１１２】
プレイヤキャラクタＰＣｒで特に注意すべきは、図９からわかるように、体Ｂｄの内部が透明であって、体Ｂｄを通して背景Ｂｇが見えている一方で、奥の足Ｆｔ２は見えていない点である。手前の足Ｔｆ１も同様に、内部が透明なので、通常であれば足Ｔｆ１を通して体Ｂｄが見えるはずであるが、ここでは体Ｂｄは見えずに背景Ｂｇだけが見えている。
【０１１３】
敵キャラクタＯＣｒもまた、たとえば黄色の毛糸でできており、敵キャラクタＯＣｒを通して背景Ｂｇが見える。
【０１１４】
このような特徴的なゲーム画面を実現するための描画処理について、以下に詳しく説明する。最初、毛糸の線モデルを作成する処理について説明する。
【０１１５】
キャラクタＣｒを構成する毛糸の画像は、図１０〜図１５に示す要領で作成される。最初、図１０（Ａ）に示されるような、キャラクタＣｒの輪郭（エッジ）Ｅｄを形成するための各制御点ＣＰを定義する。具体的には、基準点ＲＰを原点（０，０）として、各制御点ＣＰの座標（ｘ，ｙ）を設定し、設定結果を示す制御点データを記憶する（制御点領域７６ａ：図１９参照）。制御点データにはまた、変位しやすさ（柔らかさ）、言い換えると移動状態に応じたオフセットの度合いを示すパラメータ（ｋ）が制御点ＣＰ毎に記述される。
【０１１６】
次に、こうして定義された制御点ＣＰから、図１０（Ｂ）に示すような線モデルＬＭを生成する。線モデルＬＭは、図１２（Ａ）に示すような単位テクスチャＵＴｘに対応する幅（ｄ１）を有し、たとえば図１１（Ａ）〜図１１（Ｃ）に示す手順で生成される。
【０１１７】
最初、図１１（Ａ）に示すように、各制御点ＣＰ１，ＣＰ２，ＣＰ３…について、接線ベクトルさらに法線ベクトルを求める。たとえば、制御点ＣＰ３については、その両隣の制御点ＣＰ２およびＣＰ４を通る直線Ｌ１の傾きを接線ベクトルとしてまず求め、この接線ベクトルに垂直なベクトル（直線Ｌ１に垂直な直線Ｌ２の傾き）を法線ベクトルとして求めればよい。
【０１１８】
次に、図１１（Ｂ）に示すように、各制御点ＣＰ１，ＣＰ２，ＣＰ３…を中心に、その法線ベクトルに並行で長さがｄ１の線分をオフセット（Ｏｆｓ）として割り付け、各オフセットＯｆｓ１，Ｏｆｓ２，Ｏｆｓ３…の両端の座標を計算する。この計算結果に基づいて、一連の制御点ＣＰ１，ＣＰ２，ＣＰ３…に対し、左右一対のオフセット点（ＯＰ１ａ，ＯＰ１ｂ），（ＯＰ２ａ，ＯＰ２ｂ），（ＯＰ３ａ，ＯＰ３ｂ）…が配置される。
【０１１９】
次に、図１１（Ｃ）に示すように、隣り合う３個のオフセット点を互いに連結してポリゴン化していく。具体的には、１組目のオフセット点（ＯＰ１ａ，ＯＰ２ａ，ＯＰ２ｂ）からポリゴンＰｇ１ａが生成され、２組目のオフセット点（ＯＰ１ａ，ＯＰ２ａ，ＯＰ２ｂ）からポリゴンＰｇ１ｂが生成される。３組目のオフセット点（ＯＰ２ａ，ＯＰ２ｂ，ＯＰ３ｂ）からポリゴンＰｇ２ａが生成され、４組目のオフセット点（ＯＰ２ａ，ＯＰ３ａ，ＯＰ３ｂ）からポリゴンＰｇ２ｂが生成される。５組目のオフセット点（ＯＰ３ａ，ＯＰ３ｂ，ＯＰ４ｂ）からポリゴンＰｇ３ａが生成され、そして６組目のオフセット点（ＯＰ３ａ，ＯＰ４ａ，ＯＰ４ｂ）からポリゴンＰｇ３ｂが生成される。
【０１２０】
こうして生成されたポリゴンＰｇ１ａ，Ｐｇ１ｂ，Ｐｇ２ａ…は、互いに一辺（一対の頂点）を共有することで、線ポリゴンモデルを構成している。この線ポリゴンモデルを、互いに１辺（一対の頂点）を共有する２個一組のポリゴン（Ｐｇ１ａ，Ｐｇ１ｂ），（Ｐｇ２ａ，Ｐｇ２ｂ），（Ｐｇ３ａ，Ｐｇ３ｂ）…に区分すると、幅ｄ１を有する一連の四角形（台形）Ｓｑ１，Ｓｑ２，Ｓｑ３…が得られる。これらの四角形Ｓｑ１，Ｓｑ２，Ｓｑ３…に、図１２（Ａ）に示すような毛糸模様の単位テクスチャＵＴｘをそれぞれ貼り付けていく。このような処理をキャラクタＣｒの各部について行うことで、各部の輪郭Ｅｄを構成する線モデルＬＭが得られる。
【０１２１】
ここで、単位テクスチャＵＴｘは、幅ｄ１，長さｄ２の長方形状を有し、長さ方向の端部（先端部および後端部）が半透明（中央部よりも透過率が高い設定）になっている。ここで長さｄ２は、複数の単位テクスチャＵＴｘを半透明部分が互いに重なるように連結したとき、図１２（Ｂ）に示すような連続した糸模様が得られる長さである。
【０１２２】
ただし、輪郭Ｅｄに曲率が大きい箇所が含まれていると、たとえば図１３に示すようにオフセットＯｆｓ１およびＯｆｓ２が交差する結果、単位テクスチャＵＴｘの重ね書きが発生して、たとえば図１４（Ａ）に示すように、線モデルＬＭの形状や色が当該箇所で乱れてしまう。このような場合、たとえば図１３（Ｂ）に示すように頂点を繋ぎ変える補正を行う。この補正処理により、単位テクスチャＵＴｘの重ね書きは回避され、たとえば図１４（Ｂ）に示すように、曲率の大きい箇所でも乱れの少ない線モデルＬＭが得られる。なお、単位テクスチャＵＴｘを四角形Ｓｑ１，Ｓｑ２，Ｓｑ３…に貼り付ける際に、当該四角形の形状に合わせて変形させる処理を施しても、乱れの少ない線モデルＬＭが得られる。
【０１２３】
また、輪郭Ｅｄに端点が生じた場合には、そこにキャップ状のテクスチャを貼り付ける処理を行うことで、端部の丸い線モデルＬＭが得られる。
【０１２４】
次に、このような線モデルＬＭでできたキャラクタＣｒを動かす処理（アニメーション処理）について説明する。たとえばプレイヤキャラクタＰＣｒは、初期画面では、図１６（Ａ）のように描画される。すなわち、プレイヤキャラクタＰＣｒは、当初、手前を向いており、足Ｆｔ１およびＦｔ２は共に体Ｂｄの奥手にある。コントローラ１４から右移動を示す入力があると、プレイヤキャラクタＰＣｒは、足Ｆｔ１およびＦｔ２を動かしながら右向きに移動する“歩き”を開始する。歩行中、一方の足Ｆｔ２は体Ｂｄの奥手にあり、他方の足Ｆｔ１は体Ｂｄの手前にある。
【０１２５】
このようなプレイヤキャラクタＰＣｒの“歩き”アニメーション、つまり全体の平行移動および足の動きは、前述したような、各制御点ＣＰの座標を記述した制御点データ（７６）に対して、次のような処理を施すことで実現される。最初、プレイヤキャラクタＰＣｒの基準点ＲＰを、入力装置１４からの入力データ（７６ｋ：図１９参照）に基づいて、右方向に移動させる。すると、各制御点ＣＰは、基準点ＲＰの動きに追従して移動する。この移動を制御点データに反映させることで、プレイヤキャラクタＰＣｒの全体が右方向に平行移動する。
【０１２６】
次に、足Ｆｔ１およびＦｔ２に対応する各制御点ＣＰを、予め準備された“歩き”アニメーションデータ（７６ｃ：図１９参照）に基づいて変位させる。この変位を制御点データに反映させることで、足Ｆｔ１およびＦｔ２に“歩く”モーションが与えられる。
【０１２７】
なお、アニメーションデータには、好ましくは各制御点ＣＰの１フレーム毎の変位が記述されるが、所定数フレームたとえば５フレーム毎の変位を記述してもよい。この場合、たとえば第１フレームおよび第５フレームの間の第２〜第４フレームの変位は、第１フレームおよび第５フレームに基づく補間（たとえば線形補間）によって算出される。
【０１２８】
また、あるアニメーションから別のアニメーションへの切り替えの際には、切り替え前後の２つのモーションの変位をブレンド（たとえば線形補間）するモーションブレンドが行われる。モーションブレンドは、制御点ＣＰ毎の処理なので、切り替え前後で制御点ＣＰの数が異なる場合には、それを一致させるための処理（たとえば制御点ＣＰの再計算）が行われる。
【０１２９】
このように、入力データおよび／またはアニメーションデータに基づいて制御点ＣＰを変位させることで、キャラクタＣｒを任意に移動（平行移動および／または回転移動）させたり、キャラクタＣｒの各部に各種のモーションを与えたりすることができる。
【０１３０】
さらには、キャラクタＣｒの移動状態に応じて、キャラクタＣｒを変形させることも可能である。たとえば、図１７（Ａ）に示すように、プレイヤキャラクタＰＣｒを“ジャンプ”アニメーションに従って速度ベクトルＭＶに従う方向および速さで移動させる場合、プレイヤキャラクタＰＣｒには、仮想的な空気抵抗などによって、速度ベクトルＭＶとは逆の向きで、かつ速度ベクトルＭＶに応じた大きさの力が作用する。この結果、プレイヤキャラクタＰＣｒは、たとえば図１７（Ｂ）に示すように変形する。その変形の度合いは、位置によって異なる。
【０１３１】
このような、キャラクタＣｒの移動状態に応じた変形は、たとえば次のようにして実現される。まず、図１７（Ａ）に示すように、現時点の基準点ＲＰに対して、所定数フレーム（たとえば５フレーム）前の時点での基準点ＰＲの位置を、オフセット点ＯＰとして設定する。この場合、基準点ＲＰとオフセット点ＯＰとを結ぶ線分Ｌは、速度ベクトルＭＶと平行であり、速度ベクトルＭＶに比例した長さを有する。キャラクタＣｒの各制御点ＣＰ１，ＣＰ２，ＣＰ３…は、変位しやすさを示すパラメータｋ１，ｋ２，ｋ３…と、オフセット点ＯＰからの距離Ｄ１，Ｄ２，Ｄ３…との積に比例した長さだけ、速度ベクトルＭＶとは逆向きに変位する。
【０１３２】
したがって、変位しやすさが略一定（ｋ１≒ｋ２≒ｋ３）であれば、図１７（Ｂ）に示されるように、オフセット点ＯＰに近い頭頂部の制御点ＣＰ２が大きく変位する一方、オフセット点ＯＰから遠い頬や背中の制御点ＣＰ１，ＣＰ３は小さく変異する結果、プレイヤキャラクタＰＣｒは、あたかも空気抵抗を受けて変形したように見える。
【０１３３】
次に、プレイヤキャラクタＰＣｒを描画する処理について説明する。先述したように、プレイヤキャラクタＰＣｒは、初期状態では図１６（Ａ）のように描画され、歩行中は図１６（Ｂ）のように描画される。すなわち、図１６（Ａ）に示すように、体Ｂｄを通して奥の足Ｆｔ１，Ｆｔ２が見えることはなく、また、図１６（Ｂ）に示すように、足Ｆｔ１を通して奥の体Ｂｄや足Ｆｔ２が見えることもない。なお、図１６〜図１８では背景Ｂｇを省略しているが、体Ｂｄおよび／または足Ｆｔ１，Ｆｔ２を通して奥の背景Ｂｇが見えている。
【０１３４】
このような透視性を有するプレイヤキャラクタＰＣｒは、たとえば次のようにして描画される。まず、図１６（Ａ）のようなプレイヤキャラクタＰＣｒを描画する場合、図１８（Ａ）に示すように、体Ｂｄに沿った輪郭を有する透明なマスク（ポリゴンモデル）ＢＭｓを生成して、奥から順に、足Ｆｔ１およびＦｔ２、体のマスクＢＭｓ、体Ｂｄ、目Ｅｙを配置する。言い換えると、図１８（Ａ）に示すような各要素（ポリゴンモデル）について、奥行き方向（Ｚ方向）の配置を示す描画用Ｚデータ（図２０（Ａ）参照）を生成する。
【０１３５】
次に、図１８（Ａ）に示すような各要素についてＺソートを行う。つまり、上記の描画用Ｚデータとは別に、図１８（Ａ）に示すような各要素の描画順序を示すソート用Ｚデータ（図２０（Ｂ）参照）を生成する。そして各要素を、ソート用Ｚデータに従う順序で、描画用ＺデータによりＺ比較しながら、背景Ｂｇの上に描画していく。
【０１３６】
したがって、基本的には、図２０（Ｂ）のソート用Ｚデータに従って、“体のマスクＢＭｓ→足Ｆｔ１およびＦｔ２→体Ｂｄ→目Ｅｙ”の順序で描画していくことになるが、各描画を実行するにあたって、描画用ＺデータによるＺ比較を行い、Ｚ不合格（先に描画されたものより奥にある）と判定されたポリゴンは描画せず、Ｚ合格（先に描画されたものよりも手前にある）と判定されたポリゴンだけを描画する。
【０１３７】
具体的には、ソート用Ｚデータによれば、奥から１番目の要素は「体のマスク」なので、最初、体のマスクＢＭｓが描画される。なお、最初の描画では、Ｚ比較の対象がないため、Ｚ合格とみなされる。次に、ソート用Ｚデータによれば、奥から２番目の要素は「足の線」なので、足Ｆｔ１およびＦｔ２を描画することになるが、その前に「足の線」と「体のマスク」とを描画用Ｚデータにより比較する。描画用Ｚデータによれば、「足の線」は「体のマスク」よりも奥なので、足Ｆｔ１およびＦｔ２は、体のマスクＢＭｓと重なる部分は描画されず、体のマスクＢＭｓと重ならない部分だけが描画される。
【０１３８】
次に、ソート用Ｚデータによれば、奥から３番目の要素は「体の線」であり、描画用Ｚデータによれば、「体の線」は「足の線」および「体のマスク」の各々よりも奥なので、体Ｂｄの全部が描画される。次に、ソート用Ｚデータによれば、奥から４番目（つまり最も手前）の要素は「目」であり、描画用Ｚデータによれば、「目」は「体の線」，「足の線」および「体のマスク」の各々よりも手前なので、目Ｅｙの全部が描画される。
【０１３９】
こうして、体Ｂｄおよび／または足Ｆｔ１，Ｆｔ２を通して背景Ｂｇが見えるのに、足Ｆｔ１，Ｆｔ２は体Ｂｄを通しては見えない、図１６（Ａ）に示すようなプレイヤキャラクタＰＣｒを描画することができる。
【０１４０】
一方、図１６（Ｂ）のようなプレイヤキャラクタＰＣｒを描画する場合には、図１８（Ｂ）に示すように、上記と同様の体のマスクＢＭｓに加えて、手前の足Ｆｔ１に沿った輪郭を有する透明なマスク（ポリゴンモデル）ＦＭｓをさらに生成される。そして、奥から順に、奥の足Ｆｔ２、体のマスクＢＭｓ、体Ｂｄ、目Ｅｙ、手前の足のマスクＦＭｓおよび手前の足Ｆｔ１を配置することで、図１８（Ｂ）に示すような各要素についての描画用Ｚデータ（図２１（Ａ）参照）が生成される。
【０１４１】
次に、図１８（Ｂ）に示すような各要素についてＺソートを行い、ソート用Ｚデータ（図２１（Ｂ）参照）を生成する。そして各要素を、ソート用Ｚデータに従う順序で、描画用ＺデータによりＺ比較しながら、背景Ｂｇの上に描画していく。
【０１４２】
この場合、図２１（Ｂ）のソート用Ｚデータに従って、“体のマスクＢＭｓ→手前の足のマスクＦＭｓ→奥の足Ｆｔ２→体Ｂｄ→目Ｅｙ→手前の足Ｆｔ１”の順序で描画していくことになるが、各描画を実行するにあたって、描画用ＺデータによるＺ比較を行い、Ｚ不合格と判定されたポリゴンは描画せず、Ｚ合格と判定されたポリゴンだけを描画する。
【０１４３】
具体的には、ソート用Ｚデータによれば、奥から１番目の要素は「体のマスク」なので、最初、体のマスクＢＭｓが描画される。次に、ソート用Ｚデータによれば、奥から２番目の要素は「手前の足のマスク」であり、描画用Ｚデータによれば、「手前の足のマスク」は「体のマスク」よりも手前なので、手前の足のマスクＦＭｓが描画される。次に、ソート用Ｚデータによれば、奥から３番目の要素は「奥の足の線」であり、描画用Ｚデータによれば、「奥の足の線」は「手前の足のマスク」および「体のマスク」の各々よりも奥なので、奥の足Ｆｔ１は、体のマスクＢＭｓおよび／または手前の足のマスクＦＭｓと重なる部分は描画されず、どちらのマスクとも重ならない部分だけが描画される。
【０１４４】
次に、ソート用Ｚデータによれば、奥から４番目の要素は「体の線」であり、描画用Ｚデータによれば、「体の線」は、「奥の足の線」および「体のマスク」の各々よりも手前であるが、「手前の足のマスク」よりは奥なので、体Ｂｄは、「手前の足のマスク」と重なる部分は描画されず、「手前の足のマスク」と重ならない部分だけが描画される。次に、ソート用Ｚデータによれば、奥から５番目の要素は「目」であり、描画用Ｚデータによれば、「目」は、「体の線」，「体のマスク」および「奥の足の線」の各々よりも手前であるが、「手前の足のマスク」よりは奥なので、目Ｅｙは、「手前の足のマスク」と重なる部分は描画されず、「手前の足のマスク」と重ならない部分だけが描画される。次に、ソート用Ｚデータによれば、奥から６番目（つまり最も手前）の要素は「手前の足の線」であり、描画用Ｚデータによれば、「手前の足の線」は、「手前の足のマスク」，「目」，「体の線」，「体のマスク」および「奥の足の線」の各々よりも手前なので、手前の足Ｆｔ１の全部が描画される。
【０１４５】
こうして、体Ｂｄおよび／または足Ｆｔ１，Ｆｔ２を通して背景Ｂｇが見えるのに、奥の足Ｆｔ２は体Ｂｄを通しては見えず、体Ｂｄは手前の足Ｆｔ１を通しては見えない、図１６（Ｂ）に示すようなプレイヤキャラクタＰＣｒを描画することができる。
【０１４６】
なお、プレイヤキャラクタＰＣｒが敵キャラクタＯＣｒと重なることもあるが、この実施例では、図２６（Ａ）に示すように、敵キャラクタＯＣｒは常にプレイヤキャラクタＰＣｒの奥に表示される。このようなキャラクタ画像は、図２６（Ｂ）に示すような描画用Ｚデータおよび図２６（Ｃ）に示すようなソート用Ｚデータに基づいて、上記と同様の手順で描画することができる。敵キャラクタＯＣｒは、体のマスクＢＭｓによるマスクを受けないように、体のマスクＢＭｓよりも先に描画される。
【０１４７】
以上のような画像処理は、ＣＰＵ４０がシステムＬＳＩ４２と協働して、メインメモリ４２ｅおよび／または４６に記憶された図１９〜図２１などに示すようなプログラムおよびデータに基づいて、図２２〜図２５に示すようなフローを実行することにより実現される。
【０１４８】
メインメモリ４２ｅおよび／または４６には、図１９に示すように、プログラム記憶領域７０およびデータ記憶領域７６が形成され、プログラム記憶領域７０にはゲームプログラム７２および入出力制御プログラム７４などが格納される。ゲームプログラム７２は、ＣＰＵ４０を介してゲーム装置１２のハードウェア全体（図２参照）を制御することにより「毛糸のキャラクタ」ゲームを実現するソフトウェアであり、図２２〜図２５のフローチャートに対応するキャラクタ生成描画制御プログラム７２ａを含む。キャラクタ生成描画制御プログラム７２ａは、上述したようなキャラクタＣｒの生成および描画を制御する。入出力制御プログラム７４は、主として入出力プロセッサ４２ａを介して、ＶＲＡＭ４２ｄに描画された画像のモニタ２８への出力や、コントローラ１４からの入力を制御する。
【０１４９】
データ記憶領域７６は、制御点領域７６ａ、オフセット点領域７６ｂ、アニメーション領域７６ｃ、線モデル領域７６ｄ、マスク領域７６ｅ、描画用Ｚ領域７６ｆ、ソート用Ｚ領域７６ｇ、テクスチャ領域７６ｈ、目モデル領域７６ｉおよび背景画像領域７６ｊなどを含む。制御点領域７６ａには、キャラクタＣｒの輪郭Ｅｄを形成するための各制御点ＣＰ（図１０（Ａ）参照）について座標（ｘ，ｙ）およびパラメータｋを記述した制御点データが記憶される。ここで座標（ｘ，ｙ）は、基準点ＲＰを原点（０，０）とする座標であり、パラメータｋは、変位しやすさ（柔らかさ）、言い換えると移動状態に応じて各制御点に付与されるオフセットの度合いを示すパラメータである。
【０１５０】
オフセット点領域７６ｂには、所定数フレーム前の基準点ＲＰであるオフセット点ＯＰ（図１７（Ｂ）参照）の座標を示すオフセット点データが記憶される。アニメーション領域７６ｃには、プレイヤキャラクタＰＣｒに与えられる“歩き”，“ジャンプ”といったモーション（図１６，図１７参照）を示すアニメーションデータが記憶される。アニメーションデータには、各制御点ＣＰの１フレーム毎の変位（または所定数フレーム毎の変位）が記述されている。
【０１５１】
線モデル領域７６ｄには、制御点ＣＰに基づいて生成された線モデルＬＭ（図１０（Ｂ）参照）が記憶される。線モデルＬＭは、たとえば図１１（Ｃ）に示すような半透明の線ポリゴンモデル（Ｐｇ１ａ，Ｐｇ１ｂ，Ｐｇ２ａ…）で構成される。マスク領域７６ｅには、たとえば図１８（Ａ），図１８（Ｂ）に示すような体のマスクＢＭｓ，手前の足のマスクＦＭｓが記憶される。各マスクは、透明ポリゴンモデルで構成される。
【０１５２】
描画用Ｚ領域７６ｆには、たとえば図２０（Ａ），図２１（Ａ）に示すような描画用Ｚデータが記憶される。ソート用Ｚ領域７６ｇには、たとえば図２０（Ｂ），図２１（Ｂ）に示すようなソート用Ｚデータが記憶される。テクスチャ領域７６ｈには、たとえば図１２（Ａ）に示すような幅ｄ１，長さｄ２の長方形状を有する単位テクスチャＵＴｘが記憶される。図１５に示すようなキャップ形状のテクスチャや、その他のテクスチャも、このテクスチャ領域７６ｈに記憶される。
【０１５３】
目モデル領域７６ｉには、たとえば図１６（Ａ），図１８（Ａ）等に示すような目モデルＥｙが記憶される。目モデルＥｙは、たとえば半透明ポリゴンモデルで構成される。背景画像領域７６ｊには、たとえば図９に示すような背景Ｂｇの画像データが記憶される。
【０１５４】
なお、データ記憶領域７６にはさらに、コントローラ１４からの入力データ（コントローラデータ）を記憶する入力領域７６ｋも含まれている。
【０１５５】
「毛糸のキャラクタ」ゲームをプレイするとき、ＣＰＵ４０は、図２２〜図２５に示すようなキャラクタ生成描画制御処理を実行する。なお、図示は省略するが、この制御処理と同時並列に、入出力プロセッサ４２ａによる入出力処理（コントローラ１４から入力領域７６ｋへの入力処理、およびＶＲＡＭ４２ｄからモニタ２８への出力処理を含む）が行われている。
【０１５６】
ＣＰＵ４０は、最初、ステップＳ１で初期処理を実行する。初期処理には、各種の初期データのメモリカード３８等からメインメモリ４２ｅ，４６への読み込み、およびＶＲＡＭ４２ｄの初期化などが行われる。なお、ここで読み込まれる初期制御点データは、たとえば、３次元ＣＡＤの１つであるＭＡＹＡ（登録商標）上で、ＮＵＲＢＳ(Non-Uniform Rational B-Spline)曲線の編集機能を利用して作成されたものである。ＣＰＵ４０は、この初期制御点データに基づいて、各時点の制御点データを生成していくことになる。
【０１５７】
初期処理が完了すると、ＣＰＵ４０の処理は、ステップＳ３〜Ｓ２１で構成されたループに入る。このループ処理は、１フレーム毎に実行される。ステップＳ３では、入力領域７６ｋに記憶された入力データに基づいて基準点ＲＰ（図１０（Ａ）参照）を移動させる。なお、基準点ＲＰは、入力がない場合でも、所定のアルゴリズムに従って移動されてよい。ステップＳ５では、プレイヤキャラクタＰＣｒの全体を構成する各制御点ＣＰを基準点ＲＰの動きに追従して平行移動させ、その結果に基づいて、制御点領域７６ａに記憶された制御点データを更新する。ステップＳ７では、アニメーション領域７６ｃに記憶されたアニメーションデータに基づいて、プレイヤキャラクタＰＣｒの全体または一部を構成する各制御点ＣＰを個別に移動させ、その結果に基づいて、さらに制御点データを更新する。
【０１５８】
なお、アニメーションデータに現フレームのデータが含まれていない場合には、前後のフレームのデータに基づく補間によって現フレームのデータを生成したうえで、ステップＳ７の移動を実行する。また、アニメーションを切り替える際には、モーションブレンドを実行し、ブレンド後のデータに基づいて、ステップＳ７の移動を実行する。
【０１５９】
ステップＳ９では、ステップＳ５およびＳ７による移動状態に応じて各制御点ＣＰをオフセットさせ、その結果に基づいて制御点データをさらに更新する。具体的には、たとえば図１７（Ａ）に示すように、プレイヤキャラクタＰＣｒが“ジャンプ”して、速度ベクトルＭＶに従って移動している場合、まず、現時点の基準点ＲＰに対して、所定数フレーム前の時点での基準点ＰＲの位置をオフセット点ＯＰとして設定する。次に、図１７（Ｂ）に示すように、キャラクタＣｒの各制御点ＣＰ１，ＣＰ２，ＣＰ３…を、変位しやすさを示すパラメータｋ１，ｋ２，ｋ３…と、オフセット点ＯＰからの距離Ｄ１，Ｄ２，Ｄ３…との積に比例する距離だけ、速度ベクトルＭＶとは逆向きに変位させる。これによって、頭頂部の制御点ＣＰ２が大きく変位し、頬や背中の制御点ＣＰ１，ＣＰ３は小さく変異する結果、プレイヤキャラクタＰＣｒは、あたかも空気抵抗を受けて変形したように見える。
【０１６０】
ステップＳ１１では、上記のような一連の更新を経た後の制御点データに基づいて、プレイヤキャラクタＰＣｒの体および両足にそれぞれ対応する線モデルＬＭを図１１に示す要領で生成し、その結果で線モデル領域７６ｄのモデルを更新する（図２４参照：後述）。詳しくは、ステップＳ１１ａで体の線モデルＢｄが生成され、ステップＳ１１ｂで一方の足の線モデルＦｔ１が生成され、そしてステップＳ１１ｃで他方の足の線モデルＦｔ２が生成される。なお、図示は省略しているが、敵キャラクタＯＣｒの線モデルも、ステップＳ１１で生成されてよい。
【０１６１】
ステップＳ１３では、同じく制御点データに基づいて、体のマスクＢＭｓさらには足のマスクＦＭｓを生成する。詳しくは、まずステップＳ１３ａで、たとえば図１６（Ａ）に示すような体のマスクＢＭｓを生成し、その結果でマスク領域７６ｅのマスクを更新する。次に、ステップＳ１３ｂで、体より手前に足があるか否かをアニメーションデータに基づいて判別する。どちらの足も体より奥であれば、ステップＳ１３ｂでＮＯと判別してステップＳ１４に進む。少なくとも一方の足が体より手前であれば、ステップＳ１３ｂでＹＥＳと判別してステップＳ１３ｃに進み、当該足のマスクＦＭｓを生成した後、ステップＳ１４に進む。
【０１６２】
したがって、図１６（Ａ）のように、どちらの足Ｆｔ１，Ｆｔ２も体Ｂｄより奥であれば、図１８（Ａ）のように体のマスクＢＭｓだけが生成される。また、図１６（Ｂ）のように、一方の足Ｆｔ１だけが体Ｂｄより手前であれば、図１８（Ｂ）のように、体のマスクＢＭｓおよび手前の足のマスクＦＭｓが生成される。なお、図１７（Ａ）のように、どちらの足Ｆｔ１，Ｆｔ２も体Ｂｄより手前の場合には、手前の足のマスクＦＭｓは２つ生成されることになる（図示は省略）。
【０１６３】
ステップＳ１４では、アニメーションデータに基づいて、現時点でのプレイヤキャラクタＰＣｒの各要素（Ｅｙ，Ｂｄ，ＢＭｓ，Ｆｔ１，（ＦＭｓ，）Ｆｔ２：図１８（Ａ），図１８（Ｂ）参照）さらには敵キャラクタＯＣｒ（図２６（Ａ）参照）について、Ｚ方向の配列を示す描画用Ｚデータ（図２０（Ａ），図２１（Ａ），図２６（Ｂ）参照）を生成し、その結果で描画用Ｚ領域７６ｆのデータを更新する。
【０１６４】
図２３を参照して、ステップＳ１５では、アニメーションデータに基づいて、プレイヤキャラクタＰＣｒの各要素さらには敵キャラクタＯＣｒについて、描画順序を示すソート用Ｚデータ（図２０（Ｂ），図２１（Ｂ），図２６（Ｃ）参照）を生成し、その結果でソート用Ｚ領域７６ｇのデータを更新する。
【０１６５】
ステップＳ１７では、背景画像領域７６ｊに記憶されている背景画像データに基づいて、ＧＰＵ４２ｂを介してＶＲＡＭ４２ｄに背景Ｂｇを描画する。ステップＳ１９では、プレイヤキャラクタＰＣｒの各要素さらには敵キャラクタＯＣｒを、ソート用Ｚ領域７６ｇに記憶されたソート用Ｚデータ（図２０（Ｂ），図２１（Ｂ），図２６（Ｃ）参照）に従う順序で、描画用Ｚ領域７６ｆに記憶された描画用Ｚデータ（図２０（Ａ），図２１（Ａ），図２６（Ｂ）参照）に基づいてＺ比較しながら、ＶＲＡＭ４２ｄに描画する（Ｓ２５参照：後述）。こうして一連の描画が行われた後のＶＲＡＭ４２ｄの画像データが入出力プロセッサ４２ａによってモニタ２８に出力される結果、図９に示すようなゲーム画面がモニタ２８に表示される。
【０１６６】
そして、ステップＳ２１で、ゲーム終了か否かを判別し、ＮＯであればステップＳ３に戻って、１フレーム毎に上記と同様の処理を繰り返す。コントローラ１４から終了を示すデータが入力されると、ステップＳ２１でＹＥＳと判別し、処理を終了する。
【０１６７】
上記ステップＳ１１ａ〜Ｓ１１ｃの各線モデル生成処理は、たとえば図２４のサブルーチンに従って実行される。なお、敵キャラクタＯＣｒの線モデルも同様に生成されてよい。ＣＰＵ４０は、最初、ステップＳ３１で、各制御点ＣＰでの法線ベクトルを算出する。なお、この法線ベクトル算出方法については、図１１（Ａ）を用いて既に説明した。次に、ステップＳ３３で、各制御点ＣＰから法線方向に所定幅（ｄ１）オフセットした位置に１対のオフセット点ＯＰａおよびＯＰｂ（頂点）を設定する。なお、このオフセット方法については、図１１（Ｂ）を用いて既に説明した。次に、ステップＳ３５で、各頂点を順番に結んで、体の線に沿う一連のポリゴン（線モデルＬＭ）を生成する。なお、線モデルＬＭの生成方法については、図１１（Ｃ）を用いて既に説明した。次に、ステップＳ３７で、この線モデルＬＭに、たとえば図１４（Ａ）に示すような重ね書きがあるか否かを判別し、ＮＯであればメインルーチン（図２２）に復帰する。頂点を結ぶ線（オフセットＯｆｓ１，Ｏｆｓ２）が図１３（Ａ）に示すように交差していれば、ステップＳ３７でＹＥＳと判別して、ステップＳ３９に進む。ステップＳ３９では、頂点をたとえば図１３（Ｂ）に示す要領で繋ぎ変える。これによって、図１４（Ｂ）に示すような、重ね書きのない線モデルＬＭが得られる。その後、メインルーチン（図２２）に復帰する。
【０１６８】
上記ステップＳ１９の、各要素をＺ比較しながら描画する処理は、図２５のサブルーチンに従って実行される。ＣＰＵ４０は、最初、ステップＳ６１で、ソート用Ｚデータに基づいて奥の要素から順に１つを選択する。次に、ステップＳ６３で、今回選択された当該要素を描画済みの要素と描画用Ｚデータに基づいて比較し、当該要素はどの描画済み要素よりも手前か否かを次のステップＳ６５で判別する。なお、初回は、未だ描画済み要素がない（ただし背景Ｂｇは先行するステップＳ１７で既に描画されている）ので、ＹＥＳと判別される。ステップＳ６３でＹＥＳであれば、ステップＳ６７で、当該要素の全部をＶＲＡＭ４２ｄに描画する。一方、ステップＳ６３でＮＯであれば、ステップＳ６９で、当該要素の一部、具体的には、どの描画済み要素とも重なっていない部分だけを、ＶＲＡＭ４２ｄに描画する。描画にあたっては、２個１組のポリゴンからなる各四角形Ｓｑ１，Ｓｑ２…（図１１（Ｃ）参照）に、図１２（Ａ）に示すような単位テクスチャＵＴｘを繰り返し貼り付けていく。これによって、図１２（Ｂ）に示すような、周期ｄ２の毛糸模様を有する線モデルＬＭが得られる。描画の後、ステップＳ７１に進んで、全ての要素を選択し終えたか否かを判別し、ＮＯであればステップＳ６１に戻って同様の処理を繰り返す一方、ＹＥＳであればメインルーチン（図２０）に復帰する。
【０１６９】
したがって、たとえば、図１８（Ａ）に示された各要素に関し、ソート用Ｚデータに図２０（Ｂ）のような順序が記述され、描画用Ｚデータには図２０（Ａ）のような順序が記述されている場合、初回は、ステップＳ６１で「体のマスク」が選択され、ステップＳ６３のＺ比較を経てステップＳ６５でＹＥＳと判別され、そしてステップＳ６７で体のマスクＢＭｓの全部が描画される。２回目は、ステップＳ６１で「足の線」が選択されるが、ステップＳ６３のＺ比較で「足の線」は「体のマスク」よりも奥にあるため、ステップＳ６５の判別結果はＮＯとなり、したがってステップＳ６９で、足Ｆｔ１およびＦｔ２は、体のマスクＢＭｓと重なる部分は描画されず、重なっていない部分だけが描画されることになる。
【０１７０】
同様に、３回目に選択される「体の線」は、「足の線」および「体のマスク」のどちらよりも手前にあるので、体Ｂｄの全部が描画される。４回目に選択される「目」は、「体の線」，「足の線」および「体のマスク」のいずれよりも手前にあるので、目Ｅｙの全部が描画される。こうして、先行するステップＳ１７でＶＲＡＭ４２ｄに描画された背景Ｂｇの上に、図１６（Ａ）に示すようなプレイヤキャラクタＰＣｒがさらに描画される結果となる。この場合、体のマスクＢＭｓは透明であるため、体Ｂｄを通して背景Ｂｇが見える。
【０１７１】
また、図１８（Ｂ）に示された各要素に関し、ソート用Ｚデータに図２１（Ｂ）のような順序が記述され、描画用Ｚデータには図２１（Ａ）のような順序が記述されている場合、初回は、ステップＳ６１で「体のマスク」が選択され、ステップＳ６３のＺ比較を経てステップＳ６５でＹＥＳと判別され、そしてステップＳ６７で体のマスクＢＭｓの全部が描画される。２回目は、ステップＳ６１で「手前の足のマスク」が選択され、ステップＳ６３のＺ比較で「手前の足のマスク」は「体のマスク」よりも手前にあるため、ステップＳ６５の判別結果はＹＥＳとなり、したがってステップＳ６９で、手前の足のマスクＦＭｓの全部が描画される。３回目は、ステップＳ６１で「奥の足の線」が選択されるが、ステップＳ６３のＺ比較で「奥の足の線」は「体のマスク」および「手前の足のマスク」のいずれよりも奥にあるため、ステップＳ６５の判別結果はＮＯとなり、したがってステップＳ６９で、奥の足Ｆｔ２は、体のマスクＢＭｓおよび／または奥の足のマスクＦＭｓと重なる部分は描画されず、体のマスクＢＭｓおよび奥の足のマスクＦＭｓのいずれとも重なっていない部分だけが描画されることになる。４回目は、ステップＳ６１で「体の線」が選択されるが、ステップＳ６３のＺ比較で「体の線」は「奥の足の線」および「体のマスク」のいずれより手前にあるが、「手前の足のマスク」よりは奥にあるため、ステップＳ６５の判別結果はＮＯとなり、したがってステップＳ６９で、体Ｂｄは、手前の足のマスクＦＭｓと重なる部分は描画されず、これと重なっていない部分だけが描画されることになる。
【０１７２】
同様に、５回目に選択される「目」は、「奥の足の線」，「体のマスク」および「体の線」のいずれよりも手前にあるが、「手前の足のマスク」よりは奥にあるため、ステップＳ６５の判別結果はＮＯとなり、したがってステップＳ６９で、目Ｅｙは、手前の足のマスクＦＭｓと重なる部分は描画されず、これと重なっていない部分だけが描画されることになる。６回目に選択される「手前の足の線」は、「手前の足のマスク」，「目」，「体の線」，「体のマスク」および「奥の足の線」のいずれよりも手前にあるので、ステップＳ６５の判別結果はＹＥＳとなり、したがってステップＳ６７で、手前の足Ｆｔ１の全部が描画される。
【０１７３】
こうして、先行するステップＳ１７でＶＲＡＭ４２ｄに描画された背景Ｂｇの上に、図１６（Ｂ）に示すようなプレイヤキャラクタＰＣｒがさらに描画される結果となる。この場合、体のマスクＢＭｓおよび手前の足のマスクＦＭｓはいずれも透明であるため、体Ｂｄおよび手前の足Ｆｔ１を通して背景Ｂｇが見える（図９参照）。
【０１７４】
以上から明らかなように、この実施例では、ゲーム装置１２のＣＰＵ４０は、プレイヤキャラクタＰＣｒの各部分の輪郭（Ｅｄ）を形成するための制御点ＣＰに関する制御点データ（７６ａ）を生成し（Ｓ３〜Ｓ９）、制御点データに基づいて、プレイヤキャラクタＰＣｒの体の輪郭に沿う線ポリゴンモデルである体の線モデルＢｄを生成し（Ｓ１１ａ）、プレイヤキャラクタＰＣｒの一方の足の輪郭に沿う線ポリゴンモデルであって、体の線モデＢｄよりもＺ奥に配置される足の線モデルＦｔ２を生成し（Ｓ１１ｂ）、そして、体の線モデルＢｄよりＺ奥かつ足の線モデルＦｔ２よりＺ手前に配置される透明ポリゴンモデルであって、体の線に沿った輪郭を有する体のマスクＢＭｓを生成する（Ｓ１３ａ）。そして、背景Ｂｇを描画した後（Ｓ１７）、各モデルをＺ比較を行いながら描画していく（Ｓ１９）際に、最初に体のマスクＢＭｓを描画し、体のマスクＢＭｓの後に足の線モデルＦｔ２を描画し、そして足の線モデルＦｔ２の後に体の線モデルＢｄを描画する（図２１（Ｂ）参照）。
【０１７５】
こうして、制御点データを生成し、これに基づいて、プレイヤキャラクタＰＣｒの各部分の輪郭に沿う線ポリゴンモデルを生成するので、制御点データを通して、複雑な線形状を有し、かつ多様な動きをするプレイヤキャラクタＰＣｒを生成することができる。
【０１７６】
また、このようなプレイヤキャラクタＰＣｒを描画する際には、背景描画の後、最初に体のマスクＢＭｓを描画したことで、体の線モデルＢｄおよび足の線モデルＦｔ２はいずれも、体のマスクＢＭｓとのＺ比較を受ける。体の線モデルＢｄは、体のマスクＢＭｓよりもＺ手前なので、体のマスクＢＭｓによるマスクを受けることなく描画される。一方、足の線モデルＦｔ２は、体のマスクＢｄよりもＺ奥なので、体のマスクＢＭｓと重なる部分はマスクされ、体のマスクＢＭｓと重ならない部分だけが描画される。また、体のマスクＢＭｓは透明なので、背景Ｂｇの見通しには影響しない。したがって、体の線モデルＢｄの内部（体の線モデルＢｄで囲まれた部分）を通して、背景Ｂｇは見えているのに、足の線モデルＦｔ２は見えないようにできる。こうして、背景の透視性という線画の特徴を損なうことなく、しかも違和感なしに、プレイヤキャラクタＰＣｒを描画することができる。
【０１７７】
なお、プレイヤキャラクタＰＣｒに加えて、これよりもＺ奥に配置される他のオブジェクト、たとえば敵キャラクタオブジェクトＯＣｒをさらに描画する場合、体のマスクＢＭｓの前に敵キャラクタＯＣｒを描画することで、体の線モデルＢｄの内部を通して敵キャラクタＯＣｒが見えるようにできる（図２６（Ａ）参照）。
【０１７８】
また、ＣＰＵ４０は、制御点データに基づいてさらに、プレイヤキャラクタＰＣｒの他方の足の輪郭に沿う線ポリゴンモデルであって、体の線モデルＢｄよりもＺ手前に配置される足の線モデルＦｔ１を生成し（Ｓ１１ｃ）、体の線モデルＢｄよりＺ手前かつ足の線モデルＦｔ１よりＺ奥に配置される透明ポリゴンモデルであって、手前の足に沿った輪郭を有する足のマスクＦＭｓを生成する（Ｓ１３ｃ）。そして、モデル描画を行う際には、さらに、体のマスクＢＭｓの後であって足の線モデルＦｔ２よりも先に足のマスクＦＭｓを描画し、そして体の線モデルＢｄの後に足の線モデルＦｔ１を描画する（図２１（Ｂ）参照）。
【０１７９】
こうして、背景描画の後、最初に体のマスクＢＭｓを描画し、次いで足のマスクＦＭｓを描画したことで、体の線モデルＢｄ，足の線モデルＦｔ２および足の線モデルＦｔ１はいずれも、体のマスクＢＭｓさらには足のマスクＦＭｓとのＺ比較を受ける。なお、体のマスクＢＭｓよりも先に足のマスクＦＭｓを描画すると、Ｚ比較によって体のマスクＢＭｓに欠損が生じる場合があり、好ましくない。
【０１８０】
体の線モデルＢｄは、体のマスクＢＭｓよりＺ手前なので、体のマスクＢＭｓによるマスクを受けることはないが、足のマスクＦＭｓよりはＺ奥なので、足のマスクＦＭｓと重なる部分はマスクされ、足のマスクＦＭｓと重ならない部分だけが描画される。足の線モデルＦｔ２は、体のマスクＢＭｓおよび足のマスクＦＭｓのいずれよりもＺ奥なので、体のマスクＢＭｓおよび／または足のマスクＦＭｓと重なる部分はマスクされ、体のマスクＢＭｓおよび足のマスクＦＭｓのいずれとも重ならない部分だけが描画される。足の線モデルＦｔ１は、体のマスクＢＭｓおよび足のマスクＦＭｓのいずれよりもＺ手前なので、体のマスクＢＭｓおよび足のマスクＦＭｓのいずれによるマスクも受けることなく描画される。また、足のマスクＦＭｓも、体のマスクＢＭｓと同様に透明なので、背景の見通しには影響しない。
【０１８１】
したがって、体の線モデルＢｄおよび／または足の線モデルＦｔ１の内部（体の線モデルＢｄおよび／または足の線モデルＦｔ１で囲まれた部分）を通して、背景Ｂｇは見えているのに、足の線モデルＦｔ２は見えないようにできる。
【０１８２】
一般には、ＣＰＵ４０は、各線モデルのＺ方向の配列を示す描画用Ｚデータ（７６ｆ）を生成し（Ｓ１４）、さらに各線モデルの描画順序を示すＺソートデータ（７６ｇ）を生成して（Ｓ１５）、Ｚ配列情報およびＺソート情報を参照しつつ各線モデルの描画を行う。すなわち、背景描画の後、各線モデル（Ｂｄ，Ｆｔ１，Ｆｔ２，…）のうちマスクしたい線モデルよりも先に各マスク（ＢＭｓ，ＦＭｓ１，…）を描画することで、マスクしたい線モデルはどれも、各マスク（ＢＭｓ，ＦＭｓ１，…）とのＺ比較を受ける。マスク（ＢＭｓ，ＦＭｓ１，…）間の描画順序はＺ配列情報（７６ｆ）に従うので、どのマスク（ＢＭｓ，ＦＭｓ１，…）にも欠損が生じることはない。各マスクよりもＺ手前の線モデルは、いずれのマスクによるマスクを受けることなく描画される。一方、各マスクよりもＺ奥の線モデルは、少なくとも１つのマスクと重なる部分はマスクされ、どのマスクとも重ならない部分だけが描画される。
【０１８３】
そして、各マスクはどれも透明なので、背景Ｂｇの見通しには影響しない。したがって、各線モデルの内部（各線モデルで囲まれた部分）を通して、背景Ｂｇは見えているのに、当該線モデルよりもＺ奥の各線モデルは見えないようにできる。こうして、背景の透視性という線画の特徴を損なうことなく、しかも違和感なしに、プレイヤキャラクタＰＣｒや敵キャラクタＯＣｒといったキャラクタ、あるいはキャラクタ以外のオブジェクトを描画することができる。
【０１８４】
以上では、ゲームシステム１０について説明したが、この発明は、３次元仮想空間内のキャラクタオブジェクトを表示するゲーム装置ないしゲームシステムに適用できる。ゲーム装置によって実行される各処理は、ゲームシステムでは、複数のコンピュータ等によって分散処理されてよい。
【符号の説明】
【０１８５】
１０  …ゲームシステム
１２  …ゲーム装置
１４  …コントローラ
２８  …モニタ
４０  …ＣＰＵ
４２ａ  …入出力プロセッサ
４２ｂ  …ＧＰＵ
４２ｅ  …内部メインメモリ
４２ｄ  …ＶＲＡＭ
４６  …外部メインメモリ
【図１】
0005520698.tif 000002
【図２】
0005520698.tif 000003
【図３】
0005520698.tif 000004
【図４】
0005520698.tif 000005
【図５】
0005520698.tif 000006
【図６】
0005520698.tif 000007
【図７】
0005520698.tif 000008
【図８】
0005520698.tif 000009
【図９】
0005520698.tif 000010
【図１０】
0005520698.tif 000011
【図１１】
0005520698.tif 000012
【図１３】
0005520698.tif 000013
【図１４】
0005520698.tif 000014
【図１５】
0005520698.tif 000015
【図１６】
0005520698.tif 000016
【図１７】
0005520698.tif 000017
【図１８】
0005520698.tif 000018
【図１９】
0005520698.tif 000019
【図２０】
0005520698.tif 000020
【図２１】
0005520698.tif 000021
【図２２】
0005520698.tif 000022
【図２３】
0005520698.tif 000023
【図２４】
0005520698.tif 000024
【図２５】
0005520698.tif 000025
【図２６】
0005520698.tif 000026
【図１２】
0005520698.tif 000027