(57)【要約】【課題】仮想空間に配置される地形に関して、開発効率を向上させるとともに自然な見た目とすることが可能な情報処理装置、情報処理プログラム、情報処理システム、及び情報処理方法を提供する。【解決手段】情報処理装置は、仮想空間における地形を構成する複数種類の地形パーツと、当該地形パーツの仮想空間における配置を示すパーツは位置データとを記憶し、パーツ配置データに基づいて複数の地形パーツを配置する。情報処理装置は、配置された地形パーツの各頂点を、当該頂点の仮想空間における位置に応じて変位させる。そして、情報処理装置は、変位された各地形パーツにより構成される地形を含む仮想空間の画像を描画する。【選択図】図６
2020080007.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間内の地形を構成する複数種類の地形パーツの形状を示すパーツ形状データと、前記地形パーツの前記仮想空間における配置を示すパーツ配置データとを記憶し、
前記パーツ配置データに基づいて前記地形パーツを配置することにより構成される前記地形に関して、配置されたそれぞれの前記地形パーツの形状に対して変形を加える第１変形処理と、
仮想カメラに基づいて、前記第１変形処理において変形された前記地形パーツにより構成される前記地形を含む前記仮想空間を描画する描画処理と、を行う、情報処理装置。
【請求項２】
前記第１変形処理において、前記仮想空間内に配置された前記地形パーツに含まれる頂点に対して、当該頂点の前記仮想空間内の座標に応じた変位を加えることで、それぞれの前記地形パーツに対して変形を加える、請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、頂点シェーダ機能を有するグラフィックプロセッサを備え、
前記パーツ形状データは頂点データを少なくとも含み、
前記グラフィックプロセッサは、前記頂点シェーダ機能により前記第１変形処理を実行する、請求項２に記載の情報処理装置。
【請求項４】
前記第１変形処理において、所定の波形を示す関数と、前記仮想空間内の座標とに基づいて前記変位が決定される、請求項２または３に記載の情報処理装置。
【請求項５】
前記パーツ形状データは、前記仮想空間において隣接する地形パーツの隣接部分に位置する頂点同士が同じ位置になるように設定される、請求項２から４のいずれかに記載の情報処理装置。
【請求項６】
前記地形パーツは、それぞれ前記仮想空間の横方向および奥行き方向に関して所定の形状となる３次元形状を有し、
前記パーツ配置データは、前記横方向および奥行き方向に関して前記所定の形状となる複数の地形パーツを前記仮想空間の横方向および奥行き方向に並べた配置を示す、請求項１から５のいずれかに記載の情報処理装置。
【請求項７】
前記複数の地形パーツが配置された前記地形全体をさらに曲面状に変形させるように、前記地形を構成するそれぞれの前記地形パーツの頂点位置を変換する第２変形処理をさらに行う、請求項１から６のいずれかに記載の情報処理装置。
【請求項８】
ユーザの指示に基づいて前記仮想空間において前記地形パーツの追加、削除、及び変更のうちの少なくとも何れか１つを含む更新を行い、当該更新に基づいて前記パーツ配置データを記憶させる地形更新処理をさらに行う、請求項１から７のいずれかに記載の情報処理装置。
【請求項９】
前記地形更新処理において、前記仮想空間内に前記地形パーツを追加する場合、追加の地形パーツと当該追加の地形パーツに隣接する他の地形パーツとの隣接部分において各地形パーツの頂点が一致するように、当該追加の地形パーツを前記仮想空間内に配置する、請求項８に記載の情報処理装置。
【請求項１０】
情報処理装置のコンピュータに、
仮想空間内の地形を構成する複数種類の地形パーツの形状を示すパーツ形状データと、前記地形パーツの前記仮想空間における配置を示すパーツ配置データとを読み出す読み出し処理と、
前記パーツ配置データに基づいて前記地形パーツを配置することにより構成される前記地形に関して、配置されたそれぞれの前記地形パーツの形状に対して変形を加える第１変形処理と、
仮想カメラに基づいて、前記第１変形処理において変形された前記地形パーツにより構成される前記地形を含む前記仮想空間を描画する描画処理と、を行わせる、情報処理プログラム。
【請求項１１】
前記第１変形処理において、前記仮想空間内に配置された前記地形パーツに含まれる頂点に対して、当該頂点の前記仮想空間内の座標に応じた変位を加えることで、それぞれの前記地形パーツに対して変形を加える、請求項１０に記載の情報処理プログラム。
【請求項１２】
前記コンピュータは、少なくとも頂点シェーダ機能を有するグラフィックプロセッサを含み、
前記パーツ形状データは頂点データを少なくとも含み、
前記グラフィックプロセッサに、前記頂点シェーダ機能を用いて前記第１変形処理を実行させる、請求項１１に記載の情報処理プログラム。
【請求項１３】
前記第１変形処理において、所定の波形を示す関数と、前記仮想空間内の座標とに基づいて前記変位が決定される、請求項１１または１２に記載の情報処理プログラム。
【請求項１４】
前記パーツ形状データは、前記仮想空間において隣接する地形パーツの隣接部分に位置する頂点同士が同じ位置になるように設定される、請求項１１から１３のいずれかに記載の情報処理プログラム。
【請求項１５】
前記地形パーツは、それぞれ前記仮想空間の横方向および奥行き方向に関して所定の形状となる３次元形状を有し、
前記パーツ配置データは、前記横方向および奥行き方向に関して前記所定の形状となる複数の地形パーツを前記仮想空間の横方向および奥行き方向に並べた配置を示す、請求項１０から１４のいずれかに記載の情報処理プログラム。
【請求項１６】
前記コンピュータに、前記複数の地形パーツが配置された前記地形全体をさらに曲面状に変形させるように、前記地形を構成するそれぞれの前記地形パーツの頂点位置を変換する第２変形処理をさらに行わせる、請求項１０から１５のいずれかに記載の情報処理プログラム。
【請求項１７】
前記コンピュータに、ユーザの指示に基づいて前記仮想空間において前記地形パーツの追加、削除、及び変更のうちの少なくとも何れか１つを含む更新を行い、当該更新に基づいて前記パーツ配置データを記憶させる地形更新処理をさらに行わせる、請求項１０から１６のいずれかに記載の情報処理プログラム。
【請求項１８】
前記地形更新処理において、前記仮想空間内に前記地形パーツを追加する場合、追加の地形パーツと当該追加の地形パーツに隣接する他の地形パーツとの隣接部分において各地形パーツの頂点が一致するように、当該追加の地形パーツを前記仮想空間内に配置する、請求項１７に記載の情報処理プログラム。
【請求項１９】
仮想空間内の地形を構成する複数種類の地形パーツの形状を示すパーツ形状データと、前記地形パーツの前記仮想空間における配置を示すパーツ配置データとを読み出す読み出し処理と、
前記パーツ配置データに基づいて前記地形パーツを配置することにより構成される前記地形に関して、配置されたそれぞれの前記地形パーツの形状に対して変形を加える第１変形処理と、
仮想カメラに基づいて、前記第１変形処理において変形された前記地形パーツにより構成される前記地形を含む前記仮想空間を描画する描画処理と、を行う、情報処理システム。
【請求項２０】
情報処理システムにおいて実行される情報処理方法であって、
前記情報処理方法は、
仮想空間内の地形を構成する複数種類の地形パーツの形状を示すパーツ形状データと、前記地形パーツの前記仮想空間における配置を示すパーツ配置データとを読み出す読み出しステップと、
前記パーツ配置データに基づいて前記地形パーツを配置することにより構成される前記地形に関して、配置されたそれぞれの前記地形パーツの形状に対して変形を加える第１変形ステップと、
仮想カメラに基づいて、前記第１変形ステップにおいて変形された前記地形パーツにより構成される前記地形を含む前記仮想空間を描画する描画ステップと、を含む、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を生成することが可能な情報処理装置、情報処理プログラム、情報処理システム、および情報処理方法に関する。
【背景技術】
【０００２】
先行技術として、例えば予めゲーム製作者によって作成された仮想的な地形を表すゲームフィールドを仮想空間に配置し、仮想カメラに基づいて当該ゲームフィールドを含む画像を生成して表示するゲーム装置がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３１４６３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記先行技術では仮想空間に配置される地形に関して、開発効率を向上させるとともに自然な外観にするためには改善の余地があった。
【０００５】
それ故、本発明の目的は、仮想空間に配置される地形に関して、開発効率を向上させるとともに自然な外観にすることが可能な情報処理装置、情報処理プログラム、情報処理システム、及び情報処理方法を提供することである。
【課題を解決するための手段】
【０００６】
上記の課題を解決すべく、本発明は、以下の構成を採用した。
【０００７】
本発明の情報処理装置は、仮想空間内の地形を構成する複数種類の地形パーツの形状を示すパーツ形状データと、前記地形パーツの前記仮想空間における配置を示すパーツ配置データとを記憶し、第１変形処理と、描画処理とを行う。情報処理装置は、第１変形処理において、前記パーツ配置データに基づいて前記地形パーツを配置することにより構成される前記地形に関して、配置されたそれぞれの前記地形パーツの形状に対して変形を加える。また、情報処理装置は、描画処理において、仮想カメラに基づいて、前記第１変形処理において変形された前記地形パーツにより構成される前記地形を含む前記仮想空間を描画する。
【０００８】
上記によれば、予め記憶された複数種類の地形パーツを仮想空間に配置することで地形を構成するため、１つの地形を全体として構成する場合よりも作成コストを削減することができ、開発効率を向上させることができる。また、単に地形パーツを配置するだけではなく地形パーツを変形させることで、自然な外観とすることができる。
【０００９】
他の構成では、前記情報処理装置は、前記第１変形処理において、前記仮想空間内に配置された前記地形パーツに含まれる頂点に対して、当該頂点の前記仮想空間内の座標に応じた変位を加えることで、それぞれの前記地形パーツに対して変形を加えてもよい。
【００１０】
上記によれば、仮想空間に配置された地形パーツの頂点を仮想空間内の座標に応じて変位させることで、地形パーツを変形させることができる。仮想空間内の座標に応じて頂点を変位させるため、同じ地形パーツでも仮想空間内の異なる位置に配置されれば異なるように変位させることができ、単調な地形となることを防止することができる。
【００１１】
他の構成では、前記パーツ形状データは頂点データを少なくとも含んでもよい。前記情報処理装置は、頂点シェーダ機能を有するグラフィックプロセッサを備え、前記グラフィックプロセッサは、前記頂点シェーダ機能により前記第１変形処理を実行してもよい。
【００１２】
上記によれば、グラフィックプロセッサの頂点シェーダ機能により第１変形処理を行うため、高速に第１変形処理を行うことができる。
【００１３】
他の構成では、前記第１変形処理において、所定の波形を示す関数と、前記仮想空間内の座標とに基づいて前記変位が決定されてもよい。
【００１４】
上記によれば、所定の波形を示す関数に基づいて頂点が変位されるため、各地形パーツを自然な形状に変形させることができる。
【００１５】
他の構成では、前記パーツ形状データは、前記仮想空間において隣接する地形パーツの隣接部分に位置する頂点同士が同じ位置になるように設定されてもよい。
【００１６】
上記によれば、隣接する２つの地形パーツの隣接部分における頂点が同じ位置になるように各地形パーツが構成されるため、仮想空間内の座標に応じて頂点を変位させた場合でも隣接する２つの地形パーツ間でずれを生じさせないようにすることができる。
【００１７】
他の構成では、前記地形パーツは、それぞれ前記仮想空間の横方向および奥行き方向に関して所定の形状となる３次元形状を有してもよい。前記パーツ配置データは、前記横方向および奥行き方向に関して前記所定の形状となる複数の地形パーツを前記仮想空間の横方向および奥行き方向に並べた配置を示してもよい。
【００１８】
上記によれば、仮想空間の横方向および奥行き方向に関して同じ形状の地形パーツが複数並べられて地形が構成される場合であっても、それぞれの地形パーツが上記第１変形処理により変形されるため、外観が単調にはならず、自然にすることができる。
【００１９】
他の構成では、前記情報処理装置は、前記複数の地形パーツが配置された前記地形全体をさらに曲面状に変形させるように、前記地形を構成するそれぞれの前記地形パーツの頂点位置を変換する第２変形処理をさらに行ってもよい。
【００２０】
上記によれば、第１変形処理に加えて、更に地形全体を曲面状に変形させる第２変形処理が行われる。これにより、ユーザにとって見やすい画像を生成することができる。
【００２１】
他の構成では、前記情報処理装置は、ユーザの指示に基づいて前記仮想空間において前記地形パーツの追加、削除、及び変更のうちの少なくとも何れか１つを含む更新を行い、当該更新に基づいて前記パーツ配置データを記憶させる地形更新処理をさらに行ってもよい。
【００２２】
上記によれば、ユーザの指示に応じて仮想空間内に地形パーツを追加したり、削除したり、変更したりすることができ、仮想空間内の地形に拡張性を持たせることができる。地形パーツの追加、削除、変更を行う場合でも、上記第１変形処理が行われるため外観を自然にすることができる。
【００２３】
他の構成では、前記地形更新処理において、前記仮想空間内に前記地形パーツを追加する場合、追加の地形パーツと当該追加の地形パーツに隣接する他の地形パーツとの隣接部分において各地形パーツの頂点が一致するように、当該追加の地形パーツを前記仮想空間内に配置してもよい。
【００２４】
上記によれば、地形パーツを仮想空間内に追加する場合、追加の地形パーツの頂点を隣接する他の地形パーツの頂点と隣接部分において一致させる。これにより、地形パーツを追加する場合でも、隣接する２つの地形パーツを連続的にすることができる。
【００２５】
また、他の発明は、情報処理装置のコンピュータに上述した各処理を実行させる情報処理プログラムであってもよい。また、他の発明は、上述した各処理を実行する情報処理システムであってもよいし、情報処理システムにおいて実行される情報処理方法であってもよい。
【発明の効果】
【００２６】
本発明によれば、仮想空間に配置される地形に関して、開発効率を向上させるとともに自然な外観とすることができる。
【図面の簡単な説明】
【００２７】
【図１】本実施形態におけるゲームシステム１の一例を示す図
【図２】ゲームシステム１の内部構成の一例を示すブロック図
【図３】本実施形態のゲームが行われた場合の仮想空間の一例を示す図
【図４Ａ】崖オブジェクト又は地面オブジェクトを構成する地形パーツＧＰ１の一例を示す図
【図４Ｂ】崖オブジェクトを構成する地形パーツＧＰ２の一例を示す図
【図４Ｃ】崖オブジェクトを構成する地形パーツＧＰ３の一例を示す図
【図５】複数種類の地形パーツを仮想空間内に配置することにより構成される地形の一例を示す図
【図６】図５に示した複数の地形パーツを配置して構成される地形について、各地形パーツを変形させた後の地形の一例を示す図
【図７】各地形パーツに対する第１変形処理が行われない場合のディスプレイ１２に表示される画像の一例を示す図
【図８】各地形パーツに対する第１変形処理が行われる場合のディスプレイ１２に表示される画像の一例を示す図
【図９】ユーザキャラクタ５０が崖オブジェクトの一部を削る動作を行った場合のディスプレイ１２に表示される画像の一例を示す図
【図１０Ａ】ユーザキャラクタ５０が崖オブジェクトの一部を削る動作を行う前の仮想空間を上方から見た図
【図１０Ｂ】ユーザキャラクタ５０が崖オブジェクトの一部を削る動作を行った後の仮想空間を上方から見た図
【図１１】ユーザキャラクタ５０が地面を掘り、地面に土を盛る動作を行った場合のディスプレイ１２に表示される画像の一例を示す図
【図１２Ａ】地形パーツＧＰ１が追加される前の仮想空間を上方から見たときの一例を示す図
【図１２Ｂ】地形パーツＧＰ１が追加された後の仮想空間を上方から見たときの一例を示す図
【図１３】第１変形処理が行われた後であって、第２変形処理が行われる前の仮想空間の一例を示す図
【図１４】第２変形処理が行われた後の仮想空間の一例を示す図
【図１５】第２変形処理が行われる前の仮想空間をｘ軸と平行な方向から見たときの一例を示す図
【図１６】第２変形処理が行われた後の仮想空間をｘ軸と平行な方向から見たときの一例を示す図
【図１７Ａ】仮想カメラＶＣの視線方向が第１の方向である場合において第２変形処理が行われない場合のディスプレイ１２に表示される画像の一例を示す図
【図１７Ｂ】仮想カメラＶＣの視線方向が第１の方向である場合において第２変形処理が行われた場合のディスプレイ１２に表示される画像の一例を示す図
【図１８Ａ】仮想カメラＶＣの視線方向が第２の方向である場合において第２変形処理が行われない場合のディスプレイ１２に表示される画像の一例を示す図
【図１８Ｂ】仮想カメラＶＣの視線方向が第２の方向である場合において第２変形処理が行われた場合のディスプレイ１２に表示される画像の一例を示す図
【図１９Ａ】仮想カメラＶＣの視線方向が第３の方向である場合において第２変形処理が行われない場合のディスプレイ１２に表示される画像の一例を示す図
【図１９Ｂ】仮想カメラＶＣの視線方向が第３の方向である場合において第２変形処理が行われた場合のディスプレイ１２に表示される画像の一例を示す図
【図２０】ｚ座標値にオフセット値を加えた場合の変形前後の仮想空間をｘ軸と平行な方向から見た図
【図２１】本体装置２（のＤＲＡＭ２６）に記憶されるデータの一例を示す図
【図２２】本体装置２のプロセッサ２０において行われるゲーム処理の一例を示すフローチャート
【発明を実施するための形態】
【００２８】
（システム構成）
以下、図面を参照して、本実施形態のゲームシステム１（情報処理システムの一例）について説明する。図１は、本実施形態におけるゲームシステム１の一例を示す図である。図１に示すように、ゲームシステム１は、ゲーム装置としての本体装置２と、左コントローラ３と、右コントローラ４とを備える。本体装置２は、ディスプレイ１２を備える。なお、左コントローラ３及び右コントローラ４は、本体装置２から着脱可能に装着されてもよい。
【００２９】
左コントローラ３は、ユーザの左手で操作されるコントローラであり、右コントローラ４は、ユーザの右手で操作されるコントローラである。左コントローラ３及び右コントローラ４は、複数の操作ボタンと、方向入力部としてのアナログスティックとを含む。
【００３０】
図２は、ゲームシステム１の内部構成の一例を示すブロック図である。図２に示すように、本体装置２は、プロセッサ２０と、スロットインターフェイス（Ｉ／Ｆ）２３と、スロット２４と、フラッシュメモリ２５と、ＤＲＡＭ２６とを備える。プロセッサ２０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１と、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２２とを含む。ＣＰＵ２１は、ゲームプログラムを実行可能であり、コントローラ３，４からの操作データを処理したり、操作データに基づいてゲーム処理を行ったり、ＧＰＵ２２に画像を生成させるための命令を送信したりする。ＧＰＵ２２は、画像処理を行うためのプロセッサである。ＧＰＵ２２は、仮想オブジェクトの頂点を座標変換するための頂点シェーダ機能を有する。なお、ＣＰＵ２１とＧＰＵ２２とは、それぞれ別々のチップ上に実装されてもよいし、これらはＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）として１つのチップ上に実装されてもよい。
【００３１】
プロセッサ２０には、スロットＩ／Ｆ２３、フラッシュメモリ２５、ＤＲＡＭ２６、ディスプレイ１２が接続される。また、プロセッサ２０には、左インターフェイス（Ｉ／Ｆ）を介して左コントローラ３が接続され、右インターフェイス（Ｉ／Ｆ）を介して右コントローラ４が接続される。スロット２４には、外部記憶媒体が着脱可能に挿入される。外部記憶媒体には、プログラム（後述するゲームプログラム）やデータ（後述するパーツ形状データや地形パーツ配置データ等）が記憶される。なお、これらプログラムやデータは、フラッシュメモリ２５に予め記憶されてもよいし、ネットワーク（例えばインターネット）からダウンロードされてフラッシュメモリ２５に記憶されてもよい。
【００３２】
外部記憶媒体（又はフラッシュメモリ２５）に記憶されたプログラムやデータは、後述するゲームが開始される際にＤＲＡＭ２６に読み込まれる。ＣＰＵ２１が当該プログラムを実行することにより、後述するゲーム処理が行われる。また、ＣＰＵ２１は、画像をディスプレイ１２に表示させるための命令をＧＰＵ２２に対して送り、ＧＰＵ２２は、当該命令に応じて画像を描画し、ディスプレイ１２に画像を表示させる。なお、本体装置２にはディスプレイ１２とは異なる外部の表示装置に接続され、ＧＰＵ２２によって生成された画像が、当該外部の表示装置に表示されてもよい。
【００３３】
（本実施形態のゲーム及び画像処理の概要）
次に、本実施形態のゲームの概要について説明する。図３は、本実施形態のゲームが行われた場合の仮想空間の一例を示す図である。本実施形態のゲームプログラムが実行された場合、本体装置２において仮想空間が定義され、仮想空間内に様々な仮想オブジェクトが配置される。ユーザ（プレイヤ）は、左コントローラ３及び右コントローラ４を用いてユーザキャラクタ５０を仮想空間内で移動させ、ゲームを進める。
【００３４】
図３に示すように、仮想空間にはｘｙｚ直交座標系が設定される。ｘ軸は、仮想空間の横方向の軸であり、ｚ軸は、仮想空間の奥行き方向の軸であり、ｙ軸は、仮想空間の高さ方向の軸である。仮想空間には、仮想オブジェクトとして、地面オブジェクト３４と、地面オブジェクト３４上を流れる川オブジェクト３３とが配置される。地面オブジェクト３４は、平面的な基準面であり、例えばｘｚ平面と平行な面である。なお、地面オブジェクト３４は、凹凸や起伏を有する実質的な平面（全体として概ね平面）であってもよいし、凹凸や起伏を有さない完全な平面であってもよい。また、仮想空間には、仮想オブジェクトとして、崖オブジェクト３０〜３２が配置される。地面オブジェクト３４、崖オブジェクト３０〜３２、及び川オブジェクト３３は、仮想空間の地形を表す地形オブジェクトである。
【００３５】
また、地形オブジェクト上には、仮想オブジェクトとして、家オブジェクト４０、木オブジェクト４１、ユーザキャラクタ５０が配置される。ユーザは、ユーザキャラクタ５０を操作してゲームを進める。例えば、ユーザキャラクタ５０は、地面オブジェクト３４上を移動したり、崖オブジェクトに上ったり、地面オブジェクト３４に溝を掘ったり、崖オブジェクトを削ったり、地面オブジェクト３４又は崖オブジェクト上に新たな崖オブジェクトを追加したりすることができる。
【００３６】
地形オブジェクト（地面オブジェクト３４、川オブジェクト３３、及び崖オブジェクト３０〜３２）は、複数種類の地形パーツによって構成される。本実施形態では、予め複数種類の地形パーツが用意されており、複数種類の地形パーツを仮想空間に配置することで地面オブジェクト３４、川オブジェクト３３、崖オブジェクトが構成される。
【００３７】
（地形パーツの一例）
ここで、地形パーツの一例について説明する。図４Ａは、崖オブジェクト又は地面オブジェクトを構成する地形パーツＧＰ１の一例を示す図である。図４Ｂは、崖オブジェクトを構成する地形パーツＧＰ２の一例を示す図である。図４Ｃは、崖オブジェクトを構成する地形パーツＧＰ３の一例を示す図である。
【００３８】
図４Ａに示すように、地形パーツＧＰ１は、複数の頂点Ｖを含む。複数の頂点により地形パーツＧＰ１の上面Ｓ１、複数の側面Ｓ２、及び、底面がそれぞれ構成され、これら上面Ｓ１、複数の側面Ｓ２及び底面により地形パーツＧＰ１が構成される。例えば、地形パーツＧＰ１の上面Ｓ１及び底面は、正方形であり、仮想空間における横方向（ｘ軸方向）及び奥行き方向（ｚ軸方向）の長さが、例えば１ｍの正方形である。また、地形パーツＧＰ１の複数の側面Ｓ２は、長方形である。すなわち、地形パーツＧＰ１は、仮想空間の横方向（ｘ軸方向）及び奥行き方向（ｚ軸方向）の長さが１ｍの直方体である。地形パーツＧＰ１の形状を示すパーツ形状データが、予め外部記憶装置に記憶されている。地形パーツＧＰ１の形状を示すパーツ形状データは、地形パーツＧＰ１の各頂点Ｖの相対位置（例えば、代表的な頂点からの相対位置）を示すデータを含む。地形パーツＧＰ１が仮想空間に配置された場合、代表的な頂点からの相対位置に基づいて、各頂点の仮想空間における座標値が定まる。
【００３９】
また、図４Ｂに示すように、地形パーツＧＰ２は、複数の頂点Ｖを含み、上面Ｓ１と、複数の側面Ｓ２と、底面Ｓ３とで構成される。地形パーツＧＰ２は、崖オブジェクトを構成するパーツである。地形パーツＧＰ２は、地形パーツＧＰ１とは異なる形状を有する。例えば、地形パーツＧＰ２の上面Ｓ１は、仮想空間の横方向及び奥行き方向の長さが１ｍの直角二等辺三角形であり、当該上面Ｓ１と３つの側面Ｓ２とで三角柱を形成する。また、底面Ｓ３は、仮想空間の横方向及び奥行き方向の長さが１ｍの正方形であり、三角柱の底面の半分を形成する。地形パーツＧＰ２の形状を示すパーツ形状データが、予め外部記憶装置に記憶されている。地形パーツＧＰ２の形状を示すパーツ形状データは、地形パーツＧＰ２の各頂点Ｖの相対位置を示すデータを含む。
【００４０】
また、図４Ｃに示すように、地形パーツＧＰ３は、複数の頂点Ｖを含み、Ｌ字型の上面Ｓ１と、複数の側面Ｓ２と、底面Ｓ３とで構成される。地形パーツＧＰ３は、崖オブジェクトの一部を構成するパーツである。地形パーツＧＰ３は、地形パーツＧＰ１及びＧＰ２とは異なる形状を有する。例えば、地形パーツＧＰ３は、仮想空間の横方向（ｘ軸方向）及び奥行き方向（ｚ軸方向）の長さが１ｍの直方体の一部を切り取ったような形状である。地形パーツＧＰ３の底面Ｓ３は、横方向及び奥行き方向の長さが１ｍの正方形である。地形パーツＧＰ３の形状を示すパーツ形状データが、予め外部記憶装置に記憶されている。地形パーツＧＰ３の形状を示すパーツ形状データは、地形パーツＧＰ３の各頂点Ｖの相対位置を示すデータを含む。
【００４１】
図４Ａ〜図４Ｃに示すように、各地形パーツは、仮想空間の横方向（ｘ軸方向）及び奥行き方向（ｚ軸方向）に関して正方形となる形状である。すなわち、各地形パーツを真上（ｙ軸方向）から見た場合に、各地形パーツは正方形となる。
【００４２】
なお、図４Ａ〜図４Ｃでは、各地形パーツの面（例えば上面や側面）は平面であるように表示されているが、各地形パーツの面は、凹凸のある面であってもよい。
【００４３】
図４Ａ〜図４Ｃに示す地形パーツの他にも、様々な地形パーツが予め用意されている。例えば、川オブジェクト３３を構成する地形パーツや、川と地面との境界部分を構成する地形パーツ、砂の道を構成する地形パーツ等が用意される。これら複数種類の地形パーツを示すパーツ形状データが、予め外部記憶媒体に記憶されている。
【００４４】
（地形パーツを用いた地形の構成）
上述した複数種類の地形パーツが仮想空間内に配置されることで、仮想空間内に地形が構成される。図５は、複数種類の地形パーツを仮想空間内に配置することにより構成される地形の一例を示す図である。
【００４５】
図５では地形全体を仮想空間の上方から見た図が示されている。図５に示すように、仮想空間の上方から見た場合、地形は複数の正方形を格子状に並べた平面のように見える。各正方形は、各地形パーツの上面又は底面である。例えば、崖オブジェクト３０は、８つの地形パーツＧＰ１が配置されることにより構成される。この場合、隣接する地形パーツＧＰ１の頂点Ｖが隣接部分において同じ位置になるように、各地形パーツＧＰ１が予め構成されている。すなわち、ある地形パーツＧＰ１と別の地形パーツＧＰ１とが隣接する場合、その隣接部分においては、当該ある地形パーツＧＰ１の頂点Ｖと、当該別の地形パーツＧＰ１の頂点Ｖとは、位置が一致する。
【００４６】
また、崖オブジェクト３１は、７つの地形パーツＧＰ１と、１つの地形パーツＧＰ２とにより構成される。また、崖オブジェクト３２は、３つの地形パーツＧＰ１と、１つの地形パーツＧＰ３とにより構成される。この場合も、隣接する地形パーツの頂点Ｖが隣接部分において同じ位置になるように、各地形パーツが予め構成される。
【００４７】
また、地面オブジェクト３４は、複数の地形パーツＧＰ１が横方向および奥行き方向に格子状に配置されることにより構成される。また、川オブジェクト３３は、複数の地形パーツＧＰ４と、１つの地形パーツＧＰ５とが配置されることで構成される。地形パーツＧＰ４は、川を構成するための予め用意された地形パーツである。また、地形パーツＧＰ５は、川と地面との境界部分を含む地形パーツである。この場合も、隣接する地形パーツの頂点Ｖが隣接部分において同じ位置になるように、各地形パーツが予め構成される。例えば、図５における右端の列の下から２番目の地形パーツＧＰ４と、下から３番目の地形パーツＧＰ１とは、隣接部分において頂点Ｖの位置が一致するように予め構成される。
【００４８】
本実施形態では、複数種類の地形パーツの配置を示す地形パーツ配置データが、外部記憶媒体に予め記憶されている。地形パーツ配置データに基づいて複数の地形パーツを配置することで、仮想空間内に地形が構成される。
【００４９】
なお、複数の地形パーツは、隣接可能な地形パーツと隣接不可能な地形パーツとがある。例えば、「砂の道」を構成する地形パーツと、「川」を構成する地形パーツとは互いに隣接しないように構成される。具体的には、隣接可能な２つの地形パーツは、隣接させた場合に隣接部分の各頂点の位置が一致するように、予め頂点の位置が設定されている。
【００５０】
地形パーツ配置データでは、隣接不可能な地形パーツ同士が互いに隣接しないように、各地形パーツの配置が定められている。また、後述するように、仮想空間内に新たに地形パーツを追加する場合や、仮想空間内に配置された地形パーツを別の地形パーツに変更する場合も、隣接不可能な地形パーツ同士が互いに隣接しないように制御される。
【００５１】
（第１変形処理）
ここで、予め記憶された複数の地形パーツを地形パーツ配置データに基づいて配置することにより地形を構成した場合、仮想空間内の地形が単調になり、自然な地形にならないことがある。このため、本実施形態では、地形パーツ配置データに基づいて複数の地形パーツを並べて構成される地形について、各地形パーツを変形させる（歪みを加える）第１変形処理を行う。本実施形態では、画像を描画する毎に第１変形処理が行われる。第１変形処理が行われることで、複数の地形パーツを配置することによって構成される地形が変形し、見た目上自然な地形となる。
【００５２】
図６は、図５に示した複数の地形パーツを配置して構成される地形について、各地形パーツを変形させた後の地形の一例を示す図である。図６に示すように、地形パーツ配置データに基づいて配置される複数の地形パーツを変形することで、各地形パーツは直線状ではなく曲線状（波形状）となる。
【００５３】
具体的には、第１変形処理では、地形パーツ配置データに基づいて仮想空間に配置される各地形パーツの頂点を、当該頂点の仮想空間における位置に応じて変位させることで、各地形パーツが変形される。より具体的には、仮想空間に配置された地形パーツの各頂点が、仮想空間の横方向（ｘ軸方向）及び奥行き方向（ｚ軸方向）に変位される。
【００５４】
図６の下部には、変形前の地形パーツＧＰ１及びＧＰ４の頂点Ｖ（ｘ，ｚ）と、変形後の地形パーツＧＰ１及びＧＰ４の頂点Ｖ’（ｘ＋ｄｘ，ｚ＋ｄｚ）とが示されている。ここで、頂点Ｖのｘ座標値の変位量ｄｘ、及び、頂点Ｖのｚ座標値の変位量ｄｚは、所定の波形を有する関数に基づいて算出される。例えば、変位量ｄｘ及びｄｚは、以下の式によって算出される。
ｄｘ＝ｃｏｓ（ｚ）×ｃｏｓ（ｚ）×ｃｏｓ（ｎｚ）×ｃｏｓ（ｍｚ）×α  （式１）
ｄｚ＝ｃｏｓ（ｘ）×ｃｏｓ（ｘ）×ｃｏｓ（ｎｘ）×ｃｏｓ（ｍｘ）×α  （式２）
【００５５】
ここで、式１における「ｚ」は、仮想空間内における変形前の頂点Ｖのｚ座標値である。また、式２における「ｘ」は、仮想空間内における変形前の頂点Ｖのｘ座標値である。また、「ｎ」および「ｍ」は、正の整数であり、例えば、ｎ＝３、ｍ＝５であってもよい。また、αは予め定められた係数である。
【００５６】
各地形パーツの全ての頂点に、式１及び式２で算出される変位量を加えることにより、頂点Ｖ（ｘ，ｙ，ｚ）は、Ｖ’（ｘ＋ｄｘ，ｙ，ｚ＋ｄｚ）に変位する。これにより、各地形パーツはｘ軸方向およびｚ軸方向に変形する。なお、頂点Ｖのｙ座標値は、変形前と変形後とで変化しない。
【００５７】
式１及び式２に示される計算は、ＧＰＵ２２が有する頂点シェーダ機能によって行われる。ＧＰＵ２２は、ＣＰＵ２１からの命令に応じて、地形パーツ配置データに基づいて配置される各頂点の仮想空間における位置を、式１及び式２に基づいて変化させる。これにより、各地形パーツが変形し、仮想空間の地形全体が変形する。そして、ＧＰＵ２２が描画処理を行い、図６に示すような画像がディスプレイ１２に表示される。すなわち、ディスプレイ１２に画像が表示される毎に（フレーム毎に）、ＧＰＵ２２が、頂点シェーダ機能により各地形パーツの頂点を変位させ、複数のパーツ形状データと地形パーツ配置データとに基づいて構成される地形を変形させた画像を生成する。
【００５８】
式１及び式２から明らかなように、本実施形態では、周期の異なる複数の三角関数を組み合わせることで、所定の波形を有する関数が定義されている。これにより、仮想空間における頂点Ｖの位置に応じて、異なる変位量を頂点に加えることができ、同じ地形パーツでも異なる位置に配置されれば、異なる形状に変形させることができる。また、変位量ｄｘ、ｄｚは、周期の異なる複数の三角関数の組み合わせにより決定されるため、ユーザにその周期性が分かり難い。このため、ユーザにとって見た目上、自然な地形とすることができる。
【００５９】
なお、式１及び式２は単なる一例であり、頂点Ｖの変位量ｄｘ、ｄｚは他の式に基づいて算出されてもよい。また、頂点Ｖの変位量ｄｘ、ｄｚは、当該頂点Ｖの仮想空間における位置に応じてランダムに決定されてもよい。
【００６０】
図７は、各地形パーツに対する第１変形処理が行われない場合のディスプレイ１２に表示される画像の一例を示す図である。図８は、各地形パーツに対する第１変形処理が行われる場合のディスプレイ１２に表示される画像の一例を示す図である。
【００６１】
図７に示すように、第１変形処理が行われない場合、仮想空間に配置される崖オブジェクト３１は、全体的に直線的で角張った形状となる。地面３４と川オブジェクト３３との境界も直線的で角張った形状となる。また、予め用意された地形パーツが組み合わされることで地形全体が形成されるため、仮想空間内に同じ形状の地形パーツが複数配置されることになり、地形全体が単調になる。
【００６２】
一方、各地形パーツに対して第１変形処理が行われる場合は、図８に示すように、崖オブジェクト３１の外形は全体的に波打った形状となり、より自然な形状となる。地面３４と川オブジェクト３３の境界も同様である。また、地形パーツの頂点Ｖの位置に応じて当該頂点Ｖの変位量が異なるため、同じ地形パーツが仮想空間に複数配置されても変形後の各地形パーツの形状は異なり、地形全体が単調にならない。
【００６３】
（ユーザによる地形の更新）
ここで、本実施形態のゲームでは、ユーザが所定の操作を行うことにより、ユーザキャラクタ５０に仮想空間内で溝を掘らせたり、崖オブジェクトを削らせたり、地面や崖オブジェクトの上に新たな崖オブジェクトを追加したりすることができる。例えば、ユーザキャラクタ５０が崖オブジェクトを削る動作を行った場合、その動作を行った位置に配置された地形パーツは削除される。また、ユーザキャラクタ５０が地面上で土を盛る動作を行った場合、その動作を行った位置に地形パーツが新たに追加される。以下では、ユーザが仮想空間に配置された地形パーツを削除したり、追加したり、変更したりすることについて説明する。
【００６４】
まず、地形パーツの削除について説明する。図９は、ユーザキャラクタ５０が崖オブジェクトの一部を削る動作を行った場合のディスプレイ１２に表示される画像の一例を示す図である。図１０Ａは、ユーザキャラクタ５０が崖オブジェクトの一部を削る動作を行う前の仮想空間を上方から見た図である。図１０Ｂは、ユーザキャラクタ５０が崖オブジェクトの一部を削る動作を行った後の仮想空間を上方から見た図である。
【００６５】
例えば、図８に示すように崖オブジェクト３１の右隣にユーザキャラクタ５０が位置しているときにユーザが所定の操作を行なった場合、図９に示すように崖オブジェクト３１の一部が削られる。なお、図９では、削られた崖オブジェクト３１の一部が破線で示されているが、実際には崖オブジェクト３１の一部が削られた後は、破線部分は画面に表示されない。
【００６６】
具体的には、図１０Ａに示すように、崖オブジェクト３１は、削られる前は７つの地形パーツにより構成される。ユーザキャラクタ５０が位置Ｐａの近傍でユーザが所定の操作を行った場合、図１０Ｂに示すように、位置Ｐａの地形パーツＧＰ１が削除される。
【００６７】
より具体的には、図１０Ａに示す状態では、位置Ｐａに地形パーツＧＰ１が配置されるという情報が、地形パーツ配置データに記憶されている。この状態で、ユーザキャラクタ５０が崖オブジェクトを削る動作を行った場合、位置Ｐａに地形パーツＧＰ１が配置されるという情報が、地形パーツ配置データから削除される。これにより、崖オブジェクト３１の一部である地形パーツＧＰ１が削られる。位置Ｐｂの地形パーツＧＰ１についても同様に、ユーザキャラクタ５０が崖オブジェクトを削る前は、位置Ｐｂに地形パーツＧＰ１が配置されるという情報が、地形パーツ配置データに記憶されている。この状態で、ユーザキャラクタ５０が崖オブジェクトを削る動作を行った場合、位置Ｐｂに地形パーツＧＰ１が配置されるという情報が、地形パーツ配置データから削除される。
【００６８】
次に、地形パーツの追加について説明する。図１１は、ユーザキャラクタ５０が地面を掘り、地面に土を盛る動作を行った場合のディスプレイ１２に表示される画像の一例を示す図である。図１２Ａは、地形パーツＧＰ１が追加される前の仮想空間を上方から見たときの一例を示す図である。図１２Ｂは、地形パーツＧＰ１が追加された後の仮想空間を上方から見たときの一例を示す図である。
【００６９】
図１１に示すように、ユーザキャラクタ５０が地面上にいるときにユーザが所定の操作を行なった場合、地面の一部が削られてそこに溝が形成される。さらにユーザが所定の操作を行った場合、その溝の隣には、新たな崖オブジェクト（地形パーツＧＰ１）が追加される。具体的には、ユーザキャラクタ５０が図１２Ａの破線で示される位置Ｐｃに対して溝を掘る動作を行った場合、位置Ｐｃにある地形パーツＧＰ１が削除され、溝が形成される（図１２Ｂ）。そして、ユーザキャラクタ５０が土を盛る動作を行った場合、溝の隣の位置Ｐｄには、地形パーツＧＰ１が追加される。
【００７０】
より具体的には、位置Ｐｃに地形パーツＧＰ１が配置されるという情報が地形パーツ配置データから削除されるとともに、位置Ｐｄに地形パーツＧＰ１が配置されるという情報が、地形パーツ配置データに追加される。そして、画像が描画される際に、上述した第１変形処理が行われる。これにより、新たな地形パーツＧＰ１の各頂点の仮想空間における位置に応じて、新たな地形パーツＧＰ１の各頂点が変位され、当該新たな地形パーツＧＰ１が変形する。各頂点の変位量は、式１及び式２に基づいて算出される。
【００７１】
上述したように、地形パーツには、互いに隣接可能な地形パーツと隣接不可能な地形パーツとがあり、新たに地形パーツを追加する場合、互いに隣接可能な地形パーツが隣接するように（互いに隣接不可能な地形パーツが隣接しないように）制御される。このため、ある位置に追加される地形パーツの種類は、当該ある位置の隣接位置に配置されている地形パーツの種類に応じて決定される。また、仮想空間内に新たに地形パーツが追加される場合、互いに隣接する２つの地形パーツの隣接部分における頂点が同じ位置になるように、当該新たな地形パーツが配置される。
【００７２】
例えば、ユーザの操作に応じて図１２Ａの位置Ｐａの右隣の位置Ｐｅに地形パーツが追加される場合、位置Ｐａに配置された地形パーツＧＰ１と隣接可能な地形パーツとして、地形パーツＧＰ１が決定される。この場合、図１２Ｂに示すように、位置Ｐａの地形パーツＧＰ１と、位置Ｐｅに追加される新たな地形パーツＧＰ１との隣接部分において、位置Ｐａの地形パーツＧＰ１の頂点と、位置Ｐｅの新たな地形パーツＧＰ１の頂点とは位置が一致する。そして、新たに追加された地形パーツＧＰ１を含む各地形パーツに対して、上述した第１変形処理が行われる。
【００７３】
このように、新たに地形パーツが追加される場合でも、互いに隣接する地形パーツの隣接部分における頂点が一致するため、仮想空間における頂点の位置に応じて第１変形処理が行われた場合に、隣接する地形パーツ間でずれが生じないようにすることができる。
【００７４】
なお、図示は省略するが、ユーザは、仮想空間内に配置されたある地形パーツを別の地形パーツに変更することができてもよい。すなわち、仮想空間内に配置されたある地形パーツを削除して別の地形パーツを新たに配置することができてもよい。例えば、第１の位置に第１の地形パーツが配置されている場合、ユーザの操作に応じて、第１の位置に配置されている第１の地形パーツを、第２の地形パーツに変更してもよい。この場合、地形パーツの変更前は、第１の位置に第１の地形パーツが配置されるという情報が地形パーツ配置データに記憶されている。そして、ユーザの操作に応じて、第１の位置に第２の地形パーツが配置されるという情報が地形パーツ配置データに記憶される。この場合においても、互いに隣接不可能な地形パーツが隣接しないように制御される。また、隣接部分において頂点が一致するように制御される。そして、画像が描画される際に、上述した第１変形処理が行われる。
【００７５】
以上のように、本実施形態の第１変形処理では、地形パーツ配置データに基づいて配置される地形パーツの各頂点が、仮想空間における位置に応じて、横方向及び奥行き方向に変位される。各頂点の変位量は、所定の波形を示す関数に基づいて算出される。これにより、予め用意された複数の地形パーツを配置して構成される地形を、見た目上自然な地形にすることができる。また、複数の地形パーツを配置することで地形を構成するため、地形全体を１つ１つ構成する場合に比べて開発効率を向上させることができる。
【００７６】
また、新たに地形パーツが配置される場合にも第１変形処理が行われるため、当該新たな地形パーツは固定の形状にならず、単調な地形となることを防止することができる。また、パーツ形状データと地形パーツ配置データとに基づいて地形を構成することにより、容易に、既存の地形に地形パーツを新たに配置したり、既存の地形から地形パーツを削除したり、仮想空間に配置された地形パーツを別の地形パーツに変更したり等の更新をすることができ、このような追加、削除、変更等の更新の際にも自然な地形とすることができる。
【００７７】
また、ＧＰＵ２２の頂点シェーダ機能により地形パーツの頂点に変位を加えて画像を生成するため、高速で各頂点を変位させることができ、リアルタイムで地形を変形することができる。
【００７８】
（第２変形処理）
本実施形態では、上述のように第１変形処理で変形された地形オブジェクトに対して、さらに全体を変形する第２変形処理が行われる。この第２変形処理では、地形オブジェクト及び地形オブジェクト上の他のオブジェクト（家オブジェクト４０や木オブジェクト４１、ユーザキャラクタ５０等）の全体が変形される。以下、この第２変形処理について説明する。
【００７９】
図１３は、第１変形処理が行われた後であって、第２変形処理が行われる前の仮想空間の一例を示す図である。
【００８０】
図１３に示すように、仮想空間には、地形オブジェクトとしての地面オブジェクト３４、崖オブジェクト３０及び３１と、地形オブジェクト上に配置された家オブジェクト４０と、木オブジェクト４１と、ユーザキャラクタ５０が配置される。また、仮想空間には、仮想カメラＶＣが設定される。仮想カメラＶＣには、当該仮想カメラに固定のＣｘＣｙＣｚ座標系が設定される。Ｃｘ軸は、仮想カメラＶＣの横方向の軸である。Ｃｙ軸は、仮想カメラＶＣの上方向の軸である。Ｃｚ軸は、仮想カメラＶＣの視線方向の軸である。本実施形態では、Ｃｘ軸は、仮想空間のｘ軸に平行に設定される。また、仮想カメラＶＣは、仮想空間の高さ方向に移動可能であり、高さ方向に移動する場合にＣｘ軸回り（ピッチ方向）に回転する。Ｃｘ軸は仮想空間のｘ軸に平行に設定されるため、仮想カメラＶＣの視線方向の地面３４に沿った方向は、ｚ軸と平行になる。
【００８１】
図１３に示す地形及び地形上のオブジェクトに対して、第２変形処理が行われる。図１４は、第２変形処理が行われた後の仮想空間の一例を示す図である。
【００８２】
図１４に示すように、第２変形処理では、地面３４が円筒（ドラム）の表面に沿うように地形全体が変形される。具体的には、地形を構成する地面３４（平面的な基準面）が、仮想空間のｘ軸と平行な中心軸を有する半径Ｒの円筒の側面の少なくとも一部をなすように、地形全体が変形される。仮想カメラＶＣのＣｘ軸は仮想空間のｘ軸と平行になるように設定されるため、仮想カメラＶＣの視線方向（画像が表示された場合の画面の奥行き方向）に地面３４が下がるように、地形全体が変形される。また、地形上のオブジェクト（家オブジェクト４０、木オブジェクト４１、ユーザキャラクタ５０等）も地面３４に沿うように変形される。
【００８３】
具体的には、第２変形処理では、地形を構成する地形パーツの各頂点、及び、地形上に配置されたオブジェクトの各頂点がｘ軸回りに回転するように座標変換される。以下、図１５及び図１６を参照して、第２変形処理の詳細について説明する。
【００８４】
図１５は、第２変形処理が行われる前の仮想空間をｘ軸と平行な方向から見たときの一例を示す図である。図１６は、第２変形処理が行われた後の仮想空間をｘ軸と平行な方向から見たときの一例を示す図である。
【００８５】
図１５に示すように、地面３４上の頂点Ｖ１（地面３４を構成する地形パーツの頂点Ｖ１）のｙ座標値及びｚ座標値が（ｙ１，ｚ１）であるとする。また、家オブジェクト４０の頂点Ｖ２のｙ座標値及びｚ座標値が（ｙ２，ｚ２）であるとする。また、ｚ軸方向の所定距離がＬであるとする。なお、Ｌは固定の値である。
【００８６】
また、本実施形態では、ユーザの操作に応じて、仮想カメラＶＣの高さが変化する。例えば、仮想カメラＶＣは、「低」の位置と、「通常」の位置と、「高」の位置とに設定可能であるとする。仮想カメラＶＣが「低」の位置の場合は、仮想カメラＶＣの視線方向は第１の方向に設定され、ｚ軸とＣｚ軸との角度は比較的小さな値（例えば、０度〜２０度）に設定される。この場合、仮想空間を横から見たような画像がディスプレイ１２に表示される。また、仮想カメラＶＣが「通常」の位置の場合は、仮想カメラＶＣの視線方向は第１の方向よりも下向きの第２の方向に設定され、ｚ軸とＣｚ軸との角度は仮想カメラＶＣが「低」の位置の場合よりも大きな値（例えば、４５度）に設定される。この場合、仮想空間を斜め上方向から見たような画像が表示される。また、仮想カメラＶＣが「高」の位置の場合は、仮想カメラＶＣの視線方向は第２の方向よりも下向きの第３の方向に設定され、ｚ軸とＣｚ軸との角度は比較的大きな値（例えば、６０〜７０度）に設定される。この場合、仮想空間を上から見たような画像が表示される。
【００８７】
この場合、図１５に示す頂点Ｖ１及びＶ２は、図１６に示す頂点Ｖ１’及びＶ２’にそれぞれ変位される。具体的には、変位後の頂点Ｖ’のｙ座標値及びｚ座標値（ｙ’，ｚ’）は、変位前の頂点Ｖのｙ座標値及びｚ座標値（ｙ，ｚ）に基づいて、以下の式３〜式７により算出される。なお、各頂点のｘ座標値は変化されない。
【００８８】
ｒａｄ＝θ×（ｚ／Ｌ）                        （式３）
ｔｅｍｐ＿ｙ＝ｙ＋Ｒ                          （式４）
ｙ＿ｔ＝ｔｅｍｐ＿ｙ×ｃｏｓ（ｒａｄ）        （式５）
ｙ’＝ｙ＿ｔ−Ｒ                              （式６）
ｚ’＝ｔｅｍｐ＿ｙ×ｓｉｎ（ｒａｄ）          （式７）
【００８９】
ここで、θは、円弧の中心角であり、仮想カメラＶＣの高さに応じて定められる。また、Ｒは、円弧（円筒）の半径を示す。ｚ軸方向の距離Ｌは固定の値であり、θは仮想カメラＶＣの高さに応じて定められるため、Ｒは、Ｌとθとに基づいて定まる（Ｒθ＝Ｌ）。
【００９０】
各地形パーツおよび地形上のオブジェクトの全ての頂点に対して、式３〜式７に基づく座標変換が行われる。すなわち、各頂点のｚ軸方向の位置に応じて、各頂点に対して式３〜式７に基づく座標変換が行われる。言い換えると、各頂点の地面３４（平面的な基準面）に沿った奥行き方向の位置に応じて、各頂点に対して式３〜式７に基づく座標変換が行われる。
【００９１】
図１６に示すように、例えば地面３４上の頂点Ｖ１は、半径Ｒ、中心角θを有する円弧上の位置に変位される。地面３４上の全ての頂点に対して同様の座標変換が行われることにより、地面３４が、半径Ｒの円筒の側面の一部をなすように変形される。また、地面３４上の家オブジェクト４０の頂点Ｖ２も同様に座標変換され、図１６に示す位置に変位される。家オブジェクト４０の全頂点に対して同様に座標変換が行われることにより、家オブジェクト４０は、円筒の側面上に配置される。
【００９２】
第２変形処理でも、第１変形処理と同様に、ＧＰＵ２２の頂点シェーダ機能により各頂点が変位される。具体的には、ＧＰＵ２２は、ＣＰＵ２１からの命令に応じて、上記式３〜式７に基づく座標変換を行う。そして、ＧＰＵ２２は、仮想カメラＶＣに基づいて描画処理を行い、ディスプレイ１２に画像を表示させる。すなわち、ディスプレイ１２に画像が表示される毎に（フレーム毎に）、ＧＰＵ２２の頂点シェーダ機能により地形パーツ及び地形上のオブジェクトの頂点が変位され、地形全体が変形される。
【００９３】
なお、θは、仮想カメラＶＣの視線方向（仮想カメラＶＣの高さ）によって定められる。例えば、仮想カメラＶＣの視線方向が第１の方向に設定される場合、θは第１の値に設定される。また、仮想カメラＶＣの視線方向が第２の方向に設定される場合、θは、第１の値よりも大きな第２の値に設定される。すなわち、仮想カメラＶＣの視線方向が第１の方向よりも下向きの第２の方向に設定される場合は、θの値は大きくなる。言い換えると、仮想カメラＶＣの視線方向が第１の方向よりも下向きの第２の方向である場合は、変形後の地面の曲率が大きくなる。
【００９４】
一方、仮想カメラＶＣの視線方向が第２の方向よりもさらに下向きの第３の方向である場合は、θの値は、第１の値および第２の値よりも小さな第３の値に設定される。言い換えると、仮想カメラＶＣの視線方向が第２の方向よりも下向きの第３の方向である場合は、変形後の地面の曲率は小さくなる。
【００９５】
なお、仮想カメラＶＣが図１５に示す「高」の位置よりも更に高い位置（例えば、真上から仮想空間を見下ろす方向）にある場合、第２変形処理は行われなくてもよい。すなわち、マップのように仮想空間を俯瞰する位置に仮想カメラＶＣが設定されている場合、地形および地形上のオブジェクトをドラム状に変形させる処理は行われなくてもよい。
【００９６】
図１７Ａは、仮想カメラＶＣの視線方向が第１の方向である場合において第２変形処理が行われない場合のディスプレイ１２に表示される画像の一例を示す図である。図１７Ｂは、仮想カメラＶＣの視線方向が第１の方向である場合において第２変形処理が行われた場合のディスプレイ１２に表示される画像の一例を示す図である。
【００９７】
図１７Ａに示すように、仮想カメラＶＣの視線方向が第１の方向である場合において第２変形処理が行われない場合は、画面の上部に地平線及び木オブジェクト４１が表示される。この仮想カメラＶＣの状態において第２変形処理が行われた場合は、図１７Ｂに示すように、木オブジェクト４１が表示されなくなる。また、図１７Ｂでは、地平線が図１７Ａのときよりも画面の下方に移動し、空の範囲が広くなる。また、図１７Ａでは家オブジェクト４０を上方から見下ろしたように見えるが、図１７Ｂでは家オブジェクト４０を下方から見上げたような画像が表示される。
【００９８】
図１８Ａは、仮想カメラＶＣの視線方向が第２の方向である場合において第２変形処理が行われない場合のディスプレイ１２に表示される画像の一例を示す図である。図１８Ｂは、仮想カメラＶＣの視線方向が第２の方向である場合において第２変形処理が行われた場合のディスプレイ１２に表示される画像の一例を示す図である。
【００９９】
図１８Ａに示すように、仮想カメラＶＣの視線方向が第２の方向である場合において第２変形処理が行われない場合は、画面には地平線は表示されず、空は表示されない。この仮想カメラＶＣの状態において第２変形処理が行われた場合は、図１８Ｂに示すように、地平線が表示され、空が表示される。
【０１００】
図１９Ａは、仮想カメラＶＣの視線方向が第３の方向である場合において第２変形処理が行われない場合のディスプレイ１２に表示される画像の一例を示す図である。図１９Ｂは、仮想カメラＶＣの視線方向が第３の方向である場合において第２変形処理が行われた場合のディスプレイ１２に表示される画像の一例を示す図である。
【０１０１】
図１９Ａに示すように、仮想カメラＶＣの視線方向が第３の方向である場合において第２変形処理が行われない場合は、例えば、画面の上端に家オブジェクト４０の一部と、岩オブジェクト４２の一部とが表示される。この仮想カメラＶＣの状態において第２変形処理が行われた場合は、図１９Ｂに示すように、岩オブジェクト４２の全体が表示される。
【０１０２】
なお、ユーザの操作に応じてユーザキャラクタ５０が画面の奥行き方向に移動する場合がある。この場合、ユーザキャラクタ５０がディスプレイ１２に表示されるように、ユーザキャラクタ５０の移動に応じて表示範囲も変化する。
【０１０３】
具体的には、上記式３の代わりに、以下の式３’に基づいて「ｒａｄ」が算出される。
ｒａｄ＝θ×（（ｚ＋ＯＦＦＳＥＴ）／Ｌ）                        （式３’）
【０１０４】
ここで、「ＯＦＦＳＥＴ」は、ユーザキャラクタ５０の奥行き方向への移動に応じて定められる。式３’に示すように、ｚにオフセット値を加えた値に基づいて「ｒａｄ」が算出される。そして、式３’に基づいて算出された「ｒａｄ」を上記式４及び式７に代入し、変換後の頂点Ｖの座標値が算出される。これにより、地形全体をドラム状に変形するとともに、ドラム状の地形全体を、ドラムの中心軸周りに回転させることができ、実際に仮想カメラＶＣを仮想空間で移動させることなく、擬似的な仮想カメラＶＣの移動を実現することができる。すなわち、式３’のようにｚ座標値にオフセット値を加えることで、「ＯＦＦＳＥＴ」分だけ仮想カメラＶＣが奥行き方向に移動するように見える。
【０１０５】
図２０は、ｚ座標値にオフセット値を加えた場合の変形前後の仮想空間をｘ軸と平行な方向から見た図である。図１６と図２０とを比較すると、図２０では地面３４及び地面上の家オブジェクト４０は、円筒の中心軸周りに回転している。各頂点のｚ座標値にオフセット値を加えて式３’〜式７に基づく座標変換を行うことにより、地形及び地形上のオブジェクトを含む地形全体を円筒の側面の周方向に回転させることができる。これにより、仮想空間内に固定された仮想カメラＶＣから見た場合、仮想カメラＶＣが円筒の周方向（画面の奥行き方向）に移動するように見える。
【０１０６】
以上のように、第２変形処理では、平面的な地形及び地形上の他のオブジェクト（家オブジェクト、木オブジェクト、ユーザキャラクタ等）の各頂点に対して座標変換を行い、地形全体を曲面状（ドラム状）に変形させる。また、仮想カメラＶＣの状態（姿勢や位置）に応じて、ドラムの曲率を変化させる。具体的には、仮想カメラＶＣの視線方向が第１の方向の場合は、ドラムの曲率を小さく（θを小さく）し、仮想カメラＶＣの視線方向が第１の方向より下向きの第２の方向の場合は、ドラムの曲率を大きく（θを大きく）する。
【０１０７】
これにより、ユーザにとって見やすい画像にすることができる。例えば、図１７Ａと図１７Ｂとを比較すると、図１７Ｂでは、奥行き方向の遠い位置については地面が表示範囲に含まれないため、ユーザにとって、ユーザキャラクタ５０から近い範囲を見やすくなり、よりゲームを楽しむことができる。また、仮想カメラＶＣの視線方向が第１の方向（横向き）の場合は曲率が小さくなるため、地形全体をドラム状に変形させる場合でもユーザにとって違和感のない画像にすることができる。例えば、図１７Ｂにおいて、曲率が大きすぎると地形全体が大きく曲がっているように見え、ユーザにとって違和感のある画像になるおそれがある。しかしながら、本実施形態では、仮想カメラＶＣの視線方向が第１の方向（横向き）の場合にはドラムの曲率が小さく設定されるため、そのような違和感を生じさせ難くすることができる。
【０１０８】
また、本実施形態では、図１９Ｂに示すように、仮想カメラＶＣの視線方向が第２の方向よりも下向きの第３の方向の場合は、仮想カメラＶＣの視線方向が第１の方向及び第２の方向ときよりも、θは小さく設定される。すなわち、仮想空間を上方から見る場合にはドラムの曲率が小さくなる。このため、仮想空間を上方から見る場合に仮想空間の歪みが小さくなり、ユーザにとって見やすい画像にすることができる。
【０１０９】
また、本実施形態では、平面的な地形及び地形上のオブジェクトに対して第２変形処理が行われ、第２変形処理では、ＧＰＵ２２の頂点シェーダ機能によりリアルタイムで平面的な地形及び地形上のオブジェクトの頂点が変位される。これにより、予め曲面状の地形を用意する必要がない。また、予め曲面状の地形を作成する場合には、地形上に配置される他のオブジェクト（家オブジェクト４０や木オブジェクト４１）もその曲面に合うように作成する必要があり、ゲーム製作者にとって手間がかかる。すなわち、曲面状の地形上にオブジェクトを配置する場合、地面に接するオブジェクトの底面も地形に沿って曲面状に形成する必要があり、その底面に合わせてオブジェクト全体も作成する必要がある。異なる曲率の地形を用意する場合には、その曲率毎にオブジェクトも作成する必要がある。しかしながら、本実施形態では、平面的な地形及び当該地形上に配置されるオブジェクトを予め用意し、平面的な地形及び地形上のオブジェクトの頂点をＧＰＵ２２の頂点シェーダ機能によりリアルタイムで変位させるため、予め曲面状の地形や曲面状の地形に合ったオブジェクトを用意する必要がない。したがって、ゲームの開発効率を向上させることができる。
【０１１０】
（ゲーム処理の詳細）
次に、本体装置２において行われるゲーム処理の一例について具体的に説明する。まず、本体装置２に記憶されるデータについて説明する。
【０１１１】
図２１は、本体装置２（のＤＲＡＭ２６）に記憶されるデータの一例を示す図である。図２１に示すように、本体装置２には、ゲームプログラムと、パーツ形状データと、地形パーツ配置データと、オブジェクトデータと、キャラクタデータと、仮想カメラデータとが記憶される。これらの他にも、ユーザの操作に応じた操作データ、ゲームに用いられる他のデータ等、様々なデータが記憶される。
【０１１２】
ゲームプログラムは、本実施形態のゲームを実行するためのプログラムである。ゲームプログラムは、例えば外部記憶媒体に記憶されており、ゲームが開始されると、外部記憶媒体からＤＲＡＭ２６に読み込まれる。
【０１１３】
パーツ形状データは、例えば図４Ａ〜図４Ｃに示す地形パーツの形状を表すデータである。各地形パーツを表すデータは、複数の頂点データを含む。例えば、１の地形パーツを表すデータは、各頂点を表すデータとして、代表的な頂点からの相対位置を表すデータを含む。地形パーツが仮想空間に配置された場合、相対位置を表すデータに基づいて、その地形パーツに含まれる各頂点の仮想空間における座標値が定まる。パーツ形状データは、例えば外部記憶媒体に予め記憶されており、ゲームの開始の際に、外部記憶媒体からＤＲＡＭ２６に読み込まれる。
【０１１４】
地形パーツ配置データは、複数の地形パーツの配置を示すデータであり、仮想空間のどの位置にどの地形パーツを配置するかを記憶したデータである。地形パーツ配置データに基づいて複数の地形パーツが仮想空間に配置された場合、隣接する地形パーツの隣接部分の頂点座標が一致する。互いに隣接可能な地形パーツと、互いに隣接不可能な地形パーツとがあり、地形パーツ配置データは、互いに隣接不可能な２つの地形パーツが隣接しないように、予めゲーム製作者によって作成されている。地形パーツ配置データは、例えば外部記憶媒体に予め記憶されており、ゲームの開始の際に、外部記憶媒体からＤＲＡＭ２６に読み込まれる。なお、ゲーム処理の実行中に地形パーツ配置データによって定められる各地形パーツの配置が変化する。例えば、ユーザの操作に応じて地形パーツの追加、削除、変更等の更新が行われた場合、当該更新に応じて、初期的にＤＲＡＭ２６に記憶された地形パーツ配置データが更新される。この場合、互いに隣接不可能な地形パーツが隣接しないように、地形パーツ配置データが更新される。
【０１１５】
オブジェクトデータは、地形上に配置される他のオブジェクト（家オブジェクト４０や木オブジェクト４１）を示すデータである。各オブジェクトデータは、複数の頂点を含む。１つのオブジェクトデータは、各頂点を表すデータとして、代表的な頂点からの相対位置を表すデータを含む。オブジェクト（例えば家オブジェクト４０）が仮想空間に配置された場合、相対位置を表すデータに基づいて、当該オブジェクトの各頂点の仮想空間における座標値が定まる。オブジェクトデータは、例えば外部記憶媒体に予め記憶されており、ゲームの開始の際に、外部記憶媒体からＤＲＡＭ２６に読み込まれる。
【０１１６】
キャラクタデータは、地形上に配置されるユーザキャラクタ５０を示すデータを含む。ユーザキャラクタ５０を示すデータは、複数の頂点を含み、各頂点を表すデータとして、代表的な頂点からの相対位置を表すデータを含む。なお、キャラクタデータは、ＣＰＵ２１によって制御されるキャラクタ（いわゆる、ＣＰＵキャラクタ）を示すデータを含んでもよい。
【０１１７】
仮想カメラデータは、仮想カメラＶＣの状態に関連するデータであり、仮想カメラＶＣの仮想空間における位置、視線方向等を表すデータである。
【０１１８】
次に、本体装置２において行われるゲーム処理の詳細について説明する。図２２は、本体装置２のプロセッサ２０において行われるゲーム処理の一例を示すフローチャートである。図２２に示す処理は、本体装置２のＣＰＵ２１又はＧＰＵ２２がゲームプログラムを実行することによって行われる。なお、図２２では、上述した第１変形処理及び第２変形処理に関連する処理のみが示されており、他の処理（例えば、操作データに基づいてユーザキャラクタ５０を移動させる処理やユーザキャラクタ５０に所定の動作を行わせる処理等）は省略されている。
【０１１９】
図２２に示すように、ＣＰＵ２１は、まず、初期処理を行う（ステップＳ１００）。初期処理では、仮想空間に固定のｘｙｚ座標系が設定され、地形パーツ配置データに基づいて各地形パーツが仮想空間内に配置される。これにより、崖オブジェクト、地面オブジェクト、川オブジェクト等を含む地形が構成される。地形パーツ配置データに基づいて各地形パーツが配置されることで、各地形パーツの各頂点の仮想空間における位置が定まる。また、初期処理では、地形上に他のオブジェクト（家オブジェクト４０、木オブジェクト４１）が配置される。各オブジェクトの仮想空間内における位置が定まることで、各オブジェクトの各頂点の仮想空間における位置が定まる。また、ユーザキャラクタ５０も配置される。ユーザキャラクタ５０の仮想空間内における位置が定まることで、ユーザキャラクタ５０の各頂点の仮想空間における位置が定まる。また、仮想空間内に仮想カメラＶＣが配置される。
【０１２０】
ステップＳ１００の処理の後、ＣＰＵ２１は、ステップＳ１０１の処理を実行する。以降、ＣＰＵ２１は、ステップＳ１０１〜ステップＳ１１０の処理を、所定のフレーム時間（例えば、１／６０秒）毎に繰り返し実行する。
【０１２１】
ステップＳ１０１において、ＣＰＵ２１は、地形を更新するか否かを判定する。具体的には、ＣＰＵ２１は、ユーザによって地形パーツを追加する操作（例えば、土を盛る操作）、地形パーツを削除する操作（例えば、崖オブジェクトを削る操作、地面を掘る操作）、又は、地形パーツを変更する操作が行われたか否かを判定する。
【０１２２】
地形を更新すると判定した場合（ステップＳ１０１：ＹＥＳ）、ＣＰＵ２１は、ＤＲＡＭ２６に記憶された地形パーツ配置データの更新を行う（ステップＳ１０２）。例えば、ＣＰＵ２１は、ある位置に地形パーツを追加する操作がユーザによって行われた場合、当該ある位置に地形パーツが配置されることを示す情報を地形パーツ配置データに追加する。また、ＣＰＵ２１は、ある位置の地形パーツを削除する操作が行われた場合、当該ある位置に配置された地形パーツを地形パーツ配置データから削除する。また、ＣＰＵ２１は、ある位置に存在する地形パーツを別の地形パーツに変更する操作が行われた場合、当該ある位置に配置された地形パーツを別の地形パーツに変更するように地形パーツ配置データを更新する。
【０１２３】
ここで、ＣＰＵ２１は、新たに地形パーツを追加する場合や地形パーツを変更する場合、互いに隣接不可能な地形パーツが隣接しないように、制御する。例えば、ＣＰＵ２１は、ある位置に地形パーツを追加する場合、当該ある位置の隣接位置に配置された地形パーツの種類に基づいて、新たに配置する地形パーツの種類を決定する。そして、ＣＰＵ２１は、互いに隣接する地形パーツの隣接部分における頂点が一致するように、新たな地形パーツを配置する。
【０１２４】
ステップＳ１０２の処理を実行した場合、又は、ステップＳ１０１でＮＯと判定した場合、ＣＰＵ２１は、仮想カメラ設定処理を行う（ステップＳ１０３）。具体的には、ＣＰＵ２１は、ユーザの操作に応じて、仮想カメラＶＣの高さ（視線方向）を設定する。ユーザによって仮想カメラＶＣの高さの変更が行われた場合は、ＣＰＵ２１は、仮想カメラＶＣの高さ（位置及び視線方向）を設定する。また、ユーザがユーザキャラクタ５０を横方向（ｘ軸方向）に移動させる操作を行った場合、ステップＳ１０３において、ＣＰＵ２１は、当該操作に応じて、仮想カメラＶＣを仮想空間の横方向（ｘ軸方向）に移動させる。
【０１２５】
ステップＳ１０３に続いて、ＣＰＵ２１は、仮想カメラＶＣの状態に応じて、中心角θを設定する（ステップＳ１０４）。具体的には、ＣＰＵ２１は、ステップＳ１０３で設定された仮想カメラＶＣの視線方向（高さ）に応じて、中心角θを設定する。
【０１２６】
次に、ＣＰＵ２１は、ユーザの操作に応じてユーザキャラクタ５０が奥行き方向（ｚ軸方向）に移動したか否かを判定する（ステップＳ１０５）。
【０１２７】
ユーザキャラクタ５０が奥行き方向に移動したと判定した場合（ステップＳ１０５：ＹＥＳ）、ＣＰＵ２１は、オフセット値を設定する（ステップＳ１０６）。ここで設定されるオフセット値は、上記式３’の「ＯＦＦＳＥＴ」である。具体的には、ＣＰＵ２１は、ユーザキャラクタ５０のｚ軸方向への移動に応じて、オフセット値を設定する。例えば、ＣＰＵ２１は、ユーザキャラクタ５０がｚ軸正方向に移動した場合、負のオフセット値を設定し、ユーザキャラクタ５０がｚ軸負方向に移動した場合、正のオフセット値を設定する。
【０１２８】
ステップＳ１０６の処理を実行した場合、又は、ステップＳ１０５でＮＯと判定した場合、ＣＰＵ２１は、各地形パーツの頂点を変形させるための第１変形処理をＧＰＵ２２に実行させる（ステップＳ１０７）。具体的には、ＧＰＵ２２は、頂点シェーダ機能を用いて、地形パーツ配置データに基づいて仮想空間に配置される各地形パーツの頂点を、上記式１及び式２に基づいて変位させる。これにより、各地形パーツの頂点が仮想空間における位置に応じて変位し、図６に示すように地形が変形される。
【０１２９】
ステップＳ１０７に続いて、ＣＰＵ２１は、ＧＰＵ２２に、地形及び地形上のオブジェクトを変形させる第２変形処理を実行させる（ステップＳ１０８）。ＧＰＵ２２は、第１変形処理で変形された後の地形及び地形上のオブジェクトの各頂点を、頂点シェーダ機能を用いてドラム状に変位させる。具体的には、ＧＰＵ２２は、第１変形処理で変形された後の各地形パーツの頂点、及び、地形上のオブジェクト（家オブジェクト４０、木オブジェクト４１、ユーザキャラクタ５０等）の頂点を、式３〜式７に基づいて変位させる。この第２変形処理が行われることにより、平面的な地面が円筒の側面の一部をなすように変形され、地面上のオブジェクトも当該円筒の側面上に配置される。なお、ステップＳ１０６でオフセット値が設定されている場合、頂点の変位の計算には、式３’が用いられる。
【０１３０】
そして、ＣＰＵ２１は、ＧＰＵ２２に、仮想カメラＶＣに基づく描画処理を行わせる（ステップＳ１０９）。具体的には、ＧＰＵ２２は、上記第１変形処理および第２変形処理で変形された地形及び地形上のオブジェクトを仮想カメラＶＣから見た画像を生成する。そして、生成された画像がディスプレイ１２に出力され、ディスプレイ１２において仮想空間の画像が表示される（ステップＳ１１０）。
【０１３１】
なお、ステップＳ１０７の第１変形処理、および、ステップＳ１０８の第２変形処理は、仮想カメラＶＣの撮像範囲に含まれる頂点についてのみ行われる。すなわち、仮想カメラＶＣの撮像範囲に含まれない頂点については、第１変形処理および第２変形処理は行われない。具体的には、第１変形処理および第２変形処理が行われたときの各頂点が仮想カメラＶＣの視錐台に含まれる場合、当該視錐台に含まれる各頂点に対して、第１変形処理および第２変形処理が行われる。
【０１３２】
ステップＳ１１０の処理が行われた場合、ＣＰＵ２１は、再びステップＳ１０１の処理を実行する。以上で図２２の説明を終了する。
【０１３３】
このように、ステップＳ１０７の第１変形処理、及び、ステップＳ１０８の第２変形処理は、フレーム時間毎に繰り返し実行される。地形パーツが追加されたり削除されたり変更されたりしても、リアルタイムで第１変形処理及び第２変形処理が行われる。
【０１３４】
以上のように、本実施形態では、地形パーツ配置データに基づいて複数の地形パーツを配置することにより構成される地形に対して、第１変形処理が行われる。第１変形処理では、地形パーツの各頂点が、仮想空間の位置に応じてｘ軸方向およびｚ軸方向に変位される。各頂点の変位量は所定の波形を表す関数によって決定される。具体的には、上記式１及び式２に基づいて変位量が決定される。この第１変形処理によって、複数種類の地形パーツを配置することにより構成される地形を、自然な見た目にすることができる。また、複数の地形パーツを配置して地形を構成するため、地形全体を１つずつ作成する場合よりも効率よく地形を作成することができ、ゲームの開発効率を向上させることができる。また、地形パーツの更新（追加、削除、変更等）を容易に行うことができ、拡張性を持たせることができる。
【０１３５】
また、本実施形態では、第１変形処理に加えて、さらに地形全体を曲面状に変形させる第２変形処理が行われる。これにより、ユーザにとって見やすいように地形全体を変形することができるとともに、ゲーム製作者は、変形された地形（曲面状の地形）及び変形された地形上のオブジェクトを予め作成する必要はなく、開発のコスト及び時間を削減することができ、開発効率を向上させることができる。
【０１３６】
（変形例）
以上、本実施形態の画像処理ついて説明したが、上記実施形態は単なる一例であり、例えば以下のような変形が加えられてもよい。
【０１３７】
例えば、上記実施形態では、各地形パーツはｘ軸方向およびｚ軸方向に関して正方形であるとした。すなわち、各地形パーツはｙ軸方向から見た場合に正方形となる形状であり、このような地形パーツを格子状に並べることにより地形が形成された。しかしながら地形パーツの形状は単なる一例であり、各地形パーツをｙ軸方向から見た場合の形状は、所定の形状（例えば、正方形、長方形、ひし形、平行四辺形、三角形、多角形等）であってもよい。すなわち、各地形パーツはｘ軸方向およびｚ軸方向に関して同じ所定の形状を有し、当該同じ所定の形状の地形パーツを複数並べることで地形が構成されてもよい。このように地形が構成される場合であっても上記第１変形処理及び第２変形処理が行われてもよい。
【０１３８】
また、上記実施形態では、第１変形処理において、各地形パーツを仮想空間のｘ軸方向（横方向）及びｚ軸方向（奥行き方向）に変位させ、ｙ軸方向（高さ方向）には変位させないとした。他の実施形態では、各地形パーツを仮想空間の高さ方向にも変位させてもよい。また、他の実施形態では、第１変形処理において、仮想空間の横方向、奥行き方向、及び、高さ方向の少なくとも何れか１つの方向に各地形パーツを変位させてもよい。
【０１３９】
また、第１変形処理において所定の波形を有する関数（式１及び式２）に基づいて地形パーツの頂点を変位させたが、他の任意の関数に基づいて地形パーツの頂点が変位されてもよい。また、地形パーツの頂点は、位置に応じてランダムに変位されてもよい。
【０１４０】
また、上記実施形態では、第１変形処理において、地形オブジェクト（地面オブジェクトおよび崖オブジェクト）を変形させ、地形オブジェクト上の他のオブジェクトについては変形させなかった。他の実施形態では、第１変形処理において、地形オブジェクト上の他のオブジェクト（家オブジェクト４０や木オブジェクト４１、ユーザキャラクタ５０等）も変形させてもよい。
【０１４１】
また、上記実施形態では、仮想カメラＶＣの姿勢はｘ軸回りにのみ変化可能であるとした。すなわち、仮想カメラＶＣの姿勢はピッチ方向にのみ変化可能であるとした。他の実施形態では、仮想カメラＶＣの姿勢はｙ軸回り（ヨー方向）にも変化可能であってもよい。この場合、第２変形処理において、仮想カメラＶＣのＣｚ軸を仮想空間の平面的な基準面（地面）に投影した場合に、当該投影した平面的な基準面上のＣｚ軸が円筒の周方向になるように、地面をドラム状に変形させてもよい。すなわち、頂点の平面的な基準面に沿った奥行き方向の位置に応じて当該頂点に対する座標変換を行い、平面的な基準面（地面）が、仮想カメラの視線方向と垂直な方向を中心軸とする円筒の側面をなすように、地形全体が変形されてもよい。
【０１４２】
また、上記第２変形処理では、平面的な基準面としての地面がドラム状に変形するように第２変形処理が行われた。他の実施形態では、平面的な基準面は地面に限らない。例えば、平面的な基準面は海面であってもよい。また、平面的な基準面は、内部的に仮想空間に設定される面であって実際にゲーム中には表示されない面であってもよい。この場合、平面的な基準面に基づいて、画像として表示される地形が形成されてもよい。第２変形処理では、基準面が円筒の側面をなすように変形されることで、地形全体もドラム状に変形される。
【０１４３】
また、上記実施形態では、第２変形処理において地面（平面的な基準面）をドラム状に変形させた。他の実施形態では、第２変形処理において地面を他の曲面状に変形させてもよい。例えば、第２変形処理において地面を球状（球の一部又は全部）に変形させてもよい。すなわち、地面が球の表面の一部又は全部をなすように各頂点が座標変換されてもよい。また、例えば、地面が図１６とは逆の方向（図１６の上方向）に変形するように、各頂点を変位させてもよい。
【０１４４】
また、上記実施形態では、第１変形処理および第２変形処理において、ＧＰＵ２２の頂点シェーダ機能により各頂点が変位された。他の実施形態では、ＣＰＵ２１により各頂点が変位されてもよい。
【０１４５】
また、上記フローチャートで示した処理は単なる例示に過ぎず、処理の順番や内容は適宜変更されてもよい。
【０１４６】
また、上記ゲームは単なる一例であり、他の任意のゲームにおいて上述した第１変形処理及び／又は第２変形処理が行われてもよい。
【０１４７】
また、上記実施形態では、ゲームシステム１における本体装置２において上述した処理が行われることとしたが、上述した処理は他の任意の情報処理装置（例えば、パーソナルコンピュータ、スマートフォン、タブレット端末）等において実行されてもよい。また、他の実施形態では、複数の装置を含む情報処理システム（例えば端末とサーバとを含むシステム）において上述した処理が行われてもよい。
【０１４８】
以上、本発明について説明したが、上記説明は本発明の例示に過ぎず、種々の改良や変形が加えられてもよい。
【符号の説明】
【０１４９】
１  情報処理システム
２  本体装置
３  左コントローラ
４  右コントローラ
１２  ディスプレイ
２０  プロセッサ
２１  ＣＰＵ
２２  ＧＰＵ
３０、３１、３２  崖オブジェクト
３３  川オブジェクト
３４  地面オブジェクト
４０  家オブジェクト
４１  木オブジェクト
５０  ユーザキャラクタ
【図１】
2020080007.tif 000003
【図２】
2020080007.tif 000004
【図３】
2020080007.tif 000005
【図４Ａ】
2020080007.tif 000006
【図４Ｂ】
2020080007.tif 000007
【図４Ｃ】
2020080007.tif 000008
【図５】
2020080007.tif 000009
【図６】
2020080007.tif 000010
【図７】
2020080007.tif 000011
【図８】
2020080007.tif 000012
【図９】
2020080007.tif 000013
【図１０Ａ】
2020080007.tif 000014
【図１０Ｂ】
2020080007.tif 000015
【図１１】
2020080007.tif 000016
【図１２Ａ】
2020080007.tif 000017
【図１２Ｂ】
2020080007.tif 000018
【図１３】
2020080007.tif 000019
【図１４】
2020080007.tif 000020
【図１５】
2020080007.tif 000021
【図１６】
2020080007.tif 000022
【図１７Ａ】
2020080007.tif 000023
【図１７Ｂ】
2020080007.tif 000024
【図１８Ａ】
2020080007.tif 000025
【図１８Ｂ】
2020080007.tif 000026
【図１９Ａ】
2020080007.tif 000027
【図１９Ｂ】
2020080007.tif 000028
【図２０】
2020080007.tif 000029
【図２１】
2020080007.tif 000030
【図２２】
2020080007.tif 000031