(57)【特許請求の範囲】
【請求項１】
ポインティングデバイスによる入力を受け付け可能な情報処理装置のコンピュータに実行させる情報処理プログラムであって、
仮想３次元空間に３次元オブジェクトを配置するオブジェクト配置手段と、
仮想カメラで前記仮想３次元空間を撮影した３次元画像を画面に表示する３次元画像表示手段と、
前記３次元オブジェクトにおける所定の２点に基づいて第１の直線を算出する第１直線算出手段と、
前記第１直線と直交する第２直線を算出する第２直線算出手段と、
前記ポインティングデバイスによる入力に基づいて前記第１直線および第２直線のいずれか一方を回転軸として選択する回転軸選択手段と、
前記選択された回転軸を中心として前記３次元オブジェクトを回転させる第１のオブジェクト回転手段として前記コンピュータを機能させる、情報処理プログラム。
【請求項２】
前記第２直線算出手段は、
前記第１直線を所定の平面に射影することによって得られる直線である第３直線を算出する第３直線算出手段と、
前記所定の平面上において前記第３直線に直交する直線である第４直線を算出する第４直線算出手段とを含み、
前記所定の平面から前記仮想３次元空間内の前記３次元オブジェクトに前記第４直線を平行移動することによって得られる直線を前記第２直線として算出する、請求項１に記載の情報処理プログラム。
【請求項３】
前記情報処理プログラムは、前記ポインティングデバイスによる操作に基づいて、前記所定の平面上における当該操作にかかるベクトルを算出する操作ベクトル算出手段として更に前記コンピュータを機能させ、
前記回転軸選択手段は、前記操作ベクトル算出手段が算出したベクトルを前記第３直線および第４直線の少なくとも一方に射影し、当該射影した直線上における当該ベクトルの長さに基づいて、前記第１直線および第２直線のうちの一方を選択する、請求項２に記載の情報処理プログラム。
【請求項４】
前記回転軸選択手段は、前記操作ベクトル算出手段が算出したベクトルを前記第３直線および第４直線の双方に射影し、当該射影したそれぞれの直線上における当該ベクトルの長さが短いほうの直線に基づいて、前記第１直線および第２直線のうちの一方を選択する、請求項３に記載の情報処理プログラム。
【請求項５】
前記回転軸選択手段は、前記ベクトルの長さが短いほうの直線が前記第３直線である場合には、前記第１直線を選択し、前記ベクトルの長さが短いほうの直線が前記第４直線であるときには、前記第２直線を選択する、請求項４に記載の情報処理プログラム。
【請求項６】
前記情報処理プログラムは、
前記ポインティングデバイスによる操作に基づいて、所定の平面上における当該操作にかかるベクトルを算出する操作ベクトル算出手段と、
前記第１直線を所定の平面上に射影した直線の長さが所定値未満であるか否かを判定する長さ判定手段と、
前記操作ベクトル算出手段が算出したベクトルの方向と直交する直線である第５直線を算出する第５直線算出手段として前記コンピュータを更に機能させ、
前記回転軸選択手段は、前記長さ判定手段によって前記射影した直線の長さが所定値未満であると判定されたときは、前記第５直線を前記仮想３次元空間内の前記３次元オブジ
ェクトに平行移動することによって得られる直線を前記第２直線として算出し、当該第２直線を回転軸として選択する、請求項１に記載の情報処理プログラム。
【請求項７】
前記所定の平面は、ディスプレイ面または当該ディスプレイ面に平行な面である、請求項１ないし請求項６のいずれかに記載の情報処理プログラム。
【請求項８】
前記ポインティングデバイスは、タッチパネルである、請求項１ないし請求項７のいずれかに記載の情報処理プログラム。
【請求項９】
前記情報処理プログラムは、前記ポインティングデバイスによる操作に応じて、前記仮想３次元空間のワールド座標系における所定の１軸を中心として前記３次元オブジェクトを回転させる第２のオブジェクト回転手段として前記コンピュータを更に機能させる、請求項１ないし請求項８のいずれかに記載の情報処理プログラム。
【請求項１０】
前記第１のオブジェクト回転手段は、前記ポインティングデバイスによる操作に基づいて回転量を算出し、当該回転量に従って前記３次元オブジェクトを回転させる、請求項１ないし請求項９のいずれかに記載の情報処理プログラム。
【請求項１１】
ポインティングデバイスによる入力を受け付け可能な情報処理システムであって、
仮想３次元空間に３次元オブジェクトを配置するオブジェクト配置手段と、
仮想カメラで前記仮想３次元空間を撮影した３次元画像を画面に表示する３次元画像表示手段と、
前記３次元オブジェクトにおける所定の２点に基づいて第１の直線を算出する第１直線算出手段と、
前記第１直線と直交する第２直線を算出する第２直線算出手段と、
前記ポインティングデバイスによる入力に基づいて前記第１直線および第２直線のいずれか一方と回転軸として選択する回転軸選択手段と、
前記選択された回転軸を中心として前記３次元オブジェクトを回転させる第１のオブジェクト回転手段とを備える、情報処理システム。
【請求項１２】
ポインティングデバイスによる入力を受け付け可能な情報処理装置のコンピュータを制御するための情報処理方法であって、
仮想３次元空間に３次元オブジェクトを配置するオブジェクト配置ステップと、
仮想カメラで前記仮想３次元空間を撮影した３次元画像を画面に表示する３次元画像表示ステップと、
前記３次元オブジェクトにおける所定の２点に基づいて第１の直線を算出する第１直線算出ステップと、
前記第１直線と直交する第２直線を算出する第２直線算出ステップと、
前記ポインティングデバイスによる入力に基づいて前記第１直線および第２直線のいずれか一方と回転軸として選択する回転軸選択ステップと、
前記選択された回転軸を中心として前記３次元オブジェクトを回転させる第１のオブジェクト回転ステップとを前記コンピュータに実行させる、情報処理方法。
【請求項１３】
ポインティングデバイスによる入力を受け付け可能な情報処理装置であって、
仮想３次元空間に３次元オブジェクトを配置するオブジェクト配置手段と、
仮想カメラで前記仮想３次元空間を撮影した３次元画像を画面に表示する３次元画像表示手段と、
前記３次元オブジェクトにおける所定の２点に基づいて第１の直線を算出する第１直線算出手段と、
前記第１直線と直交する第２直線を算出する第２直線算出手段と、
前記ポインティングデバイスによる入力に基づいて前記第１直線および第２直線のいずれか一方と回転軸として選択する回転軸選択手段と、
前記選択された回転軸を中心として前記３次元オブジェクトを回転させる第１のオブジェクト回転手段とを備える、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ポインティングデバイスによる操作入力に基づいて３次元オブジェクトを操作する情報処理に関し、より特定的には、画面に表示されている３次元オブジェクトを回転する処理に関する。
【背景技術】
【０００２】
従来から、３次元オブジェクトの表示処理装置が知られている。そして、表示されている３次元オブジェクトを回転や移動させるために、ダイヤル式入力装置の操作を利用する表示処理装置が知られている（例えば特許文献１）。このような表示処理装置では、ダイヤル式入力装置の押し込み操作に基づいて、仮想３次元空間におけるｘ軸、ｙ軸、ｚ軸のうちのいずれか１軸が回転軸として選択される。そして、ダイヤル式入力装置の回転操作の回転方向および回転量に基づき、上記選択された回転軸を中心に回転させていた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２５９０６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の表示処理装置では、ダイヤル式入力装置の１回の押し込み操作に応じて、仮想３次元空間内のｘ軸、ｙ軸、ｘ軸を予め決められた順番に切り替えて回転軸を選択していた。そのため、直感的な回転操作が行いにくい側面があった。また、回転軸として選択される３軸は、３次元仮想空間におけるｘ軸、ｙ軸、ｚ軸として固定されている軸であった。そのため、３次元オブジェクトの回転の柔軟性に欠けるという側面もあった。
【０００５】
それ故に、本発明の目的は、表示されている３次元オブジェクトを回転させる操作に関して、直感的な回転操作が可能であり、また、３次元オブジェクトの柔軟な回転が可能となる情報処理プログラム等を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【０００７】
構成例の一例は、ポインティングデバイスによる入力を受け付け可能な情報処理装置のコンピュータに実行させる情報処理プログラムであって、オブジェクト配置手段と、３次元画像表示手段と、第１直線算出手段と、第２直線算出手段と、回転軸選択手段と、第１のオブジェクト回転手段としてコンピュータを機能させる。オブジェクト配置手段は、仮想３次元空間に３次元オブジェクトを配置する。３次元画像表示手段は、仮想カメラで仮想３次元空間を撮影した３次元画像を画面に表示する。第１直線算出手段は、３次元オブジェクトにおける所定の２点に基づいて第１の直線を算出する。第２直線算出手段は、第１直線と直交する第２直線を算出する。回転軸選択手段は、ポインティングデバイスのよる入力に基づいて第１直線および第２直線のいずれか一方を回転軸として選択する。第１のオブジェクト回転手段は、選択された回転軸を中心として３次元オブジェクトを回転させる。
【０００８】
上記構成例によれば、３次元オブジェクトを回転させる操作について、直感的な操作性を提供することができる。
【０００９】
他の構成例として、前記第２直線算出手段は、第１直線を所定の平面に射影することによって得られる直線である第３直線を算出する第３直線算出手段と、所定の平面上において第３直線に直交する直線である第４直線を算出する第４直線算出手段とを含んでいてもよい。そして、第２直線算出手段は、所定の平面から仮想３次元空間内の３次元オブジェクトに第４直線を平行移動することによって得られる直線を第２直線として算出するようにしてもよい。
【００１０】
上記構成例によれば、３次元オブジェクトの姿勢に応じて第２直線を算出することができ、３次元オブジェクトの柔軟な回転操作を提供することができる。
【００１１】
他の構成例として、情報処理プログラムは、ポインティングデバイスによる操作に基づいて、所定の平面上における当該操作にかかるベクトルを算出する操作ベクトル算出手段として更に前記コンピュータを機能させてもよく、回転軸選択手段は、操作ベクトル算出手段が算出したベクトルを第３直線および第４直線の少なくとも一方に射影し、当該射影した直線上における当該ベクトルの長さに基づいて、第１直線および第２直線のうちの一方を選択するようにしてもよい。更には、回転軸選択手段は、操作ベクトル算出手段が算出したベクトルを第３直線および第４直線の双方に射影し、当該射影したそれぞれの直線上における当該ベクトルの長さが短いほうの直線に基づいて、第１直線および第２直線のうちの一方を選択するようにしてもよい。また、回転軸選択手段は、ベクトルの長さが短いほうの直線が第３直線である場合には、第１直線を選択し、ベクトルの長さが短いほうの直線が第４直線であるときには、第２直線を選択するようにしてもよい。
【００１２】
上記構成例によれば、３次元オブジェクトの回転に際し、ユーザの操作内容に対して違和感の少ない回転を行うことができる。
【００１３】
他の構成例として、情報処理プログラムは、ポインティングデバイスによる操作に基づいて、所定の平面上における当該操作にかかるベクトルを算出する操作ベクトル算出手段と、第１直線を所定の平面上に射影した直線の長さが所定値未満であるか否かを判定する長さ判定手段と、操作ベクトル算出手段が算出したベクトルの方向と直交する直線である第５直線を算出する第５直線算出手段としてコンピュータを更に機能させてもよい。そして、回転軸決定手段は、長さ判定手段によって射影した直線の長さが所定値未満であると判定されたときは、第５直線を仮想３次元空間内の前記３次元オブジェクトに平行移動することによって得られる直線を第２直線として算出し、当該第２直線を回転軸として選択してもよい。
【００１４】
上記構成例によれば、３次元オブジェクトの回転にかかる操作性を高めることができ、また、ユーザの操作内容に対して違和感の少ない、適切な回転を行うことができる。
【００１５】
他の構成例として、所定の平面は、ディスプレイ面または当該ディスプレイ面に平行な面であってもよく、ポインティングデバイスは、タッチパネルであってもよい。
【００１６】
上記構成例によれば、直感的な操作性を提供でき、また、操作内容に対して適切な回転を行うことができる。
【００１７】
他の構成例として、情報処理プログラムは、ポインティングデバイスによる操作に応じて、仮想３次元空間のワールド座標系における所定の１軸を中心として３次元オブジェクトを回転させる第２のオブジェクト回転手段としてコンピュータを更に機能させてもよい。
【００１８】
上記構成例によれば、３次元オブジェクトの姿勢をより自在に変化させることができ、また、その時々の姿勢に応じた適切な回転を行うことができる。
【００１９】
他の構成例として、第１のオブジェクト回転手段は、ポインティング操作に基づいて回転量を算出し、当該回転量に従って３次元オブジェクトを回転させてもよい。
【００２０】
上記構成例によれば、例えば１度のスワイプ操作で、３次元オブジェクトの回転軸と回転量の双方を決定することができ、操作性をより高めることができる。
【発明の効果】
【００２１】
本実施形態によれば、３次元オブジェクトを回転させる操作について、より直感的で違和感の少ない操作性を提供することができる。
【図面の簡単な説明】
【００２２】
【図１】スマートデバイス１０２の構成の一例を示すブロック図
【図２】本実施形態にかかる処理の画面例
【図３】第１の回転処理の原理を説明するための図
【図４】第１の回転処理の原理を説明するための図
【図５】第１の回転処理の原理を説明するための図
【図６】第１の回転処理の原理を説明するための図
【図７】第１の回転処理の原理を説明するための図
【図８】スマートデバイス１０２のメインメモリ１１３に格納されるプログラムおよびデータの一例
【図９】本実施形態にかかる処理の詳細を示すフローチャート
【図１０】図９のステップＳ５の回転軸決定処理の詳細を示すフローチャート
【発明を実施するための形態】
【００２３】
以下、本発明の一実施形態について説明する。
【００２４】
本実施形態では、表示処理装置の一例として、スマートフォン等の、タッチ操作が可能な携帯型スマートデバイス（以下、単にスマートデバイスと呼ぶ）を想定する。本実施形態では、当該スマートデバイスの画面に３次元オブジェクトを表示する。そして、タッチパネルに対する操作(具体的には、スワイプ操作）に応じて当該３次元オブジェクトを回転させる処理を行う。
【００２５】
まず、本実施形態に係るスマートデバイスのハードウェアの構成について説明する。図１は、スマートデバイス１０２の機能ブロック図である。図１において、スマートデバイス１０２は、プロセッサ部１１１と、内部記憶装置１１２と、メインメモリ１１３と、操作部１１５と、表示部１１６とを備えている。プロセッサ部１１１は、後述する情報処理を実行したり、スマートデバイス１０２の全体的な動作を制御したりするためのシステムプログラム（図示せず）を実行することで、スマートデバイス１０２の動作を制御する。なお、プロセッサ部１１１は、単一のプロセッサを搭載してもよいし、複数のプロセッサを搭載するようにしてもよい。内部記憶装置１４には、プロセッサ部１１１によって実行される各種プログラムや当該プログラムで利用される各種データが格納されている。内部記憶装置１４は、例えば、フラッシュＥＥＰＲＯＭやハードディスク装置である。メインメモリ１５は、コンピュータプログラムや情報を一時的に記憶する。操作部１１５は、例えば、ユーザからの操作を受け付けるための入力装置である。表示部１１６は、典型的には液晶表示装置である。なお、本実施形態に係る処理では、操作部１１５及び表示部１１６として、液晶画面と一体化したタッチパネルを想定する。なお、他の実施形態では、操作部１１５として、タッチパネル以外の所定のポインティングデバイス（例えばタッチパッドやトラックボール等）を用いても良い。
【００２６】
次に、本実施形態にかかる情報処理の動作概要を説明する。図２は、本実施形態に係る処理の画面例を示す図である。図２において、表示部１１６には、３Ｄモデル表示領域１５１とメニュー表示領域１５２とが表示されている。メニュー表示領域１５２は、ユーザが、例えば３次元オブジェクト１５３のデータをロードしたりセーブしたり、当該３次元オブジェクトを編集したりするための各種命令を指示するための領域である。３Ｄモデル表示領域１５１は、３次元オブジェクト１５３が存在する仮想３次元空間画像を表示するための領域である。なお、本実施形態では、３次元オブジェクト１５３の一例として人型のオブジェクト（アバターオブジェクト）を例として示す。そして、本実施形態では、当該３Ｄモデル表示領域１５１に対して行われたタッチ操作に基づいて、３次元オブジェクト１５３に対する所定の処理が実行される。具体的には、本実施形態では、３Ｄモデル表示領域１５１に対するスワイプ操作に応じて、３次元オブジェクト１５３を回転させることできる（以下、第１の回転処理）。
【００２７】
ここで、本実施形態に係る上記第１の回転処理の原理について、図３〜図７を用いて説明する。まず、図３に示すように、仮想３次元空間内の３次元オブジェクト１５３における所定の２点を通過するような第１直線２０１が算出される。図３の例では、仮想３次元空間における３次元オブジェクト１５３の頭頂部と足先（かかとの部分）とを結ぶような直線として示されている。なお、この２点は図３の例に限るものではなく、どのような２点であってもよい。
【００２８】
次に、この第１直線２０１に直交する直線である第２直線２０２の算出が行われる。この第２直線２０２の算出は、以下のようにして行われる。まず、図３に示すように、第１直線２０１を所定の平面に射影することで得られる第３直線２０３が算出される。本実施形態では、この所定の平面は、ディスプレイ面であるとする（つまり、表示画面に相当する平面である）。なお、他の実施形態では、ディスプレイ面に平行な面を所定の平面としてもよい。
【００２９】
次に、図４に示すように、上記ディスプレイ面上において第３直線２０３と直交する第４直線２０４が算出される。そして、この第４直線２０４を仮想３次元空間内にある上記３次元オブジェクト１５３の中心点に平行移動して得られる直線が第２直線２０２として算出される。なお、他の実施形態では、３次元オブジェクト１５３の厳密な意味での中心点ではなく、中心点から少しずれた位置に平行移動してもよいし、中心ではない任意の位置、例えば、３次元オブジェクト１５３の頭部の中心点等に平行移動するようにしてもよい。
【００３０】
そして、第１の回転処理では、この第１直線２０１と第２直線２０２のいずれかが回転軸として選択される。具体的には、以下のようにして選択される。まず、図５に示すように、ユーザが行ったスワイプ操作のベクトル２１０（以下、スワイプベクトルと呼ぶ）が算出される。次に、このスワイプベクトル２１０が上記第３直線２０３および第４直線２０４に射影される。そして、射影した結果、第３直線２０３に対応する成分と、第４直線２０４に対応する成分とで、いずれが短いかが判定される。そして、第３直線２０３および第４直線２０４のうち、短い方の成分に対応するいずれか一方の直線が選択される。図５の例では、第３直線２０３が選択されることになる。
【００３１】
次に、第１の直線２０１と第２の直線２０２のうち、上記選択された直線に応じたほうの直線が回転軸として選択される。すなわち、上記射影の結果選択された直線が第３直線２０３の場合は、第１直線２０１が回転軸として選択される。また、上記射影の結果選択された直線が第４直線２０４の場合は、第２直線２０２が回転軸として選択される。図５の例では、第１直線２０１が回転軸として選択されることになる。
【００３２】
そして、上記選択された回転軸を中心として、上記スワイプベクトル２１０のスワイプ方向およびスワイプ距離（スワイプ量）に応じた３次元オブジェクト１５３の回転処理が行われる。
【００３３】
ところで、図６に示すように、３次元オブジェクト１５３の姿勢がディスプレイ面に対して直交する姿勢に近づいてくると、ディスプレイ面に射影した第１直線２０１が１点に収束してしまうことが考えられる。そのため、適切な回転処理を行う事が困難になることが考えられる。そこで、本実施形態では、このような場合（例えば第３直線２０３の長さが所定値未満となる場合）は、次のような処理を行う。まず、スワイプベクトル２１０に直交する直線が算出され、これを第５直線２０５とする。そして、上記第４直線の場合と同様に、第５直線２０５を平行移動して第２直線２０２が算出される。そして、当該第２直線２０２を中心として３次元オブジェクト１５３の回転処理が行われる（つまり、第３直線２０３の長さが所定値未満となる場合は、常に第２直線２０２が回転軸になる）。
【００３４】
このように、本実施形態では、スワイプ操作に基づいて、第１直線２０１と第２直線２０２のいずれかを回転軸として用いるような３次元オブジェクト１５３の回転処理を実行する。上記のような回転処理の実行により、直感的な回転操作が可能となる。また、第１直線２０１、第２直線２０２は３次元オブジェクト１５３の姿勢変化に応じて変化していくものであるため（つまり、固定的なものではないため）、柔軟な回転操作を行うことも可能となる。換言すれば、第１の回転処理は、３次元オブジェクト１５３を基準とした軸回りの回転を行うものといえる。
【００３５】
なお、上記第１の回転処理は、次のように捉えることも可能である。例えば、上記第１直線２０１をｙ軸とし、第２直線２０２をｘ軸とし、この双方に直交する軸をｚ軸とした、３次元オブジェクト１５３のローカル座標系を考える。そして、ｙ軸は固定したまま、ｚ軸の方向を、ワールド座標系における奥行き方向（ｚ軸方向）に一致させる。そして、ｘ軸がｙ軸およびｚ軸に直交するように、ｘ軸を回転させることで、回転処理用のローカル座標系を導出する。そして、この回転処理用のローカル座標系におけるｙ軸またはｘ軸の一方を中心に、３次元オブジェクト１５３を回転させる処理である、と捉えることも可能である。
【００３６】
次に、上記第１の回転処理以外の操作に関して説明する。まず、３Ｄモデル表示領域１５１に対して２本指でタッチして、そのまま指を回転するように動かすことで、画面を正面から見た場合における奥行き方向の軸を中心とした３次元オブジェクト１５３の回転が可能である（以下、第２の回転処理）。なお、本実施形態では、上記第１の回転処理で用いられる回転軸と、第２の回転処理で用いられる回転軸は、異なる軸となっている。換言すれば、第２の回転処理は、仮想３次元空間のワールド座標系における所定の１軸（本例では奥行き方向の軸）を基準にして３次元オブジェクト１５３を回転させるものといえる。また、その他、３次元オブジェクト１５３をタッチしてドラッグ操作することで、３次元オブジェクト１５３を移動させることができる。また、ピンチイン、ピンチアウト操作に応じて、３次元オブジェクト１５３を縮小または拡大することができる。
【００３７】
このように、スワイプ操作以外でも３次元オブジェクトの表示態様を変更することが可能である。特に、第２の回転操作による３次元オブジェクト１５３の姿勢の変化も可能であることから、３次元オブジェクト１５３の適切な回転操作を行いやすくするために、上述の第１の回転操作にかかる処理は有効である。
【００３８】
次に、図８〜図１０を参照して、本実施形態における処理の動作をより詳細に説明する。
【００３９】
まず、本実施形態に係る処理で用いられるデータについて説明する。図８は、スマートデバイス１０２のメインメモリ１１３に格納されるプログラムおよびデータの一例を示している。メインメモリ１１３には、表示制御プログラム２２１、操作データ２２２、３Ｄモデルデータ２２３等が格納される。
【００４０】
表示制御プログラム２２１は、上記説明したような回転処理等を実行するためのプログラムである。具体的には、後述する図９のフローチャート処理を実行するためのプログラムである。
【００４１】
操作データ２２２は、操作部１１５に対して行われた各種操作内容を示すデータである。本実施形態では、操作部１１５としてのタッチパネルへの入力の有無や、タッチ座標等を示すデータが含まれている。
【００４２】
３Ｄモデルデータ２２３は、上記３次元オブジェクト１５３を構成する３Ｄモデルデータである。
【００４３】
次に、図１０〜図１１のフローチャートを参照して、スマートデバイス１０２のプロセッサ部１１１によって実行される処理の流れを説明する。なお、図１０におけるステップＳ２〜Ｓ９の処理ループは、例えば６０フレーム毎に繰り返し実行されるものとする。
【００４４】
まず、本実施形態にかかるアプリケーションの起動命令が受け付けられると、ステップＳ１で、プロセッサ部１１１は、初期化処理を実行する。具体的には、本処理で用いられるデータを初期化する処理が実行される。更に、３Ｄモデルデータ２２３に基づいて３次元オブジェクト１５３が生成され、仮想３次元空間内に配置される。また、仮想カメラも当該仮想３次元空間内に配置される。そして、プロセッサ部１１１は、上記仮想３次元空間を仮想カメラで撮像した画像を生成し、３Ｄモデル表示領域１５１に表示する。
【００４５】
次にステップＳ２で、プロセッサ部１１１は、操作データ２２２を取得する。続くステップＳ３において、プロセッサ部１１１は、操作データ２２２に基づいて、３Ｄモデル表示領域１５１に対してのスワイプ操作が行われたか否かを判定する。その結果、スワイプ操作が行われているときは（ステップＳ２３でＹＥＳ）、そのスワイプ操作にかかる上記スワイプベクトルを算出する。次に、ステップＳ５で、第１の回転処理における回転軸を決定するための回転軸決定処理を実行する。
【００４６】
図１０は、上記ステップＳ５の回転軸決定処理の詳細を示すフローチャートである。図１０において、まず、ステップＳ２１で、プロセッサ部１１１は、上述したような第１直線２０１を算出する処理を実行する。例えば、３次元オブジェクト１５３について予め定義されている所定の２点を結ぶ直線を算出する処理が実行される。
【００４７】
次に、ステップＳ２２で、プロセッサ部１１１は、上記第１直線２０１を上記ディスプレイ面に射影することで、上記第３直線２０３を算出する。
【００４８】
次に、ステップＳ２３で、プロセッサ部１１１は、上記第３直線２０３の長さが、所定値未満であるか否かを判定する。つまり、第１直線２０１がディスプレイ面に対してどの程度直交する姿勢（上記図６参照）に近いかを判定する。当該判定の結果、第３直線２０３の長さが所定値未満ではないときは（ステップＳ２３でＮＯ）、ステップＳ２４で、プロセッサ部１１１は、ディスプレイ面において第３直線２０３に直交する上記第４直線２０４を算出する。続いて、ステップＳ２５で、プロセッサ部１１１は、当該第４直線２０４を３次元オブジェクト１５３の中心に平行移動した直線を第２直線２０２として算出する。
【００４９】
次に、ステップＳ２６で、プロセッサ部１１１は、上記スワイプベクトルを上記第３直線２０３、および、第４直線２０４に射影する。そして、プロセッサ部１１１は、当該射影にて得られた、スワイプベクトルにおける第３直線の成分と第４直線の成分の長さを比較する。そして、プロセッサ部１１１は、長さが短い方の成分に対応する直線を選択する。上記図５の例でいうと、スワイプベクトル２１０については、第４直線２０４の成分よりも第３直線２０３の成分のほうが短い。そのため、この図の場合は、第３直線２０３が選択されることになる。
【００５０】
なお、上記の比較の結果、スワイプベクトルにおける第３直線の成分と第４直線の成分の長さが同じであった場合は、例えば、その直前に実行された処理ループにおいて選択されていたほうの成分を選択するようにしてもよい。あるいは、上記長さが同じ場合は、いずれか一方を固定的に選択するようにしても良い。例えば、上記長さが同じ場合は、常に第３直線のほうを選択するようにしてもよい。
【００５１】
次に、ステップＳ２７で、プロセッサ部１１１は、上記選択された直線に対応する第１直線２０１または第２直線２０２のいずれかを回転軸として決定する。第３直線２０３が選択されていた場合は第１直線２０１が選択され、第４直線２０４が選択されていた場合は第２直線２０２が選択されることになる。その後、回転軸決定処理は終了する。
【００５２】
一方、上記ステップＳ２３の判定の結果、第３直線２０３の長さが所定値未満であったときは（ステップＳ２３でＹＥＳ）、ステップＳ２８で、プロセッサ部１１１は、ディスプレイ面上で上記スワイプベクトルに直交する直線を上述の第５直線２０５として算出する。
【００５３】
次に、ステップＳ２９で、プロセッサ部１１１は、上記第５直線２０５を上記３次元オブジェクト１５３の中心に平行移動した直線を第２直線２０２として算出する。
【００５４】
続いて、ステップＳ３０で、プロセッサ部１１１は、上記ステップＳ２９で算出された第２直線を回転軸として決定する。そして、回転軸決定処理は終了する。
【００５５】
図９に戻り、ステップＳ５の処理の次に、ステップＳ６で、プロセッサ部１１１は、上記回転軸決定処理で決定された回転軸を中心として３次元オブジェクト１５３を回転する処理を実行する。具体的には、プロセッサ部１１１は、上記スワイプベクトルに基づいて、スワイプ操作の方向およびその長さ（距離）を算出する。そして、この方向および長さに応じて、上記決定した回転軸を中心に３次元オブジェクト１５３を所定量だけ回転させる処理を実行する。
【００５６】
一方、上記ステップＳ３の判定の結果、スワイプ操作が行われていないときは（ステップＳ３でＮＯ）、ステップＳ７で、プロセッサ部１１１は、操作データ２２２の内容に基づいた上記の処理以外の所定の処理を実行する。具体的には、操作データ２２２で示される操作内容が、ピンチイン、ピンチアウト操作のときは、その操作内容に応じて、３次元オブジェクト１５３を縮小または拡大表示する処理（仮想カメラの位置や画角の制御）を実行する。また、操作内容が、３次元オブジェクト１５３をタッチしてドラッグ操作している（選択しながらドラッグ操作している）場合は、このドラッグ操作の方向や距離に応じて、選択中の３次元オブジェクト１５３を仮想３次元空間内で移動させる処理を実行する。また、操作内容が上記第２の回転操作に相当する場合は、ディスプレイ面を正面から見た場合における奥行き方向に対応する、仮想３次元空間の方向軸を中心として３次元オブジェクト１５３を回転させる処理を実行する。つまり、仮想３次元空間内における奥行き方向の軸周りに３次元オブジェクト１５３を回転させる処理を実行する。また、操作内容が上記メニュー領域に対する操作であれば、プロセッサ部１１１は、そのタッチ位置に基づいた所定の処理を実行する。
【００５７】
次に、上記ステップＳ６またはＳ７の処理が終われば、ステップＳ８で、プロセッサ部１１１は、上記の処理が反映された３次元仮想空間を仮想カメラで撮像した画像を画面に描画する処理を実行する。
【００５８】
次に、ステップＳ９で、プロセッサ部１１１は、本処理の終了条件が満たされたか否かを判定し、満たしていれば（ステップＳ９でＹＥＳ）、本処理を終了する。満たしていなければ（ステップＳ９でＮＯ）、上記ステップＳ２に戻り、上記の処理を繰り返す。以上で、本実施形態に係る表示制御処理の詳細説明を終了する。
【００５９】
このように、本実施形態では、第１の回転処理として、第１直線２０１および第２直線２０２を利用した回転処理を行っている。換言すれば、スワイプ操作に応じて、２つの回転軸を利用した処理を行っている。また、回転軸の選択とその回転量とが１度のスワイプ操作で決定されている。これにより、直感的な回転操作をユーザに提供することができる。また、第１直線２０１および第２直線２０２の仮想空間内における姿勢は、上記の操作に応じて変化し得るため、３次元オブジェクト１５３の柔軟な回転も可能である
【００６０】
なお、上記第１直線２０１の算出の基となる２点については、予め定義されたものでもよいし、ユーザが自由に設定可能なようにしてもよい。また、上記の例では、第１直線２０１〜第５直線２０５のように「直線」として算出する例を示していたが、これらを「直線」ではなく「ベクトル」として算出して処理するようにしてもよい。
【００６１】
また、第１直線および第２直線から回転軸を決定する処理に関して、上記の例では、スワイプベクトル２１０を第３直線２０３および第４直線２０４の双方に射影する場合を示した。他の実施形態では、いずれか一方にのみ射影するようにしてもよい。例えば、スワイプベクトル２１０を第３直線２０３にのみ射影する。そして、射影した直線の長さが所定値未満であれば第１直線２０１を回転軸として選択し、所定値以上であれば第２直線２０２を選択する、というような処理を行っても良い。
【００６２】
また、上記実施形態では、上述のようなアプリケーションの一連の処理が単一のスマートデバイス１０２において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。さらには、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【符号の説明】
【００６３】
１０２  スマートデバイス
１１１  プロセッサ部
１１２  内部記憶装置
１１３  メインメモリ
１１５  操作部
１１６  表示部
【図１】
0006360509.tif 000002
【図２】
0006360509.tif 000003
【図３】
0006360509.tif 000004
【図４】
0006360509.tif 000005
【図５】
0006360509.tif 000006
【図６】
0006360509.tif 000007
【図７】
0006360509.tif 000008
【図８】
0006360509.tif 000009
【図９】
0006360509.tif 000010
【図１０】
0006360509.tif 000011