(57)【要約】【課題】ユーザが意図するように仮想空間内でオブジェクトを拡大および／または縮小させることを可能とする情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供する。【解決手段】互いに直交する３つのオブジェクト軸が定義された３次元オブジェクトを仮想空間内に配置し、３つのオブジェクト軸から仮想空間内の３次元オブジェクトの姿勢に基づいた１軸または２軸を拡縮軸として決定する。そして、ユーザ操作入力を拡縮軸に対応付け、ユーザ操作入力に応じた拡縮軸への対応付けに基づいて、３次元オブジェクトを少なくとも拡大または縮小する。【選択図】図２２
2020149584.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間内のオブジェクトを拡大または縮小する、情報処理装置のコンピュータで実行される情報処理プログラムであって、
前記コンピュータを、
互いに直交する３つのオブジェクト軸が定義された３次元オブジェクトを仮想空間内に配置するオブジェクト配置手段と、
前記３つのオブジェクト軸から前記仮想空間内の前記３次元オブジェクトの姿勢に基づいた１軸または２軸を拡縮軸として決定する拡縮軸決定手段と、
ユーザ操作入力を前記拡縮軸に対応付ける操作対応付け手段と、
ユーザ操作入力に応じた前記拡縮軸への対応付けに基づいて、前記３次元オブジェクトを少なくとも拡大または縮小するオブジェクト拡縮手段として機能させる、情報処理プログラム。
【請求項２】
前記拡縮軸決定手段は、前記３つのオブジェクト軸から２軸を前記拡縮軸として決定し、
前記オブジェクト拡縮手段は、前記拡縮軸の２軸の方向をそれぞれ拡大または縮小する方向として、前記対応付けに基づいて前記３次元オブジェクトを拡大または縮小する、請求項１に記載の情報処理プログラム。
【請求項３】
前記操作対応付け手段は、ユーザ操作入力が示すポインティング位置と重複する前記３次元オブジェクトの表面位置に基づいて、前記拡縮軸の２軸の方向それぞれにおいて拡大する正方向および縮小する負方向を対応付ける、請求項２に記載の情報処理プログラム。
【請求項４】
前記３つのオブジェクト軸は、それぞれ前記３次元オブジェクトにおいて固定された基準点を通り、
前記操作対応付け手段は、前記ポインティング位置に対応する前記３次元オブジェクトの表面位置を前記拡縮軸の２軸にそれぞれ垂直に射影したときの交点が前記基準点から離れる場合に当該軸方向に拡大する対応付けを行い、当該交点が前記基準点に近づく場合に当該軸方向に縮小する対応付けを行う、請求項３に記載の情報処理プログラム。
【請求項５】
前記オブジェクト拡縮手段は、前記仮想空間内の仮想カメラと前記ポインティング位置に対応する仮想空間内の位置とを結ぶ照準方向と当該仮想カメラから前記拡縮軸の２軸の一方軸への方向とを含む平面と、前記基準点から当該２軸の他方軸への方向に向かう直線との交点を拡縮交点として設定し、前記ポインティング位置が移動することに応じて移動する当該拡縮交点の移動量に応じて、前記３次元オブジェクトの当該他方軸への拡大量または縮小量を算出する拡縮量算出手段を含む、請求項４に記載の情報処理プログラム。
【請求項６】
前記オブジェクト拡縮手段は、ユーザ操作入力に応じたポインティング位置が第１方向へ移動する操作量に応じて前記３次元オブジェクトが予め定められた上限まで拡大した以降も当該第１方向へ当該ポインティング位置が移動するユーザ操作入力が継続した場合に当該３次元オブジェクトの拡大を停止して当該上限を維持し、当該上限に維持された当該第１方向へ当該ポインティング位置が移動するユーザ操作入力に続いて当該ポインティング位置が当該第１方向と逆方向となる第２方向へ移動するユーザ操作入力に切り替わった場合に当該切替時点から当該ポインティング位置が当該第２方向へ移動する操作量に応じて当該３次元オブジェクトを縮小する、請求項１乃至５の何れか１つに記載の情報処理プログラム。
【請求項７】
前記オブジェクト拡縮手段は、
第３方向へのユーザ操作入力に応じて前記３次元オブジェクトを第１縮小方向へ縮小するとともに、第４方向へのユーザ操作入力に応じて当該３次元オブジェクトを当該第１縮小方向とは逆の第１拡大方向へ拡大し、
前記第３方向へのユーザ操作入力に応じて前記３次元オブジェクトが前記第１縮小方向へ予め定められた下限まで縮小した以降も当該第３方向へのユーザ操作入力が継続した場合、当該下限に到達した以降において当該３次元オブジェクトを当該第１拡大方向へ拡大し、
前記下限に到達後に前記３次元オブジェクトが前記第１拡大方向に拡大した以降に前記第４方向へのユーザ操作入力が行われた場合、当該３次元オブジェクトを前記第１縮小方向に縮小する、請求項１乃至６の何れか１つに記載の情報処理プログラム。
【請求項８】
前記仮想空間は、フィールド面を有し、
前記オブジェクト拡縮手段は、前記３次元オブジェクトが前記フィールド面と重複して拡大する場合、当該重複を維持した状態で当該３次元オブジェクトを拡縮する状態を表示部に表示し、
前記オブジェクト拡縮手段は、前記３次元オブジェクトの拡縮が確定した時点において当該３次元オブジェクトが前記フィールド面と重複した状態である場合、当該重複した状態が解消される位置に当該３次元オブジェクトを移動させて前記表示部に表示する、請求項１乃至７の何れか１つに記載の情報処理プログラム。
【請求項９】
前記オブジェクト配置手段は、前記仮想空間内に複数の３次元オブジェクトを配置し、
前記オブジェクト拡縮手段は、前記３次元オブジェクトが他の３次元オブジェクトと重複して拡大する場合、当該重複を維持した状態で当該３次元オブジェクトを拡縮する状態を表示部に表示し、
前記オブジェクト拡縮手段は、前記３次元オブジェクトの拡縮が確定した時点において当該３次元オブジェクトが他の３次元オブジェクトと重複した状態である場合、当該重複した状態を維持する位置に当該３次元オブジェクトを維持した状態で前記表示部に表示する、請求項１乃至８の何れか１つに記載の情報処理プログラム。
【請求項１０】
前記仮想空間は、固定された互いに直交する３つのワールド座標軸が定義され、
前記拡縮軸決定手段は、前記仮想空間内の仮想カメラに対する前記３次元オブジェクトの位置および姿勢に基づいて、前記３つのワールド座標軸から２つのワールド座標軸を選択し、当該選択された２つのワールド座標軸と前記３つのオブジェクト軸との位置関係を用いて、前記拡縮軸を決定する、請求項１乃至９の何れか１つに記載の情報処理プログラム。
【請求項１１】
前記仮想空間内の仮想カメラの位置および姿勢を基準とする３つのスクリーン座標軸が定義された画面座標系が設定され、
前記拡縮軸決定手段は、前記仮想カメラの姿勢および前記３次元オブジェクトの姿勢に基づいて、前記３つのスクリーン座標軸から２つのスクリーン座標軸を選択し、当該選択された２つのスクリーン座標軸と前記３つのオブジェクト軸との位置関係を用いて、前記拡縮軸を決定する、請求項１乃至９の何れか１つに記載の情報処理プログラム。
【請求項１２】
前記拡縮軸決定手段は、前記３つのオブジェクト軸のうち、前記仮想空間内の仮想カメラの姿勢に基づいたスクリーン平面との差角が最も小さい１軸または２軸を前記拡縮軸として決定する、請求項１乃至９の何れか１つに記載の情報処理プログラム。
【請求項１３】
前記拡縮軸決定手段は、前記仮想空間において、前記３つのオブジェクト軸のうち、前記仮想空間内の仮想カメラの視線方向との差角が最も大きい１軸または２軸を前記拡縮軸として決定する、請求項１乃至９の何れか１つに記載の情報処理プログラム。
【請求項１４】
仮想空間内のオブジェクトを拡大または縮小する情報処理装置であって、
互いに直交する３つのオブジェクト軸が定義された３次元オブジェクトを仮想空間内に配置するオブジェクト配置手段と、
前記３つのオブジェクト軸から前記仮想空間内の前記３次元オブジェクトの姿勢に基づいた１軸または２軸を拡縮軸として決定する拡縮軸決定手段と、
ユーザ操作入力を前記拡縮軸に対応付ける操作対応付け手段と、
ユーザ操作入力に応じた前記拡縮軸への対応付けに基づいて、前記３次元オブジェクトを少なくとも拡大または縮小するオブジェクト拡縮手段とを備える、情報処理装置。
【請求項１５】
仮想空間内のオブジェクトを拡大または縮小する情報処理システムであって、
互いに直交する３つのオブジェクト軸が定義された３次元オブジェクトを仮想空間内に配置するオブジェクト配置手段と、
前記３つのオブジェクト軸から前記仮想空間内の前記３次元オブジェクトの姿勢に基づいた１軸または２軸を拡縮軸として決定する拡縮軸決定手段と、
ユーザ操作入力を前記拡縮軸に対応付ける操作対応付け手段と、
ユーザ操作入力に応じた前記拡縮軸への対応付けに基づいて、前記３次元オブジェクトを少なくとも拡大または縮小するオブジェクト拡縮手段とを備える、情報処理システム。
【請求項１６】
仮想空間内のオブジェクトを拡大または縮小する情報処理方法であって、
互いに直交する３つのオブジェクト軸が定義された３次元オブジェクトを仮想空間内に配置するオブジェクト配置ステップと、
前記３つのオブジェクト軸から前記仮想空間内の前記３次元オブジェクトの姿勢に基づいた１軸または２軸を拡縮軸として決定する拡縮軸決定ステップと、
ユーザ操作入力を前記拡縮軸に対応付ける操作対応付けステップと、
ユーザ操作入力に応じた前記拡縮軸への対応付けに基づいて、前記３次元オブジェクトを少なくとも拡大または縮小するオブジェクト拡縮ステップとを含む、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間内でオブジェクトを拡大および／または縮小させる処理を行う情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関する。
【背景技術】
【０００２】
従来、ユーザの操作に応じて、仮想空間内でオブジェクトを拡大および／または縮小させる情報処理装置がある（例えば、特許文献１参照）。例えば、上記情報処理装置は、３次元オブジェクトである立方体の隅部を指定し、当該隅部から指示矢印を移動させる操作が行われることに応じて、当該３次元オブジェクトの大きさを変更できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−２１４９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１で開示された情報処理装置では、ユーザが意図するように仮想空間内でオブジェクトを拡大および／または縮小させることに関して、改良の余地がある。
【０００５】
それ故に、本発明の目的は、ユーザが意図するように仮想空間内でオブジェクトを拡大および／または縮小させることを可能とする情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。
【０００７】
本発明の情報処理プログラムの一構成例は、仮想空間内のオブジェクトを拡大または縮小する、情報処理装置のコンピュータで実行される。情報処理プログラムは、オブジェクト配置手段、拡縮軸決定手段、操作対応付け手段、およびオブジェクト拡縮手段として、コンピュータを機能させる。オブジェクト配置手段は、互いに直交する３つのオブジェクト軸が定義された３次元オブジェクトを仮想空間内に配置する。拡縮軸決定手段は、３つのオブジェクト軸から仮想空間内の３次元オブジェクトの姿勢に基づいた１軸または２軸を拡縮軸として決定する。操作対応付け手段は、ユーザ操作入力を拡縮軸に対応付ける。オブジェクト拡縮手段は、ユーザ操作入力に応じた拡縮軸への対応付けに基づいて、３次元オブジェクトを少なくとも拡大または縮小する。
【０００８】
上記によれば、仮想空間において、オブジェクトを拡大および／または縮小させる場合、仮想空間内の当該オブジェクトの姿勢に基づいて、当該オブジェクトに定義されている３つのオブジェクト軸から１つまたは２つのオブジェクト軸が拡縮軸として設定されるため、ユーザが意図するように当該オブジェクトを拡大および／または縮小することができる。
【０００９】
また、上記拡縮軸決定手段は、３つのオブジェクト軸から２軸を拡縮軸として決定してもよい。上記オブジェクト拡縮手段は、拡縮軸の２軸の方向をそれぞれ拡大または縮小する方向として、対応付けに基づいて３次元オブジェクトを拡大または縮小してもよい。
【００１０】
上記によれば、ユーザ操作に対応する方向とオブジェクトが拡縮する方向とが一致するため、容易にオブジェクトが拡縮する方向を把握することができる。
【００１１】
また、上記操作対応付け手段は、ユーザ操作入力が示すポインティング位置と重複する３次元オブジェクトの表面位置に基づいて、拡縮軸の２軸の方向それぞれにおいて拡大する正方向および縮小する負方向を対応付けてもよい。
【００１２】
上記によれば、オブジェクトが拡縮する方向がポインティング位置と重複する位置に対応するため、オブジェクトが拡縮する方向をユーザが容易に把握することができる。
【００１３】
また、上記３つのオブジェクト軸は、それぞれ３次元オブジェクトにおいて固定された基準点を通ってもよい。上記操作対応付け手段は、ポインティング位置に対応する３次元オブジェクトの表面位置を拡縮軸の２軸にそれぞれ垂直に射影したときの交点が基準点から離れる場合に当該軸方向に拡大する対応付けを行い、当該交点が基準点に近づく場合に当該軸方向に縮小する対応付けを行ってもよい。
【００１４】
上記によれば、オブジェクトの拡縮方向をユーザの直感に沿わせることができる。
【００１５】
また、上記オブジェクト拡縮手段は、仮想空間内の仮想カメラとポインティング位置に対応する仮想空間内の位置とを結ぶ照準方向と当該仮想カメラから拡縮軸の２軸の一方軸への方向とを含む平面と、基準点から当該２軸の他方軸への方向に向かう直線との交点を拡縮交点として設定し、ポインティング位置が移動することに応じて移動する当該拡縮交点の移動量に応じて、３次元オブジェクトの当該他方軸への拡大量または縮小量を算出する拡縮量算出手段を含んでもよい。
【００１６】
上記によれば、オブジェクトの拡縮量をユーザの直感に沿わせることができる。
【００１７】
また、上記オブジェクト拡縮手段は、ユーザ操作入力に応じたポインティング位置が第１方向へ移動する操作量に応じて３次元オブジェクトが予め定められた上限まで拡大した以降も当該第１方向へ当該ポインティング位置が移動するユーザ操作入力が継続した場合に当該３次元オブジェクトの拡大を停止して当該上限を維持し、当該上限に維持された当該第１方向へ当該ポインティング位置が移動するユーザ操作入力に続いて当該ポインティング位置が当該第１方向と逆方向となる第２方向へ移動するユーザ操作入力に切り替わった場合に当該切替時点から当該ポインティング位置が当該第２方向へ移動する操作量に応じて当該３次元オブジェクトを縮小してもよい。
【００１８】
上記によれば、オブジェクトの縮小処理をユーザの直感に沿わせることができる。
【００１９】
また、上記オブジェクト拡縮手段は、第３方向へのユーザ操作入力に応じて３次元オブジェクトを第１縮小方向へ縮小するとともに、第４方向へのユーザ操作入力に応じて当該３次元オブジェクトを当該第１縮小方向とは逆の第１拡大方向へ拡大し、第３方向へのユーザ操作入力に応じて３次元オブジェクトが第１縮小方向へ予め定められた下限まで縮小した以降も当該第３方向へのユーザ操作入力が継続した場合、当該下限に到達した以降において当該３次元オブジェクトを当該第１拡大方向へ拡大し、下限に到達後に３次元オブジェクトが第１拡大方向に拡大した以降に第４方向へのユーザ操作入力が行われた場合、当該３次元オブジェクトを第１縮小方向に縮小してもよい。
【００２０】
上記によれば、オブジェクトを縮小した後に再拡大させる処理をユーザの直感に沿わせることができる。
【００２１】
また、上記仮想空間は、フィールド面を有してもよい。この場合、上記オブジェクト拡縮手段は、３次元オブジェクトがフィールド面と重複して拡大する場合、当該重複を維持した状態で当該３次元オブジェクトを拡縮する状態を表示部に表示してもよい。上記オブジェクト拡縮手段は、３次元オブジェクトの拡縮が確定した時点において当該３次元オブジェクトがフィールド面と重複した状態である場合、当該重複した状態が解消される位置に当該３次元オブジェクトを移動させて表示部に表示してもよい。
【００２２】
上記によれば、フィールド面によってオブジェクトを拡縮する操作が阻害されることなく、ユーザの意図に沿ってオブジェクトを拡縮することができるとともに、オブジェクトがフィールド面と重複しているような状態で拡縮処理が確定することを防止することができる。
【００２３】
また、上記オブジェクト配置手段は、仮想空間内に複数の３次元オブジェクトを配置してもよい。上記オブジェクト拡縮手段は、３次元オブジェクトが他の３次元オブジェクトと重複して拡大する場合、当該重複を維持した状態で当該３次元オブジェクトを拡縮する状態を表示部に表示してもよい。上記オブジェクト拡縮手段は、３次元オブジェクトの拡縮が確定した時点において当該３次元オブジェクトが他の３次元オブジェクトと重複した状態である場合、当該重複した状態を維持する位置に当該３次元オブジェクトを維持した状態で表示部に表示してもよい。
【００２４】
上記によれば、他のオブジェクトの存在によってオブジェクトを拡縮する操作が阻害されることなく、ユーザの意図に沿ってオブジェクトを拡縮することができるとともに、他のオブジェクトと重複させた状態を維持して拡縮処理を確定することができる。
【００２５】
また、上記仮想空間は、固定された互いに直交する３つのワールド座標軸が定義されてもよい。上記拡縮軸決定手段は、仮想空間内の仮想カメラに対する３次元オブジェクトの位置および姿勢に基づいて、３つのワールド座標軸から２つのワールド座標軸を選択し、当該選択された２つのワールド座標軸と３つのオブジェクト軸との位置関係を用いて、拡縮軸を決定してもよい。
【００２６】
上記によれば、仮想空間に定義されたワールド座標軸を基準としてオブジェクトを拡縮することが可能となる。
【００２７】
また、上記仮想空間内の仮想カメラの位置および姿勢を基準とする３つのスクリーン座標軸が定義された画面座標系が設定されてもよい。上記拡縮軸決定手段は、仮想カメラの姿勢および３次元オブジェクトの姿勢に基づいて、３つのスクリーン座標軸から２つのスクリーン座標軸を選択し、当該選択された２つのスクリーン座標軸と３つのオブジェクト軸との位置関係を用いて、拡縮軸を決定してもよい。
【００２８】
上記によれば、仮想カメラに定義されたスクリーン座標軸を基準としてオブジェクトを拡縮することが可能となる。
【００２９】
また、上記拡縮軸決定手段は、３つのオブジェクト軸のうち、仮想空間内の仮想カメラの姿勢に基づいたスクリーン平面との差角が最も小さい１軸または２軸を拡縮軸として決定してもよい。
【００３０】
上記によれば、スクリーン平面を基準としてオブジェクトを拡縮することが可能となる。
【００３１】
また、上記拡縮軸決定手段は、仮想空間において、３つのオブジェクト軸のうち、仮想空間内の仮想カメラの視線方向との差角が最も大きい１軸または２軸を拡縮軸として決定してもよい。
【００３２】
上記によれば、仮想カメラの視線方向を基準としてオブジェクトを拡縮することが可能となる。
【００３３】
また、本発明は、情報処理装置、情報処理システム、および情報処理方法の形態で実施されてもよい。
【発明の効果】
【００３４】
本発明によれば、仮想空間において、オブジェクトを拡大および／または縮小させる場合、仮想空間内の当該オブジェクトの姿勢に基づいて、当該オブジェクトに定義されている３つのオブジェクト軸から１つまたは２つのオブジェクト軸が拡縮軸として設定されるため、ユーザが意図するように当該オブジェクトを拡大および／または縮小することができる。
【図面の簡単な説明】
【００３５】
【図１】本実施形態におけるゲームシステム１の一例において、本体装置２に左コントローラ３および右コントローラ４を装着した状態を示す図
【図２】本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図
【図３】本体装置２の一例を示す六面図
【図４】左コントローラ３の一例を示す六面図
【図５】右コントローラ４の一例を示す六面図
【図６】本体装置２の内部構成の一例を示すブロック図
【図７】ゲームシステム１の内部構成の一例を示すブロック図
【図８】ユーザが本体装置２と右コントローラ４とを操作してゲームシステム１を利用する様子の一例を示す図
【図９】直方体のオブジェクトＯＢＪに設定されるオブジェクト軸の例を示す図
【図１０】拡縮軸における拡大方向および縮小方向の例を示す図
【図１１】オブジェクトＯＢＪの左上領域につかみ位置Ｈが位置する場合に設定される、拡縮軸Ｄｅ１およびＤｅ２の例を示す図
【図１２】オブジェクトＯＢＪの左下領域につかみ位置Ｈが位置する場合に設定される、拡縮軸Ｄｅ１およびＤｅ２の例を示す図
【図１３】オブジェクトＯＢＪの右上領域につかみ位置Ｈが位置する場合に設定される、拡縮軸Ｄｅ１およびＤｅ２の例を示す図
【図１４】オブジェクトＯＢＪの右下領域につかみ位置Ｈが位置する場合に設定される、拡縮軸Ｄｅ１およびＤｅ２の例を示す図
【図１５】拡縮軸を選択する際に用いられる仮想カメラ位置からオブジェクトＯＢＪへ向かう方向ＣＰの一例を示す図
【図１６】オブジェクトＯＢＪに設定されたつかみ位置Ｈが移動する一例を示す図
【図１７】移動したつかみ位置Ｈに基づいて、拡縮量を算出する一例を示す図
【図１８】円柱のオブジェクトＯＢＪに設定されるオブジェクト軸および拡縮軸Ｄｅ１およびＤｅ２の例を示す図
【図１９】球体のオブジェクトＯＢＪに設定されるオブジェクト軸拡縮軸Ｄｅ１の例を示す図
【図２０】本実施形態において本体装置２のＤＲＡＭ８５に設定されるデータ領域の一例を示す図
【図２１】ゲームシステム１で実行される情報処理の一例を示すフローチャート
【図２２】図２１におけるステップＳ１０７において行われるオブジェクト変形処理の詳細な一例を示すサブルーチン
【発明を実施するための形態】
【００３６】
以下、本実施形態の一例に係る情報処理システムについて説明する。本実施形態における情報処理システムは、一例としてゲームシステム１を用いており、本体装置（情報処理装置；本実施形態ではゲーム装置本体として機能する）２と左コントローラ３および右コントローラ４とを含む。本体装置２は、左コントローラ３および右コントローラ４がそれぞれ着脱可能である。つまり、ゲームシステム１は、左コントローラ３および右コントローラ４をそれぞれ本体装置２に装着して一体化された装置として利用できる。また、ゲームシステム１は、本体装置２と左コントローラ３および右コントローラ４とを別体として利用することもできる（図２参照）。以下では、本実施形態のゲームシステム１のハードウェア構成について説明し、その後に本実施形態のゲームシステム１の制御について説明する。
【００３７】
図１は、本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図である。図１に示すように、左コントローラ３および右コントローラ４は、それぞれ本体装置２に装着されて一体化されている。本体装置２は、ゲームシステム１における各種の処理（例えば、ゲーム処理）を実行する装置である。本体装置２は、ディスプレイ１２を備える。左コントローラ３および右コントローラ４は、ユーザが入力を行うための操作部を備える装置である。
【００３８】
図２は、本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図である。図１および図２に示すように、左コントローラ３および右コントローラ４は、本体装置２に着脱可能である。なお、以下において、左コントローラ３および右コントローラ４の総称として「コントローラ」と記載することがある。
【００３９】
図３は、本体装置２の一例を示す六面図である。図３に示すように、本体装置２は、略板状のハウジング１１を備える。本実施形態において、ハウジング１１の主面（換言すれば、表側の面、すなわち、ディスプレイ１２が設けられる面）は、大略的には矩形形状である。
【００４０】
なお、ハウジング１１の形状および大きさは、任意である。一例として、ハウジング１１は、携帯可能な大きさであってよい。また、本体装置２単体または本体装置２に左コントローラ３および右コントローラ４が装着された一体型装置は、携帯型装置となってもよい。また、本体装置２または一体型装置が手持ち型の装置となってもよい。また、本体装置２または一体型装置が可搬型装置となってもよい。
【００４１】
図３に示すように、本体装置２は、ハウジング１１の主面に設けられるディスプレイ１２を備える。ディスプレイ１２は、本体装置２が生成した画像を表示する。本実施形態においては、ディスプレイ１２は、液晶表示装置（ＬＣＤ）とする。ただし、ディスプレイ１２は任意の種類の表示装置であってよい。
【００４２】
また、本体装置２は、ディスプレイ１２の画面上にタッチパネル１３を備える。本実施形態においては、タッチパネル１３は、マルチタッチ入力が可能な方式（例えば、静電容量方式）のものである。ただし、タッチパネル１３は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式（例えば、抵抗膜方式）のものであってもよい。
【００４３】
本体装置２は、ハウジング１１の内部においてスピーカ（すなわち、図６に示すスピーカ８８）を備えている。図３に示すように、ハウジング１１の主面には、スピーカ孔１１ａおよび１１ｂが形成される。そして、スピーカ８８の出力音は、これらのスピーカ孔１１ａおよび１１ｂからそれぞれ出力される。
【００４４】
また、本体装置２は、本体装置２が左コントローラ３と有線通信を行うための端子である左側端子１７と、本体装置２が右コントローラ４と有線通信を行うための右側端子２１を備える。
【００４５】
図３に示すように、本体装置２は、スロット２３を備える。スロット２３は、ハウジング１１の上側面に設けられる。スロット２３は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム１およびそれと同種の情報処理装置に専用の記憶媒体（例えば、専用メモリカード）である。所定の種類の記憶媒体は、例えば、本体装置２で利用されるデータ（例えば、アプリケーションのセーブデータ等）、および／または、本体装置２で実行されるプログラム（例えば、アプリケーションのプログラム等）を記憶するために用いられる。また、本体装置２は、電源ボタン２８を備える。
【００４６】
本体装置２は、下側端子２７を備える。下側端子２７は、本体装置２がクレードルと通信を行うための端子である。本実施形態において、下側端子２７は、ＵＳＢコネクタ（より具体的には、メス側コネクタ）である。上記一体型装置または本体装置２単体をクレードルに載置した場合、ゲームシステム１は、本体装置２が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置２単体を充電する機能を有する。また、クレードルは、ハブ装置（具体的には、ＵＳＢハブ）の機能を有する。
【００４７】
本体装置２は、照度センサ２９を備える。本実施例においては、照度センサ２９は、ハウジング１１の主面下部に設けられ、ハウジング１１の主面側から入射する光の照度（明るさ）を検出する。なお、照度センサ２９によって検出された光の照度に応じて、ディスプレイ１２を適切な明るさにして画像を表示することができるが、本実施例においては当該検出された照度に基づいて、本体装置２が後述するゴーグル装置に装着されているか否かを判定することが可能となる。
【００４８】
図４は、左コントローラ３の一例を示す六面図である。図４に示すように、左コントローラ３は、ハウジング３１を備える。本実施形態においては、ハウジング３１は、縦長の形状、すなわち、上下方向（すなわち、図１および図４に示すｙ軸方向）に長い形状である。左コントローラ３は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング３１は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ３は、横長となる向きで把持されることも可能である。左コントローラ３が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００４９】
左コントローラ３は、アナログスティック３２を備える。図４に示すように、アナログスティック３２は、ハウジング３１の主面に設けられる。アナログスティック３２は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック３２を傾倒することによって傾倒方向に応じた方向の入力（および、傾倒した角度に応じた大きさの入力）が可能である。なお、左コントローラ３は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック３２を押下する入力が可能である。
【００５０】
左コントローラ３は、各種操作ボタンを備える。左コントローラ３は、ハウジング３１の主面上に４つの操作ボタン３３〜３６（具体的には、右方向ボタン３３、下方向ボタン３４、上方向ボタン３５、および左方向ボタン３６）を備える。さらに、左コントローラ３は、録画ボタン３７および−（マイナス）ボタン４７を備える。左コントローラ３は、ハウジング３１の側面の左上に第１Ｌボタン３８およびＺＬボタン３９を備える。また、左コントローラ３は、ハウジング３１の側面の、本体装置２に装着される際に装着される側の面に第２Ｌボタン４３および第２Ｒボタン４４を備える。これらの操作ボタンは、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションプログラム）に応じた指示を行うために用いられる。
【００５１】
また、左コントローラ３は、左コントローラ３が本体装置２と有線通信を行うための端子４２を備える。
【００５２】
図５は、右コントローラ４の一例を示す六面図である。図５に示すように、右コントローラ４は、ハウジング５１を備える。本実施形態においては、ハウジング５１は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ４は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング５１は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ４は、横長となる向きで把持されることも可能である。右コントローラ４が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００５３】
右コントローラ４は、左コントローラ３と同様、方向入力部としてアナログスティック５２を備える。本実施形態においては、アナログスティック５２は、左コントローラ３のアナログスティック３２と同じ構成である。また、右コントローラ４は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ４は、左コントローラ３と同様、ハウジング５１の主面上に４つの操作ボタン５３〜５６（具体的には、Ａボタン５３、Ｂボタン５４、Ｘボタン５５、およびＹボタン５６）を備える。さらに、右コントローラ４は、＋（プラス）ボタン５７およびホームボタン５８を備える。また、右コントローラ４は、ハウジング５１の側面の右上に第１Ｒボタン６０およびＺＲボタン６１を備える。また、右コントローラ４は、左コントローラ３と同様、第２Ｌボタン６５および第２Ｒボタン６６を備える。
【００５４】
また、右コントローラ４は、右コントローラ４が本体装置２と有線通信を行うための端子６４を備える。
【００５５】
図６は、本体装置２の内部構成の一例を示すブロック図である。本体装置２は、図３に示す構成の他、図６に示す各構成要素８１〜９１、９７、および９８を備える。これらの構成要素８１〜９１、９７、および９８のいくつかは、電子部品として電子回路基板上に実装されてハウジング１１内に収納されてもよい。
【００５６】
本体装置２は、プロセッサ８１を備える。プロセッサ８１は、本体装置２において実行される各種の情報処理を実行する情報処理部であって、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のみから構成されてもよいし、ＣＰＵ機能、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）機能等の複数の機能を含むＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）から構成されてもよい。プロセッサ８１は、記憶部（具体的には、フラッシュメモリ８４等の内部記憶媒体、あるいは、スロット２３に装着される外部記憶媒体等）に記憶される情報処理プログラム（例えば、ゲームプログラム）を実行することによって、各種の情報処理を実行する。
【００５７】
本体装置２は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ８４およびＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８５を備える。フラッシュメモリ８４およびＤＲＡＭ８５は、プロセッサ８１に接続される。フラッシュメモリ８４は、主に、本体装置２に保存される各種のデータ（プログラムであってもよい）を記憶するために用いられるメモリである。ＤＲＡＭ８５は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【００５８】
本体装置２は、スロットインターフェース（以下、「Ｉ／Ｆ」と略記する。）９１を備える。スロットＩ／Ｆ９１は、プロセッサ８１に接続される。スロットＩ／Ｆ９１は、スロット２３に接続され、スロット２３に装着された所定の種類の記憶媒体（例えば、専用メモリカード）に対するデータの読み出しおよび書き込みを、プロセッサ８１の指示に応じて行う。
【００５９】
プロセッサ８１は、フラッシュメモリ８４およびＤＲＡＭ８５、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【００６０】
本体装置２は、ネットワーク通信部８２を備える。ネットワーク通信部８２は、プロセッサ８１に接続される。ネットワーク通信部８２は、ネットワークを介して外部の装置と通信（具体的には、無線通信）を行う。本実施形態においては、ネットワーク通信部８２は、第１の通信態様としてＷｉ−Ｆｉの規格に準拠した方式により、無線ＬＡＮに接続して外部装置と通信を行う。また、ネットワーク通信部８２は、第２の通信態様として所定の通信方式（例えば、独自プロトコルによる通信や、赤外線通信）により、同種の他の本体装置２との間で無線通信を行う。なお、上記第２の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置２との間で無線通信可能であり、複数の本体装置２の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【００６１】
本体装置２は、コントローラ通信部８３を備える。コントローラ通信部８３は、プロセッサ８１に接続される。コントローラ通信部８３は、左コントローラ３および／または右コントローラ４と無線通信を行う。本体装置２と左コントローラ３および右コントローラ４との通信方式は任意であるが、本実施形態においては、コントローラ通信部８３は、左コントローラ３との間および右コントローラ４との間で、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信を行う。
【００６２】
プロセッサ８１は、上述の左側端子１７、右側端子２１、および下側端子２７に接続される。プロセッサ８１は、左コントローラ３と有線通信を行う場合、左側端子１７を介して左コントローラ３へデータを送信するとともに、左側端子１７を介して左コントローラ３から操作データを受信する。また、プロセッサ８１は、右コントローラ４と有線通信を行う場合、右側端子２１を介して右コントローラ４へデータを送信するとともに、右側端子２１を介して右コントローラ４から操作データを受信する。また、プロセッサ８１は、クレードルと通信を行う場合、下側端子２７を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置２は、左コントローラ３および右コントローラ４との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置または本体装置２単体がクレードルに装着された場合、本体装置２は、クレードルを介してデータ（例えば、画像データや音声データ）を据置型モニタ等に出力することができる。
【００６３】
ここで、本体装置２は、複数の左コントローラ３と同時に（換言すれば、並行して）通信を行うことができる。また、本体装置２は、複数の右コントローラ４と同時に（換言すれば、並行して）通信を行うことができる。したがって、複数のユーザは、左コントローラ３および右コントローラ４のセットをそれぞれ用いて、本体装置２に対する入力を同時に行うことができる。一例として、第１ユーザが左コントローラ３および右コントローラ４の第１セットを用いて本体装置２に対して入力を行うと同時に、第２ユーザが左コントローラ３および右コントローラ４の第２セットを用いて本体装置２に対して入力を行うことが可能となる。
【００６４】
本体装置２は、タッチパネル１３の制御を行う回路であるタッチパネルコントローラ８６を備える。タッチパネルコントローラ８６は、タッチパネル１３とプロセッサ８１との間に接続される。タッチパネルコントローラ８６は、タッチパネル１３からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ８１へ出力する。
【００６５】
また、ディスプレイ１２は、プロセッサ８１に接続される。プロセッサ８１は、（例えば、上記の情報処理の実行によって）生成した画像および／または外部から取得した画像をディスプレイ１２に表示する。
【００６６】
本体装置２は、コーデック回路８７およびスピーカ（具体的には、左スピーカおよび右スピーカ）８８を備える。コーデック回路８７は、スピーカ８８および音声入出力端子２５に接続されるとともに、プロセッサ８１に接続される。コーデック回路８７は、スピーカ８８および音声入出力端子２５に対する音声データの入出力を制御する回路である。
【００６７】
また、本体装置２は、加速度センサ８９を備える。本実施形態においては、加速度センサ８９は、所定の３軸（例えば、図１に示すｘｙｚ軸）方向に沿った加速度の大きさを検出する。なお、加速度センサ８９は、１軸方向あるいは２軸方向の加速度を検出するものであってもよい。
【００６８】
また、本体装置２は、角速度センサ９０を備える。本実施形態においては、角速度センサ９０は、所定の３軸（例えば、図１に示すｘｙｚ軸）回りの角速度を検出する。なお、角速度センサ９０は、１軸回りあるいは２軸回りの角速度を検出するものであってもよい。
【００６９】
加速度センサ８９および角速度センサ９０は、プロセッサ８１に接続され、加速度センサ８９および角速度センサ９０の検出結果は、プロセッサ８１へ出力される。プロセッサ８１は、上記の加速度センサ８９および角速度センサ９０の検出結果に基づいて、本体装置２の動きおよび／または姿勢に関する情報を算出することが可能である。
【００７０】
照度センサ２９は、プロセッサ８１に接続され、照度センサ２９の検出結果は、プロセッサ８１へ出力される。プロセッサ８１は、照度センサ２９の検出結果に基づいて、本体装置２周辺の明るさに関する情報を算出することが可能である。一例として、本体装置２が後述するゴーグル装置に装着された場合、本体装置２周辺の明るさが低下するため、プロセッサ８１は、照度センサ２９の検出結果に基づいて、本体装置２が当該ゴーグル装置に装着されているか否かを判定することができる。
【００７１】
本体装置２は、電力制御部９７およびバッテリ９８を備える。電力制御部９７は、バッテリ９８およびプロセッサ８１に接続される。また、図示しないが、電力制御部９７は、本体装置２の各部（具体的には、バッテリ９８の電力の給電を受ける各部、左側端子１７、および右側端子２１）に接続される。電力制御部９７は、プロセッサ８１からの指令に基づいて、バッテリ９８から上記各部への電力供給を制御する。
【００７２】
また、バッテリ９８は、下側端子２７に接続される。外部の充電装置（例えば、クレードル）が下側端子２７に接続され、下側端子２７を介して本体装置２に電力が供給される場合、供給された電力がバッテリ９８に充電される。
【００７３】
図７は、本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図である。なお、本体装置２に関する内部構成の詳細については、図６で示しているため図７では省略している。
【００７４】
左コントローラ３は、本体装置２との間で通信を行う通信制御部１０１を備える。図７に示すように、通信制御部１０１は、端子４２を含む各構成要素に接続される。本実施形態においては、通信制御部１０１は、端子４２を介した有線通信と、端子４２を介さない無線通信との両方で本体装置２と通信を行うことが可能である。通信制御部１０１は、左コントローラ３が本体装置２に対して行う通信方法を制御する。すなわち、左コントローラ３が本体装置２に装着されている場合、通信制御部１０１は、端子４２を介して本体装置２と通信を行う。また、左コントローラ３が本体装置２から外されている場合、通信制御部１０１は、本体装置２（具体的には、コントローラ通信部８３）との間で無線通信を行う。コントローラ通信部８３と通信制御部１０１との間の無線通信は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）の規格に従って行われる。
【００７５】
また、左コントローラ３は、例えばフラッシュメモリ等のメモリ１０２を備える。通信制御部１０１は、例えばマイコン（マイクロプロセッサとも言う）で構成され、メモリ１０２に記憶されるファームウェアを実行することによって各種の処理を実行する。
【００７６】
左コントローラ３は、各ボタン１０３（具体的には、ボタン３３〜３９、４３、４４、および４７）を備える。また、左コントローラ３は、アナログスティック（図７では「スティック」と記載する）３２を備える。各ボタン１０３およびアナログスティック３２は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部１０１へ出力する。
【００７７】
左コントローラ３は、慣性センサを備える。具体的には、左コントローラ３は、加速度センサ１０４を備える。また、左コントローラ３は、角速度センサ１０５を備える。本実施形態においては、加速度センサ１０４は、所定の３軸（例えば、図４に示すｘｙｚ軸）方向に沿った加速度の大きさを検出する。なお、加速度センサ１０４は、１軸方向あるいは２軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ１０５は、所定の３軸（例えば、図４に示すｘｙｚ軸）回りの角速度を検出する。なお、角速度センサ１０５は、１軸回りあるいは２軸回りの角速度を検出するものであってもよい。加速度センサ１０４および角速度センサ１０５は、それぞれ通信制御部１０１に接続される。そして、加速度センサ１０４および角速度センサ１０５の検出結果は、適宜のタイミングで繰り返し通信制御部１０１へ出力される。
【００７８】
通信制御部１０１は、各入力部（具体的には、各ボタン１０３、アナログスティック３２、各センサ１０４および１０５）から、入力に関する情報（具体的には、操作に関する情報、またはセンサによる検出結果）を取得する。通信制御部１０１は、取得した情報（または取得した情報に所定の加工を行った情報）を含む操作データを本体装置２へ送信する。なお、操作データは、所定時間に１回の割合で繰り返し送信される。なお、入力に関する情報が本体装置２へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【００７９】
上記操作データが本体装置２へ送信されることによって、本体装置２は、左コントローラ３に対して行われた入力を得ることができる。すなわち、本体装置２は、各ボタン１０３およびアナログスティック３２に対する操作を、操作データに基づいて判別することができる。また、本体装置２は、左コントローラ３の動きおよび／または姿勢に関する情報を、操作データ（具体的には、加速度センサ１０４および角速度センサ１０５の検出結果）に基づいて算出することができる。
【００８０】
左コントローラ３は、電力供給部１０８を備える。本実施形態において、電力供給部１０８は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ３の各部（具体的には、バッテリの電力の給電を受ける各部）に接続される。
【００８１】
図７に示すように、右コントローラ４は、本体装置２との間で通信を行う通信制御部１１１を備える。また、右コントローラ４は、通信制御部１１１に接続されるメモリ１１２を備える。通信制御部１１１は、端子６４を含む各構成要素に接続される。通信制御部１１１およびメモリ１１２は、左コントローラ３の通信制御部１０１およびメモリ１０２と同様の機能を有する。したがって、通信制御部１１１は、端子６４を介した有線通信と、端子６４を介さない無線通信（具体的には、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信）との両方で本体装置２と通信を行うことが可能であり、右コントローラ４が本体装置２に対して行う通信方法を制御する。
【００８２】
右コントローラ４は、左コントローラ３の各入力部と同様の各入力部を備える。具体的には、各ボタン１１３、アナログスティック５２、および慣性センサ（加速度センサ１１４および角速度センサ１１５）を備える。これらの各入力部については、左コントローラ３の各入力部と同様の機能を有し、同様に動作する。
【００８３】
右コントローラ４は、電力供給部１１８を備える。電力供給部１１８は、左コントローラ３の電力供給部１０８と同様の機能を有し、同様に動作する。
【００８４】
以上に説明したように、本実施形態におけるゲームシステム１については左コントローラ３および右コントローラ４が本体装置２から着脱可能である。以下、左コントローラ３および右コントローラ４を本体装置２から取り外した状態で、本体装置２から画像を出力する利用態様におけるゲームシステムを用いて説明する。左コントローラ３および右コントローラ４を本体装置２から取り外した状態でゲームシステム１を利用してアプリケーション（例えば、仮想空間を生成／編集するエディターやゲームアプリケーション）に対する操作を行う場合の態様としては、１人のユーザが本体装置２と左コントローラ３または右コントローラ４とを用いる態様が考えられる。
【００８５】
図８は、左コントローラ３および右コントローラ４を本体装置２から取り外した状態において、１人のユーザが本体装置２と右コントローラ４とを操作してゲームシステム１を利用する様子の一例を示す図である。図８に示すように、ユーザが本体装置２を左手で把持し、右コントローラ４を右手で把持して、本体装置２に表示された画像を見ながら操作することができる。
【００８６】
例えば、本実施例では、ユーザは、縦長の略板状である右コントローラ４の長手方向（図１に示す上方向（ｙ軸正方向））によって本体装置２のディスプレイ１２を指し示すように、本体装置２に装着された際に当該本体装置２と接する側面（スライダ６２が設けられている側面）が左方に向き、かつ、右コントローラ４の主面（アナログスティック５２等が設けられる面）が上に向くように右コントローラ４を片手（例えば、右手）で把持する。つまり、ユーザの一方の手によって把持されている右コントローラ４は、ｙ軸正方向がユーザの前方を向き、ｚ軸正方向が上を向いた状態となる。
【００８７】
また、本実施例では、ユーザは、横長の略板状である本体装置２の長手方向（図１に示すｘ軸方向）が水平となり、本体装置２の主面（ディスプレイ１２等が設けられている面）がユーザ側となるように、本体装置２を他方の手（例えば、左手）で把持する。ユーザの他方の手によって把持されている本体装置２は、ｚ軸負方向がユーザ側を向き、ｘ軸方向が地面に対して水平となった状態となる。
【００８８】
このように、ユーザの一方の手で把持された右コントローラ４の各操作ボタンやスティックの操作、あるいは右コントローラ４本体を動かす操作に応じて、仮想空間の生成／編集や仮想空間を用いたゲームプレイが行われる。例えば、右コントローラ４の加速度センサ１１４は、上記ｘｙｚ軸方向の加速度をそれぞれ操作入力として検出可能であり、角速度センサ１１５は、上記ｘｙｚ軸方向周りの角速度をそれぞれ操作入力として検出可能であり、当該加速度および／または角速度を用いて右コントローラ４本体の動きや姿勢を算出することが可能となる。本実施例では、一例として、右コントローラ４を用いたユーザ操作に応じて、ディスプレイ１２に表示された仮想空間内に配置されたオブジェクトを変形（拡大／縮小）させることができる。
【００８９】
また、本実施例では、ユーザの他方の手で把持された本体装置２本体を動かす操作に応じて、ディスプレイ１２に表示する表示範囲を変化させることができる。例えば、本体装置２の加速度センサ８９は、上記ｘｙｚ軸方向の加速度をそれぞれ操作入力として検出可能であり、角速度センサ９０は、上記ｘｙｚ軸方向周りの角速度をそれぞれ操作入力として検出可能であるため、当該加速度および／または角速度を用いて本体装置２本体の動きや姿勢を算出することが可能となる。本実施例では、一例として、実空間における本体装置２の姿勢変化に応じて、ディスプレイ１２に画像を表示するために仮想空間内に設定される仮想カメラの姿勢を変化させることができる。具体的には、実空間における本体装置２の姿勢変化と同じ変化を仮想空間内の固定位置に配置された仮想カメラに与えることによって、本体装置２のディスプレイ１２を介して仮想空間内を覗いているかのような仮想空間の画像を生成することができる。なお、他の例として、上記姿勢変化に加えて、実空間における本体装置２の移動（位置変化）に応じて、仮想空間内において上記仮想カメラの位置を移動（位置変化）させてもよい。
【００９０】
図８は、本体装置２および右コントローラ４を操作して仮想空間内のオブジェクトを変形（拡大／縮小）させる処理において表示される画像例を示している。図８に示すように、本処理例では、複数のオブジェクト（図８の例では、第１のオブジェクトＯＢＪ１および第２のオブジェクトＯＢＪ２）が仮想空間内に配置された画像が本体装置２に表示される。そして、ユーザは、右コントローラ４のアナログスティック５２および操作ボタン５３〜５６を操作したり、右コントローラ４本体を動かす操作をしたりすることによって、仮想空間内に配置された複数のオブジェクトの何れかを操作対象として設定したり、当該操作対象として設定されたオブジェクトを仮想空間内で変形（拡大／縮小）させたりすることができる。また、ユーザは、本体装置２の姿勢を変化させることによって、仮想空間に設定されている仮想カメラの姿勢を変化させることができ、ディスプレイ１２に表示される仮想空間の範囲を変化させることができる。
【００９１】
例えば、ディスプレイ１２には、右コントローラ４本体によって指し示されている位置（ポインティング位置）を示す標識Ｔが表示される。したがって、右コントローラ４本体によって指し示されて標識Ｔが表示される位置は、ユーザがディスプレイ１２内の位置を入力しているポインティング位置として機能する。一例として、標識Ｔは、ディスプレイ１２における初期位置（例えば、ディスプレイ１２の中央）に表示された後、右コントローラ４本体の姿勢変化に応じてその表示位置が変化する。そして、ユーザが右コントローラ４を用いて所定のつかみ操作（例えば、操作ボタン（Ａボタン）５３を押下する操作や操作ボタン（Ｒボタン）６０を押下する操作）を行った場合、当該操作時点で標識Ｔによって示されているポインティング位置と重畳して表示されているオブジェクトＯＢＪが操作対象として設定されるとともに、当該操作時点で標識Ｔによって示されているポインティング位置と重畳している位置がオブジェクトＯＢＪを変形させるためのつかみ位置として設定される。つまり、ユーザ操作によるポインティング位置は、上記つかみ操作が行われることによってオブジェクトＯＢＪを変形させるためのつかみ位置として機能する。その後、上記つかみ操作が継続されている期間において上記操作対象を設定して当該操作対象につかみ位置が設定されている状態が継続され、当該つかみ操作が終了することによって上記操作対象を設定している状態が解除され、上記つかみ位置が単にポインティング位置となる。このように、上記つかみ位置は、上記つかみ操作が行われている状態において右コントローラ４本体によってユーザが指し示しているポインティング位置を示すものである。
【００９２】
操作対象として設定されたオブジェクトＯＢＪは、右コントローラ４を用いたその後の操作に応じて、仮想空間内で変形（拡大／縮小）させることができる。例えば、操作対象を設定する操作を継続している状態において、右コントローラ４本体によって指し示す位置を上下左右に移動させた場合、仮想空間において当該操作対象に設定されているつかみ位置が上下左右に移動することによってオブジェクトＯＢＪが変形する。そして、上記つかみ操作が終了した場合、オブジェクトＯＢＪの変形を停止し、当該終了時点における当該操作対象のオブジェクトＯＢＪの形状を確定して、オブジェクトを変形させる処理を解除する。
【００９３】
なお、操作対象として設定されたオブジェクトＯＢＪを変形させる操作方法は、上記操作方法でなくてもかまわない。例えば、右コントローラ４のスティック５２を傾倒させる操作に応じて、操作対象に設定されているオブジェクトＯＢＪを変形させてもかまわない。また、オブジェクトＯＢＪがマウスで操作される場合、マウスを操作して指定する指示位置に応じて、操作対象に設定されているオブジェクトＯＢＪを変形させてもかまわない。また、オブジェクトＯＢＪがタッチパッドで操作される場合、タッチパッドを操作して指定する指示位置に応じて、操作対象に設定されているオブジェクトＯＢＪを変形させてもかまわない。また、オブジェクトＯＢＪが操作ボタン（例えば、方向ボタン）で操作される場合、当該操作ボタンが押下された回数に応じて段階的にオブジェクトＯＢＪを変形させてもかまわない。
【００９４】
また、左コントローラ３および右コントローラ４をそれぞれ本体装置２に装着して一体化された装置の形態で操作することも可能であり、この場合、左コントローラ３および右コントローラ４と本体装置２とが一体化しているため、左コントローラ３および／または右コントローラ４が指し示す位置に基づいた操作は難しくなる。したがって、上記一体化装置を用いて操作対象として設定されたオブジェクトＯＢＪを変形させる操作方法は、左右のスティック３２および／または５２を用いることが考えられる。例えば、上記一体化装置を用いた操作においても、本体装置２に装着された右コントローラ４の操作ボタン（Ａボタン）５３を押下する操作や操作ボタン（Ｒボタン）６０を押下する操作が行われた場合、当該操作時点で標識Ｔと重畳して表示されているオブジェクトＯＢＪを操作対象として設定し、当該オブジェクトＯＢＪに対するつかみ位置を設定する。そして、本体装置２に装着された左コントローラ３のスティック３２および／または右コントローラ３４のスティック５２を傾倒させる操作に応じて、操作対象に設定されているオブジェクトＯＢＪを変形させる。このように一体化装置を用いて操作を行う場合、実空間における一体化装置の姿勢に応じてディスプレイ１２に表示される仮想空間の方向も変化するため、当該仮想空間の方向の変化に応じてスティックの傾倒方向も変化させることが考えられる。例えば、上記一体化装置の下方向（図１に示すｙ軸負方向）が実空間の鉛直方向となった姿勢では、ディスプレイ１２の下方向（図１に示すｙ軸負方向）が仮想空間における鉛直方向となる。したがって、左コントローラ３のスティック３２および／または右コントローラ３４のスティック５２を下方向（図１に示すｙ軸負方向）に傾倒させる操作が行われた場合、ディスプレイ１２に表示された仮想空間における下方向への操作指示にすることが直感的である。一方、上記一体化装置の右方向（図１に示すｘ軸正方向）が実空間の鉛直方向となった姿勢では、ディスプレイ１２の右方向（図１に示すｘ軸正方向）が仮想空間における鉛直方向となる。したがって、左コントローラ３のスティック３２および／または右コントローラ３４のスティック５２を右方向（図１に示すｘ軸正方向）に傾倒させる操作が行われた場合、ディスプレイ１２に表示された仮想空間における下方向への操作指示にすることが直感的である。
【００９５】
本実施例では、仮想空間内でオブジェクトを変形させる場合、オブジェクトに設定されている３軸のオブジェクト軸から１軸または２軸の拡縮軸が選択され、当該拡縮軸それぞれに対して拡大方向／縮小方向が定義される。以下、図９〜図１９を用いて、仮想空間内でオブジェクトを変形させる処理について説明する。なお、図９は、直方体のオブジェクトＯＢＪに設定されるオブジェクト軸の例を示す図である。図１０は、拡縮軸における拡大方向および縮小方向の例を示す図である。図１１は、オブジェクトＯＢＪの左上領域につかみ位置Ｈが位置する場合に設定される、拡縮軸Ｄｅ１およびＤｅ２の例を示す図である。図１２は、オブジェクトＯＢＪの左下領域につかみ位置Ｈが位置する場合に設定される、拡縮軸Ｄｅ１およびＤｅ２の例を示す図である。図１３は、オブジェクトＯＢＪの右上領域につかみ位置Ｈが位置する場合に設定される、拡縮軸Ｄｅ１およびＤｅ２の例を示す図である。図１４は、オブジェクトＯＢＪの右下領域につかみ位置Ｈが位置する場合に設定される、拡縮軸Ｄｅ１およびＤｅ２の例を示す図である。図１５は、拡縮軸を選択する際に用いられる仮想カメラ位置からオブジェクトＯＢＪへ向かう方向ＣＰの一例を示す図である。図１６は、オブジェクトＯＢＪに設定されたつかみ位置Ｈが移動する一例を示す図である。図１７は、移動したつかみ位置Ｈに基づいて、拡縮量を算出する一例を示す図である。図１８は、円柱のオブジェクトＯＢＪに設定されるオブジェクト軸および拡縮軸Ｄｅ１およびＤｅ２の例を示す図である。図１９は、球体のオブジェクトＯＢＪに設定されるオブジェクト軸拡縮軸Ｄｅ１の例を示す図である。
【００９６】
図９において、仮想空間に配置されている複数のオブジェクトには、それぞれ互いに直交する３本のオブジェクト軸が定義されている。例えば、直方体のオブジェクトＯＢＪには、仮想空間のワールド座標系におけるオブジェクトＯＢＪの中心位置（例えば、重心位置）Ｐ（Ａｘ、Ａｙ、Ａｚ）を通り、互いに中心位置Ｐで直交する３本のオブジェクト軸Ｘｏ、Ｙｏ、およびＺｏが定義される。具体的には、オブジェクト軸Ｘｏは、直方体のオブジェクトＯＢＪにおいて対向する１組の面（例えば、左右面とする）の中心とオブジェクトＯＢＪの中心位置Ｐとを通る方向に設定され、当該対向する１組の面の一方面から他方面（例えば、左面から右面）に向かう方向がオブジェクト軸Ｘｏの正方向に設定される。オブジェクト軸Ｙｏは、直方体のオブジェクトＯＢＪにおいて他の対向する１組の面（例えば、上下面とする）の中心とオブジェクトＯＢＪの中心位置Ｐとを通る方向に設定され、当該他の対向する１組の面の一方面から他方面（例えば、下面から上面）に向かう方向がオブジェクト軸Ｙｏの正方向に設定される。そして、オブジェクト軸Ｚｏは、直方体のオブジェクトＯＢＪにおいて他の対向する１組の面（例えば、前後面とする）の中心とオブジェクトＯＢＪの中心位置Ｐとを通る方向に設定され、当該他の対向する１組の面の一方面から他方面（例えば、前面から後面）に向かう方向がオブジェクト軸Ｚｏの正方向に設定される。なお、オブジェクトＯＢＪの中心位置は、オブジェクトＯＢＪにおいて基準となる位置であればよく、重心位置でなくてもよい。例えば、オブジェクトＯＢＪの中心位置は、構造体の中心位置や生成の際の原点等、オブジェクトＯＢＪの他の基準点であってもよい。
【００９７】
後述により明らかとなるが、このように直方体のオブジェクトＯＢＪに定義されている３本のオブジェクト軸Ｘｏ、Ｙｏ、およびＺｏのうち、少なくともオブジェクトＯＢＪの姿勢に基づいて、２軸が当該オブジェクトＯＢＪを変形（拡大／縮小）させるための拡縮軸として選択されて設定される。そして、ユーザがオブジェクトＯＢＪを変形させるためにつかんだ位置（つかみ位置）に基づいて、設定された拡縮軸における拡大方向が設定される。具体的には、つかみ位置を拡縮軸にそれぞれ垂直に射影した射影位置とオブジェクトＯＢＪの基準位置（例えば、３本のオブジェクト軸Ｘｏ、Ｙｏ、およびＺｏが交差するオブジェクトＯＢＪの中心位置Ｐ）との位置関係に基づいて、当該拡縮軸に沿ってオブジェクトＯＢＪの中心位置Ｐから当該射影位置への方向を拡大方向とし、当該拡縮軸に沿って当該射影位置からオブジェクトＯＢＪの中心位置Ｐへの方向を縮小方向とする。なお、ユーザによってポインティングされたディスプレイ１２における位置（ポインティング位置）と重畳して表示されているオブジェクトＯＢＪ上の位置が、当該オブジェクトＯＢＪに対するつかみ位置として設定される。上記ポインティング位置は、コントローラ（左コントローラ３および／または右コントローラ４）によって指し示されている指し示し位置であってもよい。
【００９８】
一例として、図１０に示すように、３本のオブジェクト軸Ｘｏ、Ｙｏ、およびＺｏのうち、オブジェクト軸ＸｏおよびＹｏの２軸が拡縮軸として設定され、中心位置Ｐに対してＸｏ軸の負方向側、かつ、Ｙｏ軸の正方向側となる位置につかみ位置が設定される場合を考える。このような場合、つかみ位置からＸｏ軸に垂直に射影した交点Ｘｈと中心位置Ｐとの位置関係は、交点Ｘｈが中心位置ＰよりＸｏ軸に沿った負方向側となる。したがって、拡縮軸の一方となるＸｏ軸は、中心位置Ｐから交点Ｘｈへの方向、すなわちＸｏ軸の負方向が拡縮軸Ｘｏの拡大方向となり、反対方向となるＸｏ軸の正方向が拡縮軸Ｘｏの縮小方向となる。そして、つかみ位置が拡縮軸Ｘｏの拡大方向に移動した場合にオブジェクトＯＢＪが当該拡大方向に拡大し、つかみ位置が拡縮軸Ｘｏの縮小方向に移動した場合にオブジェクトＯＢＪが当該縮小方向に縮小する。また、つかみ位置からＹｏ軸に垂直に射影した交点Ｙｈと中心位置Ｐとの位置関係は、交点Ｙｈが中心位置ＰよりＹｏ軸に沿った正方向側となる。したがって、拡縮軸の他方となるＹｏ軸は、中心位置Ｐから交点Ｙｈへの方向、すなわちＹｏ軸の正方向が拡縮軸Ｙｏの拡大方向となり、反対方向となるＹｏ軸の負方向が拡縮軸Ｙｏの縮小方向となる。そして、つかみ位置が拡縮軸Ｙｏの拡大方向に移動した場合にオブジェクトＯＢＪが当該拡大方向に拡大し、つかみ位置が拡縮軸Ｙｏの縮小方向に移動した場合にオブジェクトＯＢＪが当該縮小方向に縮小する。
【００９９】
なお、３本のオブジェクト軸Ｘｏ、Ｙｏ、およびＺｏは、１点で交差しないものであってもよいし、オブジェクトＯＢＪの基準点（中心位置Ｐ）で交差しないものであってもよい。また、上記射影位置は、つかみ位置を拡縮軸にそれぞれ厳密に垂直に射影せずに、当該拡縮軸に対して一定の関係で射影した位置でもよい。
【０１００】
上述のような処理に基づけば、例えば、図１１〜図１４に示すように、直方体のオブジェクトＯＢＪにおいて仮想空間に配置されている仮想カメラから見える面（図１１の例では、前面、右面、および上面）が４つの領域に仮想的に分割され、ユーザ操作によるつかみ位置が属する領域に基づいてオブジェクトＯＢＪの拡大方向が設定される。例えば、上記領域は、オブジェクトＯＢＪの中心を基準として等分するように、オブジェクトＯＢＪを２つの平面（第１平面および第２平面とする）で分割することによって得られる４つの部分によって形成される。具体的には、オブジェクトＯＢＪを分割する第１平面は、３本のオブジェクト軸Ｘｏ、Ｙｏ、およびＺｏのうち、拡縮軸として設定された一方軸と、拡縮軸として設定されなかった軸と、オブジェクトＯＢＪの中心位置Ｐとを含む平面として設定される。また、オブジェクトＯＢＪを分割する第２平面は、３本のオブジェクト軸Ｘｏ、Ｙｏ、およびＺｏのうち、拡縮軸として設定された他方軸と、拡縮軸として設定されなかった軸と、オブジェクトＯＢＪの中心位置Ｐとを含む平面として設定される。そして、上記領域は、上記第１平面および上記第２平面によって分割される、左上領域、左下領域、右上領域、および右下領域によって形成される。
【０１０１】
図１１に示すように、直方体のオブジェクトＯＢＪにおけるオブジェクト軸ＸｏおよびＹｏが拡縮軸として設定された状態で、当該オブジェクトＯＢＪにおける上記左上領域内につかみ位置が設定される場合を考える。この場合、設定されている２軸の拡縮軸において、オブジェクトＯＢＪの中心位置Ｐから見て左上領域側となる方向がそれぞれオブジェクトＯＢＪを拡大する方向として設定される。例えば、図１１に示す一例では、オブジェクト軸ＸｏおよびＹｏが拡縮軸として設定されたオブジェクトＯＢＪに対して左上領域につかみ位置が設定された場合、オブジェクト軸Ｙｏにおける正方向が拡大方向となり、オブジェクト軸Ｘｏにおける負方向が拡大方向となる。そして、オブジェクトＯＢＪが拡大する方向をユーザに示すために、オブジェクト軸Ｙｏの正方向に第１拡大方向画像Ｄｅ１と、オブジェクト軸Ｘｏの負方向に第２拡大方向画像Ｄｅ２とが表示される。一例として、第１拡大方向画像Ｄｅ１および第２拡大方向画像Ｄｅ２は、拡縮軸とオブジェクトＯＢＪ面との交点から当該オブジェクトＯＢＪの外側に拡大する方向に向かう矢印形状の画像でそれぞれ生成される。
【０１０２】
例えば、第１拡大方向画像Ｄｅ１および第２拡大方向画像Ｄｅ２が示す方向につかみ位置Ｈを動かす操作を行えば、第１拡大方向画像Ｄｅ１および第２拡大方向画像Ｄｅ２が示す方向にオブジェクトＯＢＪが拡大することが示される。また、第１拡大方向画像Ｄｅ１および第２拡大方向画像Ｄｅ２が示す方向の反対方向につかみ位置Ｈを動かす操作を行えば、第１拡大方向画像Ｄｅ１および第２拡大方向画像Ｄｅ２が示す方向の反対方向にオブジェクトＯＢＪが縮小することが示される。具体的には、第１拡大方向画像Ｄｅ１が示す方向につかみ位置Ｈを動かす操作が行われた場合、オブジェクトＯＢＪの中心位置Ｐを中心として第１拡大方向画像Ｄｅ１が示す方向および第１拡大方向画像Ｄｅ１が示す反対方向の両方向にオブジェクトＯＢＪが拡大する。
【０１０３】
また、図１１から明らかなように、直方体のオブジェクトＯＢＪの左上領域内につかみ位置Ｈが設定される場合、設定されている２つの拡縮軸方向（すなわち、オブジェクト軸ＸｏおよびＹｏ方向）に延びるオブジェクトＯＢＪの前面につかみ位置Ｈが設定される状態と、当該２つの拡縮軸方向の一方に延びない（すなわち、オブジェクト軸Ｙｏ方向に垂直となる）オブジェクトＯＢＪの上面につかみ位置Ｈが設定される状態とが考えられる。このように、方向が異なるオブジェクトＯＢＪの面の何れにつかみ位置Ｈが設定される状態であっても、同じ２つの拡縮軸方向にオブジェクトＯＢＪが拡大または縮小する。つまり、直方体のオブジェクトＯＢＪにおいて、決定された２つの拡縮軸の方向に延びる面に隣接する他の面につかみ位置Ｈが設定された場合であっても、当該２つの拡縮軸の方向にオブジェクトＯＢＪが拡縮されることになる。
【０１０４】
図１２に示すように、直方体のオブジェクトＯＢＪにおけるオブジェクト軸ＸｏおよびＹｏが拡縮軸として設定された状態で、当該オブジェクトＯＢＪにおける上記左下領域内につかみ位置が設定される場合を考える。この場合、設定されている２軸の拡縮軸において、オブジェクトＯＢＪの中心位置Ｐから見て左下領域側となる方向がそれぞれオブジェクトＯＢＪを拡大する方向として設定される。例えば、図１２に示す一例では、オブジェクト軸ＸｏおよびＹｏが拡縮軸として設定されたオブジェクトＯＢＪに対して左下領域につかみ位置が設定された場合、オブジェクト軸Ｙｏにおける負方向が拡大方向となり、オブジェクト軸Ｘｏにおける負方向が拡大方向となる。そして、オブジェクトＯＢＪが拡大する方向をユーザに示すために、オブジェクト軸Ｙｏの負方向に第１拡大方向画像Ｄｅ１と、オブジェクト軸Ｘｏの負方向に第２拡大方向画像Ｄｅ２とが表示される。
【０１０５】
図１３に示すように、直方体のオブジェクトＯＢＪにおけるオブジェクト軸ＸｏおよびＹｏが拡縮軸として設定された状態で、当該オブジェクトＯＢＪにおける上記右上領域内につかみ位置が設定される場合を考える。この場合、設定されている２軸の拡縮軸において、オブジェクトＯＢＪの中心位置Ｐから見て右上領域側となる方向がそれぞれオブジェクトＯＢＪを拡大する方向として設定される。例えば、図１３に示す一例では、オブジェクト軸ＸｏおよびＹｏが拡縮軸として設定されたオブジェクトＯＢＪに対して右上領域につかみ位置が設定された場合、オブジェクト軸Ｙｏにおける正方向が拡大方向となり、オブジェクト軸Ｘｏにおける正方向が拡大方向となる。そして、オブジェクトＯＢＪが拡大する方向をユーザに示すために、オブジェクト軸Ｙｏの正方向に第１拡大方向画像Ｄｅ１と、オブジェクト軸Ｘｏの正方向に第２拡大方向画像Ｄｅ２とが表示される。
【０１０６】
図１４に示すように、直方体のオブジェクトＯＢＪにおけるオブジェクト軸ＸｏおよびＹｏが拡縮軸として設定された状態で、当該オブジェクトＯＢＪにおける上記右下領域内につかみ位置が設定される場合を考える。この場合、設定されている２軸の拡縮軸において、オブジェクトＯＢＪの中心位置Ｐから見て右下領域側となる方向がそれぞれオブジェクトＯＢＪを拡大する方向として設定される。例えば、図１４に示す一例では、オブジェクト軸ＸｏおよびＹｏが拡縮軸として設定されたオブジェクトＯＢＪに対して右下領域につかみ位置が設定された場合、オブジェクト軸Ｙｏにおける負方向が拡大方向となり、オブジェクト軸Ｘｏにおける正方向が拡大方向となる。そして、オブジェクトＯＢＪが拡大する方向をユーザに示すために、オブジェクト軸Ｙｏの負方向に第１拡大方向画像Ｄｅ１と、オブジェクト軸Ｘｏの正方向に第２拡大方向画像Ｄｅ２とが表示される。
【０１０７】
次に、図１５を参照して、３つのオブジェクト軸から２つの拡縮軸を選択する処理例について説明する。上記処理の第１段階として、仮想空間における仮想カメラの位置およびオブジェクトＯＢＪの位置に基づいて、当該仮想空間の水平左右方向をＸ軸、垂直上下方向をＹ軸、水平前後方向をＺ軸とする互いに直交する３つのワールド座標軸から２つのワールド座標軸を選択する。例えば、図１５に示すように、仮想空間における仮想カメラの位置（視点位置）から操作対象のオブジェクトＯＢＪの中心位置Ｐへの方向ＣＰを算出する。そして、方向ＣＰの仮想空間における仰角または附角（ワールド座標系における垂直方向の角度θｖ）が閾値以上（例えば、６０°以上）である場合は、ワールド座標軸であるＸ軸およびＺ軸を選択する。また、方向ＣＰの仮想空間における水平左右角度（ワールド座標系における水平方向の角度θｗ）がＺ軸方向を中心とする所定角度範囲内（例えば、４５°以内）である場合は、ワールド座標軸であるＸ軸およびＹ軸を選択する。そして、方向ＣＰの角度が何れの条件も満たさない場合は、ワールド座標軸であるＹ軸およびＺ軸を選択する。
【０１０８】
上記処理の第２段階として、オブジェクトＯＢＪの３つのオブジェクト軸から選択された２つのワールド座標軸に近い２つのオブジェクト軸を拡縮軸として選択する。例えば、３つのオブジェクト軸をＸｏ、Ｙｏ、およびＺｏ、選択された２つのワールド座標軸をＡおよびＢとする。そして、オブジェクト軸Ｘｏ、Ｙｏ、およびＺｏの中からワールド座標軸Ａの方向に最も近い軸を軸ａとし、当該軸ａを除くオブジェクト軸Ｘｏ、Ｙｏ、およびＺｏの中でワールド座標軸Ｂに最も近い軸を軸ｂとする。そして、オブジェクト軸ａおよびｂをオブジェクトＯＢＪの拡縮軸として設定する。
【０１０９】
なお、上述した処理例では、仮想カメラに対するオブジェクトＯＢＪの位置に基づいて、３つのワールド座標軸から２つワールド座標軸を選択し、仮想空間におけるオブジェクトＯＢＪの姿勢および当該２つワールド座標軸に基づいて３つのオブジェクト軸から選択された２つのオブジェクト軸を当該オブジェクトＯＢＪの拡縮軸として設定している。しかしながら、３つのオブジェクト軸から２つの拡縮軸を設定する方法は、他の方法であってもよい。
【０１１０】
第１の例として、仮想空間内の仮想カメラの位置および姿勢を基準とする３つのスクリーン座標軸（例えば、互いに直交する仮想カメラ視線方向軸、仮想カメラ左右方向軸、および仮想カメラ上下方向軸）が定義された画面座標系を設定する。そして、３つのスクリーン座標軸から、仮想カメラの視線方向軸を除く２つのスクリーン座標軸（すなわち、仮想カメラ左右方向軸および仮想カメラ上下方向軸）を選択し、当該２つのスクリーン座標軸に近い２つのオブジェクト軸を拡縮軸として選択する。例えば、３つのオブジェクト軸をＸｏ、Ｙｏ、およびＺｏ、選択された２つのスクリーン座標軸をＣおよびＤとする。そして、オブジェクト軸Ｘｏ、Ｙｏ、およびＺｏの中からスクリーン座標軸Ｃの方向に最も近い軸を軸ｃとし、当該軸ｃを除くオブジェクト軸Ｘｏ、Ｙｏ、およびＺｏの中でスクリーン座標軸Ｄに最も近い軸を軸ｄとする。そして、オブジェクト軸ｃおよびｄをオブジェクトＯＢＪの拡縮軸として設定する。
【０１１１】
第２の例として、上記画面座標系におけるスクリーン平面（すなわち、仮想カメラ左右方向軸および仮想カメラ上下方向軸の何れとも平行な平面）との差角が最も小さい２つのオブジェクト軸を拡縮軸として選択する。例えば、３つのオブジェクト軸をＸｏ、Ｙｏ、およびＺｏとする。そして、オブジェクト軸Ｘｏ、Ｙｏ、およびＺｏの中からスクリーン平面との差角が最も小さい軸を軸ｅとし、当該軸ｅを除くオブジェクト軸Ｘｏ、Ｙｏ、およびＺｏの中で当該スクリーン平面との差角が最も小さい軸を軸ｆとする。そして、オブジェクト軸ｅおよびｆをオブジェクトＯＢＪの拡縮軸として設定する。
【０１１２】
第３の例として、仮想空間に設けられた仮想カメラの視線方向との差角が最も大きい２つのオブジェクト軸を拡縮軸として選択する。例えば、３つのオブジェクト軸をＸｏ、Ｙｏ、およびＺｏとする。そして、オブジェクト軸Ｘｏ、Ｙｏ、およびＺｏの中から仮想カメラの視線方向との差角が最も大きい軸を軸ｇとし、当該軸ｇを除くオブジェクト軸Ｘｏ、Ｙｏ、およびＺｏの中で当該視線方向との差角が最も大きい軸を軸ｈとする。そして、オブジェクト軸ｇおよびｈをオブジェクトＯＢＪの拡縮軸として設定する。
【０１１３】
次に、図１６および図１７を参照して、つかみ位置Ｈの移動に応じてオブジェクトＯＢＪを拡縮する量を算出する処理例について説明する。例えば、上記処理では、仮想カメラとつかみ位置Ｈとを結ぶ方向および仮想カメラから拡縮軸の２軸の一方軸への方向とを含む平面と、オブジェクトＯＢＪの中心位置Ｐから当該２軸の他方軸への方向との交点を拡縮交点として設定し、仮想空間内でつかみ位置Ｈが移動することに応じて移動する当該拡縮交点の移動量に応じて、オブジェクトＯＢＪにおける当該他方軸への拡大量または縮小量を算出する。なお、上述したように、つかみ位置Ｈは、ユーザによってポインティングされた照準位置となるディスプレイ１２における位置（ポインティング位置）と重畳して表示されているオブジェクトＯＢＪ上の位置であるため、基準位置（仮想カメラ視点位置）からつかみ位置Ｈへの方向（図１７に示す方向ＣＨ）は、仮想空間内の仮想カメラとポインティング位置に対応する仮想空間内の位置とを結ぶ照準方向となる。
【０１１４】
例えば、図１６に示すように、直方体のオブジェクトＯＢＪにおけるオブジェクト軸ＸｏおよびＹｏが拡縮軸として設定された状態で、当該オブジェクトＯＢＪにおける上記右下領域内においてつかみ位置Ｈ１からつかみ位置Ｈ２に移動する場合を考える。ここで、つかみ位置Ｈ１からつかみ位置Ｈ２への移動は、拡縮軸の一方であるオブジェクト軸Ｙｏの負方向、かつ、拡縮軸の他方であるオブジェクト軸Ｘｏの正方向となる位置に移動しているため、オブジェクト軸Ｙｏの負方向へ拡大、かつ、オブジェクト軸Ｘｏの正方向へ拡大する操作となる。このように、本実施例においては、ユーザ操作による拡縮操作方向が２つの拡縮軸の方向に対応付けされ、このような処理がユーザ操作入力を拡縮軸に対応付ける処理を行う操作対応付け手段の一例に相当する。
【０１１５】
図１７は、上述したようなつかみ位置Ｈ１からつかみ位置Ｈ２に移動した場合に、拡縮軸の他方となるオブジェクト軸Ｘｏ方向へ拡大するオブジェクトＯＢＪの拡大量の算出方法を例示している。例えば、オブジェクト軸Ｘｏ方向へ拡大するオブジェクトＯＢＪの拡大量は、基準位置（仮想カメラ視点位置）からつかみ位置Ｈ２への方向（図１７に示す方向ＣＨ）および当該基準位置から拡縮軸の一方（すなわち、オブジェクト軸Ｙｏ）への方向を含む平面（図１７に示すＹ平面）と、オブジェクトＯＢＪの中心位置Ｐから拡縮軸の他方（すなわち、オブジェクト軸Ｘｏ）への方向との交点を拡縮交点として、当該拡縮交点の移動量を用いて算出される。また、オブジェクト軸Ｙｏ方向へ拡大するオブジェクトＯＢＪの拡大量は、基準位置（仮想カメラ視点位置）からつかみ位置Ｈ２への方向および当該基準位置から拡縮軸の他方（すなわち、オブジェクト軸Ｘｏ）への方向を含むＸ平面と、オブジェクトＯＢＪの中心位置Ｐから拡縮軸の一方（すなわち、オブジェクト軸Ｙｏ）への方向との交点を拡縮交点として、当該拡縮交点の移動量を用いて算出される。
【０１１６】
例えば、オブジェクトＯＢＪの拡大量は、前回の処理において設定されたつかみ位置Ｈ１に基づいて算出された拡縮交点と、今回の処理において設定されたつかみ位置Ｈ２に基づいて算出された拡縮交点との差分に応じて算出される。一例として、オブジェクトＯＢＪの拡大量は、オブジェクトＯＢＪの大きさをｓ（ｎ）、中心位置Ｐから上記拡縮交点までの距離をｄ（ｎ）とすると
ｓ（ｎ）＝ｓ（ｎ−１）＋（ｄ（ｎ）−ｄ（ｎ−１））
によって算出される。他の例として、オブジェクトＯＢＪの拡大量は、
ｓ（ｎ）＝ｓ（ｎ−１）＋（ｄ（ｎ）−ｄ（ｎ−１））＊（ｓ（ｎ−１）／ｄ（ｎ−１））
によって算出される。
【０１１７】
なお、オブジェクトＯＢＪの大きさｓ（ｎ）は、上限値を設定してもよいし、下限値を設定してもかまわない。また、他の例として、オブジェクトＯＢＪの拡大量に上限値を設定し、オブジェクトＯＢＪの縮小量に下限値を設定してもかまわない。例えば、オブジェクトＯＢＪの大きさｓ（ｎ）に上限値を設ける場合、当該上限値を越える大きさｓ（ｎ）が算出されたとしても、当該上限値を大きさｓ（ｎ）（すなわち、拡大量＝０）として設定してオブジェクトＯＢＪを拡大する。このようにオブジェクトＯＢＪの大きさｓ（ｎ）の上限値を越えてオブジェクトＯＢＪを拡大させるつかみ位置を移動させる操作が行われている状態から、当該つかみ位置を移動させる方向の逆方向につかみ位置を移動させた場合、オブジェクトＯＢＪを縮小する操作となる。ここで、上記縮小する操作に応じて、オブジェクトＯＢＪの縮小が開始されるタイミングは、上述した方法によって大きさｓ（ｎ）が上限値未満となる時点から縮小が開始されてもよいし、当該縮小する操作が行われた時点、すなわち切替時点から即時に縮小が開始されてもよい。なお、「切替時点から即座に縮小を開始する」とは、厳密に切替時点の直後に縮小を開始する場合だけではなく、切替時点から所定の不感帯（遊び区間）を経て縮小を開始する場合も含まれてもよい。
【０１１８】
また、オブジェクトＯＢＪの大きさｓ（ｎ）に下限値を設ける場合、当該下限値より小さい大きさｓ（ｎ）が算出されたとしても、当該下限値を大きさｓ（ｎ）（すなわち、縮小量＝０）として設定してオブジェクトＯＢＪを縮小してもよい。また、上記下限値より小さい大きさｓ（ｎ）が算出された場合に、当該下限値より小さい大きさｓ（ｎ）が算出された時点でオブジェクトＯＢＪを拡大する操作に切り替えてもかまわない。例えば、上記下限値をオブジェクトＯＢＪの大きさｓ（ｎ）＝０に設定した場合、オブジェクトＯＢＪの中心位置Ｐの位置を越える位置までつかみ位置Ｈを縮小方向に移動させる（例えば、上記４つに分割した領域において、他の領域内までつかみ位置Ｈが移動する）ことによって、当該下限値より小さくなる大きさｓ（ｎ）が算出される。このように、上記下限値より小さくなる大きさｓ（ｎ）が算出された時点において、当該縮小量で縮小する処理を当該縮小量で拡大する処理に反転させることによって、拡大／縮小が反転するような操作が可能となる。
【０１１９】
より具体的には、第１方向へのユーザ操作入力に応じてオブジェクトＯＢＪが第１縮小方向へ縮小するとともに、第２方向へのユーザ操作入力に応じてオブジェクトＯＢＪが当該第１縮小方向とは逆の第１拡大方向へ拡大する状態を考える。この場合、上記第１方向へのユーザ操作入力に応じてオブジェクトＯＢＪが上記第１縮小方向へ上記下限値まで縮小した以降も当該第１方向へのユーザ操作入力が継続すると、当該下限値に到達した以降においてオブジェクトＯＢＪが上記第１拡大方向へ拡大することになる。そして、上記下限値に到達後にオブジェクトＯＢＪが上記第１拡大方向に拡大した以降に上記第２方向へのユーザ操作入力が行われた場合、オブジェクトＯＢＪが上記第１縮小方向に縮小することになる。
【０１２０】
また、オブジェクトＯＢＪを変形させる操作を行っている途中において、つかみ位置Ｈがディスプレイ１２の表示範囲から外れた場合、当該つかみ位置Ｈが表示範囲から外れた時点で拡大量または縮小量を変化させる処理を停止（すなわち、表示範囲からつかみ位置Ｈが外れる直前のサイズを維持）させてもかまわない。この場合、つかみ位置Ｈがディスプレイ１２の表示範囲内に戻った時点のつかみ位置Ｈの位置に基づいて、拡大量または縮小量の算出を再開してもよい。
【０１２１】
また、オブジェクトＯＢＪを変形させる操作によって、当該オブジェクトＯＢＪが他のオブジェクトと重複する（他のオブジェクト内まで進入する）状態となることがある。このとき、当該他のオブジェクトと重複する状態を維持して変形する処理を継続させて変形する処理が終了した後も当該他のオブジェクトと重複する状態を維持してよい。あるいは、オブジェクトＯＢＪと重複する当該他のオブジェクトを、変形途中のオブジェクトＯＢＪの範囲外に移動させてもよい。
【０１２２】
また、オブジェクトＯＢＪを変形させる操作によって、当該オブジェクトＯＢＪが仮想空間に設定されているフィールド面と重複する（フィールド面の下まで進入する）状態となることがある。このとき、上記フィールド面と重複状態を維持して変形する処理を継続させて変形する処理が終了した後に（すなわち、つかみ操作が終了した後）当該フィールド面より上に変形後のオブジェクトＯＢＪを移動させてよい。あるいは、オブジェクトＯＢＪが変形途中でフィールド面と当接した時点で、それ以上のオブジェクトＯＢＪの変形を停止してもかまわない。
【０１２３】
なお、変形後のオブジェクトＯＢＪとフィールド面との重複状態の維持を許容しない場合（すなわち、オブジェクトＯＢＪを変形する処理が終了した後に、変形後のオブジェクトＯＢＪがフィールド面と重複しないように、フィールド面より上に当該オブジェクトＯＢＪが移動される場合）であっても、当該オブジェクトＯＢＪと他のオブジェクトとの重複は許容されるようにしてもよい。言い換えると、オブジェクトＯＢＪの変形処理の終了時にオブジェクトＯＢＪとフィールド面とが重複している場合に、オブジェクトＯＢＪをフィールド面より上に移動する処理を実行した結果、移動後のオブジェクトＯＢＪと他のオブジェクトとが重複したとしても、その重複は維持されてもよい。これにより、フィールド面との重複を避けるようにオブジェクトＯＢＪが移動された後に、さらに他のオブジェクトとの重複を避けるようにオブジェクトＯＢＪが再度移動されることで、最終的なオブジェクトＯＢＪの移動後地点の予測が困難になることを抑制できる。
【０１２４】
ところで、オブジェクトＯＢＪは、変形だけではなく仮想空間内での移動もユーザの操作によって実行可能とすることができるが、このとき、オブジェクトＯＢＪを移動させることによってフィールド面と重複することは禁止されてもよい。すなわち、オブジェクトＯＢＪがフィールド面の下に進入するようにオブジェクトＯＢＪを移動することはできないように設定されてもよい。同様に、オブジェクトＯＢＪが他のオブジェクトと重複するように（他のオブジェクト内まで進入するように）オブジェクトＯＢＪを移動することはできないように設定されてもよい。なお、オブジェクトＯＢＪの変形処理の終了時点でオブジェクトＯＢＪと他のオブジェクトとの重複が維持されている場合は、当該オブジェクトＯＢＪの移動処理にあたって、当該他のオブジェクトとの重複は許容されてもよい。しかしながら、一旦オブジェクトＯＢＪと他のオブジェクトとの重複が解消された後（移動処理中であって重複が解消された後、および／または、移動処理の終了時点で重複が解消された後）には、当該オブジェクトＯＢＪが、当該他のオブジェクトと重複するように移動することはできないように設定されてもよい。なお、上述した説明ではフィールド面を例示しているが、これに限られず、例えば天井面や壁面も同様の設定がされてもよい。あるいは、仮想空間内において、オブジェクトＯＢＪの設置が好ましい特定の空間を画定するための境界であれば、同様の設定がされてもよい。
【０１２５】
また、上記拡縮交点に基づいて、オブジェクトＯＢＪを拡大または縮小する目標サイズを算出することによって、オブジェクトＯＢＪを拡縮してもよい。例えば、オブジェクト軸Ｘｏ方向へ拡大するオブジェクトＯＢＪの目標サイズは、オブジェクトＯＢＪの中心位置Ｐから上記Ｙ平面の拡縮交点までの拡縮軸Ｘｏ上の距離によって算出される。また、オブジェクト軸Ｙｏ方向へ拡大するオブジェクトＯＢＪの目標サイズは、オブジェクトＯＢＪの中心位置Ｐから上記Ｘ平面の拡縮交点までの拡縮軸Ｙｏ上の距離によって算出される。
【０１２６】
また、一例として、オブジェクトＯＢＪを変形させる操作の途中において、オブジェクトＯＢＪの位置、オブジェクトＯＢＪの姿勢、仮想カメラの位置、および仮想カメラの姿勢の少なくとも１つが変化した場合、当該変化後のオブジェクトＯＢＪおよび／または仮想カメラの状態に応じて、オブジェクトＯＢＪの拡縮軸、拡大方向、および中心位置等の何れかを変化させてオブジェクトＯＢＪを拡縮するためのパラメータを算出してもよい。他の例として、オブジェクトＯＢＪを変形させる操作の途中において、オブジェクトＯＢＪの位置、オブジェクトＯＢＪの姿勢、仮想カメラの位置、および仮想カメラの姿勢の少なくとも１つが変化した場合であっても、当該変化前のオブジェクトＯＢＪおよび／または仮想カメラの状態を用いてオブジェクトＯＢＪを拡縮する処理を継続してもよい。
【０１２７】
また、上述した説明では、３つのオブジェクト軸から選ばれた２つの拡縮軸への方向にオブジェクトＯＢＪを変形（拡大／縮小）する例を用いたが、オブジェクトＯＢＪの形状によって変形する態様が異なっていてもかまわない。例えば、オブジェクトＯＢＪが曲面を含む形状を有している場合、直方体形状とは異なる態様で変形させてもかまわない。
【０１２８】
例えば、図１８に示すように、円柱形状のオブジェクトＯＢＪを変形させる場合、円形面の形状を維持したままオブジェクトＯＢＪを拡大または縮小させてもかまわない。例えば、図１８に示すように、オブジェクトＯＢＪにおける円柱形状の円柱軸方向に定義されたオブジェクト軸（図１８に示すオブジェクト軸Ｙｏ）と、当該円柱軸方向に垂直なオブジェクト軸の一方（図１８に示すオブジェクト軸Ｘｏ）が拡縮軸に設定された場合を想定する。このような２つの拡縮軸に対して、円柱形状の円柱軸方向に定義された拡縮軸方向に拡大または縮小する操作が行われた場合、オブジェクトＯＢＪは、円形面（図１８に示す上下面）のサイズおよび形状を維持したまま、当該円柱軸方向に拡大または縮小する。一方、オブジェクトＯＢＪにおける円柱形状の円柱軸方向に垂直なオブジェクト軸の一方の方向に拡大または縮小する操作が行われた場合、オブジェクトＯＢＪは、円形面の形状を維持したまま、当該円形面のサイズが拡大または縮小するように変形する。つまり、オブジェクトＯＢＪにおける円柱形状の円柱軸方向に垂直な一方のオブジェクト軸（例えば、オブジェクト軸Ｘｏ）が拡縮軸に設定されて拡縮操作が行われた場合であっても、当該円柱軸方向に垂直な他方のオブジェクト軸（例えば、オブジェクト軸Ｚｏ）の方向にも連動して拡縮することによって、円形面の形状が楕円形状に変形せずに維持された状態で拡大または縮小することになる。
【０１２９】
また、図１９に示すように、球形状のオブジェクトＯＢＪを変形させる場合、球の形状を維持したまま球のサイズが拡縮するようにオブジェクトＯＢＪを拡大または縮小させてもかまわない。この場合、球形状のオブジェクトＯＢＪをどの方向に拡縮した場合であっても、変形後の結果が同じとなるため、図１９に示すように球形状のオブジェクトＯＢＪに対して１つの拡縮軸（例えば、オブジェクト軸Ｙｏ）が設定されてもよい。このように、球形状のオブジェクトＯＢＪに設定された１つの拡縮軸方向に拡大または縮小する操作が行われた場合、オブジェクトＯＢＪは、球形状を維持したまま、当該球サイズが拡大または縮小するように変形する。つまり、球形状のオブジェクトＯＢＪにおける１つのオブジェクト軸（例えば、オブジェクト軸Ｙｏ）が拡縮軸に設定されて拡縮操作が行われた場合であっても、当該オブジェクト軸とは別の２つのオブジェクト軸（例えば、オブジェクト軸ＸｏおよびＺｏ）の方向にも連動して拡縮することによって、球体が楕円体に変形せずに球形状が維持された状態で拡大または縮小することになる。
【０１３０】
なお、オブジェクトＯＢＪを変形させる拡縮軸を設定する際に用いられるワールド座標軸およびオブジェクト軸は、仮想空間において仮想カメラの姿勢が変化したとしても、仮想空間内において固定して定義される。つまり、オブジェクトＯＢＪを変形させる方向は、仮想カメラの姿勢が変化したとしても変化することがないため、安定した方向にオブジェクトＯＢＪを変形させることができる。
【０１３１】
また、上述した実施例は、立体視可能な画像を表示する場合にも適用することができる。例えば、仮想空間を立体視するための互いに示唆のある左目用画像および右目用画像を、ディスプレイ１２の左側領域および右側領域にそれぞれ表示する。そして、本体装置２が装着された場合に、左目用レンズを介して上記左側領域に表示されている左目用画像のみを見ることが可能であり、右目用レンズを介して上記右側領域に表示されている右目用画像のみを見ることが可能となるゴーグル装置を用いて、ディスプレイ１２に表示された左目用画像および右目用画像をユーザが左右の目で見ることによって、立体視可能な仮想空間画像を表示することができる。このように、立体視可能な仮想空間画像をディスプレイ１２に表示する場合であっても、仮想空間に設定されている一対の左目用仮想カメラおよび右目用仮想カメラの組を基準として、同様にオブジェクトに対する拡縮軸を同様に仮想空間内に定義することによって、操作対象となったオブジェクトを変形させる処理を同様に実現することができる。なお、本体装置２をゴーグル装置に装着して立体視可能な画像を見る場合、本体装置２の姿勢に応じて仮想カメラの姿勢を制御してもよいし、ゴーグル装置の姿勢に応じて仮想カメラの姿勢を制御してもよい。本体装置２に設けられた慣性センサ（加速度センサ８９および／または角速度センサ９０）によって検出されたデータを用いれば、本体装置２の姿勢だけでなくゴーグル装置の姿勢の算出も可能であることは言うまでもない。また、表示画面および慣性センサを有するゴーグル装置を用いる場合、上述した立体視可能な仮想空間画像を当該表示画面に表示してもよく、この場合は、当該ゴーグル装置に設けられた慣性センサの検出に基づいて、仮想カメラの姿勢を制御してもよい。
【０１３２】
次に、図２０〜図２２を参照して、本実施形態においてゲームシステム１で実行される具体的な処理の一例について説明する。図２０は、本実施形態において本体装置２のＤＲＡＭ８５に設定されるデータ領域の一例を示す図である。なお、ＤＲＡＭ８５には、図２０に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。
【０１３３】
ＤＲＡＭ８５のプログラム記憶領域には、ゲームシステム１で実行される各種プログラムＰａが記憶される。本実施形態においては、各種プログラムＰａは、上述した左コントローラ３および／または右コントローラ４との間で無線通信するための通信プログラムや、左コントローラ３および／または右コントローラ４から取得したデータや本体装置２の姿勢に基づいた情報処理を行うためのアプリケーションプログラム（例えば、仮想空間を生成／編集するエディターやゲームプログラム）等が記憶される。なお、各種プログラムＰａは、フラッシュメモリ８４に予め記憶されていてもよいし、ゲームシステム１に着脱可能な記憶媒体（例えば、スロット２３に装着された所定の種類の記憶媒体）から取得されてＤＲＡＭ８５に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてＤＲＡＭ８５に記憶されてもよい。プロセッサ８１は、ＤＲＡＭ８５に記憶された各種プログラムＰａを実行する。
【０１３４】
また、ＤＲＡＭ８５のデータ記憶領域には、ゲームシステム１において実行される通信処理や情報処理等の処理において用いられる各種のデータが記憶される。本実施形態においては、ＤＲＡＭ８５には、操作データＤａ、角速度データＤｂ、加速度データＤｃ、姿勢データＤｄ、拡縮軸データＤｅ、拡大方向データＤｆ、つかみ位置データＤｇ、拡縮量データＤｈ、変形フラグデータＤｉ、オブジェクトデータＤｊ、仮想カメラデータＤｋ、および画像データＤｍ等が記憶される。
【０１３５】
操作データＤａは、左コントローラ３および／または右コントローラ４からそれぞれ適宜取得した操作データである。上述したように、左コントローラ３および／または右コントローラ４からそれぞれ送信される操作データには、各入力部（具体的には、各ボタン、アナログスティック、各センサ）からの入力に関する情報（具体的には、操作に関する情報や各センサによる検出結果）が含まれている。本実施形態では、無線通信によって左コントローラ３および／または右コントローラ４からそれぞれ所定周期で操作データが送信されており、当該受信した操作データを用いて操作データＤａが適宜更新される。なお、操作データＤａの更新周期は、後述するゲームシステム１で実行される処理の周期である１フレーム毎に更新されてもよいし、上記無線通信によって操作データが送信される周期毎に更新されてもよい。
【０１３６】
角速度データＤｂは、本体装置２に生じている角速度を示すデータである。例えば、角速度データＤｂは、本体装置２に生じているｘｙｚ軸周りの角速度を示すデータ等を含んでいる。
【０１３７】
加速度データＤｃは、本体装置２に生じている加速度を示すデータである。例えば、加速度データＤｃは、本体装置２に生じているｘｙｚ軸方向の加速度を示すデータ等を含んでいる。
【０１３８】
姿勢データＤｄは、実空間における本体装置２の姿勢と左コントローラ３および／または右コントローラ４の姿勢とを示すデータである。一例として、姿勢データＤｄは、基準姿勢に基づいた本体装置２の姿勢に関するデータと、基準姿勢に基づいた左コントローラ３および／または右コントローラ４の姿勢に関するデータとである。
【０１３９】
拡縮軸データＤｅは、操作対象として設定されたオブジェクトＯＢＪに設定された拡縮軸を示すデータである。拡大方向データＤｆは、オブジェクトＯＢＪに設定された拡縮軸において、当該オブジェクトＯＢＪが拡大する方向を示すデータである。
【０１４０】
つかみ位置データＤｇは、操作対象として設定されたオブジェクトＯＢＪに対して指定されるつかみ位置Ｈを示すデータである。
【０１４１】
拡縮量データＤｈは、拡縮軸方向にオブジェクトＯＢＪを変形させる際の拡大量または縮小量を示すデータである。
【０１４２】
変形フラグデータＤｉは、オブジェクトＯＢＪを変形させる処理が行われている場合にオンに設定される変形フラグを示すデータである。
【０１４３】
オブジェクトデータＤｊは、仮想空間に配置されているオブジェクトそれぞれの位置、方向、形状、サイズ、およびオブジェクト軸等を示すデータである。
【０１４４】
仮想カメラデータＤｋは、仮想空間における仮想カメラの位置および方向を示すデータである。
【０１４５】
画像データＤｍは、表示画面（例えば、本体装置２のディスプレイ１２）に画像（例えば、オブジェクトの画像、フィールド画像、背景画像等）を表示するためのデータである。
【０１４６】
次に、図２１および図２２を参照して、本実施形態における情報処理の詳細な一例を説明する。図２１は、ゲームシステム１で実行される情報処理の一例を示すフローチャートである。図２２は、図２１におけるステップＳ１０７において行われるオブジェクト変形処理の詳細な一例を示すサブルーチンである。本実施形態においては、図２１および図２２に示す一連の処理は、プロセッサ８１が各種プログラムＰａに含まれる通信プログラムや所定のアプリケーションプログラム（エディターやゲームプログラム）を実行することによって行われる。また、図２１および図２２に示す情報処理が開始されるタイミングは任意である。
【０１４７】
なお、図２１および図２２に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて（または代えて）別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をプロセッサ８１が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、プロセッサ８１以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置２において実行される処理の一部は、本体装置２と通信可能な他の情報処理装置（例えば、本体装置２とネットワークを介して通信可能なサーバ）によって実行されてもよい。すなわち、図２１および図２２に示す各処理は、本体装置２を含む複数の情報処理装置が協働することによって実行されてもよい。
【０１４８】
図２１において、プロセッサ８１は、情報処理における初期設定を行い（ステップＳ１０１）、次のステップに処理を進める。例えば、上記初期設定では、プロセッサ８１は、以下に説明する処理を行うためのパラメータを初期化する。例えば、プロセッサ８１は、仮想空間においてワールド座標軸を定義するとともに、仮想空間における仮想カメラの位置および姿勢（例えば、視線方向を水平方向として視線方向をワールド座標軸におけるＺ軸正方向とする姿勢）を初期設定し、当該初期設定された位置および姿勢を用いて仮想カメラデータＤｋを更新する。また、プロセッサ８１は、ワールド座標系が設定された仮想空間に複数のオブジェクトを配置して仮想空間の初期状態を生成して、オブジェクトそれぞれの位置、方向、形状、サイズ、およびオブジェクト軸等を用いてオブジェクトデータＤｊを更新する。さらに、プロセッサ８１は、実空間における本体装置２と左コントローラ３および／または右コントローラ４との初期姿勢を設定し、姿勢データＤｄを更新する。例えば、プロセッサ８１は、本体装置２のディスプレイ１２の奥行方向が実空間において水平方向となり、本体装置２の下方向（図１に示すｙ軸負方向）が実空間の鉛直方向となる姿勢を、本体装置２の初期姿勢として設定する。また、プロセッサ８１は、左コントローラ３および／または右コントローラ４の長手方向（図１に示すｙ軸正方向）が本体装置２のディスプレイ１２の奥行方向となってディスプレイ１２の中央を指し示している姿勢を、左コントローラ３および／または右コントローラ４の初期姿勢として設定する。なお、オブジェクト配置手段は、互いに直交する３つのオブジェクト軸が定義された３次元オブジェクトを仮想空間内に配置する処理を行うものであり、一例としてステップＳ１０１の処理を行うプロセッサ８１に相当する。
【０１４９】
次に、プロセッサ８１は、左コントローラ３および／または右コントローラ４から操作データを取得して操作データＤａを更新し（ステップＳ１０２）、次のステップに処理を進める。
【０１５０】
次に、プロセッサ８１は、本体装置２に設けられている慣性センサ（加速度センサ８９および／または角速度センサ９０）から慣性データ（加速度データおよび／または角速度データ）を取得して、加速度データＤｃおよび／または角速度データＤｂを更新し（ステップＳ１０３）、次のステップに処理を進める。
【０１５１】
次に、プロセッサ８１は、本体装置２と左コントローラ３および／または右コントローラ４との姿勢を算出し（ステップＳ１０４）、次のステップに処理を進める。例えば、プロセッサ８１は、角速度データＤｂに格納されている角速度データを用いて、本体装置２のｘｙｚ軸周りの角速度を取得する。そして、プロセッサ８１は、姿勢データＤｄが示す本体装置２の姿勢におけるｘｙｚ軸を、取得された角速度に応じてそれぞれ回転させて、当該回転後のｘｙｚ軸の方向を用いて姿勢データＤｄにおける本体装置２の姿勢を示すデータを更新する。また、プロセッサ８１は、操作データＤａに格納されている左コントローラ３および／または右コントローラ４の角速度センサ１０５および／または１１５によって検出された角速度データを用いて、左コントローラ３および／または右コントローラ４のｘｙｚ軸周りの角速度を取得する。そして、プロセッサ８１は、姿勢データＤｄが示す左コントローラ３および／または右コントローラ４の姿勢におけるｘｙｚ軸を、取得された角速度に応じてそれぞれ回転させて、当該回転後のｘｙｚ軸の方向を用いて姿勢データＤｄにおける左コントローラ３および／または右コントローラ４の姿勢を示すデータを更新する。
【０１５２】
次に、プロセッサ８１は、仮想カメラを設定し（ステップＳ１０５）、次のステップに処理を進める。例えば、プロセッサ８１は、上記ステップＳ１０４において算出された実空間における本体装置２の姿勢変化と同じように、仮想空間における仮想カメラの姿勢を変化させ、当該変化後の仮想カメラの姿勢を用いて仮想カメラデータＤｋを更新する。なお、仮想カメラの姿勢変化は、本体装置２のｘｙｚ軸周りに生じている角速度に基づいて、仮想カメラの上下左右前後軸をそれぞれ回転させ算出されてもかまわない。
【０１５３】
次に、プロセッサ８１は、左コントローラ３および／または右コントローラ４によって指し示されている指し示し位置を算出し（ステップＳ１０６）、次のステップに処理を進める。例えば、プロセッサ８１は、姿勢データＤｄが示す本体装置２の姿勢と左コントローラ３および／または右コントローラ４の姿勢とを示すデータに基づいて、左コントローラ３および／または右コントローラ４が指し示しているディスプレイ１２上の位置を、指し示し位置として算出する。一例として、プロセッサ８１は、左コントローラ３および／または右コントローラ４の長手方向（図１に示すｙ軸正方向）と本体装置２のディスプレイ１２と交差する位置を指し示し位置として算出するが、ディスプレイ１２の外側の位置が算出されることもあり得る。
【０１５４】
次に、プロセッサ８１は、オブジェクト変形処理を行い（ステップＳ１０７）、ステップＳ１０８に処理を進める。以下、図２２を参照して、上記ステップＳ１０６において行われるオブジェクト変形処理について説明する。
【０１５５】
図２２において、プロセッサ８１は、つかみ操作が開始されたか否かを判定する（ステップＳ１１１）。例えば、プロセッサ８１は、操作データＤａを参照して、仮想空間に配置されている複数のオブジェクトの何れかと重畳する位置に上記ステップＳ１０６において算出されている指し示し位置が配置された状態で、つかみ開始位置を設定する操作（例えば、右コントローラ４の操作ボタン（Ａボタン）５３の押下を開始する操作や操作ボタン（Ｒボタン）６０の押下を開始する操作）が行われている場合、上記ステップＳ１１１において肯定判定する。そして、プロセッサ８１は、つかみ操作が開始された場合、ステップＳ１１２に処理を進める。一方、プロセッサ８１は、つかみ操作が開始されていない場合や既につかみ位置が設定されている場合、ステップＳ１１６に処理を進める。
【０１５６】
ステップＳ１１２において、プロセッサ８１は、つかみ位置を設定する処理を行い、次のステップに処理を進める。例えば、プロセッサ８１は、後述するステップＳ１０８における画像生成表示制御処理においてディスプレイ１２に表示される仮想空間画像に基づいて、上記指し示し位置と重畳して表示されているオブジェクトＯＢＪ上の位置を当該オブジェクトＯＢＪに対するつかみ位置として設定し、当該つかみ位置を用いてつかみ位置データＤｇを更新する。
【０１５７】
次に、プロセッサ８１は、つかみ位置が設定されているオブジェクトＯＢＪのオブジェクト軸から拡縮軸を選択して設定し（ステップＳ１１３）、次のステップに処理を進める。なお、プロセッサ８１は、オブジェクトデータＤｊを参照して、つかみ位置が設定されているオブジェクトＯＢＪの３つのオブジェクト軸を取得し、選択された拡縮軸を用いて拡縮軸データＤｅを更新するが、拡縮軸を選択する方法については上述した方法と同様であるため、詳細な説明を省略する。なお、拡縮軸決定手段は、３つのオブジェクト軸から仮想空間内の３次元オブジェクトの姿勢に基づいた１軸または２軸を拡縮軸として決定する処理を行うものであり、一例としてステップＳ１１３の処理を行うプロセッサ８１に相当する。
【０１５８】
次に、プロセッサ８１は、拡大方向を初期設定し（ステップＳ１１４）、次のステップに処理を進める。例えば、プロセッサ８１は、つかみ位置データＤｇが示すつかみ位置に基づいて、拡縮軸データＤｅが示す拡縮軸それぞれに対する拡大方向を初期設定して拡大方向データＤｆを更新するが、拡大方向を設定する方法については上述した方法と同様であるため、詳細な説明を省略する。なお、操作対応付け手段は、ユーザ操作入力を拡縮軸に対応付ける処理を行うものであり、一例としてステップＳ１１４の処理を行うプロセッサ８１に相当する。
【０１５９】
次に、プロセッサ８１は、変形フラグをオンに設定し（ステップＳ１１５）、ステップＳ１１６に処理を進める。例えば、プロセッサ８１は、変形フラグをオンに設定して、変形フラグデータＤｉを更新する。
【０１６０】
ステップＳ１１６において、プロセッサ８１は、変形フラグデータＤｉを参照して、変形フラグがオンに設定されているか否かを判定する。そして、プロセッサ８１は、変形フラグがオンに設定されている場合、ステップＳ１１７に処理を進める。一方、プロセッサ８１は、変形フラグがオフに設定されている場合、当該サブルーチンによる処理を終了する。
【０１６１】
ステップＳ１１７において、プロセッサ８１は、つかみ位置を算出し、次のステップに処理を進める。例えば、プロセッサ８１は、上記ステップＳ１０６において算出されている指し示し位置と重畳する仮想空間内の位置をつかみ位置として算出し、当該つかみ位置を示すデータをつかみ位置データＤｇに追加する。
【０１６２】
次に、プロセッサ８１は、つかみ位置に応じて、オブジェクトＯＢＪを拡縮させる拡縮量（拡大量または縮小量）を算出し（ステップＳ１１８）、次のステップに処理を進める。例えば、プロセッサ８１は、つかみ位置データＤｇが示す前回の処理で算出されたつかみ位置と今回の処理で算出されたつかみ位置を用いて、つかみ位置の移動量および移動方向を算出し、つかみ位置の移動量、つかみ位置の移動方向、仮想カメラデータＤｋが示す仮想カメラの視点位置、オブジェクトデータＤｊが示すつかみ位置が設定されたオブジェクトＯＢＪの中心位置、拡縮軸データＤｅが示す拡縮軸、および拡大方向データＤｆが示す拡縮軸毎の拡大方向を用いて、拡縮軸それぞれに対する拡大量または縮小量を算出して拡縮量データＤｈを更新する。なお、拡縮軸それぞれに対する拡縮量を算出する方法については上述した方法と同様であるため、詳細な説明を省略する。
【０１６３】
次に、プロセッサ８１は、上記ステップＳ１１８において算出された縮小量による縮小によって、オブジェクトＯＢＪのサイズｓ（ｎ）が予め定められた下限値以下となるか否かを判定する（ステップＳ１１９）。そして、プロセッサ８１は、オブジェクトＯＢＪのサイズｓ（ｎ）が予め定められた下限値以下となる場合、ステップＳ１２０に処理を進める。一方、プロセッサ８１は、オブジェクトＯＢＪのサイズｓ（ｎ）が予め定められた下限値以下とならない場合、ステップＳ１２１に処理を進める。
【０１６４】
ステップＳ１２０において、プロセッサ８１は、オブジェクトＯＢＪのサイズｓ（ｎ）が下限値以下となった拡大軸の方向に設定されている拡大方向を当該拡大軸において反転させ、ステップＳ１２１に処理を進める。例えば、プロセッサ８１は、拡大方向データＤｆを参照して、拡縮軸毎にそれぞれ設定されている拡大方向のうち、オブジェクトＯＢＪのサイズｓ（ｎ）が下限値以下となった拡大軸に設定されている拡大軸の拡大方向を、当該拡大軸の反対方向に設定して拡大方向データＤｆを更新する。
【０１６５】
ステップＳ１２１において、プロセッサ８１は、上記ステップＳ１１８において算出された拡大量による拡大によって、オブジェクトＯＢＪのサイズｓ（ｎ）が予め定められた上限値以上となるか否かを判定する。そして、プロセッサ８１は、オブジェクトＯＢＪのサイズｓ（ｎ）が予め定められた上限値以上となる場合、ステップＳ１２２に処理を進める。一方、プロセッサ８１は、オブジェクトＯＢＪのサイズｓ（ｎ）が予め定められた上限値以上とならない場合、ステップＳ１２３に処理を進める。
【０１６６】
ステップＳ１２２において、プロセッサ８１は、上限値以上となったオブジェクトＯＢＪを拡大させるサイズｓ（ｎ）として当該上限値を設定（すなわち、拡大量を０に設定）して、ステップＳ１２３に処理を進める。例えば、プロセッサ８１は、オブジェクトＯＢＪのサイズｓ（ｎ）が上記上限値となるように各パラメータを更新する。一例として、プロセッサ８１は、拡縮量データＤｈが示す拡縮量のうち、オブジェクトＯＢＪのサイズｓ（ｎ）が上限値以上となった拡大量を０に設定して当該拡大量を更新する。
【０１６７】
ステップＳ１２３において、プロセッサ８１は、設定されている拡縮量に基づいて、つかみ位置が設定されているオブジェクトＯＢＪを変形させる処理を行い、次のステップに処理を進める。例えば、プロセッサ８１は、拡縮量データＤｈが示す拡縮軸それぞれの拡縮量および操作対象のオブジェクトＯＢＪの変形態様に基づいて、オブジェクトＯＢＪを変形（拡大／縮小）させ、当該変形後のオブジェクトＯＢＪの形状に基づいて、オブジェクトデータＤｊを更新する。また、プロセッサ８１は、オブジェクトＯＢＪの変形に応じて当該オブジェクトＯＢＪのオブジェクト軸の位置が変化する場合、当該オブジェクト軸の変化に応じて、拡縮軸データＤｅ、拡大方向データＤｆ、およびオブジェクトデータＤｊを更新する。なお、オブジェクトＯＢＪを変形させる方法については、上述した方法と同様であるため、これ以上の詳細な説明を省略する。なお、オブジェクト拡縮手段は、ユーザ操作入力に応じた拡縮軸への対応付けに基づいて、３次元オブジェクトを少なくとも拡大または縮小する処理を行うものであり、一例としてステップＳ１１８−Ｓ１２３の処理を行うプロセッサ８１に相当する。
【０１６８】
次に、プロセッサ８１は、つかみ操作を終了する操作が行われているか否かを判定する（ステップＳ１２４）。例えば、プロセッサ８１は、操作データＤａを参照して、つかみ操作を終了する操作（例えば、右コントローラ４の操作ボタン（Ａボタン）５３の押下を終了させる操作（リリース）や操作ボタン（Ｒボタン）６０の押下を終了させる操作（リリース）、あるいは右コントローラ４の他のボタン（例えば、Ｂボタン）が押下されることによるキャンセル操作）が行われている場合、上記ステップＳ１２４において肯定判定する。そして、プロセッサ８１は、つかみ操作を終了する操作が行われている場合、ステップＳ１２５に処理を進める。一方、プロセッサ８１は、つかみ操作を終了する操作が行われていない場合、当該サブルーチンによる処理を終了する。
【０１６９】
ステップＳ１２５において、プロセッサ８１は、つかみ位置を解除する処理を行い、次のステップに処理を進める。例えば、プロセッサ８１は、オブジェクトＯＢＪを変形させるための各パラメータ（拡縮軸データＤｅ、拡大方向データＤｆ、つかみ位置データＤｇ、拡縮量データＤｈ）を初期化して更新する処理を行う。
【０１７０】
次に、プロセッサ８１は、変形フラグをオフに設定し、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、変形フラグをオフに設定して、変形フラグデータＤｉを更新する。
【０１７１】
図２１に戻り、上記ステップＳ１０７のオブジェクト変形処理の後、プロセッサ８１は、画像生成表示制御処理を行い（ステップＳ１０８）、次のステップに処理を進める。例えば、プロセッサ８１は、オブジェクトデータＤｊに基づいて、仮想空間に複数のオブジェクトを配置して、仮想空間を生成する。また、プロセッサ８１は、変形フラグデータＤｉが示す変形フラグがオンに設定されている場合（オブジェクトを変形させる処理が行われている場合）、拡縮軸データＤｅおよび拡大方向データＤｆを参照して、操作対象のオブジェクトＯＢＪに第１拡大方向画像Ｄｅ１および／または第２拡大方向画像Ｄｅ２を付与して表示する。また、プロセッサ８１は、変形フラグデータＤｉが示す変形フラグがオンに設定されている場合、つかみ位置データＤｇが示す位置につかみ位置標識Ｈを配置する。また、プロセッサ８１は、変形フラグデータＤｉが示す変形フラグがオフに設定されている場合（オブジェクトを変形させる処理が行われていない場合）、上記ステップＳ１０６において算出されている指し示し位置に標識Ｔを配置する。そして、プロセッサ８１は、仮想カメラデータＤｋに基づいて、仮想空間に仮想カメラを配置し、当該仮想カメラから見た仮想空間画像を生成して、ディスプレイ１２に表示する。なお、つかみ位置標識Ｈおよび標識Ｔは、複数のオブジェクト等が配置されている仮想空間を仮想カメラから見た仮想空間画像に重畳して合成されてもよい。
【０１７２】
次に、プロセッサ８１は、処理を終了するか否かを判定する（ステップＳ１０９）。上記ステップＳ１０９において処理を終了する条件としては、例えば、処理が終了される条件が満たされたことや、ユーザが処理を終了する操作を行ったこと等がある。プロセッサ８１は、処理を終了しない場合に上記ステップＳ１０２に戻って処理を繰り返し、処理を終了する場合に当該フローチャートによる処理を終了する。以降、ステップＳ１０２〜ステップＳ１０９の一連の処理は、ステップＳ１０９で処理を終了すると判定されるまで繰り返し実行される。
【０１７３】
このように、本実施例においては、仮想空間において、オブジェクトを拡大および／または縮小させる場合、仮想空間内の当該オブジェクトの姿勢に基づいて、当該オブジェクトに定義されている３つのオブジェクト軸から１つまたは２つのオブジェクト軸が拡縮軸として設定されるため、ユーザが意図するように当該オブジェクトを拡大および／または縮小することができる。
【０１７４】
なお、上述した実施例において、本体装置２、左コントローラ３、および右コントローラ４の姿勢を検出する方法については、単なる一例であって、他の方法や他のデータを用いて本体装置２、左コントローラ３、および右コントローラ４の姿勢を検出してもよい。また、オブジェクトを移動させる操作を行うコントローラは、左コントローラ３または右コントローラ４だけでなく、他のコントローラでもよい。
【０１７５】
また、ゲームシステム１は、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器（ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話、パーソナルコンピュータ、カメラ、タブレット等）等であってもよい。この場合、オブジェクトを移動する操作を行うための入力装置は、左コントローラ３や右コントローラ４でなくてもよく、別のコントローラ、マウス、タッチパッド、タッチパネル、トラックボール、キーボード、十字キー、スライドパッド等であってもよい。
【０１７６】
また、上述した説明では情報処理をゲームシステム１でそれぞれ行う例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲームシステム１がさらに他の装置（例えば、別のサーバ、他の画像表示装置、他のゲーム装置、他の携帯端末）と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理は、少なくとも１つの情報処理装置により構成される情報処理システムに含まれる１つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、ゲームシステム１のプロセッサ８１が所定のプログラムを実行することによって情報処理を行うことが可能であるが、ゲームシステム１が備える専用回路によって上記処理の一部または全部が行われてもよい。
【０１７７】
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置（据置型のゲーム装置）と携帯型の情報処理装置（携帯型のゲーム装置）との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
【０１７８】
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
【０１７９】
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じてゲームシステム１に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【０１８０】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書（定義を含めて）が優先する。
【産業上の利用可能性】
【０１８１】
以上のように、本発明は、ユーザが意図するように仮想空間内でオブジェクトを拡大および／または縮小等させることを可能とする情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法等として利用することができる。
【符号の説明】
【０１８２】
１…情報処理システム
２…本体装置
３…左コントローラ
４…右コントローラ
１１…ハウジング
１２…ディスプレイ
１７…左側端子
２１…右側端子
２７…下側端子
２９…照度センサ
３２、５２…アナログスティック
４２、６４…端子
８１…プロセッサ
８２…ネットワーク通信部
８３…コントローラ通信部
８５…ＤＲＡＭ
１０１、１１１…通信制御部
８９、１０４、１１４…加速度センサ
９０、１０５、１１５…角速度センサ
【図１】
2020149584.tif 000003
【図２】
2020149584.tif 000004
【図３】
2020149584.tif 000005
【図４】
2020149584.tif 000006
【図５】
2020149584.tif 000007
【図６】
2020149584.tif 000008
【図７】
2020149584.tif 000009
【図８】
2020149584.tif 000010
【図９】
2020149584.tif 000011
【図１０】
2020149584.tif 000012
【図１１】
2020149584.tif 000013
【図１２】
2020149584.tif 000014
【図１３】
2020149584.tif 000015
【図１４】
2020149584.tif 000016
【図１５】
2020149584.tif 000017
【図１６】
2020149584.tif 000018
【図１７】
2020149584.tif 000019
【図１８】
2020149584.tif 000020
【図１９】
2020149584.tif 000021
【図２０】
2020149584.tif 000022
【図２１】
2020149584.tif 000023
【図２２】
2020149584.tif 000024