(57)【特許請求の範囲】
【請求項１】
仮想空間内に配置されるオブジェクトを制御するオブジェクト制御部と、
前記仮想空間内において移動可能に配置される仮想カメラを制御する仮想カメラ制御部と、
前記仮想カメラに基づいて、前記仮想空間の画像を生成する画像生成部を備え、
前記オブジェクト制御部はさらに、
前記仮想空間内に配置されるオブジェクトのうち、複数の第１の種類のオブジェクトに対して、前記仮想カメラからの距離に応じて、前記仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行う、画像処理装置。
【請求項２】
ユーザの操作入力を受け付ける操作受付部をさらに備え、
前記仮想カメラ制御部は、前記ユーザの操作入力に従って、前記仮想カメラを前記仮想空間内において移動させる、請求項１記載の画像処理装置。
【請求項３】
前記仮想空間内に配置される前記オブジェクトには、前記ユーザの操作入力に応じて制御される第２の種類のオブジェクトがさらに含まれ、
前記オブジェクト制御部はさらに、
前記ユーザの操作入力に応じて前記第２の種類のオブジェクトの前記仮想空間内における位置を制御する第２オブジェクト制御処理を行い、
前記仮想カメラ制御部はさらに、
前記第２の種類のオブジェクトが前記仮想カメラの視界に含まれるように前記第２の種類のオブジェクトに前記仮想カメラを追従させる制御を行う、請求項２記載の画像処理装置。
【請求項４】
前記オブジェクト制御部は、前記第１オブジェクト制御処理において、前記第１の種類のオブジェクトのうち、同一方向における前記仮想カメラとの距離が遠いものほど長さまたは傾きの変化の度合が小さくなるよう前記長さまたは前記傾きを変化させる、請求項１ないし３のいずれかに記載の画像処理装置。
【請求項５】
ユーザの操作入力を受け付ける操作受付部と、
仮想空間内に配置されるオブジェクトを制御するオブジェクト制御部と、
前記仮想空間内において移動可能に配置される仮想カメラを制御する仮想カメラ制御部と、
前記仮想カメラに基づいて、前記仮想空間の画像を生成する画像生成部を備え、
前記仮想空間内に配置されるオブジェクトには、複数の第１の種類のオブジェクトと、前記ユーザの操作入力に応じて制御される第２の種類のオブジェクトが含まれ、
前記オブジェクト制御部はさらに、
前記仮想カメラに基づいて、前記第１の種類のオブジェクトが、前記第２の種類のオブジェクトの少なくとも一部を隠す状態であるかどうか判定し、隠す状態の場合に、前記第１の種類のオブジェクトを前記仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行う、画像処理装置。
【請求項６】
前記仮想空間内に配置されるオブジェクトには地形として第３の種類のオブジェクトがさらに含まれ、
前記第１の種類のオブジェクトは、前記第３の種類のオブジェクト上に配置される縦長形状のオブジェクトであって、
前記長さを変化させる第１オブジェクト制御処理は、前記第３の種類のオブジェクトの上面から前記第１の種類のオブジェクトの上端までの長さまたは前記第３の種類のオブジェクトの上面から前記第１の種類のオブジェクトの上端までの高さを減少させることである、請求項１ないし５のいずれかに記載
の画像処理装置。
【請求項７】
前記長さを変化させる第１オブジェクト制御処理は、所定範囲内で、前記仮想カメラからの距離に比例または距離の２乗に比例するように、前記第３の種類のオブジェクトの上面から前記第１の種類のオブジェクトの上端までの長さまたは前記第３の種類のオブジェクトの上面から前記第１の種類のオブジェクトの上端までの高さを変化させることである、請求項６記載の画像処理装置。
【請求項８】
前記第３の種類のオブジェクトの上面から前記第１の種類のオブジェクトの上端までの長さまたは前記第３の種類のオブジェクトの上面から前記第１の種類のオブジェクトの上端までの高さは、最小値と最大値の間で変化される、請求項７記載の画像処理装置。
【請求項９】
前記距離は、前記仮想カメラの視線方向に垂直な水平方向における水平距離である、請求項７または８記載の画像処理装置。
【請求項１０】
前記距離は、前記仮想カメラからの３次元距離である、請求項７または８記載の画像処理装置。
【請求項１１】
前記距離は、前記仮想カメラの視線方向に垂直な水平方向における水平距離および前記仮想カメラからの３次元距離であり、
前記第１オブジェクト制御処理は、所定のルールに従って、複数の第１の種類のオブジェクトに対して、前記水平距離に応じて、または、前記３次元距離に応じて、前記仮想カメラから遠ざかるように長さまたは傾きを変化させる処理である、請求項７または８記載の画像処理装置。
【請求項１２】
ユーザの操作入力を受け付ける操作受付部と、
仮想空間内に配置されるオブジェクトを制御するオブジェクト制御部と、
前記仮想空間内において移動可能に配置される仮想カメラを制御する仮想カメラ制御部と、
前記仮想カメラに基づいて、前記仮想空間の画像を生成する画像生成部を備え、
前記オブジェクト制御部はさらに、
前記仮想空間内に配置されるオブジェクトのうち、複数の第１の種類のオブジェクトに対して、前記仮想カメラからの距離に応じて、前記仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行い、
前記ユーザの操作入力に応じて、前記仮想空間内に配置される前記オブジェクトに含まれ、前記ユーザの操作入力に応じて制御される第２の種類のオブジェクトの前記仮想空間内における位置を制御する第２オブジェクト制御処理を行い、
前記仮想カメラ制御部はさらに、
前記第２の種類のオブジェクトが前記仮想カメラの視界に含まれるように前記第２の種類のオブジェクトに前記仮想カメラを追従させる制御を行う、画像処理システム。
【請求項１３】
前記オブジェクト制御部は、前記第１オブジェクト制御処理において、前記第１の種類のオブジェクトのうち、同一方向における前記仮想カメラとの距離が遠いものほど長さまたは傾きを変化の度合が小さくなるように前記長さまたは前記傾きを変化させる、請求項１２記載の画像処理システム。
【請求項１４】
ユーザの操作入力を受け付ける操作受付部と、
仮想空間内に配置されるオブジェクトを制御するオブジェクト制御部と、
前記仮想空間内において移動可能に配置される仮想カメラを制御する仮想カメラ制御部と、
前記仮想カメラに基づいて、前記仮想空間の画像を生成する画像生成部を備え、
前記仮想空間内に配置されるオブジェクトには、複数の第１の種類のオブジェクトと、前記ユーザの操作入力に応じて制御される第２の種類のオブジェクトが含まれ、
前記オブジェクト制御部はさらに、
前記仮想カメラに基づいて、前記第１の種類のオブジェクトが、前記第２の種類のオブジェクトを隠す状態であるかどうか判定し、隠す状態の場合に、前記第１の種類のオブジェクトを前記仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行う、画像処理システム。
【請求項１５】
ユーザの操作入力を受け付ける操作受付部と、
仮想空間内に配置されるオブジェクトを制御するオブジェクト制御部と、
前記仮想空間内において移動可能に配置される仮想カメラを制御する仮想カメラ制御部と、
前記仮想カメラに基づいて、前記仮想空間の画像を生成する画像生成部を備える画像処理装置の画像処理方法であって、
前記オブジェクト制御部は、
前記仮想空間内に配置されるオブジェクトのうち、複数の第１の種類のオブジェクトに対して、前記仮想カメラからの距離に応じて、前記仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行い、
前記ユーザの操作入力に応じて、前記仮想空間内に配置される前記オブジェクトに含まれ、前記ユーザの操作入力に応じて制御される第２の種類のオブジェクトの前記仮想空間内における位置を制御する第２オブジェクト制御処理を行い、
前記仮想カメラ制御部は、
前記第２の種類のオブジェクトが前記仮想カメラの視界に含まれるように前記第２の種類のオブジェクトに前記仮想カメラを追従させる制御を行う、画像処理方法。
【請求項１６】
前記オブジェクト制御部は、前記第１オブジェクト制御処理において、前記第１の種類のオブジェクトのうち、同一方向における前記仮想カメラとの距離が遠いものほど長さまたは傾きを変化の度合が小さくなるように前記長さまたは前記傾きを変化させる、請求項１５記載の画像処理方法。
【請求項１７】
ユーザの操作入力を受け付ける操作受付部と、
仮想空間内に配置されるオブジェクトを制御するオブジェクト制御部と、
前記仮想空間内において移動可能に配置される仮想カメラを制御する仮想カメラ制御部と、
前記仮想カメラに基づいて、前記仮想空間の画像を生成する画像生成部を備える画像処理装置の画像処理方法であって、
前記仮想空間内に配置されるオブジェクトには、複数の第１の種類のオブジェクトと、前記ユーザの操作入力に応じて制御される第２の種類のオブジェクトが含まれ、
前記オブジェクト制御部は、
前記仮想カメラに基づいて、前記第１の種類のオブジェクトが、前記第２の種類のオブジェクトを隠す状態であるかどうか判定し、隠す状態の場合に、前記第１の種類のオブジェクトを前記仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行う、画像処理方法。
【請求項１８】
コンピュータによって実行されるゲームプログラムであって、
前記コンピュータを、
仮想空間内に配置されるオブジェクトを制御するオブジェクト制御部と、
前記仮想空間内において移動可能に配置される仮想カメラを制御する仮想カメラ制御部と、
前記仮想カメラに基づいて、前記仮想空間の画像を生成する画像生成部として機能させ、
前記オブジェクト制御部はさらに、
前記仮想空間内に配置されるオブジェクトのうち、複数の第１の種類のオブジェクトに対して、前記仮想カメラからの距離に応じて、前記仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行う、ゲームプログラム。
【請求項１９】
ユーザの操作入力を受け付ける操作受付部として前記コンピュータをさらに機能し、
前記仮想カメラ制御部は、前記ユーザの操作入力に従って、前記仮想カメラを前記仮想空間内において移動させる、請求項１８記載のゲームプログラム。
【請求項２０】
前記仮想空間内に配置される前記オブジェクトには、前記ユーザの操作入力に応じて制御される第２の種類のオブジェクトがさらに含まれ、
前記オブジェクト制御部はさらに、
前記ユーザの操作入力に応じて前記第２の種類のオブジェクトの前記仮想空間内における位置を制御する第２オブジェクト制御処理を行い、
前記仮想カメラ制御部はさらに、
前記第２の種類のオブジェクトが前記仮想カメラの視界に含まれるように前記第２の種類のオブジェクトに前記仮想カメラを追従させる制御を行う、請求項１９記載のゲームプログラム。
【請求項２１】
前記オブジェクト制御部は、前記第１オブジェクト制御処理において、前記第１の種類のオブジェクトのうち、同一方向における前記仮想カメラとの距離が遠いものほど長さまたは傾きを変化の度合が小さくなるように前記長さまたは前記傾きを変化させる、請求項１８ないし２０のいずれかに記載のゲームプログラム。
【請求項２２】
コンピュータによって実行されるゲームプログラムであって、
前記コンピュータを、
ユーザの操作入力を受け付ける操作受付部と、
仮想空間内に配置されるオブジェクトを制御するオブジェクト制御部と、
前記仮想空間内において移動可能に配置される仮想カメラを制御する仮想カメラ制御部と、
前記仮想カメラに基づいて、前記仮想空間の画像を生成する画像生成部として機能させ、
前記仮想空間内に配置されるオブジェクトには、複数の第１の種類のオブジェクトと、前記ユーザの操作入力に応じて制御される第２の種類のオブジェクトが含まれ、
前記オブジェクト制御部はさらに、
前記仮想カメラに基づいて、前記第１の種類のオブジェクトが、前記第２の種類のオブジェクトの少なくとも一部を隠す状態であるかどうか判定し、隠す状態の場合に、前記第１の種類のオブジェクトを前記仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行う、ゲームプログラム。
【請求項２３】
前記仮想空間内に配置されるオブジェクトには地形として第３の種類のオブジェクトがさらに含まれ、
前記第１の種類のオブジェクトは、前記第３の種類のオブジェクト上に配置される縦長形状のオブジェクトであって、
前記長さを変化させる第１オブジェクト制御処理は、前記第３の種類のオブジェクトの上面から前記第１の種類のオブジェクトの上端までの長さまたは前記第３の種類のオブジェクトの上面から前記第１の種類のオブジェクトの上端までの高さを減少させることである、請求項１８ないし２２のいずれかに記載のゲームプログラム。
【請求項２４】
前記長さを変化させる第１オブジェクト制御処理は、所定範囲内で、前記仮想カメラからの距離に比例または距離の２乗に比例するように、前記第３の種類のオブジェクトの上面から前記第１の種類のオブジェクトの上端までの長さまたは前記第３の種類のオブジェクトの上面から前記第１の種類のオブジェクトの上端までの高さを変化させることである、請求項２３記載のゲームプログラム。
【請求項２５】
前記第３の種類のオブジェクトの上面から前記第１の種類のオブジェクトの上端までの長さまたは前記第３の種類のオブジェクトの上面から前記第１の種類のオブジェクトの上端までの高さは、最小値と最大値の間で変化される、請求項２４記載のゲームプログラム。
【請求項２６】
前記距離は、前記仮想カメラの視線方向に垂直な水平方向における水平距離である、請求項２４または２５記載のゲームプログラム。
【請求項２７】
前記距離は、前記仮想カメラからの３次元距離である、請求項２４または２５記載のゲームプログラム。
【請求項２８】
前記距離は、前記仮想カメラの視線方向に垂直な水平方向における水平距離または前記仮想カメラからの３次元距離であり、
前記第１オブジェクト制御処理は、所定のルールに従って、複数の第１の種類のオブジェクトに対して、前記水平距離に応じて、または、前記３次元距離に応じて、前記仮想カメラから遠ざかるように長さまたは傾きを変化させる処理である、請求項２４または２５記載のゲームプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は画像処理装置、画像処理システムおよび画像処理方法に関し、特にたとえば、ディスプレイに表示される画像を生成する、画像処理装置、画像処理システムおよび画像処理方法に関する。
【背景技術】
【０００２】
背景技術の一例が特許文献１に開示される。この特許文献１に開示のゲームシステムは、オブジェクト配置部と、透明処理部と、ゲーム処理部と、描画処理部とを備え、仮想空間に配置された所定のオブジェクトを含むシーンを表示させる。オブジェクト配置部は、第１の部分およびこの第１の部分において法線ベクトルに基づき隠面として判定され得る面に対応して設定される第２の部分を含むポリゴンモデルをオブジェクトとして仮想空間に配置する。透明処理部は、ゲーム処理部で行われるゲーム処理において所定の条件が満たされたとき、オブジェクトの第１の部分の透明度を上げる。そして、描画処理部は、設定された透明度に基づいて第１の部分を描画し、第２の部分のポリゴンを描画する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５８２２６５５号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この特許文献１に開示されたゲームシステムでは、たとえば、仮想カメラ（視点）から見た場合に、プレイヤキャラクタが不透明色の障害物（所定のオブジェクト）で隠れる場合には、障害物の透明度を上げる処理が実行され、プレイヤは、半透明にされた障害物を透過されたプレイヤキャラクタを視認する。しかし、オブジェクトが半透明になるということは現実には起こらないことであって、見た目が不自然になると言える。
【０００５】
それゆえに、この発明の主たる目的は、新規な、画像処理装置、画像処理システムおよび画像処理方法を提供することである。
【０００６】
また、この発明の他の目的は、出来るだけ自然な見た目を維持しつつ画像の視認性を高くすることができる、画像処理装置、画像処理システムおよび画像処理方法を提供することである。
【課題を解決するための手段】
【０００７】
第１の発明は、画像処理装置であって、オブジェクト制御部と、仮想カメラ制御部と、画像生成部を備える。オブジェクト制御部は、仮想空間内に配置されるオブジェクトを制御する。仮想カメラ制御部は、仮想空間内において移動可能に配置される仮想カメラを制御する。画像生成部は、仮想カメラに基づいて、仮想空間の画像を生成する。オブジェクト制御部はさらに、仮想空間内に配置されるオブジェクトのうち、複数の第１の種類のオブジェクトに対して、仮想カメラからの距離に応じて、仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行う。
【０００８】
第１の発明によれば、複数の第１の種類のオブジェクトに対して、仮想カメラからの距離に応じて、仮想カメラから遠ざかるように長さまたは傾きを変化させるので、仮想カメラから見た画像において邪魔になり難くなる。また、第１の種類のオブジェクトを長さまたは傾きを変化させる処理を実行するので、オブジェクトを透明化させる処理を実行する場合に比べると仮想カメラから見た画像の見た目が比較的自然なものとなる。つまり、出来るだけ自然な見た目を維持しつつ画像の視認性を高くすることができる。
【０００９】
第２の発明は、第１の発明に従属し、画像処理装置は、操作受付部をさらに備える。操作受付部は、ユーザの操作入力を受け付ける。仮想カメラ制御部は、ユーザの操作入力に従って、仮想カメラを仮想空間内において移動させる。
【００１０】
第２の発明によれば、ユーザが仮想カメラを動かす場合にも、上記のように自然な見た目で視認性を高めることができる。
【００１１】
第３の発明は、第２の発明に従属し、仮想空間内に配置されるオブジェクトには、ユーザの操作入力に応じて制御される第２の種類のオブジェクトがさらに含まれる。オブジェクト制御部はさらに、ユーザの操作入力に応じて第２の種類のオブジェクトの仮想空間内における位置を制御する第２オブジェクト制御処理を行う。仮想カメラ制御部はさらに、第２の種類のオブジェクトが仮想カメラの視界に含まれるように第２の種類のオブジェクトに仮想カメラを追従させる制御を行う。
【００１２】
第３の発明によれば、ユーザが移動を制御可能な第２の種類のオブジェクトが仮想カメラの視野に含まれるように仮想カメラが追従されるので、複数の第１の種類のオブジェクトに対して、仮想カメラからの距離に応じて、仮想カメラから遠ざかるように長さまたは傾きを変化させるので、第２の種類のオブジェクトの視認性を高くすることができる。
【００１３】
第４の発明は、第１ないし第３の発明のいずれかに従属し、オブジェクト制御部は、第１オブジェクト制御処理において、第１の種類のオブジェクトのうち、同一方向における仮想カメラとの距離が遠いものほど長さまたは傾きの変化の度合が小さくなるように長さまたは傾きを変化させる。つまり、仮想カメラから遠ざけるための第１の種類のオブジェクトの長さまたは傾きの変化が次第に小さくされる。
【００１４】
第４の発明によれば、段階的に長さまたは傾きの変化の度合いを小さくするので、長さまたは傾きの変化後の画像がより自然に見えるようにすることができる。
【００１５】
第５の発明は、画像処理装置であって、操作受付部と、オブジェクト制御部と、仮想カメラ制御部と、画像生成部を備える。操作受付部は、ユーザの操作入力を受け付ける。オブジェクト制御部は、仮想空間内に配置されるオブジェクトを制御する。仮想カメラ制御部は、仮想空間内において移動可能に配置される仮想カメラを制御する。画像生成部は、仮想カメラに基づいて、仮想空間の画像を生成する。仮想空間内に配置されるオブジェクトには、複数の第１の種類のオブジェクトと、ユーザの操作入力に応じて制御される第２の種類のオブジェクトが含まれる。オブジェクト制御部はさらに、仮想カメラに基づいて、第１の種類のオブジェクトが、第２の種類のオブジェクトの少なくとも一部を隠す状態であるかどうか判定し、隠す状態の場合に、第１の種類のオブジェクトを仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行う。
【００１６】
第５の発明によれば、第１の発明と同様に、自然な見た目のまま画像の視認性を高くすることができる。また、第５の発明によれば、必要に応じて、第１オブジェクト制御処理を実行することができる。
【００１７】
第６の発明は、第１ないし第５の発明のいずれかに従属し、仮想空間内に配置されるオブジェクトには地面として第３の種類のオブジェクトがさらに含まれる。第１の種類のオブジェクトは、第３の種類のオブジェクト上に配置される縦長形状のオブジェクトである。長さを変化させる第１オブジェクト制御処理は、第３の種類のオブジェクトの上面から第１の種類のオブジェクトの上端までの長さまたは第３の種類のオブジェクトの上面から第１の種類のオブジェクトの上端までの高さを減少させることである。
【００１８】
第６の発明によれば、地面としての第３の種類のオブジェクト上に配置された第１の種類のオブジェクトの長さまたは高さを減少させるので、仮想カメラとその撮影対象の間において第１の種類のオブジェクトの長さまたは高さを減少させれば、撮影対象の視認性を高くすることができる。また、第１の種類のオブジェクトの長さまたは高さを減少させるだけなので、画像の見た目の自然さを出来るだけ維持することができる。
【００１９】
第７の発明は、第６の発明に従属し、長さを変化させる第１オブジェクト制御処理は、所定範囲内で、仮想カメラからの距離に比例または距離の２乗に比例するように、第３の種類のオブジェクトの上面から第１の種類のオブジェクトの上端までの長さまたは第３の種類のオブジェクトの上面から第１の種類のオブジェクトの上端までの高さを変化させることである。
【００２０】
第８の発明は、第３の種類のオブジェクトの上面から第１の種類のオブジェクトの上端までの長さまたは第３の種類のオブジェクトの上面から第１の種類のオブジェクトの上端までの高さは、最小値と最大値の間で変化される。
【００２１】
第８の発明によれば、第１の種類のオブジェクトの長さまたは高さを最小値と最大値の間で変化させるので、変化された長さまたは高さが大き過ぎることおよび小さ過ぎることを回避することができる。
【００２２】
第９の発明は、第７または第８の発明に従属し、距離は、仮想カメラの視線方向に垂直な水平方向における水平距離である。
【００２３】
第１０の発明は、第７または第８の発明に従属し、距離は、仮想カメラからの３次元距離である。
【００２４】
第１１の発明は、第７または第８の発明に従属し、距離は、仮想カメラの視線方向に垂直な水平方向における水平距離および仮想カメラからの３次元距離である。第１オブジェクト制御処理は、所定のルールに従って、複数の第１の種類のオブジェクトに対して、水平距離に応じて、または、３次元距離に応じて、仮想カメラから遠ざかるように長さまたは傾きを変化させる処理である。
【００２５】
第１２の発明は、画像処理システムであって、操作受付部と、オブジェクト制御部と、仮想カメラ制御部と、画像生成部を備える。操作受付部は、ユーザの操作入力を受け付ける。オブジェクト制御部は、仮想空間内に配置されるオブジェクトを制御する。仮想カメラ制御部は、仮想空間内において移動可能に配置される仮想カメラを制御する。画像生成部は、仮想カメラに基づいて、仮想空間の画像を生成する。オブジェクト制御部はさらに、仮想空間内に配置されるオブジェクトのうち、複数の第１の種類のオブジェクトに対して、仮想カメラからの距離に応じて、仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行い、ユーザの操作入力に応じて、仮想空間内に配置されるオブジェクトに含まれ、ユーザの操作入力に応じて制御される第２の種類のオブジェクトの仮想空間内における位置を制御する第２オブジェクト制御処理を行う。仮想カメラ制御部はさらに、第２の種類のオブジェクトが仮想カメラの視界に含まれるように第２の種類のオブジェクトに仮想カメラを追従させる制御を行う。
【００２６】
第１３の発明は、画像処理システムであって、操作受付部と、オブジェクト制御部と、仮想カメラ制御部と、画像生成部を備える。操作受付部は、ユーザの操作入力を受け付ける。オブジェクト制御部は、仮想空間内に配置されるオブジェクトを制御する。仮想カメラ制御部は、仮想空間内において移動可能に配置される仮想カメラを制御する。画像生成部は、仮想カメラに基づいて、仮想空間の画像を生成する。仮想空間内に配置されるオブジェクトには、複数の第１の種類のオブジェクトと、ユーザの操作入力に応じて制御される第２の種類のオブジェクトが含まれる。オブジェクト制御部はさらに、仮想カメラに基づいて、第１の種類のオブジェクトが、第２の種類のオブジェクトの少なくとも一部を隠す状態であるかどうか判定し、隠す状態の場合に、第１の種類のオブジェクトを仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行う。
【００２７】
第１４の発明は、ユーザの操作入力を受け付ける操作受付部と、仮想空間内に配置されるオブジェクトを制御するオブジェクト制御部と、仮想空間内において移動可能に配置される仮想カメラを制御する仮想カメラ制御部と、仮想カメラに基づいて、仮想空間の画像を生成する画像生成部を備える画像処理装置の画像処理方法である。オブジェクト制御部は、仮想空間内に配置されるオブジェクトのうち、複数の第１の種類のオブジェクトに対して、仮想カメラからの距離に応じて、仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行い、ユーザの操作入力に応じて、仮想空間内に配置されるオブジェクトに含まれ、ユーザの操作入力に応じて制御される第２の種類のオブジェクトの仮想空間内における位置を制御する第２オブジェクト制御処理を行う。仮想カメラ制御部は、第２の種類のオブジェクトが仮想カメラの視界に含まれるように第２の種類のオブジェクトに仮想カメラを追従させる制御を行う。
【００２８】
第１５の発明は、ユーザの操作入力を受け付ける操作受付部と、仮想空間内に配置されるオブジェクトを制御するオブジェクト制御部と、仮想空間内において移動可能に配置される仮想カメラを制御する仮想カメラ制御部と、仮想カメラに基づいて、仮想空間の画像を生成する画像生成部を備える画像処理装置の画像処理方法である。仮想空間内に配置されるオブジェクトには、複数の第１の種類のオブジェクトと、ユーザの操作入力に応じて制御される第２の種類のオブジェクトが含まれる。オブジェクト制御部は、仮想カメラに基づいて、第１の種類のオブジェクトが、第２の種類のオブジェクトを隠す状態であるかどうか判定し、隠す状態の場合に、第１の種類のオブジェクトを仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行う。
【００２９】
第１６の発明は、コンピュータによって実行されるゲームプログラムであって、コンピュータを、オブジェクト制御部と、仮想カメラ制御部と、画像生成部として機能させる。オブジェクト制御部は、仮想空間内に配置されるオブジェクトを制御する。仮想カメラ制御部は、仮想空間内において移動可能に配置される仮想カメラを制御する。画像生成部は、仮想カメラに基づいて、仮想空間の画像を生成する。オブジェクト制御部はさらに、仮想空間内に配置されるオブジェクトのうち、複数の第１の種類のオブジェクトに対して、仮想カメラからの距離に応じて、仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行う。
【００３０】
第１７の発明は、コンピュータによって実行されるゲームプログラムであって、コンピュータを、操作受付部と、オブジェクト制御部と、仮想カメラ制御部と、画像生成部として機能させる。操作受付部は、ユーザの操作入力を受け付ける。オブジェクト制御部は、仮想空間内に配置されるオブジェクトを制御する。仮想カメラ制御部は、仮想空間内において移動可能に配置される仮想カメラを制御する。画像生成部は、仮想カメラに基づいて、仮想空間の画像を生成する。仮想空間内に配置されるオブジェクトには、複数の第１の種類のオブジェクトと、ユーザの操作入力に応じて制御される第２の種類のオブジェクトが含まれる。オブジェクト制御部はさらに、仮想カメラに基づいて、第１の種類のオブジェクトが、第２の種類のオブジェクトの少なくとも一部を隠す状態であるかどうか判定し、隠す状態の場合に、第１の種類のオブジェクトを仮想カメラから遠ざかるように長さまたは傾きを変化させる第１オブジェクト制御処理を行う。
【００３１】
第１２ないし第１７の発明においても、第１の発明と同様に、自然な見た目のまま画像の視認性を高くすることができる。
【００３２】
また、第１３、第１５、第１７の発明においても、第５の発明と同様に、必要に応じて、第１オブジェクト制御処理を実行することができる。
【発明の効果】
【００３３】
この発明によれば、複数の第１の種類のオブジェクトが配置される場合に、仮想カメラから遠ざかるように第１の種類のオブジェクトを変形または移動させるので、仮想カメラから見た画像において撮影対象（被写体）の視認性を高くすることができる。また、第１の種類のオブジェクトを変形または移動によって制御するので、見た目の自然さを出来るだけ維持することができる。つまり、出来るだけ自然な見た目を維持しつつ画像の視認性を高くすることができる。
【００３４】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００３５】
【図１】図１はゲームシステムの限定しない一例の外観図である。
【図２】図２は図１に示すゲーム装置の電気的な構成の限定しない一例を示すブロック図である。
【図３】図３は図１に示す端末装置の電気的な構成の限定しない一例を示すブロック図である。
【図４】図４は仮想空間に各種のオブジェクトが配置されたシーンの限定しない一例の一部を俯瞰的に見た図解図である。
【図５】図５は図４に示す場合において仮想カメラで撮影された画像の限定しない一例を示す図解図である。
【図６】図６は縦長オブジェクトを仮想カメラから遠ざかるように制御する方法の限定しない一例を説明するための図解図である。
【図７】図７は図６を用いて説明した場合の縦長オブジェクトの高さを変化させるために設定されるパラメータの限定しない一例を説明するための図解図である。
【図８】図８は図４に示したシーンの一部において一部の縦長オブジェクトの高さを変化させた場合の限定しない一例を俯瞰的に見た図解図である。
【図９】図９は図８に示すシーンの一部において仮想カメラで撮影された画像の限定しない一例を示す図解図である。
【図１０】図１０（Ａ）は縦長オブジェクトを仮想カメラから遠ざかるように制御する方法の限定しない第２の例を説明するための図解図であり、図１０（Ｂ）は縦長オブジェクトを仮想カメラから遠ざかるように制御する方法の限定しない第３の例を説明するための図解図である。
【図１１】図１１は縦長オブジェクトの高さを変化させるために設定されるパラメータの限定しない他の例を説明するための図解図である。
【図１２】図１２は縦長オブジェクトを仮想カメラから遠ざかるように制御する方法の限定しない第４の例を説明するための図解図である。
【図１３】図１３は図１２に示す場合において縦長オブジェクトの高さを変化させるために設定されるパラメータの限定しない一例を説明するための図解図である。
【図１４】図１４は仮想空間に各種のオブジェクトが配置されたシーンの限定しない第２の例の一部を俯瞰的に見た図解図である。
【図１５】図１５は図１４に示すシーンの一部において一部の縦長オブジェクトの高さを変化させた場合の限定しない一例を俯瞰的に見た図解図である。
【図１６】図１６（Ａ）は他の縦長オブジェクトを仮想カメラから遠ざかるように制御する方法の限定しない一例を説明するための図解図であり、図１６（Ｂ）は図１６（Ａ）に示す場合において他の縦長オブジェクトの高さを変化させるために設定されるパラメータの限定しない一例を説明するための図解図である。
【図１７】図１７は図２に示すメインメモリのメモリマップの限定しない一例を示す図である。
【図１８】図１８は図２に示すゲーム装置のＣＰＵの全体処理の限定しない一例を示すフロー図である。
【図１９】図１９は図２に示すゲーム装置のＣＰＵおよびＧＰＵの縦長オブジェクト配置処理の限定しない一例を示すフロー図である。
【発明を実施するための形態】
【００３６】
以下、図面を参照して、本発明の一実施例に係るゲームシステム１０について説明する。図１に示すゲームシステム１０は、据置型のゲーム装置１２および可搬型の端末装置１４を含む。また、ゲームシステム１０は、テレビジョン受像器等に代表される据置型のディスプレイ装置（以下、「テレビ」と記載する）１６を含み、接続コードを介して、ゲーム装置１２とテレビ１６が接続される。このゲームシステム１０は、端末装置１４を用いたゲーム操作に基づいて、ゲーム装置１２においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をテレビ１６および／または端末装置１４に表示するものである。
【００３７】
図示は省略するが、ゲーム装置１２には、当該ゲーム装置１２に対して交換可能に用いられる情報記憶媒体の一例である光ディスクが脱着可能に挿入される。光ディスクには、ゲーム装置１２において実行されるための情報処理プログラム（典型的にはゲームプログラムのようなアプリケーションプログラム）が記憶されている。ゲーム装置１２は、光ディスクに記憶されている情報処理プログラムを読み出して実行することによって情報処理（ゲーム処理）を実行する。
【００３８】
テレビ１６は、ゲーム装置１２において実行されるゲーム処理によって得られるゲーム画像を表示する。テレビ１６はスピーカ１６ａ（図２）を有しており、スピーカ１６ａは、上記ゲーム処理の結果得られるゲーム音声を出力する。
【００３９】
なお、他の実施例では、ゲーム装置１２と据置型の表示装置とは一体となっていてもよい。また、ゲーム装置１２とテレビ１６との通信は無線通信であってもよい。
【００４０】
端末装置１４は、少なくとも、ゲーム装置１２との間でデータを送受信する。ユーザ（プレイヤ）は、端末装置１４を手に持って動かしたり、端末装置１４を自由な位置に配置したりして使用することが可能である。端末装置１４は、タッチパネル５６、アナログスティック５８および操作ボタン６０のような入力手段と、ＬＣＤ６２のような表示手段を備える。たとえば、Ｂｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術を用いた無線通信によってゲーム装置１２と通信可能である。ただし、端末装置１４とゲーム装置１２とは有線で接続されてもよい。端末装置１４は、ゲーム装置１２で生成された画像（たとえばゲーム画像）のデータをゲーム装置１２から受信し、受信した画像をＬＣＤ６２に表示する。また、端末装置１４は、自機に対して行われた操作の内容を表す操作データをゲーム装置１２に送信する。
【００４１】
図２は、ゲーム装置１２の電気的な構成を示すブロック図である。ゲーム装置１２は、ＣＰＵ２０、システムＬＳＩ２２、外部メインメモリ２６、ＲＯＭ／ＲＴＣ２８、およびＡＶ−ＩＣ３６等を有する。
【００４２】
ＣＰＵ２０は、光ディスクに記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ２０は、システムＬＳＩ２２に接続される。このシステムＬＳＩ２２には、ＣＰＵ２０の他、外部メインメモリ２６、ＲＯＭ／ＲＴＣ２８およびＡＶ−ＩＣ３６が接続される。システムＬＳＩ２２は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部情報処理装置からのデータの取得等の処理を行う。
【００４３】
揮発性の外部メインメモリ２６は、光ディスクから読み出されたゲームプログラムや、フラッシュメモリ２４から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ２０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ２８は、ゲーム装置１２の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ）とを有する。
【００４４】
なお、光ディスクから読み出されたプログラムデータやテクスチャデータ等は、後述する内部メインメモリ２２ｅまたは外部メインメモリ２６に書き込まれる。
【００４５】
システムＬＳＩ２２には、入出力プロセッサ（Ｉ／Ｏプロセッサ）２２ａ、ＧＰＵ２２ｂ、ＤＳＰ２２ｃ、ＶＲＡＭ２２ｄ、および内部メインメモリ２２ｅが設けられる。図示は省略するが、これらの構成要素２２ａ〜２２ｅは内部バスによって互いに接続される。
【００４６】
ＧＰＵ２２ｂは、描画手段の一部を形成し、ＣＰＵ２０からのグラフィクスコマンド（作画命令）に従って画像データを生成する。ただし、ＶＲＡＭ２２ｄに、メインメモリ（２２ｅ、２６）から読み出したポリゴンデータやテクスチャデータ等のデータが記憶され、ＧＰＵ２２ｂは、そのデータを用いて画像データを生成する。この実施例においては、ゲーム装置１２は、テレビ１６に表示するゲーム画像（以下、「テレビ用ゲーム画像」と呼ぶ）の画像データを生成する。
【００４７】
ＤＳＰ２２ｃは、オーディオプロセッサとして機能し、内部メインメモリ２２ｅや外部メインメモリ２６に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。なお、この実施例においては、ゲーム装置１２は、テレビ１６のスピーカ１６ａから出力するゲーム音声（以下、「テレビ用ゲーム音声」と呼ぶ）の音声データを生成する。
【００４８】
上記のように、ゲーム装置１２において生成される画像および音声のうちで、テレビ１６において出力される画像および音声（効果音や音楽なども含む。以下、同じ。）のデータは、ＡＶ−ＩＣ３６によって読み出される。ＡＶ−ＩＣ３６は、読み出した画像データを、ＡＶコネクタ３８を介してテレビ１６に出力するとともに、読み出した音声データを、テレビ１６に内蔵されるスピーカ１６ａに出力する。これによって、テレビ１６に画像が表示されるとともにスピーカ１６ａから音声が出力される。
【００４９】
入出力プロセッサ２２ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部情報処理装置からのデータのダウンロードを実行したりする。また、入出力プロセッサ２２ａは、フラッシュメモリ２４およびコーデックＬＳＩ３０に接続される。また、コーデックＬＳＩ３０は端末通信モジュール３２に接続され、端末通信モジュール３２にはアンテナ３４が接続される。
【００５０】
ＣＰＵ２０はゲームプログラムを実行することにより、フラッシュメモリ２４に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ２４には、ゲーム装置１２と外部情報処理装置との間で送受信されるデータの他、ゲーム装置１２を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００５１】
なお、図示は省略するが、入出力プロセッサ２２ａは、ネットワーク通信モジュールを用いてインターネット等のネットワークに接続し、ネットワークに接続される外部情報処理装置（たとえば他のゲーム装置や、各種サーバ等）と通信する（データを送受信する）ことができる。
【００５２】
また、ゲーム装置１２は、端末装置１４との間でデータを送受信することが可能である。入出力プロセッサ２２ａは、端末装置１４へデータを送信する場合、送信するデータをコーデックＬＳＩ３０へ出力する。コーデックＬＳＩ３０は、入出力プロセッサ２２ａからのデータに対して所定の圧縮処理を行う。端末通信モジュール３２は、端末装置１４との間で無線通信を行う。したがって、コーデックＬＳＩ３０によって圧縮されたデータは、端末通信モジュール３２によってアンテナ３４を介して端末装置１４へ送信される。この実施例では、コーデックＬＳＩ３０は、たとえばＨ２６４規格といった高効率の圧縮技術を用いてデータを圧縮する。
【００５３】
また、ゲーム装置１２は、端末装置１４から各種データを受信（受付）可能である。この実施例では、端末装置１４は、操作データ、画像データ、および音声データを送信する。端末装置１４から送信される各データはアンテナ３４を介して端末通信モジュール３２によって受信される。ここで、端末装置１４からの画像データおよび音声データは、ゲーム装置１２から端末装置１４に送信されるデータと同様の圧縮処理が施されている。
【００５４】
したがって、これら画像データおよび音声データについては、端末通信モジュール３２からコーデックＬＳＩ３０に送られ、コーデックＬＳＩ３０によって伸張処理が施されて入出力プロセッサ２２ａに出力される。
【００５５】
一方、端末装置１４からの操作データに関しては、画像や音声に比べてデータ量が少ないので、圧縮処理が施されていなくともよい。また、必要に応じて暗号化がされていてもよいし、されていなくともよい。操作データは、端末通信モジュール３２で受信された後、コーデックＬＳＩ３０を介して入出力プロセッサ２２ａに出力される。入出力プロセッサ２２ａは、端末装置１４から受信したデータを、内部メインメモリ２２ｅまたは外部メインメモリ２６のバッファ領域に記憶（一時記憶）する。
【００５６】
なお、ゲーム装置１２の構成は限定される必要は無い。たとえば、拡張機器を接続可能な構成とすることもできる。
【００５７】
図３は、端末装置１４の電気的な構成を示すブロック図である。図３に示すように、端末装置１４は、図１に示した構成の他、ユーザインタフェースコントローラ（ＵＩコントローラ）５０、タッチパネルコントローラ５４、コーデックＬＳＩ５２、スピーカ６６、サウンドＩＣ６４、マイク６８、無線モジュール７０、アンテナ７２、およびフラッシュメモリ７４を備える。これらの電子部品は、電子回路基板上に実装されてハウジング内に収納される。
【００５８】
ＵＩコントローラ５０は、各種の入出力部に対するデータの入出力を制御するための回路である。このＵＩコントローラ５０は、タッチパネルコントローラ５４、アナログスティック５８、および操作ボタン６０に接続される。また、ＵＩコントローラ５０は、コーデックＬＳＩ５２に接続される。
【００５９】
タッチパネルコントローラ５４は、タッチパネル５６に接続され、タッチパネル５６の制御を行う回路である。タッチパネルコントローラ５４は、タッチパネル５６からの信号に基づいて所定の形式のタッチ位置データを生成してＵＩコントローラ５０へ出力する。タッチ位置データは、タッチパネル５６の入力面において入力が行われた位置（タッチ位置）の座標を表す。
【００６０】
アナログスティック５８は、ユーザの指で操作されるスティック部がスライドした（または傾倒した）方向および量を表すスティックデータをＵＩコントローラ５０へ出力する。また、操作ボタン６０は、各種の操作ボタンないしキースイッチに対する入力状況（押下されたか否か）を表す操作ボタンデータをＵＩコントローラ５０へ出力する。
【００６１】
ＵＩコントローラ５０は、上記の各構成要素から受け取ったタッチ位置データ、スティックデータ、および操作ボタンデータを含む操作データをコーデックＬＳＩ５２に出力する。
【００６２】
コーデックＬＳＩ５２は、ゲーム装置１２へ送信するデータに対する圧縮処理、および、ゲーム装置１２から送信されたデータに対する伸張処理を行う回路である。コーデックＬＳＩ５２には、ＬＣＤ６２、サウンドＩＣ６４、無線モジュール７０、およびフラッシュメモリ７４が接続される。また、コーデックＬＳＩ５２はＣＰＵ５２ａと内部メモリ５２ｂを含む。
【００６３】
無線モジュール７０にはアンテナ７２が接続されており、無線モジュール７０はアンテナ７２を介してゲーム装置１２へ送信データを送信する。無線モジュール７０は、ゲーム装置１２の端末通信モジュール３２と同様の機能を有している。上述したように、端末装置１４からゲーム装置１２へ送信される送信データには、操作データ、画像データ、および音声データが含まれる。
【００６４】
なお、この実施例の端末装置１４は、タッチパネル５６、アナログスティック５８、および操作ボタン６０といった操作手段を備えるが、他の実施例においては、これらの操作手段に代えて、または、これらの操作手段とともに、他の操作手段を備える構成であってもよい。たとえば、端末装置１４の動き（位置や姿勢、あるいは、位置や姿勢の変化を含む）を算出するためのセンサとして、磁気センサ、加速度センサ、およびジャイロセンサの少なくとも１つを備えるようにしてよい。
【００６５】
また、端末装置１４は、カメラおよびマイク６８を備える構成であるが、他の実施例においては、カメラおよびマイク６８を備えていなくてもよく、また、いずれか一方のみを備えていてもよい。
【００６６】
情報処理装置の一例であるゲーム装置１２は、画像処理装置としても機能し、画像データを生成および出力（表示）する。簡単に説明すると、ＧＰＵ２２ｂは、ＣＰＵ２０の指示の下、３次元の仮想空間に各種のオブジェクトをモデリングする。つまり、各種のオブジェクトが仮想空間に作成ないし配置され、或る情景（シーン）が生成される。このシーンを仮想カメラで撮影した（視点から見た）画像がテレビ１６（モニタ）に表示される。具体的な画像処理について説明すると、まず、３次元（ワールド座標系）の仮想空間に或るシーンが生成され、仮想空間に生成されたシーンが仮想カメラから捉えた座標（カメラ座標）系に変換（透視変換）される。たとえば、視点から見た画像が仮想のスクリーン上に透視投影される。次に、クリッピングおよび陰面消去処理が施される。続いて、シェーディングが施されることにより、オブジェクト表面の明るさ（陰影）が表現される。さらに、シャドーイング（影付け）が施されることにより、オブジェクトによって生じる影が表現される。そして、テクスチャマッピングが施される。このようにして２次元画像が生成（描画）され、生成された２次元画像に対応する２次元画像データがＡＶ−ＩＣ３６およびＡＶコネクタ３８を介してテレビ１６に出力される。なお、３次元のデータから２次元画像データを生成することをレンダリングという。
【００６７】
図４は仮想空間に生成された或るシーン１００の一部を斜め上方から俯瞰的に見た図解図である。なお、図４は、仮想カメラの配置を含めて説明をするための図解図であるので、当該仮想カメラに基づいて生成されるゲーム画像（図５参照）とは異なっている。後述する図８および図１５についても同じ。
【００６８】
このシーン１００では、プレイヤキャラクタないしプレイヤオブジェクト１０２が地面オブジェクト１０４上に配置される。また、地面オブジェクト１０４上には、比較的長い丈の草原（草むら）を模したオブジェクト（以下、「草原オブジェクト」という）１０６が配置され、プレイヤオブジェクト１０２は草原オブジェクト１０６の中に入っている。また、このプレイヤオブジェクト１０２を注視（撮影）するように、仮想カメラ１１０が配置される。つまり、プレイヤオブジェクト１０２は、仮想カメラ１１０の視界（撮影可能な範囲）に含まれる。視界は、四角錐台（視体積）の視野であり、図４（図８および図１５も同様）においては、点線で示してある。ただし、四角錐台の底面などの一部は図示したシーン１００の一部の外にはみ出している。また、四角錐台の上面がニアークリッピング面であり、底面がファークリッピング面である。さらに、仮想カメラ１１０からプレイヤオブジェクト１０２を見た場合において、草原オブジェクト１０６の向こう側（奥側）に、山または／および岩を模したオブジェクト（以下、この明細書において、単に「山オブジェクト」という）１０８が配置される。
【００６９】
なお、地面オブジェクト１０４、草原オブジェクト１０６および山オブジェクト１０８を、まとめて、背景オブジェクトと呼ぶことがある。
【００７０】
また、図４において、草原オブジェクト１０６を構成する各草に相当するオブジェクトを説明する場合には、その各オブジェクトを「草オブジェクト１０６ａ」と呼ぶことにする。以下、同様である。
【００７１】
上述したように、仮想カメラ１１０で撮影した画像がテレビ１６に表示されるため、図４に示すシーン１００では、図５に示すような画像（ゲーム画像）１５０がテレビ１６に表示される。図５に示すように、ゲーム画像１５０には、草原オブジェクト１０６の一部が含まれる。上述したように、草原オブジェクト１０６を構成する各草オブジェクト１０６ａは、比較的丈が長いため、ゲーム画像１５０においては、プレイヤオブジェクト１０２が複数の草オブジェクト１０６ａで隠れてしまう。このため、プレイヤオブジェクト１０２がほとんど見えない状態である。
【００７２】
このように、プレイヤオブジェクト１０２がほとんど見えない状態においては、従来、たとえばプレイヤオブジェクト１０２と仮想カメラ１１０の間に配置されるオブジェクト（複数の草オブジェクト１０６ａ）の透明度を高くする処理が実行され、半透明にされた草オブジェクト１０６ａを透過して仮想カメラ１１０で撮影されるプレイヤオブジェクト１０２を含むゲーム画像がテレビ１６に表示されることがあった。
【００７３】
このような従来の方法ないし処理では、プレイヤオブジェクト１０２が見えない状態を回避することはできるが、草オブジェクト１０６ａが半透明に変化されるため、半透明にされた草オブジェクト１０６ａという現実には存在しないものを含むゲーム画像を見たユーザないしプレイヤは違和感を覚える。つまり、ゲーム画像の見た目が不自然である。
【００７４】
このような不都合を回避するため、この実施例では、草オブジェクト１０６ａのように、地面オブジェクト１０４上に密集して配置されることにより、ゲーム画像において、プレイヤオブジェクト１０２のような所定のオブジェクトの一部または全部についての視認性を低下させるオブジェクト（以下、「縦長オブジェクト」と呼ぶことがある）が存在する場合には、仮想カメラ１１０から遠ざかるように、その縦長オブジェクトを変形または移動させるようにしてある。
【００７５】
この実施例では、縦長オブジェクトの変形は、縦長オブジェクトの形状または／および大きさが変化されること、または、縦長オブジェクトの向きが変化されること、或いは、縦長オブジェクトの向きおよび形状が変化されることを意味する。また、縦長オブジェクトの移動は、縦長オブジェクトの位置が変化されること、または、縦長オブジェクトの向きが変化されること、或いは、縦長オブジェクトの向きおよび形状が変化されることを意味する。したがって、縦長オブジェクトの向き、または、縦長オブジェクトの向きおよび形状が変化される場合には、縦長オブジェクトが変形されると言えるし、縦長オブジェクトが移動されるとも言える。
【００７６】
図６は、仮想カメラ１１０から遠ざかるように、縦長オブジェクトを変形させる場合の一例を示す図解図である。図７は、仮想カメラ１１０から縦長オブジェクトを遠ざかるように変形させる範囲およびパラメータの変化を示す図解図である。
【００７７】
図６および図７に示すように、この実施例では、仮想空間における仮想カメラ１１０を基準に、この仮想カメラ１１０を含む所定の範囲Ｅ１内の縦長オブジェクトの高さＨが変化される。この点で、範囲Ｅ１を、縦長オブジェクトの高さＨを制御する範囲（高さ制御範囲）と呼ぶことができる。後述する他の範囲Ｅ２および範囲Ｅ３も同様である。
【００７８】
ただし、仮想カメラ１１０には、その３次元位置を基準（中心Ｏ）として、３次元の座標系（ローカル座標系）が設定される。図６および図７に示すように、仮想カメラ１１０の視線と重なり、水平方向に延びる軸がｚ軸に設定される。また、仮想カメラ１１０の位置を通り、垂直方向に延びる軸がy軸に設定される。そして、ｙ軸とｚ軸の両方に垂直に延びる軸がｘ軸に設定される。
【００７９】
なお、図６および図７に示す例では、仮想カメラ１１０の視線とｚ軸が重なるが、仮想カメラ１１０の向きが水平方向から上または下に傾く場合には、視線とｚ軸は重ならない。
【００８０】
また、図６および図７に示すように、仮想カメラ１１０の視線方向がｚ軸のマイナス方向に設定され、仮想カメラ１１０の視線方向を向いた場合の右方向がｘ軸のプラス方向に設定され、仮想カメラ１１０の視線方向を向いた場合の上方向がｙ軸のプラス方向に設定される。以下、仮想カメラ１１０に設定されるローカル座標系について同じである。
【００８１】
図６に示すように、縦長オブジェクトの高さＨは、仮想カメラ１１０に設定されたローカル座標系において、ｚ軸（視線）からｘ軸方向に離れるに従って高く（大きく）なるように変化される。つまり、同一の方向（斜め方向も含む）においては、仮想カメラ１１０から離れるに従って縦長オブジェクトの高さＨは高くされる。たとえば、縦長オブジェクトである草原オブジェクト１０６を構成する各草オブジェクト１０６ａは縦長の三角形の形状に形成され、ｚ軸から離れるに従ってその高さＨが大きくなるように変化される。ただし、この実施例では、各草オブジェクト１０６ａの位置は、当該草オブジェクト１０６ａが仮想空間内の地面に接する辺の中心点に設定される。
【００８２】
図６からも分かるように、仮想カメラ１１０に設定されたローカル座標系で表現された場合の草オブジェクト１０６ａのｘ座標の値（絶対値）が大きい程、草オブジェクト１０６ａの高さＨが大きくされる。図示は省略するが、仮想カメラ１１０の左側（Ｘ軸のマイナス方向）についても同様に、仮想カメラ１１０から離れるに従って草オブジェクト１０６ａの高さＨが高くなるように変化される。逆に、草オブジェクト１０６ａのｘ座標の絶対値が小さい程、草オブジェクト１０６ａの高さＨが小さくされる。たとえば、図６に示す例では、仮想カメラ１１０側から数えて、２番目の草オブジェクト１０６ａのｘ座標Ｘ１よりも４番目の草オブジェクト１０６ａのｘ座標Ｘ２が大きいため、４番目の草オブジェクト１０６ａの高さＨは２番目の草オブジェクト１０６ａの高さＨよりも高くされる。つまり、仮想カメラ１１０の視線からの水平距離Ｋが大きくなるにつれて、草オブジェクト１０６ａの高さＨが次第に高くされる。ただし、図６に示す例では、各草オブジェクト１０６ａのデフォルト（本来）の高さＨは同じに設定される。
【００８３】
この実施例では、後述するように、草オブジェクト１０６ａの高さＨは、ｘ座標の大きさに応じて、段階的（ステップ状）に変化される。また、この実施例では、草オブジェクト１０６ａの高さＨは、当該草オブジェクト１０６ａの縦方向の長さ（直線距離ｄ１）を変更することにより、変化される。
【００８４】
また、草オブジェクト１０６ａの高さＨは、上限および下限の範囲内で変化される。草オブジェクト１０６ａの高さＨの上限は、一例として、プレイヤオブジェクト１０２の高さの所定の割合（たとえば、７０％）で決まる値に予め設定される。また、草オブジェクト１０６ａの高さＨの下限は、一例として、地面からの仮想カメラ１１０の高さの半分の値に設定される。
【００８５】
ただし、高さＨの上限は、プレイヤオブジェクト１０２に対する仮想カメラ１１０の位置（高さ）に応じて可変的に設定されてもよい。たとえば、仮想カメラ１１０がプレイヤオブジェクト１０２を斜め上方から撮影する場合には、高さＨの上限は比較的大きい値に設定され、また、仮想カメラ１１０がプレイヤオブジェクト１０２の後方または斜め下方から撮影する場合には、高さＨの上限は比較的小さい値に設定される。また、高さＨの下限は、仮想カメラ１１０に関係無く、地面（地面オブジェクト１０４の表面（上面））からの草オブジェクト１０６ａのデフォルトの高さＨ、または、草オブジェクト１０６ａのデフォルトの長さに基づいて決定されてもよい。
【００８６】
図６に示すように、草オブジェクト１０６ａの高さＨは、草オブジェクト１０６ａの長さ（底辺と頂点とを結ぶ直線距離ｄ１）または地面から草オブジェクト１０６ａの頂点（最高点）までの直線距離ｄ２で決定される。直線距離ｄ１は、草オブジェクト１０６ａの地面に対する傾きに拘わらず一定であるが、直線距離ｄ２は、草オブジェクト１０６ａの地面に対する傾きによって変化される。したがって、草オブジェクト１０６ａが地面オブジェクト１０４上に鉛直上方に向けて配置される場合には、直線距離ｄ１と直線距離ｄ２は等しいが、草オブジェクト１０６ａが地面オブジェクト１０４上に斜め上方に向けて配置される場合には、直線距離ｄ１は直線距離ｄ２よりも大きい。
【００８７】
また、上述したように、この実施例では、草オブジェクト１０６ａの高さＨが変化されるのは、仮想カメラ１１０の位置を中心（基準）にした所定の範囲Ｅ１内である。図７では、範囲Ｅ１の外枠（外形）を点線で示してある。
【００８８】
図７に示すように、この実施例では、範囲Ｅ１は、ｘ軸方向に所定の長さＬ１を有し、ｚ軸方向に所定の長さＬ２を有する四角形（長方形）で規定される。ただし、範囲Ｅ１の中心は、仮想カメラ１１０の位置に設定される。また、たとえば、長さＬ１は、プレイヤオブジェクト１０２の胴体の大きさ（横幅）に基づいて設定され、長さＬ２は、プレイヤオブジェクト１０２と仮想カメラ１１０の距離に基づいて設定される。ただし、プレイヤオブジェクト１０２と仮想カメラ１１０の距離は、仮想カメラ１１０がプレイヤオブジェクト１０２に追従して移動する場合に予め設定される距離（水平距離または直線距離）である。この実施例では、長さＬ１は、プレイヤオブジェクト１０２の胴体（または本体）を水平面に平行な面の形状を円形または楕円形で近似した場合の直径または長軸と同じまたはそれよりも少し大きく設定される。また、長さＬ２は、プレイヤオブジェクト１０２を追従する場合に設定されたプレイヤオブジェクト１０２と仮想カメラ１１０のデフォルトの距離よりも少し長い距離の２倍に設定される。
【００８９】
なお、図７に示すように、仮想カメラ１１０を中心に範囲Ｅ１を設定してあるが、ゲーム画像１５０は仮想カメラ１１０で撮影された画像であるため、たとえば、範囲Ｅ１は、仮想カメラ１１０の前方のニアークリッピング面または仮想カメラ１１０の中心（視点）からｚ軸のマイナス方向のみに設定されるようにしてもよい。
【００９０】
また、図６にも示したように、この実施例では、草オブジェクト１０６ａの高さＨは仮想カメラ１１０から遠ざかるに従って段階的に高くされる。このため、草オブジェクト１０６ａの高さＨを変化させるパラメータ（係数ないし倍率）は仮想カメラ１１０の視線（ｚ軸と重なる線）からｘ軸のプラス方向およびマイナス方向に向かうに従って、段階的に大きくされる。
【００９１】
ただし、パラメータは１よりも小さい数値である。図７では、パラメータの値の違いを範囲Ｅ１内においてグレーの明るさの違いで示してある。ただし、グレーが明るい程、パラメータの値は大きい。
【００９２】
また、パラメータの段階的な変化は、線形的な変化（１次関数に従う変化）でもよいし、放物線状の変化（２次関数に従う変化）でもよい。また、高さＨ自体が、段階的に変化されることに代えて、線形的に変化されてもよいし、放物線状に変化されてもよい。
【００９３】
図７に示すようにパラメータが設定される場合には、図４に示したシーン１００において、一部の草オブジェクト１０６ａの高さＨが変化され、図８に示すように、シーン１００が変化される。図８からも分かるように、少なくとも、仮想カメラ１１０とプレイヤオブジェクト１０２の間に配置される草オブジェクト１０６ａの高さＨが低くされ、仮想カメラ１１０からプレイヤオブジェクト１０２を見た場合に、図４に示したシーン１００と比較して、プレイヤオブジェクト１０２の視認性が高くされる。したがって、図９に示すように、仮想カメラ１１０で撮影された画像（ゲーム画像１５０）においても、プレイヤオブジェクト１０２を隠していた草オブジェクト１０６ａの高さＨが低くされ、プレイヤオブジェクト１０２の視認性が高くされる。
【００９４】
図６から明らかなように、草オブジェクト１０６ａの高さＨを短くする処理は、仮想カメラ１１０から遠ざかる変形である。たとえば、草オブジェクト１０６ａの重心位置は仮想カメラ１１０から遠ざかっている。また、草オブジェクト１０６ａにおける仮想カメラ１１０から最も近い点の位置が仮想カメラ１１０から遠ざかっている。したがって、草オブジェクト１０６ａの高さＨを短くする変形は、仮想カメラ１１０から遠ざかるような変形であるということができる。
【００９５】
また、草オブジェクト１０６ａの高さＨが変化されるのは、上述した範囲Ｅ１内に配置された草オブジェクト１０６ａであり、ゲーム画像１５０の左右の端部に向かうに従って草オブジェクト１０６ａの高さＨが段階的に高くなるので、ゲーム画像１５０を見たプレイヤは、草オブジェクト１０６ａを掻き分けてプレイヤオブジェクト１０２を見ているような体感を得る。したがって、ゲーム画像１５０の見た目が不自然になることはほとんど無い。
【００９６】
上記のように、この実施例では、草オブジェクト１０６ａの長さ（直線距離ｄ１）を変化させることにより、草オブジェクト１０６ａの高さＨを変化させるようにしたが、草オブジェクト１０６ａを仮想カメラ１１０から遠ざける方法はこれに限定される必要はない。
【００９７】
たとえば、図１０（Ａ）に示すように、草オブジェクト１０６ａの向き（傾き）を変化（移動）させることにより、草オブジェクト１０６ａの高さＨを変化させることもできる。つまり、草オブジェクト１０６ａは、仮想カメラ１１０からｘ軸方向の距離が大きくなると、傾斜角度（傾きの度合い）が段階的に小さくされることにより、高さＨが段階的に大きくされる。ただし、草オブジェクト１０６ａを傾ける方向は、仮想カメラ１１０または仮想カメラ１１０の視線から離れる方向である。
【００９８】
なお、図１０（Ａ）に示す方向に草オブジェクト１０６ａを傾ける場合には、単に傾けるのみならず、草オブジェクト１０６ａが地面オブジェクト１０４に刺さらないように、その形状も一部変形される。図示は省略するが、図１０（Ａ）の紙面に対して垂直な方向に傾ける場合には、草オブジェクト１０６ａは、その底辺を軸に傾斜されるため、その形状を変形させる必要はない。また、図１０（Ａ）では、草オブジェクト１０６ａが傾けられていることを分かり易く示すために、他の場合よりも、草オブジェクト１０６ａの数を少なくしてある。
【００９９】
また、図１０（Ｂ）に示すように、草オブジェクト１０６ａの配置位置を移動させることにより、仮想カメラ１１０から遠ざかるように、草オブジェクト１０６ａを配置することもできる。つまり、草オブジェクト１０６ａは、仮想カメラ１１０からｘ軸方向の距離が大きくなると、移動距離（移動量または移動の度合い）が段階的に小さくされる。このようにしても、ゲーム画像１５０を見たプレイヤは草オブジェクト１０６ａを掻き分けて撮影しているような体感を得ることができる。ただし、草オブジェクト１０６ａを移動させる方向は、仮想カメラ１１０または仮想カメラ１１０の視線から離れる方向である。
【０１００】
なお、図１０（Ａ）および図１０（Ｂ）に示す場合においても、草オブジェクト１０６ａの配置位置が範囲Ｅ１（ｘ軸方向の最大値Ｌ１／２）外である場合には、当該草オブジェクト１０６ａが傾斜されることはなく、当該草オブジェクト１０６ａの配置位置が移動されることもない。また、図１０（Ａ）および図１０（Ｂ）に示す場合においても、変化させた後の高さＨが上限または下限を超える場合には、高さＨは上限または下限に設定（変更）される。これらのことについては、他の場合についても同様である。
【０１０１】
図１１は草オブジェクト１０６ａの高さＨを変化させるために設定されるパラメータの他の例を説明するための図解図である。図１１に示す例では、範囲Ｅ１において、ｘ軸方向のみならず、ｚ軸方向についても段階的に草オブジェクト１０６ａの高さＨが変化されるようにパラメータが設定される。したがって、仮想空間（シーン１００）を仮想カメラ１１０から見た場合に、視線から左右に離れるに従うとともに、視線方向の奥に向かうに従って、草オブジェクト１０６ａの高さＨが次第に高くされる。このため、図示は省略するが、図９に示したゲーム画像１５０よりも、ゲーム画像１５０の奥行き方向についての見た目がより自然である。
【０１０２】
また、上述の例では、仮想カメラ１１０との水平距離Ｋ（ｘ軸方向の距離または／およびｚ軸方向の距離）に応じて、草オブジェクト１０６ａの高さＨを変化させるようにしたが、これに限定される必要はない。仮想カメラ１１０との水平距離Ｋのみならず、仮想カメラ１１０の高さもさらに考慮して、草オブジェクト１０６ａの高さＨを変化させることもできる。かかる場合には、草オブジェクト１０６ａの高さＨは、上述したように、仮想カメラ１１０との水平距離Ｋに応じて決定された草オブジェクト１０６ａの高さＨ（説明の便宜上、「高さＨ１」という）、または、仮想カメラ１１０との３次元距離Ｒに応じて決定された草オブジェクト１０６ａの高さＨ（説明の便宜上、「高さＨ２」という）に決定される。また、この実施例では、草オブジェクト１０６ａの高さＨは、高さＨ１および高さＨ２のうちの大きい方に決定されるが、小さい方に決定されてもよい。
【０１０３】
図１２は３次元距離Ｒに応じて草オブジェクト１０６ａの高さＨ２が変化される方法を説明するための図解図であり、図１３は図１２に示すように、３次元距離に応じて草オブジェクト１０６ａの高さＨ２を変化させる場合に設定されるパラメータを説明するための図解図である。
【０１０４】
図１２に示すように、３次元距離Ｒは、仮想カメラ１１０の３次元位置と草オブジェクト１０６ａの３次元位置との直線距離である。図１２では、仮想カメラ１１０の視線（ｚ軸）の方向と重なる位置に配置される草オブジェクト１０６ａの高さＨが変化される場合について示してあるが、仮想カメラ１１０に設定されたローカル座標系におけるｘｚ平面内の他の方向と重なる位置に配置される草オブジェクト１０６ａについても同様に高さＨが変化される。また、たとえば、３次元距離Ｒの２乗に比例するように、草オブジェクト１０６ａの高さＨが変化される。
【０１０５】
したがって、図１３に示すように、３次元距離Ｒ（半径）の長さが大きくなるについて段階的に草オブジェクト１０６ａの高さＨが高くなるように、パラメータが設定される。図１３に示すように、高さＨを変化させる範囲Ｅ２は、円形状であるが、この範囲Ｅ２を規定する半径Ｌ２／２は３次元距離Ｒであるため、仮想カメラ１１０からの水平距離Ｋのみならず、仮想カメラ１１０の高さについても考慮される。上述したように、段階的に設定されるパラメータは、３次元距離Ｒの２乗に比例する。したがって、たとえば、図１３に示すように設定されるパラメータのみを用いて草オブジェクト１０６ａの高さＨが変化されると、草原オブジェクト１０６は、仮想カメラ１１０を中心に段階的に径が大きくなるすり鉢状の窪みを形成するように変形される。この段階的な径の変化が放物線状である。
【０１０６】
仮想カメラ１１０との水平距離Ｋのみならず、仮想カメラ１１０の高さもさらに考慮して、草オブジェクト１０６ａの高さＨを変化させるために設定されるパラメータは図１１で示した場合と同様に設定される。ただし、この場合、仮想カメラ１１０の近くまたは遠くに配置される草オブジェクト１０６ａの高さＨを線形的に変化させるか放物線状に変化させるかに応じて、水平距離Ｋに応じて高さＨ１を変化させるパラメータの変化量（１次関数の傾き）および３次元距離Ｒに応じて高さＨ２を変化させるパラメータの変化量（放物線の開き具合）が決定される。いずれの手法であっても、出来る限り自然な見た目のまま、仮想空間における当該シーンの視認性を高めることができる。特に、草オブジェクト１０６ａのデフォルト（本来）の高さＨ（長さ）が比較的大きい（長い）場合には、視認性向上について高い効果を得ることができる。
【０１０７】
また、ここでは、草オブジェクト１０６ａの高さＨ２を算出する場合には、３次元距離Ｒの２乗に比例するようにパラメータを設定してあるが、水平距離Ｋの場合と同様に、３次元距離Ｒに比例するように線形的に変化するパラメータを設定するようにしてもよい。かかる場合には、高さＨ１を決定するためのパラメータと高さＨ２を決定するためのパラメータは、各々の変化量（１次関数の傾き）が異なるように設定される。
【０１０８】
図４−図１３に示した例では、草オブジェクト１０６ａのデフォルト（本来）の高さＨ（長さ）が比較的大きく（長く）、仮想カメラ１１０でシーン１００を撮影したゲーム画像１５０において、プレイヤオブジェクト１０２の視認性が大きく低下する場合について説明した。図１４−図１６で示す例では、草オブジェクト２０６ａのデフォルトの高さＨ（長さ）が比較的小さく（低く）、仮想カメラ１１０でシーン２００を撮影したゲーム画像において、プレイヤオブジェクト１０２の視認性がほとんど低下しない場合について説明する。
【０１０９】
たとえば、図１４には、仮想空間に生成されたシーン２００の一例が示される。シーン２００では、地面オブジェクト２０４（図１５参照）、草原オブジェクト２０６および山オブジェクト２０８のような背景オブジェクトが配置される。草原オブジェクト２０６は、地面オブジェクト２０４上に配置され、山オブジェクト２０８は草原オブジェクト２０６の向こう側（奥側）に配置される。ただし、図１４では、プレイヤオブジェクト１０２および仮想カメラ１１０を省略してある。
【０１１０】
図１４に示すようなシーン２００におけるゲーム画像の図示は省略するが、上述したように、このシーン２００においては、仮想カメラ１１０でプレイヤオブジェクト１０２を注視するように撮影した場合であっても、草原オブジェクト２０６（草オブジェクト２０６ａ）がプレイヤオブジェクト１０２の視認性にほとんど影響を及ぼさない。このため、図１５に示すように、仮想カメラ１１０の比較的近い範囲Ｅ３（図１６（Ａ）および（Ｂ）参照）の草オブジェクト２０６ａの高さＨを変化させるようにしてある。
【０１１１】
また、図１６（Ａ）に示すように、比較的丈の短い草オブジェクト２０６ａの場合には、仮想カメラ１１０の３次元位置と草オブジェクト２０６ａの３次元位置との３次元距離Ｒが算出され、算出された３次元距離Ｒに応じて、当該草オブジェクト２０６ａの高さＨが変化される。このように、仮想カメラ１１０との３次元距離Ｒに応じて、草オブジェクト２０６ａの高さＨを変化させるのは、比較的丈の短い草オブジェクト２０６ａの場合には、主として、仮想カメラ１１０の高さによって、草オブジェクト２０６ａの高さＨを変化させる必要があるかどうかが決定されるためである。したがって、図１６（Ａ）および（Ｂ）からも分かるように、３次元距離Ｒの大きさに比例して縦長オブジェクトの高さＨが段階的に決定される。たとえば、縦長オブジェクトの高さＨは３次元距離Ｒの２乗に比例して変化されるが、３次元距離Ｒに比例するように線形的に変化されるようにしてもよい。
【０１１２】
ただし、高さＨを変化させる範囲Ｅ３の大きさを規定する半径Ｌ３／２は範囲Ｅ１およびＥ２の大きさを規定する長さ（半径）Ｌ２／２よりも短く設定される。どの程度短く設定するかについては、実際のゲーム画像を見て決定することができる。つまり、ゲーム画像の見た目が自然なままで、プレイヤオブジェクト１０２の視認性に影響を及ぼすことが無いように、半径Ｌ３／２（長さＬ３）の大きさが決定される。
【０１１３】
なお、図１４−図１６に示す場合においても、変化させた後の高さＨが上限または下限を超える場合には、高さＨは上限または下限に設定（変更）される。ただし、図１４−図１６に示す場合では、草オブジェクト２０６ａのデフォルトの高さＨは低いため、たとえば、プレイヤオブジェクト１０２の高さの３０％程度に設定される。または、かかる場合には、上限は設定されなくてもよい。
【０１１４】
ゲーム装置１２では、シーン１００またはシーン２００に応じて、適宜草オブジェクト１０６ａまたは草オブジェクト２０６ａの高さを変化させる範囲Ｅ１（および範囲Ｅ２）または範囲Ｅ３が選択されるとともに、高さを変化させるパラメータが選択される。
【０１１５】
図１７は、図２に示したゲーム装置１２のメインメモリ（２２ｅ，２６）のメモリマップ３００の一例を示す。図１７に示すように、メインメモリ（２２ｅ，２６）は、プログラム記憶領域３０２およびデータ記憶領域３０４を含む。プログラム記憶領域３０２には、ゲームプログラムなどの情報処理プログラムが記憶される。たとえば、ゲームプログラムは、ゲーム装置１２に電源が投入された後の適宜のタイミングで光ディスクからその一部または全部が読み込まれてメインメモリ（２２ｅ，２６）に記憶される。
【０１１６】
なお、ゲームプログラムは、光ディスクに代えて、フラッシュメモリ２４やゲーム装置１２の外部情報処理装置から（たとえばインターネットを介して）取得されてもよい。また、ゲームプログラムに含まれる一部のプログラムについては、ゲーム装置１２内に予め記憶されていてもよい。
【０１１７】
この実施例では、ゲームプログラムは、メイン処理プログラム３１０、画像生成プログラム３１２、画像表示プログラム３１４、音生成プログラム３１６、音出力プログラム３１８および操作検出プログラム３２０などによって構成される。
【０１１８】
メイン処理プログラム３１０は、仮想ゲームのメインルーチンの処理（図１８の全体処理）を実行するためのプログラムである。画像生成プログラム３１２は、ポリゴンデータやテクスチャデータなどのデータを含む画像生成データ３３４を用いて、テレビ用ゲーム画像を生成するためのプログラムである。この画像生成プログラム３１２に従って、草オブジェクト１０６ａのような縦長オブジェクトを配置（モデリング）する場合に、上述したように、仮想カメラ１１０から遠ざかるように縦長オブジェクトが変形または移動される処理も実行される。
【０１１９】
画像表示プログラム３１４は、画像生成プログラム３１２に従って生成したテレビ用ゲーム画像の画像データをＡＶ−ＩＣ３６に出力し、テレビ用ゲーム画像をテレビ１６に表示するためのプログラムである。
【０１２０】
音生成プログラム３１６は、ＣＰＵ２０の指示の下、ＤＳＰ２２ｃによって、テレビ用ゲーム音声を生成するためのプログラムである。音出力プログラム３１８は、音生成プログラム３１６に従って生成されたテレビ用ゲーム音声の音声データをＡＶ−ＩＣ３６に出力し、テレビ用ゲーム音声をテレビ１６のスピーカ１６ａから出力するためのプログラムである。
【０１２１】
操作検出プログラム３２０は、端末装置１４から入力（送信）される送信データに含まれる操作データを検出する（受け付ける）ためのプログラムである。
【０１２２】
なお、プログラム記憶領域３０２には、通信プログラムおよびバックアッププログラムなども記憶される。
【０１２３】
データ記憶領域３０４には、受信データ３３０、送信データ３３２、画像生成データ３３４、プレイヤオブジェクトデータ３３６、縦長オブジェクトデータ３３８、仮想カメラデータ３４０、パラメータデータ３４２および高さ制限データ３４４などが記憶される。
【０１２４】
受信データ３３０は、端末装置１４から受信される各種のデータである。受信データ３３０は、操作データを含む。操作データは、端末装置１４に対するプレイヤの操作を表すデータであり、上述したように、操作ボタンデータ、スティックデータ、およびタッチ位置データを含む。ただし、操作データは、端末装置１４を操作するプレイヤの操作を表すものであればよく、上記各データのいずれか１つのみを含むものであってもよい。操作データは、端末装置１４から送信されてゲーム装置１２において取得され、メインメモリ（２２ｅ，２６）に記憶される。
【０１２５】
なお、メインメモリ（２２ｅ，２６）には、最新の（最後に取得された）ものから順に所定個数の操作データが記憶されてもよい。
【０１２６】
送信データ３３２は、端末装置１４へ送信する各種のデータである。画像生成データ３３４は、ポリゴンデータおよびテクスチャデータなど、画像を生成するために必要なデータである。
【０１２７】
プレイヤオブジェクトデータ３３６は、３次元の仮想空間における、プレイヤオブジェクト１０２を生成するためのモデルデータと、プレイヤオブジェクト１０２の体力値およびレベルなどの属性値についてのデータと、プレイヤオブジェクト１０２が所持するアイテムについてのデータと、プレイヤオブジェクト１０２の現在位置（３次元位置）および向きのデータである。縦長オブジェクトデータ３３８は、３次元の仮想空間における、各縦長オブジェクト（この実施例では、草オブジェクト１０６ａ）の位置、長さ（直線距離ｄ１）および向き（水平面における方向および水平面に対する傾き）のデータである。仮想カメラデータ３４０は、３次元の仮想空間における、仮想カメラ１１０（視点）の位置および向きのデータである。
【０１２８】
パラメータデータ３４２は、仮想カメラ１１０との距離に応じて各縦長オブジェクトの高さＨを変化させるための範囲Ｅ１（または、Ｅ１およびＥ２）および範囲Ｅ３についてのデータと、各範囲Ｅ１（または、Ｅ１およびＥ２）およびＥ３に対応して設定されるパラメータについてのデータである。
【０１２９】
高さ制限データ３４４は、変化させた草オブジェクト１０６ａの高さＨの上限または下限についてのデータである。上述したように、高さＨの上限は、プレイヤオブジェクト１０２の高さに応じて設定され、高さＨの下限は、仮想カメラ１１０の高さに応じて可変的に設定される。
【０１３０】
図示は省略するが、データ記憶領域３０４には、縦長オブジェクト以外の背景オブジェクトおよびゲームに登場するアイテムについてのデータ、サウンドデータおよび音波形データなどの他のデータが記憶されたり、ゲームプログラムの実行に必要な、フラグおよびカウンタ（タイマ）が設けられたりする。
【０１３１】
図１８は、図２に示したゲーム装置１２に設けられるＣＰＵ２０の全体処理についてのフロー図である。なお、図１８（後述する図１９についても同様。）に示すフロー図の各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、この実施例では、基本的には、図１８および図１９に示すフロー図の各ステップの処理をＣＰＵ２０が実行するものとして説明するが、ＣＰＵ２０以外のプロセッサや専用回路が一部のステップを実行するようにしてもよい。
【０１３２】
ゲーム装置１２の電源が投入されると、全体処理の実行に先だって、ＣＰＵ２０は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、これによってメインメモリ（２２ｅ，２６）等の各ユニットが初期化される。そして、光ディスクに記憶されたゲームプログラムがメインメモリ（２２ｅ、２６）に読み込まれ、ＣＰＵ２０によって当該ゲームプログラムの実行が開始される。
【０１３３】
図１８に示すように、ＣＰＵ２０は、全体処理を開始すると、ステップＳ１で、初期処理を実行する。初期処理では、たとえば、ＣＰＵ２０は、ゲーム画像１５０を生成および表示するための仮想のゲーム空間を構築し、このゲーム空間に登場するプレイヤオブジェクト１０２等の各キャラクタないし各オブジェクトを初期位置に配置するとともに、このゲーム空間に登場する地面オブジェクト１０４および山オブジェクト１０８等の各背景オブジェクトを所定の位置に配置する。さらに、ＣＰＵ２０は、ゲーム処理で用いる各種パラメータの初期値を設定したりする処理である。
【０１３４】
続いて、ＣＰＵ２０は、ステップＳ３で、端末装置１４から送信されてくる各種のデータを取得し、ステップＳ５で、ゲーム制御処理を実行する。たとえば、ＣＰＵ２０は、操作データに従って、プレイヤオブジェクト１０２を移動させ、または／およびプレイヤオブジェクト１０２に任意のアクションを実行させる。また、ＣＰＵ２０は、操作データに従わずに、敵オブジェクトを移動させ、または／および敵オブジェクトに任意のアクションを実行される。さらに、ＣＰＵ２０は、プレイヤオブジェクト１０２の勝敗または順位を判定する、または／およびゲームクリアまたはゲームオーバを判定する。さらにまた、ＣＰＵ２０は、操作データに従って、仮想カメラ１１０の位置または／および向きを移動させる。ただし、通常、仮想カメラ１１０は、プレイヤオブジェクト１０２を注視するとともに、当該プレイヤオブジェクト１０２と所定距離を保って追従するように仮想空間に配置されるが、プレイヤの指示によって、位置または／および向きを変更された場合には、変更後の位置または／および向きに配置される。
【０１３５】
次のステップＳ７では、ＣＰＵ２０およびＧＰＵ２２ｂは、テレビ１６に表示するためのテレビ用ゲーム画像の生成処理を実行する。簡単に説明すると、ＣＰＵ２０およびＧＰＵ２２ｂは、ステップＳ５のゲーム制御処理の結果を表すデータをメインメモリ（２２ｅ，２６）から読み出し、また、ゲーム画像を生成するために必要なデータをＶＲＡＭ２２ｄから読み出し、テレビ用ゲーム画像を生成する。たとえば、テレビ用ゲーム画像を生成する場合には、ＣＰＵ２０の指示の下、ＧＰＵ２２ｂは、仮想空間における現在位置にプレイヤオブジェクト１０２を配置し、敵オブジェクトのようなノンプレイヤキャラクタを配置する。さらに、ＧＰＵ２２ｂは、プレイヤオブジェクト１０２の現在位置に応じた背景オブジェクトを配置（生成）する。この背景オブジェクトには、上記の地形オブジェクト１０４、２０４、草原オブジェクト１０６、２０６（草オブジェクト１０６ａ、２０６ａ）および山オブジェクト１０８、２０８が含まれる。したがって、或るシーン（情景）１００、２００が生成される。このシーン１００、２００を仮想カメラ１１０から見た画像（撮影画像）がゲーム画像１５０として生成される。
【０１３６】
続いて、ステップＳ９では、ＣＰＵ２０は、テレビ１６のスピーカ１６ａに出力するためのテレビ用ゲーム音声を生成する。すなわち、ＣＰＵ２０は、ステップＳ５のゲーム制御処理の結果に応じたゲーム音声をＤＳＰ２２ｃに生成させる。
【０１３７】
続いて、ステップＳ１１では、ＣＰＵ２０は、テレビ１６へデータを出力する。具体的には、ＣＰＵ２０は、ＶＲＡＭ２２ｄに記憶されたテレビ用ゲーム画像の画像データと、ステップＳ９でＤＳＰ２２ｃによって生成されたテレビ用ゲーム音声の音声データとをＡＶ−ＩＣ３６へ送る。
【０１３８】
そして、ステップＳ１３では、ＣＰＵ２０は、ゲームを終了するかどうかを判断する。ステップＳ１３の判断は、たとえば、ゲームオーバになったか否か、あるいは、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ゲームオーバになったか否かは、たとえばプレイヤオブジェクト１０２の体力値が０になったか否か等によって判定される。
【０１３９】
ステップＳ１３で“ＮＯ”であれば、つまりゲームを終了しない場合には、ステップＳ３に戻る。一方、ステップＳ１３で“ＹＥＳ”であれば、つまりゲームを終了する場合には、全体処理を終了する。
【０１４０】
図１９は、図１８に示したステップＳ７のテレビ用ゲーム画像の生成処理において実行される縦長オブジェクト配置処理のフロー図である。
【０１４１】
なお、ここでは、図８に示したようなシーン１００を生成する場合に、図７に示したように設定されるパラメータを用いて、比較的高さの高い縦長オブジェクト（草オブジェクト１０６ａ）が配置される場合について説明する。
【０１４２】
図１９に示すように、縦長オブジェクト配置処理を開始すると、ＣＰＵ２０は、ステップＳ１０１で、変数ｉを初期化する（ｉ＝１）。ただし。変数ｉは、複数の縦長オブジェクト（草オブジェクト１０６ａ）を個別に識別するための変数である。
【０１４３】
続くステップＳ１０３では、仮想カメラ１１０からｉ番目の縦長オブジェクトまでの水平距離Ｋを算出する。ただし、仮想カメラ１１０の位置（３次元位置）は、仮想カメラデータ３４０を参照することにより、取得される。同様に、各縦長オブジェクトの位置（３次元位置）は、縦長オブジェクトデータ３３８を参照することにより、取得される。また、取得された３次元位置は、仮想空間のワールド座標系における３次元位置であるため、仮想カメラ１１０の位置を基準とするローカル座標系に変換された後に、仮想カメラ１１０の視線と縦長オブジェクトの水平距離Ｋが算出される。
【０１４４】
次のステップＳ１０５では、ｉ番目の縦長オブジェクトが高さ制御範囲（Ｅ１）内であるかどうかを判断する。ここでは、ＣＰＵ２０は、水平距離Ｋが範囲Ｅ１を規定する距離Ｌ１／２以内であるかどうかを判断する。
【０１４５】
ステップＳ１０５で“ＮＯ”であれば、つまり、ｉ番目の縦長オブジェクトが高さ制御範囲外であれば、そのままステップＳ１０９に進む。一方、ステップＳ１０５で“ＹＥＳ”であれば、つまり、ｉ番目の縦長オブジェクトが高さ制御範囲内であれば、ステップＳ１０７で、水平距離Ｋに応じて、ｉ番目の縦長オブジェクトの高さＨを変更して、ステップＳ１０９に進む。つまり、ステップＳ１０７では、ｉ番目の縦長オブジェクトのデフォルトの高さＨに水平距離Ｋに応じて決定されるパラメータが掛け算されて、高さＨが変更される。
【０１４６】
ステップＳ１０９では、ｉ番目の縦長オブジェクトの高さＨが上限および下限内であるかどうかを判断する。このとき、ＣＰＵ２０は、高さ制限データ３４４を参照して、高さの上限および下限の値を取得する。ステップＳ１０９で“ＹＥＳ”であれば、つまり、ｉ番目の縦長オブジェクトの高さＨが上限およぎ下限内である場合には、そのままステップＳ１１３に進む。一方、ステップＳ１０９で“ＮＯ”であれば、つまり、ｉ番目の縦長オブジェクトの高さＨが上限または下限を超える場合には、ステップＳ１１１で、ｉ番目の縦長オブジェクトの高さＨを上限または下限に設定して、ステップＳ１１３に進む。ただし、ステップＳ１１３では、ステップＳ１０７で変更されたｉ番目の縦長オブジェクトの高さＨが上限を超える場合には、高さＨが上限に設定される。また、ステップＳ１１３では、ステップＳ１０７で変更されたｉ番目の縦長オブジェクトの高さＨが下限を下回る場合には、高さＨが下限に設定される。
【０１４７】
ステップＳ１１３では、ＣＰＵ２０の指示の下、ＧＰＵ２２ｂが、ｉ番目の縦長オブジェクトを高さＨで仮想空間に配置する。そして、ステップＳ１１５で、当該シーン１００におけるすべての縦長オブジェクトを配置したかどうかを判断する。ここでは、ＣＰＵ２０は、変数ｉが配置するべき縦長オブジェクトの総数に到達したかどうかを判断する。
【０１４８】
ステップＳ１１５で“ＮＯ”であれば、つまり、未だ配置していない縦長オブジェクトが存在する場合には、ステップＳ１１７で、変数ｉを１加算して（ｉ＝ｉ＋１）、ステップＳ１０３に戻り、次の縦長オブジェクトを配置する。一方、ステップＳ１１５で“ＹＥＳ”であれば、つまり、当該シーン１００におけるすべての縦長オブジェクトを配置すれば、縦長オブジェクト配置処理を終了して、ステップＳ７のテレビ用ゲーム画像の生成処理にリターンする。
【０１４９】
なお、図１９では、図８に示したようなシーン１００を生成する場合に、図７に示したように設定されるパラメータを用いて、比較的高さの高い縦長オブジェクト（草オブジェクト１０６ａ）が配置される場合について説明したが、図１１に示したように設定されるパラメータを用いるようにしてもよい。または、図７および図１３に示したパラメータを用いることにより、水平距離Ｋに基づく高さＨ１と３次元距離Ｒに基づく高さＨ２を算出して、高さＨ１および高さＨ２のうちの高い方に高さＨを変更してもよい。さらに、図１５に示したようなシーン２００を生成する場合には、図１６（Ｂ）に示したように設定されるパラメータを用いて、比較的高さの低い縦長オブジェクトが配置し、このとき、３次元距離Ｒに基づいて仮想カメラ１１０の周辺の縦長オブジェクトの高さが変更されるようにしてもよい。
【０１５０】
また、図１９に示した縦長オブジェクト配置処理はゲーム画像の生成処理が実行されるときは常に実行されるようにしてもよいし、縦長オブジェクトが配置されるシーン１００またはシーン２００であるかどうかを判断して、シーン１００またはシーン２００である場合にのみ実行されるようにしてもよい。
【０１５１】
この実施例によれば、草木が群生するように縦長オブジェクトが地面に複数設けられるようなシーンにおいては、縦長オブジェクトを仮想カメラから遠ざかるように、縦長オブジェクトの高さを変化させるので、ゲーム画像を生成する場合に、プレイヤオブジェクトが縦長オブジェクトで隠れてしまうような不都合を回避することができる。
【０１５２】
また、この実施例によれば、高さが調整される縦長オブジェクトは、仮想カメラの位置または／およびその視線方向を基準とした一定範囲内の縦長オブジェクトであり、また、縦長オブジェクトの高さは、仮想カメラとの水平距離または３次元距離に比例またはこれらの２乗に比例するように高さが変化される。したがって、たとえば、プレイヤオブジェクトと仮想カメラの間に在る縦長オブジェクトが掻き分けられたようなゲーム画像が生成される。このため、ゲーム画像の見た目が比較的自然である。つまり、プレイヤが違和感を覚えることはほとんど無いと考えられる。
【０１５３】
つまり、この実施例によれば、出来るだけ自然な見た目を維持しつつ画像の視認性を高くすることができる。
【０１５４】
なお、この実施例では、仮想カメラがプレイヤオブジェクトを後方から追従する場合について説明したが、プレイヤオブジェクトの頭部の位置に仮想カメラが設けられるような一人称視点の場合についても適用可能である。かかる場合には、仮想カメラによって追従（注視）されるオブジェクトは、プレイヤオブジェクト以外の所定のオブジェクトまたはプレイヤが指示するオブジェクト或いはプレイヤが指示する注視位置を含むオブジェクトである。
【０１５５】
また、この実施例では、ゲーム装置で実行されるプログラム（情報処理プログラムないしアプリケーションプログラム）の一例としてゲームプログラムについて説明したが、ゲームプログラムに限定される必要はない。たとえば、仮想空間に複数のオブジェクトが配置され、所定のオブジェクトを注視するように仮想カメラで撮影された画像を表示する処理を実行するプログラムに適用可能である。
【０１５６】
さらに、この実施例では、縦長オブジェクトの一例として、草オブジェクトが配置される場合について説明したが、これに限定される必要はない。たとえば、高層ビルなどの建物のオブジェクトが地面オブジェクト上に密集して配置され、そのようなシーンにおいて、プレイヤオブジェクトを視野内に含めて撮影した画像を表示する場合には、建物のオブジェクトを縦長オブジェクトとして扱い、仮想カメラから遠ざかるように建物のオブジェクトを変形または移動させるようにしてもよい。
【０１５７】
さらにまた、この実施例で示したゲームシステムの構成は一例であり、これに限定される必要は無く、他の構成を採用することが可能である。たとえば、携帯型ゲーム装置に適用することもできる。また、ゲーム機能を備える、モニタが接続されたデスクトップのＰＣ、ノート型ＰＣ、タブレットＰＣまたはスマートフォンにも適用することができる。
【０１５８】
また、この実施例では、テレビ用ゲーム画像に対して画像処理を行ったが、端末装置で表示されるゲーム画像に対して画像処理を行うようにしてもよい。
【０１５９】
さらに、この実施例で示した具体的な数値およびゲーム画像は一例であり、実際の製品に応じて適宜変更可能である。
【符号の説明】
【０１６０】
１０  …ゲームシステム
１２  …ゲーム装置
１４  …端末装置
１６  …テレビ
２０，５２ａ  …ＣＰＵ
２２  …システムＬＳＩ
２２ａ  …入出力プロセッサ
２２ｅ  …内部メインメモリ
２６  …外部メインメモリ
５６  …タッチパネル
５８  …アナログスティック
６０  …操作ボタン
６２  …ＬＣＤ
【図１】
0006576874.tif 000002
【図２】
0006576874.tif 000003
【図３】
0006576874.tif 000004
【図４】
0006576874.tif 000005
【図５】
0006576874.tif 000006
【図６】
0006576874.tif 000007
【図７】
0006576874.tif 000008
【図８】
0006576874.tif 000009
【図９】
0006576874.tif 000010
【図１０】
0006576874.tif 000011
【図１１】
0006576874.tif 000012
【図１２】
0006576874.tif 000013
【図１３】
0006576874.tif 000014
【図１４】
0006576874.tif 000015
【図１５】
0006576874.tif 000016
【図１６】
0006576874.tif 000017
【図１７】
0006576874.tif 000018
【図１８】
0006576874.tif 000019
【図１９】
0006576874.tif 000020