(57)【特許請求の範囲】
【請求項１】
領域に係るパラメータを管理する情報処理装置であって、
前記領域内に配置され、前記領域の向きを表す図形であるオブジェクトをタッチスクリーンに表示する表示部、
前記タッチスクリーンに対してほぼ同時に開始された第1タッチと、第2タッチと、を検出する検出部、
前記検出された第1タッチに対応付けられる第1指示位置と、前記検出された第2タッチに対応付けられる第2指示位置と、を取得する取得部、
前記取得された第1指示位置および前記取得された第2指示位置が感知範囲に含まれる場合に、前記取得された第1指示位置から前記取得された第2指示位置へ向かう指示向きの変化に応じて、前記領域が前記領域内に配置された中心周りに回転するように、前記パラメータを更新する更新部
を備え、
前記感知範囲の一部または全部は、前記領域外にある
ことを特徴とする情報処理装置。
【請求項２】
前記領域は、仮想3次元空間内の平面上に配置され、
前記表示部は、前記仮想3次元空間に投影を施すことにより得られた画像を、前記タッチスクリーンに表示し、
前記取得部は、前記検出された第1タッチに係る第1タッチ位置と、前記検出された第2タッチに係る第2タッチ位置と、に、前記平面上に対する前記投影の逆投影を施すことにより、前記平面上における第1指示位置ならびに第2指示位置を取得する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項３】
前記更新部は、前記指示向きの変化の角度だけ、前記領域を回転させる
ことを特徴とする請求項2に記載の情報処理装置。
【請求項４】
前記更新部は、前記領域と、前記第1指示位置と、前記第2指示位置と、の位置関係に応じて、前記第1タッチ位置から前記第2タッチ位置へ向かうタッチ向きの角度の変化に基づいて、前記指示向きの変化の角度を補正する
ことを特徴とする請求項2に記載の情報処理装置。
【請求項５】
前記更新部は、複数のキャラクターが前記領域内に分散し、前記複数のキャラクターが前記領域の向きと同じ向きを向くように、前記複数のキャラクターのパラメータを更新する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項６】
前記表示部は、前記第1タッチならびに前記第2タッチが検出されている間、前記領域の境界を、前記タッチスクリーンに表示する
ことを特徴とする請求項5に記載の情報処理装置。
【請求項７】
前記検出部は、前記タッチスクリーンに対して単独で開始された単独タッチを検出し、
前記取得部は、前記検出された単独タッチに対応付けられる単独指示位置を取得し、
前記更新部は、前記取得された単独指示位置の位置の変化に応じて、前記領域が移動するように、前記パラメータを更新する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項８】
前記更新部は、前記取得された第1指示位置と前記取得された第2指示位置との距離の変化に応じて、当該第1指示位置から当該第2指示位置へ向かう向きに、前記領域が前記領域内に配置された中心周りに拡縮するように、前記パラメータを更新する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項９】
領域に係るパラメータを管理する情報処理装置が実行する情報処理方法であって、
前記情報処理装置が、前記領域内に配置され、前記領域の向きを表す図形であるオブジェクトをタッチスクリーンに表示する表示工程、
前記情報処理装置が、前記タッチスクリーンに対してほぼ同時に開始された第1タッチと、第2タッチと、を検出する検出工程、
前記情報処理装置が、前記検出された第1タッチに対応付けられる第1指示位置と、前記検出された第2タッチに対応付けられる第2指示位置と、を取得する取得工程、
前記情報処理装置が、前記取得された第1指示位置および前記取得された第2指示位置が感知範囲に含まれる場合に、前記取得された第1指示位置から前記取得された第2指示位置へ向かう指示向きの変化に応じて、前記領域が前記領域内に配置された中心周りに回転するように、前記パラメータを更新する更新工程
を備え、
前記感知範囲の一部または全部は、前記領域外にある
ことを特徴とする情報処理方法。
【請求項１０】
領域に係るパラメータを管理するコンピュータを、
前記領域内に配置され、前記領域の向きを表す図形であるオブジェクトをタッチスクリーンに表示する表示部、
前記タッチスクリーンに対してほぼ同時に開始された第1タッチと、第2タッチと、を検出する検出部、
前記検出された第1タッチに対応付けられる第1指示位置と、前記検出された第2タッチに対応付けられる第2指示位置と、を取得する取得部、
前記取得された第1指示位置および前記取得された第2指示位置が感知範囲に含まれる場合に、前記取得された第1指示位置から前記取得された第2指示位置へ向かう指示向きの変化に応じて、前記領域が前記領域内に配置された中心周りに回転するように、前記パラメータを更新する更新部
として機能させ、
前記感知範囲の一部または全部は、前記領域外にある
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タッチスクリーンに対するユーザによるタッチ操作に応じて、タッチスクリーンに表示されたオブジェクトを回転させるのに好適な情報処理装置、情報処理方法、ならびに、これらをコンピュータにより実現するためのプログラムに関する。
【背景技術】
【０００２】
従来から、画面に表示されたオブジェクトを回転させる指示を、画面とは独立して用意されたタッチパネルに対するタッチ操作に基づいて行う技術が提案されている。
【０００３】
たとえば、特許文献1に開示される技術では、ゲーム装置は2点の指示位置を同時に検出可能なタッチパネルを含む。プレイヤがタッチパネルを操作することで検出された2点の座標値が検出され、2点間の距離および2点を結ぶ線の角度の少なくとも一方が算出される。また、2点間の距離および角度の変化量が算出される。算出された距離および角度の少なくとも一方に基づいてキャラクターの移動速度および旋回角度等の動作パラメータが設定され、この動作パラメータに基づいてキャラクターの移動および旋回等の動作が制御される。また、2点の指示に変化があったときには、変化量に基づいて動作パラメータが変化され、この動作パラメータに基づいてキャラクターの動作が制御される。
【０００４】
一方、画面とタッチパネルが一体に構成されたタッチスクリーンにおいては、画面に表示されたオブジェクトの表示位置にユーザがタッチすることで、当該オブジェクトに対する指示を出すユーザインターフェースが広く使われている。
【０００５】
たとえば、ユーザは、オブジェクトの移動にタッチを利用することができる。すなわち、ユーザが、タッチスクリーン内において、オブジェクトの表示位置をタッチして、タッチを継続したまま、タッチ位置を移動させると、その位置にオブジェクトが移動し、所望の位置まで移動した後に、タッチスクリーンから指をリリースして、タッチを終了する。このようなタッチの仕方は、ドラッグ、フリック、スライド、スワイプと呼ばれることもある。
【０００６】
また、オブジェクトが表示されている領域内を二本の指でタッチして、2つのタッチ位置が基準方向となす角度や、2つのタッチ位置の間隔を変化させることにより、二本の指でタッチされているオブジェクトを回転あるいは拡縮する技術も利用されている。このような操作は、ピンチと呼ばれることもある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開2006-34754号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、画面とタッチパネルが一体に構成され、画面に表示されたオブジェクトをユーザがタッチすることで、オブジェクトの回転を制御する上記のユーザインターフェースにおいては、二本の指でオブジェクトをタッチする必要がある。したがって、オブジェクトが小さい場合には、タッチ操作が困難になることも多い。また、二本の指でオブジェクトをタッチする必要があることから、操作したいオブジェクトが指や掌で隠れてしまい、細かい制御が難しいこともある。
【０００９】
本願は、上記の課題を解決しようとするもので、タッチスクリーンに対するユーザによるタッチ操作に応じて、タッチスクリーンに表示されたオブジェクトを回転させるのに好適な情報処理装置、情報処理方法、ならびに、これらをコンピュータにより実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の課題を解決するため、情報処理装置は、領域に係るパラメータを管理し、
前記領域内に配置されるオブジェクトをタッチスクリーンに表示し、
前記タッチスクリーンに対してほぼ同時に開始された第1タッチと、第2タッチと、を検出し、
前記検出された第1タッチに対応付けられる第1指示位置と、前記検出された第2タッチに対応付けられる第2指示位置と、を取得し、
前記取得された第1指示位置から前記取得された第2指示位置へ向かう指示向きの変化に応じて、前記領域が前記領域内に配置された中心周りに回転するように、前記パラメータを更新する。
【発明の効果】
【００１１】
本発明によれば、タッチスクリーンに対するユーザによるタッチ操作に応じて、タッチスクリーンに表示されたオブジェクトを回転させるのに好適な情報処理装置、情報処理方法、ならびに、これらをコンピュータにより実現するためのプログラムを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に係る情報処理装置の概要構成を示す説明図である。
【図２】領域やオブジェクトが配置された仮想空間の例を示す説明図である。
【図３】仮想空間の例がタッチスクリーンに表示される様子を示す説明図である。
【図４】タッチスクリーンに対する第1タッチに係る第1タッチ位置および第2タッチに係る第2タッチ位置の例を示す説明図である。
【図５】第1タッチ位置および第2タッチ位置に対して投影の逆変換を施すことにより取得された第1指示位置および第2指示位置の例を示す説明図である。
【図６】タッチスクリーンに対する第1タッチおよび第2タッチに係るタッチ向きの変化を示す説明図である。
【図７】第1指示位置および第2指示位置に係る指示向きの変化を示す説明図である。
【図８】領域が回転した後に、タッチスクリーンに表示される仮想空間の様子を示す説明図である。
【図９】情報処理装置にて実行される2箇所タッチに対する処理の制御の流れを示すフローチャートである。
【図１０】情報処理装置にて実行される1箇所タッチに対する処理の制御の流れを示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下に、本発明の実施形態に係る情報処理装置について説明する。なお、以下に説明する情報処理装置は、本発明の要旨を説明するためのものであり、本発明の技術的な範囲は、以下に説明する実施形態には限られない。また、各実施例にて説明する要素は、用途に応じて適宜省略することも可能である。このように、本発明の原理にしたがって構成された各種の情報処理装置、当該各種の情報処理装置にて実行される方法、当該各種の情報処理装置にて実行されるプログラム、ならびに、これらと均等な発明は、いずれも、本発明の範囲に含まれる。
【実施例１】
【００１４】
(情報処理装置が実現されるハードウェア)
本実施形態に係る情報処理装置は、典型的には、プログラムをコンピュータが実行することによって実現される。ここで、コンピュータとしては、サーバコンピュータ、デスクトップ型コンピュータ、ノート型コンピュータ、タブレット型コンピュータ等のように、コンピュータとして製造、販売等されているもののほか、携帯電話、スマートホン、ファブレット等のように、電話機として製造、販売等されているもの、携帯ゲーム端末、家庭用エンターテインメント装置等のように、ゲーム機やマルチメディア端末として製造、販売等されているものも含まれる。
【００１５】
コンピュータにて実行されるプログラムは、当該コンピュータが通信可能に接続されたサーバにより配布、販売することができるほか、CD-ROM(Compact Disk Read Only Memory)やフラッシュメモリ、EEPROM(Electrically Erasable Programmable ROM)などの非一時的(non-transitory)な情報記録媒体に記録した上で、当該情報記録媒体を配布、販売等することも可能である。
【００１６】
プログラムは、コンピュータが有するハードディスク、ソリッドステートドライブ、フラッシュメモリ、EEPROMなどの非一時的な情報記録媒体にインストールされる。すると、当該コンピュータにより、本実施形態における情報処理装置が実現されることになる。一般的には、コンピュータのCPU(Central Processing Unit)は、コンピュータのOS(Operating System)による管理の下、情報記録媒体からRAM(Random Access Memory)へプログラムを読み出してから、当該プログラムに含まれるコードを解釈、実行する。ただし、CPUがアクセス可能なメモリ空間内に情報記録媒体をマッピングできるようなアーキテクチャでは、RAMへの明示的なプログラムのロードは不要なこともある。なお、プログラムの実行の過程で必要とされる各種情報は、RAM内に一時的(temporary)に記録しておくことができる。
【００１７】
上記のように、汎用のコンピュータにより本実施形態の情報処理装置を実現するのではなく、専用の電子回路を用いて本実施形態の情報処理装置を構成することも可能である。この態様では、プログラムは、電子回路の配線図やタイミングチャート等を生成するための素材として機能する。このような態様では、プログラムに定められる仕様を満たすような電子回路が、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)により構成され、当該電子回路は、当該プログラムに定められた機能を果たす専用機器として機能して、本実施形態の情報処理装置を実現する。
【００１８】
さて、本実施形態に係る情報処理装置は、タッチスクリーンに接続されている。タッチスクリーンには、コンピュータからユーザに提供される各種の情報を提示するための出力装置としての機能と、その表面に対するユーザの指等の接触の有無ならびに接触の位置を検知する入力装置としての機能と、を有する。本実施形態は、タッチスクリーンとして、表面に対する2箇所以上の接触を検知できる、いわゆるマルチタッチ対応の機器を想定する。
【００１９】
(情報処理装置の概要)
図1は、本発明の実施形態に係る情報処理装置の概要構成を示す説明図である。以下、本図を参照して説明する。
【００２０】
本実施形態に係る情報処理装置101は、領域に係るパラメータを管理する。
【００２１】
本実施形態で想定する、領域は、ゲームを実現するための仮想空間の地面上に配置されており、当該領域は、ゲームにおける自軍の陣地を表す。地面は平面であり、領域の形状は長方形であり、情報処理装置101は、領域の位置、向き、大きさをRAM等に記憶することで管理する。以下では、当該領域を表す長方形を、ユーザによる操作対象のオブジェクトであると想定する。
【００２２】
当該ゲームでは、領域内では、自軍に属する複数のキャラクターが分散し、領域の向きと同じ方向を向く。領域の向きや大きさが変化すると、これに合わせて、時間の経過とともに、キャラクターの移動や向きが自律的に変化するよう、CPUが制御を行う。これらのキャラクターに係るパラメータ、たとえば、キャラクターの位置や向き、速度、角速度等も、情報処理装置101にて管理される。
【００２３】
一方、表示部102は、領域内に配置されるオブジェクトをタッチスクリーンに表示する。典型的には、平行透視、一点透視、斜行座標変換、アフィン変換など、ユーザが仮想空間を俯瞰しやすいような座標変換を仮想空間に配置される種々の事物に対して施すことにより、画像を生成し、当該画像を、タッチスクリーンが備える液晶ディスプレイ等に表示する。これらの計算処理は、CPUや、CPUの制御の下で動作する画像処理プロセッサが、定期的に、典型的には、液晶ディスプレイの垂直同期が生じるごとに、行う。
【００２４】
図2は、領域やオブジェクトが配置された仮想空間の例を示す説明図である。図3は、仮想空間の例がタッチスクリーンに表示される様子を示す説明図である。以下、これらの図を参照して説明する。
【００２５】
仮想空間201の地面には、一例として長方形形状の領域202が配置されている。当該領域202の位置、向き、形状等は、情報処理装置101により管理されている。領域202内には、自律的に動作するキャラクター204が配置されている。領域202には、長方形の特定の辺から対向する辺に向かう向きが割り当てられており、本図では、その向きを矢印203のオブジェクトにて図示している。
【００２６】
タッチスクリーン301に領域202が配置される際には、投影変換が施されるため、領域202の表示上の形状は一般には、長方形ではなく、四辺形となっている。また、領域202の向きを表す矢印203も表示されている。
【００２７】
仮想空間201における地面の位置関係をユーザが把握しやすくするため、これらの図に示すように、地面に、桝目状に線を引くこととしても良い。仮想空間201の地面においては、各桝目は正方形の形状となっているが、タッチスクリーン301に各桝目が表示される際には、投影変換が施されるため、各桝目の形状は、領域202と同様に、正方形ではなく、四辺形で表示される。
【００２８】
このほか、仮想空間201においては、ユーザが操作するキャラクター204が対戦する敵軍の陣地231が複数配置されている。本ゲームにおいては、ユーザは、自軍の陣地の向きや移動方向を指示し、自軍の領域202と敵軍の陣地231とが接触すると、自律的に戦闘が始まる。したがって、敵軍の陣地231のうちのいずれに向かって行軍するか、がゲームの勝敗に影響する。
【００２９】
さて、検出部103は、タッチスクリーンに対してほぼ同時に開始された第1タッチと、第2タッチと、を検出する。上記のように、本実施形態におけるタッチスクリーンはマルチタッチ対応のものを想定している。本実施形態では、タッチスクリーンに対する2点同時タッチに基づいて、領域202の回転を制御する。タッチの有無、タッチされた箇所の個数、タッチされた場所の検出は、タッチスクリーンが有するタッチパネルによって行われ、検出結果は、CPUに伝達される。
【００３０】
なお、検出部103は、タッチスクリーンに対して開始された1箇所の単独タッチを検出することができる。タッチスクリーンのある箇所に対して第1タッチが開始され、これと同時に、もしくは、第1タッチの後、極めて短い所定時間差以内に第2タッチが開始された場合には、検出部103は、第1タッチと第2タッチがほぼ同時に開始された、と解釈する。また、第1タッチから上記所定時間差以内に第2タッチが開始されなかった場合には、当該第1タッチの開始を1箇所に対する単独タッチの開始として取り扱う。1点タッチか2点タッチかを区別するための時間差は、あらかじめ定めておいても良いし、ユーザの操作状況に基づいて調整しても良い。
【００３１】
つぎに、取得部104は、検出された第1タッチに対応付けられる第1指示位置と、検出された第2タッチに対応付けられる第2指示位置と、を取得する。典型的には、第1指示位置および第2指示位置の取得は、CPUにより行われる。
【００３２】
本実施形態では、仮想空間201をタッチスクリーンに表示する際に施す投影変換の逆変換を、第1タッチ位置ならびに第2タッチ位置に施すことで、第1指示位置および第2指示位置を得ることとする。
【００３３】
図4は、タッチスクリーンに対する第1タッチに係る第1タッチ位置および第2タッチに係る第2タッチ位置の例を示す説明図である。図5は、第1タッチ位置および第2タッチ位置に対して投影の逆変換を施すことにより取得された第1指示位置および第2指示位置の例を示す説明図である。これらの図に示すように、第1タッチ位置311と第2タッチ位置312に対して投影の逆変換を施すことで、第1指示位置211と第2指示位置212が得られる。逆に、第1指示位置211および第2指示位置212に投影変換を施せば、第1タッチ位置311および第2タッチ位置312が得られる。
【００３４】
以下では、時点tに検出された第1タッチ位置311の位置ベクトルをp(t)、第2タッチ位置312の位置ベクトルをq(t)と標記し、投影変換をF(.)、その逆変換をG(.)と表記する。また、第1指示位置211の位置ベクトルをa(t)、第2指示位置212の位置ベクトルをb(t)と表記すると、以下が成立する。
a(t) = G(p(t)), b(t) = G(q(t));
p(t) = F(a(t)), q(t) = F(b(t))
【００３５】
2箇所のタッチが検出されていることから、明らかにp(t)≠q(t)である。画面表示に利用される一般的な投影変換(無限遠方がタッチスクリーン301内に入らない投影変換)では、a(t)≠b(t)が成立する。
【００３６】
最後に、更新部105は、取得された第1指示位置から取得された第2指示位置へ向かう指示向きの変化に応じて、領域202が領域内に配置された中心周りに回転するように、パラメータを更新する。ある時点における第1指示位置a(t)から第2指示位置b(t)へ向かう指示向きを表す方向ベクトルr(t)は、以下のように表記できる。ここで、|.|は、ベクトルの長さを求める演算である。
r(t) = (b(t)-a(t))/|b(t)-a(t)|
【００３７】
ある時点tにおける指示向きr(t)が計算され、次の時点(典型的には、時点tの垂直同期周期後の時点)sにおける指示向きr(s)が計算されると、時点tから時点sまでの指示向きの変化を回転角θ(s,t)により、表現すると、以下のようになる。ここで、arg(.)は、ベクトルの偏角を求める演算である。
θ(s,t) = arg(r(s)-r(t))
【００３８】
このようにして、CPUは、時点sにおいて、直前の時点tとの対比を行うことで指示向きの変化θ(s,t)を計算する。そして、長方形からなる領域202を当該長方形の中心周りに時点sにおいて回転させる回転角ρ(s)をθ(s,t)とする。
【００３９】
図6は、タッチスクリーンに対する第1タッチおよび第2タッチに係るタッチ向きの変化を示す説明図である。本図に示す例では、タッチスクリーンにおける領域202の外側下方で、第1タッチおよび第2タッチがなされており、第1タッチ位置311は、p(t)からp(s)へ、第2タッチ位置312は、q(t)からq(s)へ、それぞれ移動している。
【００４０】
図7は、第1指示位置および第2指示位置に係る指示向きの変化を示す説明図である。第1指示位置211は、a(t)からa(s)へ、第2指示位置212は、b(t)からb(s)へ、それぞれ移動している。またθ(s,t)は、b(t)-a(t)と、b(s)-a(s)と、が、なす角度に相当する。
【００４１】
図7に示す通り、本実施形態では、タッチスクリーンのいかなる場所において第1タッチならびに第2タッチがされた場合であっても、これに応じて領域202がρ(s,t)だけ回転する(本図では、ρ(s,t)=θ(s,t)である)。これに応じて、タッチスクリーン301における表示も更新される。図8は、領域が回転した後に、タッチスクリーンに表示される仮想空間の様子を示す説明図である。なお、これらの図に示すように、キャラクター204の一部は、一時的に領域202の外側に出てしまい、矢印203とは異なる向きを向くこととなるが、この後、時間経過とともに、自律的な移動を行って、また領域202内で分散し、矢印203に合わせた向きを向くこととなる。
【００４２】
したがって、領域202が指や手で隠れないように第1タッチならびに第2タッチをして、領域202を回転させることができるため、ユーザは、領域202内の向きを表す矢印203や、領域202内に分散するキャラクター204の様子を見ながら、回転を調整することができる。
【００４３】
なお、時点tにおける第1タッチ位置311から第2タッチ位置312へ向かうタッチ向きの方向ベクトルu(t)ならびに時点tから時点sまでの間のタッチ向きの変化を表す回転角φ(s,t)は、以下のように表せる。
u(t) = (q(t)-p(t))/|q(t)-p(t)|;
φ(s,t) = arg(u(s)-u(t))
【００４４】
F(.)およびG(.)として一般的な投影変換ならびに逆投影変換を用いた場合には、φ(s,t)≠θ(s,t)である。すなわち、タッチスクリーン301上で2本指を回転させた角度φ(s,t)は、仮想空間201内で領域202が回転する角度ρ(s)=θ(s,t)と一致しないし、一般には、タッチスクリーン301に表示された矢印203が回転する角度とも一致しない。
【００４５】
このほか、タッチスクリーンにされた第1タッチについて検出された第1タッチ位置と、第2タッチについて検出された第2タッチ位置と、を、そのまま、第1指示位置ならびに第2指示位置と考えることができる。この場合には、領域202の回転量としてφ(s,t)を採用することになる。
【００４６】
すなわち、この態様では、タッチスクリーン301上で2本指を回転させた角度φ(s,t)は、仮想空間201内で領域202が回転する角度ρ(s)と一致するが、一般には、タッチスクリーン301に表示された矢印203が回転する角度とは一致しない。
【００４７】
このように、仮想空間201を俯瞰するための投影を行っている場合には、φ(s,t), θ(s,t)および矢印203の表示上の回転角度は、一般には一致しない。したがって、上記の2つのいずれを選択するか、は、ゲームの分野やユーザの習熟度、ユーザの設定に応じて適宜定めることとなる。また、後述する実施例では、これらの不一致を緩和させてユーザの違和感を抑制する方策について説明する。
【００４８】
(情報処理装置の制御)
図9は、情報処理装置にて実行される2箇所タッチに対する処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【００４９】
情報処理装置101は、管理するパラメータ等の初期化を行い(ステップS501)、当該パラメータ等に基づいて、タッチスクリーンに表示する画像を生成し(ステップS502)、垂直同期割込が生じるまで待機した後(ステップS503)、生成された画像をタッチスクリーンに転送して表示する(ステップS504)。
【００５０】
そして、情報処理装置101は、タッチスクリーンに対するユーザのタッチ操作の状況を調べる(ステップS505)。
【００５１】
2箇所タッチが開始されていたら(ステップS505;2箇所タッチ開始)、情報処理装置101は、第1タッチ位置311と第2タッチ位置312を取得し(ステップS506)、これらに基づいて、第1指示位置211と第2指示位置212を取得する(ステップS507)。
【００５２】
そして、情報処理装置101は、今回取得された第1指示位置211と第2指示位置212を、RAM内において、直前の指示位置を記憶するための領域に格納する(ステップS508)。ここで格納される情報は、a(t)およびb(t)に相当する。
【００５３】
この後、情報処理装置101は、時間の経過等に基づいてパラメータを更新し(ステップS509)、当該パラメータ等に基づいて、タッチスクリーンに表示する画像を生成し(ステップS510)、垂直同期割込が生じるまで待機した後(ステップS511)、生成された画像をタッチスクリーンに転送して表示する(ステップS512)。
【００５４】
なお、ステップS510では、領域202の境界を表す長方形の図形を描画し、ステップS502では、長方形の図形は描かないこととすると、ユーザは、2箇所タッチが継続していること、ならびに、領域202の様子を容易に知得することができる。
【００５５】
そして、情報処理装置101は、タッチスクリーンに対するユーザによる2箇所タッチが継続しているか否かを調べる(ステップS513)。継続していなければ(ステップS513;No)、情報処理装置101は、ステップS531に進む。
【００５６】
継続していれば、(ステップS513;Yes)、情報処理装置101は、第1タッチ位置311と第2タッチ位置312を取得し(ステップS514)、これらに基づいて、第1指示位置211と第2指示位置212を取得する(ステップS515)。ここで取得された第1指示位置211と第2指示位置212は、a(s)とb(s)に相当する。
【００５７】
そして、情報処理装置101は、今回取得された第1指示位置a(s)と第2指示位置b(s)、ならびに、RAM内の直前の指示位置を記憶するための領域に格納された第1指示位置a(t)と第2指示位置b(t)に基づいて、回転角θ(s,t)を計算する(ステップS516)。
【００５８】
ついで、情報処理装置101は、計算された回転角θ(s,t)に基づいて、領域202に係る向きのパラメータを更新することにより、領域202を回転させる(ステップS517)。そして、今回取得された第1指示位置a(s)と第2指示位置b(s)を、RAM内において、直前の指示位置を記憶するための領域に上書き格納してから(ステップS518)、ステップS509に進む。この処理は、新たな第1指示位置a(s)と第2指示位置b(s)で、直前の第1指示位置a(t)と第2指示位置b(t)を上書きすることに相当する。
【００５９】
さて、2箇所タッチ開始以外の状況であることが検出されれば(ステップS505;その他)、情報処理装置101は、その状況に応じた処理を実行してから(ステップS530)、時間の経過等に基づいてパラメータを更新し(ステップS531)、ステップS502に戻る。
【００６０】
このように、本実施例では、領域202の向きを表す矢印203やキャラクター204が領域202の内部に配置されている状況で、領域202の向きを2箇所タッチによる捻り操作によって回転させる場合に、タッチスクリーン301の任意の場所の2箇所タッチによって回転が可能であるため、矢印203やキャラクター204の様子を見ながら、回転を調整することができる。
【実施例２】
【００６１】
上記実施例では、タッチスクリーン301に対する第1タッチ位置311、第2タッチ位置312がどの場所であっても、ひいては、第1指示位置211および第2指示位置212がどの場所であっても、領域202の向きのパラメータを更新していたが、本実施例では、領域202の向きのパラメータを更新する状況に制限を課す。
【００６２】
すなわち、情報処理装置101は、あらかじめ、感知範囲を設定しておき、2箇所タッチ開始時点で取得された第1指示位置211および第2指示位置212が感知範囲に含まれる場合に限って、領域202を回転させる。
【００６３】
感知範囲の態様としては、以下のようなものが考えられる。
(a)任意の場所を感知範囲とする。上記実施例に相当する態様であり、感知範囲の一部が、領域202の外にある。
(b)領域202の外側を感知範囲とする。すなわち、感知範囲の全部が、領域202の外にある。
(c)領域202の一定幅の周縁、ならびに、領域202の外側を感知範囲とする。すなわち、感知範囲の一部が、領域202の外にある。
(d)領域202の外周から一定幅以上離間した場所を感知範囲とする。すなわち、感知範囲の全部が、領域202の外にある。
【００６４】
本実施例(態様(a)以外)では、ユーザは、領域202を回転しようとする際には、領域202の内部に配置された矢印203やキャラクター204に触れないように、タッチスクリーン301の2箇所タッチを開始する必要がある。このため、矢印203やキャラクター204の様子を見ながら、領域202の回転を調整することができる。
【実施例３】
【００６５】
タッチスクリーン301上における2箇所タッチの回転量φ(s,t)と、タッチ位置を仮想空間201に逆投影した上での回転量θ(s,t)と、は、上述の通り、必ずしも一致しない。そこで、上記の実施例では、仮想空間201において、領域202を回転させる回転量ρ(s)として、
ρ(s) = θ(s,t)
とする態様と、
ρ(s) = φ(s,t)
とする態様を説明した。
【００６６】
本実施形態では、タッチ位置を仮想空間201に逆投影した位置G(p(t)), G(q(t))ならびに/もしくは位置G(p(s)), G(q(s))と、領域202の位置関係に応じて、ρ(s)を補正する。
【００６７】
第1の態様は、位置G(p(t)), G(q(t))ならびに位置G(p(s)), G(q(s))が、領域202を挟む位置にあるか否かによって、ρ(s) = θ(s,t)とするか、あるいはρ(s) = φ(s,t)とするかを選択する手法である。
【００６８】
すなわち、2箇所タッチが領域202を挟むような位置である場合には、逆投影に基づく回転量で領域202を回転させ、操作上の回転量と表示上の回転量をできるだけ一致させる。
【００６９】
一方、2箇所タッチが領域202から離れた位置である場合には、タッチスクリーン301における回転量を、あたかもリモートコントローラや操縦席のハンドル操作における回転量のように取り扱って、操作上の回転量と仮想空間201内における回転量を一致させるのである。
【００７０】
位置G(p(t)), G(q(t))ならびに/もしくは位置G(p(s)), G(q(s))が、領域202を挟む位置にあるか否か、は、以下のように判断することが可能である。すなわち、G(p(t))とG(q(t))を結ぶ線分が領域202を通過するのであれば、G(p(t))とG(q(t))は領域202を挟む、と考えるのである。
【００７１】
判断基準としては、「今回(時点s)の位置関係と直前(時点t)の位置関係の両方で領域202を挟む」を採用しても良いし、「今回(時点s)の位置関係と直前(時点t)の位置関係のいずれか少なくとも一方で領域202を挟む」を採用しても良い。
【００７２】
このほか、2つの回転量θ(s,t),φ(s,t)の平均あるいは重み付き平均をρ(s)とすることもできる。すなわち、重みw(s)を0≦w(s)≦1の範囲で定めた上で、
ρ(s) = w(s)θ(s,t) + (1-w(s))φ(s,t)
とする態様である。
【００７３】
重みw(s)の定め方としては、以下のようなものが考えられる。まず、時点tにおける2箇所のタッチ位置と領域202との距離d(t)を、以下のように定める。なお、時点tにおける領域202の中心位置を、v(t)とする。
d(t) = min 0≦k≦1 |k G(p(t)) + (1-k) G(q(t)) - v(t)|
【００７４】
そして、距離d(s)に応じて重みw(s)を1から0に向かって減衰させる。たとえば、適当な正定数hを用いて、
w(s) = exp(-h d(s))
あるいは、
w(s) = exp(-h d(t))
とするのである。
【００７５】
このほか、減衰関数として、
w(s) = 1/(1+h d(s))
あるいは、
w(s) = 1/(1+h d(t))
のようなものを採用することも可能である。
【００７６】
2箇所のタッチ位置が領域202の中心を挟んでいれば、その距離d(t), d(s)は0に近くなるので、w(s)は1に近くなるから、回転量はθ(s,t)に近づく。2箇所のタッチ位置が領域202の中心を挟まずに遠くにあれば、その距離d(t), d(s)は大きくなるので、w(s)は0に近くなるから、回転量はφ(s,t)に近づく。
【００７７】
このように、本態様においては、タッチ位置を仮想空間201に逆投影することにより得られる指示位置の回転量に基づくθ(s,t)を、指示位置と領域との位置関係に応じて補正することで、領域202の回転量ρ(s)を得ることで、ユーザの違和感を抑制することができる。
【実施例４】
【００７８】
上記実施例では、2箇所タッチの回転を用いて、領域202を回転させていたが、本実施例では、これに加えて、あるいは、これにかえて、2箇所タッチの距離の変化に応じて、領域202を拡縮させる。
【００７９】
すなわち、ある時点tにおける2箇所のタッチ位置p(t), q(t)から、仮想空間201における指示位置G(p(t)), G(q(t))を求める。
【００８０】
また、次の時点sにおける2箇所のタッチ位置p(s), q(s)から、仮想空間201における指示位置G(p(s)), G(q(s))を求める。
【００８１】
そして、拡縮率e(s,t)を、以下のように計算する。
e(s,t) = |G(q(s))-G(p(s))| / |G(q(t))-G(p(t))|
【００８２】
そして、領域202の中心周りに、指示位置G(p(s)), G(q(s))を結ぶ方向に、時点tにおける領域202を拡縮率e(s,t)で拡縮するのである。
【００８３】
本態様では、2箇所タッチの位置が領域202を挟んでいなくとも、ユーザは、あたかも領域202を指で挟むことにより拡縮しているかのような操作感を得ることができる。
【実施例５】
【００８４】
上記実施形態では、2箇所タッチ(たとえば、利き手の人差指と親指で挟む2本指タッチ、あるいは、右手の親指と左手の親指による2本指タッチ)に基づいて、領域202を回転および/もしくは拡縮していたが、本実施形態では、これにくわえて、タッチスクリーンに対する1箇所の単独タッチ(たとえば、利き手の人差指による1本指タッチ)に基づいて、領域202を移動させる。
【００８５】
図10は、情報処理装置にて実行される1箇所タッチに対する処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【００８６】
図9のステップS505において、1箇所タッチが開始されていたら(ステップS505;1箇所タッチ開始)、情報処理装置101は、タッチ位置を取得し(ステップS601)、これに基づいて、指示位置を取得する(ステップS602)。タッチ位置から指示位置を求める手法は、上記実施例と同様である。
【００８７】
そして、得られた指示位置を、RAM内において、直前の指示位置を記憶するための領域に格納する(ステップS603)。
【００８８】
この後、情報処理装置101は、時間の経過等に基づいてパラメータを更新し(ステップS604)、当該パラメータ等に基づいて、タッチスクリーンに表示する画像を生成し(ステップS605)、垂直同期割込が生じるまで待機した後(ステップS606)、生成された画像をタッチスクリーンに転送して表示する(ステップS607)。
【００８９】
なお、ステップS510において長方形の図形を描画したのと同様に、ステップS605においても長方形の図形を描画しても良い。この際に、長方形の図形の色等、体裁が異なるように描画すれば、ユーザは、現在が移動モードなのか回転・拡縮モードなのか、を、区別することができる。
【００９０】
そして、情報処理装置101は、タッチスクリーンに対する1箇所タッチが継続しているか否かを調べる(ステップS608)。継続していなければ(ステップS608;No)、情報処理装置101は、ステップS531に進む。
【００９１】
継続していれば(ステップS608;Yes)、情報処理装置101は、今回のタッチ位置を取得し(ステップS609)、これに基づいて、今回の指示位置を取得する(ステップS610)。
【００９２】
そして、情報処理装置101は、今回の指示位置からRAMに記憶された前回の指示位置を減算した差分ベクトルを計算し(ステップS611)、求められた差分ベクトルだけ、領域202を仮想空間201内で移動させるように、パラメータを更新する(ステップS612)。
【００９３】
この後、情報処理装置101は、今回の指示位置を、RAM内において、直前の指示位置を記憶するための領域に上書き格納して(ステップS613)、ステップS604に戻る。
【００９４】
本態様においては、タッチ位置p(t), p(s)から指示位置G(p(t)), G(p(s))を求める上記の手法を採用することができる。また、1箇所タッチについても感知範囲を定めることとしても良い。
【００９５】
また、上記の態様と同様に、タッチ位置p(t), p(s)が領域202から離れていれば、タッチ位置p(t), p(s)をそのまま指示位置として採用しても良い。
【００９６】
さらに、指示位置が領域202から離れている距離|G(p(s))-v(s)|, |G(p(t))-v(t)|等に応じて、上記実施例と同様に重みを定め、仮想空間201内における移動量G(p(s))-G(p(t))と、タッチスクリーン301上における移動量p(s)-p(t)と、を、内分することにより、領域202の移動量および移動方向を定めることもできる。
【００９７】
本実施例によれば、タッチのやり方を変えるだけで、領域202を回転・拡縮したり、移動したりを簡単に切り換えることができるほか、領域202が指や手で隠れないような位置をタッチすることで、領域202を移動させることができる。ユーザは、領域202を移動している間も、領域202内に配置されるキャラクター204や矢印203等の様子を確認することができる。
【００９８】
(まとめ)
以上説明した通り、本実施形態に係る情報処理装置は、領域に係るパラメータを管理し、
前記領域内に配置されるオブジェクトをタッチスクリーンに表示する表示部、
前記タッチスクリーンに対してほぼ同時に開始された第1タッチと、第2タッチと、を検出する検出部、
前記検出された第1タッチに対応付けられる第1指示位置と、前記検出された第2タッチに対応付けられる第2指示位置と、を取得する取得部、
前記取得された第1指示位置から前記取得された第2指示位置へ向かう指示向きの変化に応じて、前記領域が前記領域内に配置された中心周りに回転するように、前記パラメータを更新する更新部
を備える。
【００９９】
また、本実施形態に係る情報処理装置において、
前記領域は、仮想3次元空間内の平面上に配置され、
前記表示部は、前記仮想3次元空間に投影を施すことにより得られた画像を、前記タッチスクリーンに表示し、
前記取得部は、前記検出された第1タッチに係る第1タッチ位置と、前記検出された第2タッチに係る第2タッチ位置と、に、前記平面上に対する前記投影の逆投影を施すことにより、前記平面上における第1指示位置ならびに第2指示位置を取得する
ように構成することができる。
【０１００】
また、本実施形態に係る情報処理装置において、
前記更新部は、前記指示向きの変化の角度だけ、前記領域を回転させる
ように構成することができる。
【０１０１】
また、本実施形態に係る情報処理装置において、
前記更新部は、前記領域と、前記第1指示位置と、前記第2指示位置と、の位置関係に応じて、前記第1タッチ位置から前記第2タッチ位置へ向かうタッチ向きの角度の変化に基づいて、前記指示向きの変化の角度を補正する
ように構成することができる。
【０１０２】
また、本実施形態に係る情報処理装置において、
前記更新部は、前記取得された第1指示位置および前記取得された第2指示位置が感知範囲に含まれる場合に限って、前記パラメータを更新し、
前記感知範囲の一部または全部は、前記領域外にある
ように構成することができる。
【０１０３】
また、本実施形態に係る情報処理装置において、
前記オブジェクトは、前記領域の向きを表す図形である
ように構成することができる。
【０１０４】
また、本実施形態に係る情報処理装置において、
前記更新部は、複数のキャラクターが前記領域内に分散し、前記複数のキャラクターが前記領域の向きと同じ向きを向くように、前記複数のキャラクターのパラメータを更新する
ように構成することができる。
【０１０５】
また、本実施形態に係る情報処理装置において、
前記表示部は、前記第1タッチならびに前記第2タッチが検出されている間、前記領域の境界を、前記タッチスクリーンに表示する
ように構成することができる。
【０１０６】
また、本実施形態に係る情報処理装置において、
前記検出部は、前記タッチスクリーンに対して単独で開始された単独タッチを検出し、
前記取得部は、前記検出された単独タッチに対応付けられる単独指示位置を取得し、
前記更新部は、前記取得された単独指示位置の位置の変化に応じて、前記領域が移動するように、前記パラメータを更新する
ように構成することができる。
【０１０７】
また、本実施形態に係る情報処理装置において、
前記更新部は、前記取得された第1指示位置と前記取得された第2指示位置との距離の変化に応じて、当該第1指示位置から当該第2指示位置へ向かう向きに、前記領域が前記領域内に配置された中心周りに拡縮するように、前記パラメータを更新する
ように構成することができる。
【０１０８】
本実施形態に係る情報処理方法は、情報処理装置が実行し、
前記情報処理装置は、領域に係るパラメータを管理し、
前記情報処理装置が、前記領域内に配置されるオブジェクトをタッチスクリーンに表示する表示工程、
前記情報処理装置が、前記タッチスクリーンに対してほぼ同時に開始された第1タッチと、第2タッチと、を検出する検出工程、
前記情報処理装置が、前記検出された第1タッチに対応付けられる第1指示位置と、前記検出された第2タッチに対応付けられる第2指示位置と、を取得する取得工程、
前記情報処理装置が、前記取得された第1指示位置から前記取得された第2指示位置へ向かう指示向きの変化に応じて、前記領域が前記領域内に配置された中心周りに回転するように、前記パラメータを更新する更新工程
を備える。
【０１０９】
本実施形態に係るプログラムは、領域に係るパラメータを管理するコンピュータを、
前記領域内に配置されるオブジェクトをタッチスクリーンに表示する表示部、
前記タッチスクリーンに対してほぼ同時に開始された第1タッチと、第2タッチと、を検出する検出部、
前記検出された第1タッチに対応付けられる第1指示位置と、前記検出された第2タッチに対応付けられる第2指示位置と、を取得する取得部、
前記取得された第1指示位置から前記取得された第2指示位置へ向かう指示向きの変化に応じて、前記領域が前記領域内に配置された中心周りに回転するように、前記パラメータを更新する更新部
として機能させる。
【産業上の利用可能性】
【０１１０】
本発明によれば、タッチスクリーンに対するユーザによるタッチ操作に応じて、タッチスクリーンに表示されたオブジェクトを回転させるのに好適な情報処理装置、情報処理方法、ならびに、これらをコンピュータにより実現するためのプログラムを提供することができる。
【符号の説明】
【０１１１】
101 情報処理装置
102 表示部
103 検出部
104 取得部
105 更新部
201 仮想空間
202 領域
203 矢印
204 キャラクター
211 第1指示位置
212 第2指示位置
231 敵軍の陣地
301 タッチスクリーン
311 第1タッチ位置
312 第2タッチ位置
【図１】
0006466736.tif 000002
【図２】
0006466736.tif 000003
【図３】
0006466736.tif 000004
【図４】
0006466736.tif 000005
【図５】
0006466736.tif 000006
【図６】
0006466736.tif 000007
【図７】
0006466736.tif 000008
【図８】
0006466736.tif 000009
【図９】
0006466736.tif 000010
【図１０】
0006466736.tif 000011