(57)【要約】【課題】拡張現実画像を見たユーザーに対して与える違和感を低減する。【解決手段】本発明は、現実空間のカメラによって撮影された撮像画像を取得する撮像画像取得部と、角度検出センサーからの検出信号に基づいて、撮影時における前記カメラの撮影方向を特定する撮影方向特定部と、取得された前記撮像画像及び特定された前記撮影方向に基づいて、現実空間における光源の向きを設定する光源設定部と、前記カメラに対応させて仮想空間に設定された仮想カメラから前記撮影方向を見たときの仮想画像であって、設定された前記光源の向きに基づいて仮想空間に設定されたオブジェクトの色彩及び陰影を反映させて表示した仮想画像を生成し、かつ、生成された前記仮想画像及び取得された前記撮像画像を重畳することによって拡張現実画像を生成する画像生成部を備えた情報処理装置である。【選択図】図１２
2019212062.tif 000002
【特許請求の範囲】
【請求項１】
現実空間のカメラによって撮影された撮像画像を取得する撮像画像取得部と、
角度検出センサーからの検出信号に基づいて、撮影時における前記カメラの撮影方向を特定する撮影方向特定部と、
取得された前記撮像画像及び特定された前記撮影方向に基づいて、現実空間における光源の向きを設定する光源設定部と、
前記カメラに対応させて仮想空間に設定された仮想カメラから前記撮影方向を見たときの仮想画像であって、設定された前記光源の向きに基づいて仮想空間に設定されたオブジェクトの色彩及び陰影を反映させて表示した仮想画像を生成し、かつ、
生成された前記仮想画像及び取得された前記撮像画像を重畳することによって拡張現実画像を生成する画像生成部と、
を備えたことを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
撮像画像に重畳表示される仮想空間のオブジェクトをユーザーがカメラの撮影方向を変えながら探し出すゲームの進行を制御するゲーム進行部と、
をさらに備え、
前記撮像画像取得部は、前記ユーザーによる前記ゲームのプレイ動作を利用して、カメラによって撮影された撮像画像を取得し、
前記撮影方向特定部は、前記ユーザーによる前記ゲームのプレイ動作時における前記カメラの撮影方向を特定する、
ことを特徴とする情報処理装置。
【請求項３】
請求項１又は２に記載の情報処理装置であって、
前記光源設定部は、
特定された前記撮影方向が上方向である際に、前記撮像画像に高輝度の画像領域が含まれているか否かを判定し、
前記撮像画像に高輝度の画像領域が含まれている場合には、特定された前記撮影方向を現実空間における光源の向きに設定する、
ことを特徴とする情報処理装置。
【請求項４】
請求項１又は２に記載の情報処理装置であって、
前記光源設定部は、
特定された前記撮影方向が下方向又は水平である際に、前記撮像画像に低輝度の画像領域が含まれているか否かを判定し、
前記撮像画像に低輝度の画像領域が含まれている場合には、特定された前記撮影方向とは反対方向に現実空間における光源の向きを設定する、
ことを特徴とする情報処理装置。
【請求項５】
請求項１又は２に記載の情報処理装置であって、
撮像画像取得部は、現実空間のカメラによって撮影された複数の撮像画像を取得し、
前記光源設定部は、
複数の撮像画像の中から、高輝度の画像領域が含まれている第１撮像画像と、低輝度の画像領域が含まれている第２撮像画像を特定し、
前記第１撮像画像の撮影時における前記カメラの撮影方向と、前記第２撮像画像の撮影時における前記カメラの撮影方向とに基づいて、現実空間における光源の向きを設定する、
ことを特徴とする情報処理装置。
【請求項６】
コンピューターを、
現実空間のカメラによって撮影された撮像画像を取得する撮像画像取得手段、
角度検出センサーからの検出信号に基づいて、撮影時における前記カメラの撮影方向を特定する撮影方向特定手段、
取得された前記撮像画像及び特定された前記撮影方向に基づいて、現実空間における光源の向きを決定する光源設定手段、
前記カメラに対応させて仮想空間に設定された仮想カメラから前記撮影方向を見たときの仮想画像であって、設定された前記光源の向きに基づいて仮想空間に設定されたオブジェクトの色彩及び陰影を反映させて表示した仮想画像を生成し、かつ、
生成された前記仮想画像及び取得された前記撮像画像を重畳することによって拡張現実画像を生成する画像生成手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
現実空間をデジタルカメラによって撮影された撮像画像（撮影画像、現実画像）に対して、仮想空間に配置されたオブジェクトを仮想カメラから見たときの仮想画像を重畳することにより、仮想空間のオブジェクトが現実空間に存在するかのような重畳画像（合成画像）をディスプレイに表示する拡張現実（ＡＲ：Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ）と呼ばれる技術を用いてゲームを制御する情報処理装置が知られている（たとえば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４８６９４３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この拡張現実の技術（ＡＲ技術）によって撮像画像に仮想画像を重畳した拡張現実画像をディスプレイに表示する際に、仮想空間において光源からオブジェクトへ照射される光の方向が現実空間のものと異なると、光の当たり具合によるオブジェクトの陰影や色彩も現実空間のものと異なって表示されることがあった。そのため、拡張現実画像を見たユーザーに対して違和感を与えてしまう場合があった。
本発明は、このような事情に鑑みてなされたものであり、その目的とするところは、拡張現実画像を見たユーザーに対して与える違和感を低減することにある。
【課題を解決するための手段】
【０００５】
上記課題を解決するための本発明の主たる発明は、
現実空間のカメラによって撮影された撮像画像を取得する撮像画像取得部と、
角度検出センサーからの検出信号に基づいて、撮影時における前記カメラの撮影方向を特定する撮影方向特定部と、
取得された前記撮像画像及び特定された前記撮影方向に基づいて、現実空間における光源の向きを設定する光源設定部と、
前記カメラに対応させて仮想空間に設定された仮想カメラから前記撮影方向を見たときの仮想画像であって、設定された前記光源の向きに基づいて仮想空間に設定されたオブジェクトの色彩及び陰影を反映させて表示した仮想画像を生成し、かつ、
生成された前記仮想画像及び取得された前記撮像画像を重畳することによって拡張現実画像を生成する画像生成部と、
を備えたことを特徴とする情報処理装置である。
本発明の他の特徴については、本明細書及び添付図面の記載により明らかにする。
【図面の簡単な説明】
【０００６】
【図１】本実施形態に係る情報処理システムの一例を示す構成図である。
【図２】本実施形態に係るサーバー装置２０の一例を示すハードウェア構成図である。
【図３】本実施形態に係るクライアント端末１０の一例を示すハードウェア構成図である。
【図４】本実施形態に係るサーバー装置２０の一例を示す機能ブロック図である。
【図５】キャラクター情報の一例を示す構成図である。
【図６】ユーザー情報の一例を示す構成図である。
【図７】出現キャラクター情報の一例を示す構成図である。
【図８】パターン画像情報の一例を示す構成図である。
【図９】本実施形態に係るクライアント端末１０の一例を示す機能ブロック図である。
【図１０】拡張現実画像について説明する図である。
【図１１】カメラ座標系、基準物体座標系、及びスクリーン座標系の関係を示す図である。
【図１２】平行光源ベクトルの設定に関する動作例（具体例１）を説明するフローチャートである。
【図１３】カメラの撮影方向が上向きである場合の光源方向ベクトルについて説明する図である。
【図１４】カメラの撮影方向が下向きである場合の影方向ベクトル及び光源方向ベクトルについて説明する図である。
【図１５】平行光源ベクトルの設定に関する動作例（具体例２）を説明するフローチャートである。
【図１６】撮影時の撮影データの一例を示す構成図である。
【図１７】平行光源ベクトルの設定に関する動作例（具体例３）を説明するフローチャートである。
【図１８】明方向ベクトル、暗方向ベクトル、及び平行光源ベクトルについて説明する図である。
【図１９】出現キャラクターの設定に関する動作例を説明するフローチャートである。
【発明を実施するための形態】
【０００７】
本明細書及び添付図面の記載により、少なくとも以下の事項が明らかとなる。
即ち、現実空間のカメラによって撮影された撮像画像を取得する撮像画像取得部と、
角度検出センサーからの検出信号に基づいて、撮影時における前記カメラの撮影方向を特定する撮影方向特定部と、
取得された前記撮像画像及び特定された前記撮影方向に基づいて、現実空間における光源の向きを設定する光源設定部と、
前記カメラに対応させて仮想空間に設定された仮想カメラから前記撮影方向を見たときの仮想画像であって、設定された前記光源の向きに基づいて仮想空間に設定されたオブジェクトの色彩及び陰影を反映させて表示した仮想画像を生成し、かつ、
生成された前記仮想画像及び取得された前記撮像画像を重畳することによって拡張現実画像を生成する画像生成部と、
を備えたことを特徴とする情報処理装置である。
このような情報処理装置によれば、拡張現実画像を見たユーザーに対して与える違和感を低減することが可能となる。
【０００８】
また、かかる情報処理装置であって、
撮像画像に重畳表示される仮想空間のオブジェクトをユーザーがカメラの撮影方向を変えながら探し出すゲームの進行を制御するゲーム進行部と、
をさらに備え、
前記撮像画像取得部は、前記ユーザーによる前記ゲームのプレイ動作を利用して、カメラによって撮影された撮像画像を取得し、
前記撮影方向特定部は、前記ユーザーによる前記ゲームのプレイ動作時における前記カメラの撮影方向を特定することとしても良い。
このような情報処理装置によれば、撮影動作を強要せずとも、ゲームをプレイするユーザー自らカメラの撮影方向を変えながら周囲を撮影することになるので、周囲の光源を含んだ撮像画像を取得し易くなる。
【０００９】
また、かかる情報処理装置であって、
前記光源設定部は、
特定された前記撮影方向が上方向である際に、前記撮像画像に高輝度の画像領域が含まれているか否かを判定し、
前記撮像画像に高輝度の画像領域が含まれている場合には、特定された前記撮影方向を現実空間における光源の向きに設定することとしても良い。
このような情報処理装置によれば、カメラの撮影方向が上向きである際には、カメラが撮影した撮像画像の中に現実空間の光源が含まれている可能性が高いため、撮像画像の中から高輝度の画像領域を検索した方が効率的であり、また撮影方向をそのまま光源の向きに設定することができる。
【００１０】
また、かかる情報処理装置であって、
前記光源設定部は、
特定された前記撮影方向が下方向又は水平である際に、前記撮像画像に低輝度の画像領域が含まれているか否かを判定し、
前記撮像画像に低輝度の画像領域が含まれている場合には、特定された前記撮影方向とは反対方向に現実空間における光源の向きを設定することとしても良い。
このような情報処理装置によれば、カメラの撮影方向が下方向又は水平である際には、カメラが撮影した撮像画像の中に現実空間の光源よりも影が含まれている可能性が高いため、撮像画像の中から低輝度の画像領域を検索した方が効率的であり、また撮影方向の反対方向を光源の向きに設定することができる。
【００１１】
また、かかる情報処理装置であって、
撮像画像取得部は、現実空間のカメラによって撮影された複数の撮像画像を取得し、
前記光源設定部は、
複数の撮像画像の中から、高輝度の画像領域が含まれている第１撮像画像と、低輝度の画像領域が含まれている第２撮像画像を特定し、
前記第１撮像画像の撮影時における前記カメラの撮影方向と、前記第２撮像画像の撮影時における前記カメラの撮影方向とに基づいて、現実空間における光源の向きを設定することとしても良い。
このような情報処理装置によれば、現実空間の明るい所を撮影したときの撮影方向と暗い所を撮影したときの撮影方向を用いて、現実空間の光源の向きを推定することができる。
【００１２】
次に、コンピューターを、
現実空間のカメラによって撮影された撮像画像を取得する撮像画像取得手段、
角度検出センサーからの検出信号に基づいて、撮影時における前記カメラの撮影方向を特定する撮影方向特定手段、
取得された前記撮像画像及び特定された前記撮影方向に基づいて、現実空間における光源の向きを決定する光源設定手段、
前記カメラに対応させて仮想空間に設定された仮想カメラから前記撮影方向を見たときの仮想画像であって、設定された前記光源の向きに基づいて仮想空間に設定されたオブジェクトの色彩及び陰影を反映させて表示した仮想画像を生成し、かつ、
生成された前記仮想画像及び取得された前記撮像画像を重畳することによって拡張現実画像を生成する画像生成手段、
として機能させるためのプログラムである。
このようなプログラムによれば、拡張現実画像を見たユーザーに対して与える違和感を低減することが可能となる。
【００１３】
＝＝＝実施形態＝＝＝
以下では、本発明の実施形態に係る情報処理装置、プログラム、及び情報処理システムについて詳細に説明する。なお、本発明はＡＲ技術を利用したゲームを採用する情報処理装置、プログラム、及び情報処理システム等に広く適用できる。
【００１４】
＜＜システム構成＞＞
図１は、本実施形態に係る情報処理システム１の一例を示す構成図である。図１に示すように、本実施形態に係る情報処理システム１は、１台以上のクライアント端末１０とサーバー装置２０とがネットワークＮを介して接続されている。
【００１５】
クライアント端末１０は、ユーザーが操作するスマートフォンなどのデジタルカメラ（以下、単に「カメラ」とも呼ぶ）の機能を備えた端末装置である。サーバー装置２０は、クライアント端末１０でユーザーにより行われるゲームの管理や制御、ゲーム内での課金処理等を行う。ネットワークＮは、インターネット等であって、移動無線基地局などを含む。
【００１６】
なお、図１の情報処理システム１は一例であって、用途や目的に応じて様々なシステム構成例があることは言うまでもない。例えば、サーバー装置２０は、複数のコンピューターに分散して構成してもよい。また、サーバー装置２０がクライアント端末１０の機能の一部を担ってもよいし、クライアント端末１０がサーバー装置２０の機能の一部を担ってもよい。
【００１７】
＜＜ハードウェア構成＞＞
＜サーバー装置＞
図２は、本実施形態に係るサーバー装置２０の一例を示すハードウェア構成図である。本実施形態に係るサーバー装置２０は、例えば図２に示すハードウェア構成のコンピューター５０により実現される。なお、コンピューター５０は情報処理装置の一例である。
【００１８】
コンピューター５０は、図２に示すように、ＣＰＵ５１、ＲＡＭ５２、ＲＯＭ５３、通信インタフェース５４、入力装置５５、表示装置５６、外部インタフェース５７、及びＨＤＤ５８などを備えており、それぞれがバスラインＢで相互に接続されている。なお、入力装置５５及び表示装置５６は必要なときに接続して利用する形態であってもよい。
【００１９】
ＣＰＵ５１は、ＲＯＭ５３やＨＤＤ５８などの記憶装置からプログラムやデータをＲＡＭ５２上に読み出し、読み出したプログラムやデータに基づく各種処理を実行することによって、コンピューター全体の制御や機能を実現する演算装置である。
【００２０】
ＲＡＭ５２は、プログラムやデータを一時保持するための揮発性の半導体メモリ（記憶装置）の一例であり、ＣＰＵ５１が各種処理を実行する際のワークエリアとしても利用される。
【００２１】
ＲＯＭ５３は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ（記憶装置）の一例である。ＲＯＭ５３には、コンピューター５０の起動時に実行されるＢＩＯＳ、ＯＳ設定、及びネットワーク設定などのプログラムやデータが格納されている。
【００２２】
通信インタフェース５４は、コンピューター５０をネットワークＮに接続するためのインタフェースである。これにより、コンピューター５０は通信インタフェース５４を介してデータ通信を行うことができる。
【００２３】
入力装置５５は、管理者が各種信号を入力するのに用いる装置である。本実施形態における入力装置５５は、例えば、キーボード、マウス、タッチパネルなどの操作装置である。
【００２４】
表示装置５６は、管理者に対して各種情報を画面表示するための装置である。本実施形態における表示装置５６は、例えば、液晶や有機ＥＬなどのディスプレイである。
【００２５】
外部インタフェース５７は、外部装置とデータ通信可能に接続するためのインタフェースである。これにより、コンピューター５０は外部インタフェース５７を介して記録媒体の読み取り及び／又は書き込みを行うことができる。外部装置は、例えば、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリなどの記録媒体である。
【００２６】
ＨＤＤ５８は、プログラムやデータを格納している不揮発性の記憶装置の一例である。格納されるプログラムやデータには、コンピューター全体を制御する基本ソフトウェアであるＯＳ、及びＯＳ上において各種機能を提供するアプリケーションなどがある。
【００２７】
なお、ＨＤＤ５８に替えて、記憶媒体としてフラッシュメモリを用いるドライブ装置（例えばソリッドステートドライブ：ＳＳＤ）を利用してもよい。
【００２８】
本実施形態に係るサーバー装置２０は、上述したハードウェア構成のコンピューター５０においてプログラムを実行することにより、後述するような各種処理を実現できる。
【００２９】
＜クライアント端末＞
図３は、本実施形態に係るクライアント端末１０の一例を示すハードウェア構成図である。本実施形態に係るクライアント端末１０は、例えば図３に示すハードウェア構成のコンピューター６０により実現される。なお、コンピューター６０は情報処理装置の一例である。
【００３０】
コンピューター６０は、図３に示すように、ＣＰＵ６１と、ＲＡＭ６２と、ＲＯＭ６３と、通信インタフェース６４と、カメラユニット６５と、入力装置６６と、表示装置６７と、外部インタフェース６８と、ＨＤＤ６９と、センサー群７０などを備えており、それぞれがバスラインＢによって相互に接続されている。このコンピューター６０については、カメラユニット６５及びセンサー群７０を除き、図２に示すコンピューター５０と同じ構成である。
【００３１】
カメラユニット６５は、ＣＣＤやＣＯＭＳ等の撮像素子を有するカメラを用いて現実空間を撮影することによって撮像画像を生成する撮像装置である。
【００３２】
センサー群７０は、ジャイロセンサーやＧＰＳセンサーなどの各種センサーを含む検出器群である。ジャイロセンサーは、クライアント端末１０の向きや傾きを検出する角度検出センサーである。ＧＰＳセンサーは、ＧＰＳ衛星からの電波を検出する位置検出センサーである。
【００３３】
本実施形態に係るクライアント端末１０は、上述したハードウェア構成のコンピューター６０においてプログラムを実行することにより、後述するような各種処理を実現することができる。
【００３４】
＜＜ソフトウェア構成＞＞
＜サーバー装置＞
図４は、本実施形態に係るサーバー装置２０の一例を示す機能ブロック図である。本実施形態に係るサーバー装置２０は、例えば図４に示す機能ブロックにより実現される。
【００３５】
本実施形態に係るサーバー装置２０は、プログラムを実行することにより、サーバー制御部２００、サーバー記憶部２２０、及びサーバー通信部２４０を実現する。
【００３６】
サーバー制御部２００は、サーバー装置２０における各種処理を実行する機能を有する。このサーバー制御部２００は、ゲーム管理部２０１、及び出現設定部２０２を含む。
【００３７】
ゲーム管理部２０１は、クライアント端末１０から送信されたリクエストに応答して、クライアント端末１０にてユーザーが行うゲームの管理や制御を行なう。
【００３８】
出現設定部２０２は、ゲームをプレイするユーザーに対して出現させる出現キャラクターを設定する処理を実行する。本実施形態に係る出現設定部２０２は、ユーザーが現在位置する地域に対応付けられた出現キャラクターを設定する。
【００３９】
サーバー記憶部２２０は、各種ゲームに関する情報を記憶する機能を有する。このサーバー記憶部２２０は、キャラクター情報記憶部２２１、ユーザー情報記憶部２２２、出現キャラクター情報記憶部２２３、及びパターン画像情報記憶部２２４を含む。
【００４０】
キャラクター情報記憶部２２１は、コンテンツ情報記憶部の一例であって、コンテンツの一例としてのキャラクターに関するキャラクター情報（コンテンツ情報）を記憶している。キャラクター情報記憶部２２１が記憶するキャラクター情報は、以下に示す各種データによって構成されている。
【００４１】
図５は、キャラクター情報の一例を示す構成図である。図５に示すキャラクター情報は、項目としてキャラクターＩＤ、名称、獲得率、属性、レア度、能力パラメーター等を有する。キャラクターＩＤは、各種キャラクターを一意に識別するための情報である。名称は、キャラクター名を示す情報である。獲得率は、そのキャラクターを獲得できる確率を示す情報である。ここでは、レア度の高いキャラクターであるほど低い獲得率が設定されている。属性は、そのキャラクターが持つ属性を示す情報である。ここでは、現実空間の屋内で出現するキャラクターに対して「屋内」の属性が設定され、現実空間の屋外で出現するキャラクターに対して「屋外」の属性が設定されている。レア度は、キャラクターのレアリティ（希少価値）を示す情報である。ここでは、複数階級のレア度のうちのいずれかの階級が初期設定されている。本実施形態では、レア度「１」〜「５」までの５段階の設定が可能である。能力パラメーターは、キャラクターが持つ能力（レベル等）を示すパラメーター情報である。ここでは、各種パラメーターの初期値が設定されている。
【００４２】
ユーザー情報記憶部２２２は、ゲームをプレイする各ユーザーに関するユーザー情報を記憶している。ユーザー情報記憶部２２２が記憶するユーザー情報は、以下に示す各種データによって構成されている。
【００４３】
図６は、ユーザー情報の一例を示す構成図である。図６に示すユーザー情報は、項目としてユーザーＩＤ、ランク、所持キャラクター、ゲームポイント、回復アイテム等を有する。ユーザーＩＤは、ユーザーを一意に識別するための情報である。ランクは、現時点におけるユーザーのゲームレベルを示す情報である。所持キャラクターは、キャラクター情報記憶部２２１が記憶するキャラクター情報に設定された複数キャラクターのうち、現時点においてユーザーが獲得し所持する１又は複数の各種キャラクターを示す情報である。ここでは、図中にて括弧書きで示すように、現時点における所持キャラクターの能力パラメーターも併せて設定されている。ゲームポイントは、現時点においてユーザーが所持するポイント量を示す情報である。このゲームポイントは、ゲームプレイ時などに消費される。アイテムは、現時点においてユーザーが所持するアイテム数を示す情報である。
【００４４】
出現キャラクター情報記憶部２２３は、現実空間の地図上に対応付けて設定された仮想空間の出現キャラクターに関する出現キャラクター情報を記憶している。出現キャラクター情報記憶部２２３が記憶する出現キャラクター情報は、以下に示す各種データによって構成されている。
【００４５】
図７は、出現キャラクター情報の一例を示す構成図である。図７に示す出現キャラクター情報は、項目として地域ＩＤ、地域名、エリアデータ、出現キャラクター等を有する。地域ＩＤは、現実空間の地図全体を緯度・経度に基づいて一定の網目状に区分した地域を一意に識別するための情報である。地域名は、地域の名称を示す情報である。エリアデータは、その地域の範囲を緯度・経度などで示す情報である。出現キャラクターは、その地域にて出現可能に設定された１又は複数のキャラクターを示す情報である。
【００４６】
パターン画像情報記憶部２２４は、現実空間の様子をパターン化したパターン画像を記憶している。パターン画像情報記憶部２２４が記憶するパターン画像情報は、以下に示す各種データによって構成されている。
【００４７】
図８は、パターン画像情報の一例を示す構成図である。図８に示すパターン画像情報は、項目としてパターンＩＤ、属性、パターン画像等を有する。属性は、パターン画像の持つ属性を示す情報である。ここでは、現実空間の屋内をカメラで撮影したパターン画像に対して「屋内」の属性が設定され、現実空間の屋外をカメラで撮影したパターン画像に対して「屋外」の属性が設定されている。パターン画像は、現実空間の屋内・屋外をカメラで撮影した撮像画像である。ここでは、例えば絨毯、床などの屋内に関する様々なパターン画像や、例えば草むら、土、水などの屋外に関する様々なパターン画像が設定されている。
【００４８】
サーバー通信部２４０は、ネットワークＮを介してクライアント端末１０との通信を行う機能を有する。
【００４９】
＜クライアント端末＞
図９は、本実施形態に係るクライアント端末１０の一例を示す機能ブロック図である。本実施形態に係るクライアント端末１０は、例えば図９に示す機能ブロックにより実現される。
【００５０】
本実施形態に係るクライアント端末１０は、プログラムを実行することにより、クライアント制御部１００と、クライアント記憶部１２０と、クライアント通信部１４０と、操作受付部１５０と、画面表示部１６０を実現する。
【００５１】
クライアント制御部１００は、クライアント端末１０における各種処理を実行する機能を有する。このクライアント制御部１００は、ゲーム進行部１０１と、撮像画像取得部１０２と、撮影方向特定部１０３と、光源設定部１０４と、画像生成部１０５を含む。
【００５２】
ゲーム進行部１０１は、クライアント端末１０がユーザーから受け付けたゲーム操作に基づき、クライアント端末１０でプレイ可能な各種ゲームの進行を制御する。本実施形態に係るゲーム進行部１０１は、撮像画像に重畳表示される仮想空間のオブジェクトをユーザーがカメラの撮影方向を変えながら探し出すゲームの進行を制御する。
【００５３】
撮像画像取得部１０２は、現実空間のカメラ（クライアント端末１０が備えるカメラ）によって撮影された撮像画像を取得する。本実施形態に係る撮像画像取得部１０２は、ユーザーのゲームプレイ動作（オブジェクトを探し出すためにカメラの撮影方向を変える動作）を利用して、カメラによって撮影された様々な方向の撮像画像を取得する。
【００５４】
撮影方向特定部１０３は、撮影時におけるカメラの撮影方向を特定する。本実施形態に係る撮影方向特定部１０３は、角度検出センサーからの検出信号に基づいて、ユーザーによるゲームのプレイ動作時におけるカメラの撮影方向を特定する。
【００５５】
光源設定部１０４は、撮像画像取得部１０２によって取得された撮像画像、及び、撮影方向特定部１０３によって特定された撮影方向に基づいて、現実空間における光源の向きを決定し、仮想空間の平行光源の方向ベクトルを設定する。
【００５６】
画像生成部１０５は、カメラによって撮影された撮像画像に対し、仮想空間に配置されたオブジェクトを仮想カメラから見たときの仮想画像を重畳することにより、仮想空間のオブジェクトが現実空間に存在するかのような拡張現実画像をフレーム毎（例えば、１／６０秒毎）に生成する。また、画像生成部１０５は、光源処理などの補間処理や、オブジェクトにテクスチャをマッピングするための処理等も行なう。
【００５７】
クライアント記憶部１２０は、インストールされたアプリケーション（ゲームアプリ等）やクライアント端末１０において必要となる各種プログラム・データを記憶する。クライアント通信部１４０は、サーバー装置２０との通信を行う。画面表示部１６０は、画像生成部１０５によって生成された拡張現実画像を取得して画面表示を行う。
【００５８】
＜＜システム概要＞＞
本実施形態に係る情報処理システム１の概要について説明する。図１０は、拡張現実画像について説明する図である。
【００５９】
本実施形態に係る情報処理システム１にて提供されるゲームは、ＡＲ技術を利用したゲームである。そのため、図１０に示すように、撮像画像と仮想画像との重畳表示によって、仮想空間のキャラクターが現実空間に存在するかのような拡張現実画像が、ゲームをプレイするユーザーのクライアント端末１０に表示される。
【００６０】
本実施形態では、現実空間の様々な地域に対応付けて仮想空間の出現キャラクターが設定されている。そのため、ゲームをプレイするユーザーは、自分のクライアント端末１０を持ち歩きながら、出現キャラクターとの遭遇を期待しつつ、現実空間の様々な地域を移動する。
【００６１】
そして、ゲームをプレイするユーザーは、現実空間の地域において出現キャラクターと遭遇するために、クライアント端末１０が備えるカメラを様々な方向に向けて周囲を見ながら、その出現キャラクターを探す出す必要がある。
【００６２】
そのようにして探し出した結果、出現キャラクターに遭遇することができた場合には、例えば図１０に示すように、仮想空間の出現キャラクター５０２が現実空間の物体５０１と共に拡張現実画像としてクライアント端末１０に表示されることになる。
【００６３】
このような拡張現実画像がクライアント端末１０に表示された際に、仮想空間において光源から出現キャラクターへ照射される光の方向が現実空間のもの（現実空間の光源からから照射される光の方向）と異なると、光の当たり具合による出現キャラクターの陰影や色彩も現実空間のものと異なって表示されるため、ゲームをプレイするユーザーに対して違和感を与えてしまう。
【００６４】
そこで、本実施形態においては、ゲームをプレイするユーザーが出現キャラクターを探す出すためにクライアント端末１０のカメラを様々な方向に向けることになるので、このようなユーザーのゲームプレイ動作を利用して、例えばクライアント端末１０のカメラが撮影した現実空間の光源を含む撮像画像を取得する。そして、カメラがこの撮像画像を撮影したときのクライアント端末１０の姿勢（回転角）から、現実空間における光源の方向を決定する。そして、その決定された光源方向に基づき仮想空間に平行光源の方向ベクトルを設定することによって、現実空間における光の方向と仮想空間における光の方向が近似するようにした。これにより、このようにして設定された平行光源の方向ベクトルを用いて出現キャラクターの影などがレンダリングされることになるため、拡張現実画像がクライアント端末１０に表示された際には、ゲームをプレイするユーザーに対して与える違和感を低減することが可能となる。
【００６５】
＜＜動作＞＞
＜拡張現実画像の生成＞
図１１は、カメラ座標系、基準物体座標系、及びスクリーン座標系の関係を示す図である。
【００６６】
カメラを原点Ｏｃとする３次元座標（Ｘｃ、Ｙｃ、Ｚｃ）をカメラ座標系と表現し、物体を原点Ｏとする３次元座標（Ｘ、Ｙ、Ｚ）を基準物体座標系と表現し、投影面（スクリーン面）の中心を原点Ｏｓとする２次元座標（Ｘｓ、Ｙｓ）をスクリーン座標系と表現する。
【００６７】
カメラ座標系のＸｃＹｃ平面は、投影面（スクリーン面）と平行である。カメラ座標系のＺｃ方向は、投影面（スクリーン座標系の原点Ｏｓ）に垂直に下した方向であり、カメラの撮影方向に一致している。
【００６８】
カメラ座標系は、仮想空間の仮想カメラを原点とするビュー座標系に対応しており、カメラ座標系の原点に位置するカメラの撮影方向は、仮想カメラの視線方向に一致している。また、基準物体座標系は、仮想空間のオブジェクトが配置されるワールド座標系に対応している。すなわち、ＡＲ技術では、現実空間と仮想空間を対応させることで、仮想空間のオブジェクトが現実空間に存在するかのような表現が可能となる。
【００６９】
現実空間において基準となる物体（例えば、テーブルなど）をカメラで撮影することによって、その物体を撮像画像に含めることができる。ＡＲ技術では、このときの撮像画像について画像認識や空間認識を行なうことによって、カメラと物体の位置関係（つまり、カメラ座標系と基準物体座標系の位置関係）を算出することができる。
【００７０】
画像生成部１０５は、カメラと物体の位置関係から算出される座標変換行列を用いることにより、基準物体座標系（Ｘ、Ｙ、Ｚ）に配置させた仮想空間のオブジェクトをカメラ座標系（Ｘｃ、Ｙｃ、Ｚｃ）へ座標変換を行なう。さらに、カメラ座標系（Ｘｃ、Ｙｃ、Ｚｃ）に配置された仮想空間のオブジェクトをスクリーン座標系（Ｘｓ、Ｙｓ、Ｚｓ）へ座標変換を行なう。
【００７１】
このように座標変換を繰り返すことにより、仮想空間のオブジェクトを２次元画像（仮想画像）として生成することができる。そして、画像生成部１０５は、その生成された仮想空間のオブジェクトの仮想画像と、カメラによって撮像された物体の撮像画像を重畳することによって、図１０に示すような拡張現実画像を生成することが可能となる。
【００７２】
＜平行光源ベクトルの設定＞
［具体例１］
図１２は、平行光源ベクトルの設定に関する動作例（具体例１）を説明するフローチャートである。
【００７３】
クライアント端末１０の画像生成部１０５は、ゲームアプリが起動されると、カメラの撮影方向を変えながら出現キャラクターを探し出すゲームの開始をユーザーに知らせるゲーム画面を生成して画面表示部１６０に表示させる（ステップＳ１１）。
【００７４】
次に、クライアント端末１０の撮像画像取得部１０２は、この出現キャラクターを探し出すゲームのプレイ動作（出現キャラクターを探し出すためにカメラの撮影方向を変える動作）がユーザーによって行われている際に、ゲームをプレイするユーザーの周囲環境（現実空間）をカメラが撮影した撮像画像を取得する（ステップＳ１２）。
【００７５】
ここでは、例えば、上記のゲーム画面からカメラ画面に切り替わったタイミングで最初の撮像画像を取得する。なお、上記のゲーム画面からカメラ画面に切り替えるユーザーの操作が行われた際に、撮像画像を取得してもよい。また、ゲームアプリ起動後から所定時間経過後の撮像画像や、出現キャラクターが設定されている地域にユーザーが位置してから所定時間経過後の撮像画像を取得してもよい。
【００７６】
次に、クライアント端末１０の撮影方向特定部１０３は、ジャイロセンサーからの検出信号に基づいて、ステップＳ１２の処理においてカメラが撮影したときのカメラの回転角度を特定する（ステップＳ１３）。
【００７７】
ここでは、ジャイロセンサーからの検出信号に基づいて、カメラ座標系（Ｘｃ、Ｙｃ、Ｚｃ）におけるＸｃ方向を軸とする回転角度α（Ｘｃ軸周りの角度α）と、Ｙｃ方向を軸とする回転角度β（Ｙｃ軸周りの角度β）と、Ｚｃ方向を軸とする回転角度γ（Ｚｃ軸周りの角度γ）を特定する。
【００７８】
次に、クライアント端末１０の光源設定部１０４は、ステップＳ１３の処理において特定したカメラの回転角度に基づいて、カメラの撮影方向が上向きであるか否かを判定する（ステップＳ１４）。
【００７９】
例えば、Ｘｃ軸周りの角度αが１〜１７９度までの範囲であれば、カメラの撮影方向が上向きであると判定し、それ以外の範囲であれば、カメラの撮影方向が下向き又は水平であると判定する。その他、Ｘｃ軸周りの角度αが４５〜１３５度までの範囲であれば、カメラの撮影方向が上向きであると判定し、それ以外の範囲であれば、カメラの撮影方向が下向き又はほぼ水平であると判定してもよい。
【００８０】
次に、クライアント端末１０の光源設定部１０４は、カメラの撮影方向が上向きであると判定した場合には（ステップＳ１４：ＹＥＳ）、撮像画像に対応する各画素のＲＧＢ値を用いて各画素の輝度値を求め、その輝度値が所定の閾値（高輝度画素判定用の閾値）を超える高輝度画素が撮像画像に含まれているか否かを判定する（ステップＳ１５）。
【００８１】
カメラの撮影方向が上向きである場合には、カメラが撮影した撮像画像の中に現実空間の光源が含まれている可能性が高い。そして、撮像画像の中に現実空間の光源が含まれている場合には、その画像領域に対応する画素の輝度値は極めて高くなるので、高輝度画素として抽出することができる。
【００８２】
次に、クライアント端末１０の光源設定部１０４は、カメラが撮影した撮像画像の中に高輝度画素が含まれていると判定された場合には（ステップＳ１５：ＹＥＳ）、ステップＳ１３の処理において特定したカメラの回転角度に基づいて、カメラ座標系の原点から現実空間の光源へ向かう光源方向ベクトルを決定する（ステップＳ１６）。
【００８３】
図１３は、カメラの撮影方向が上向きである場合の光源方向ベクトルについて説明する図である。ここでは、図１３に示すように、カメラの撮影方向が上向きであるときのカメラ座標系（Ｘ'ｃ、Ｙ'ｃ、Ｚ'ｃ）は、元のカメラ座標系（Ｘｃ、Ｙｃ、Ｚｃ）をＸｃ軸周りの角度α（反時計回り）だけ傾けたものであったものとする。この場合には、このカメラ座標系（Ｘ'ｃ、Ｙ'ｃ、Ｚ'ｃ）におけるＺ'ｃ方向は、上向きに傾いたときのカメラの撮影方向となる。そのため、このカメラの撮影方向から見える視界には、現実空間の光源が存在することになるので、その撮影方向の方向ベクトルを光源方向ベクトルとして決定する。
【００８４】
次に、クライアント端末１０の光源設定部１０４は、このようにして決定された光源方向ベクトルを用いて、仮想空間における平行光源ベクトル（光源が無限遠に存在すると仮定した場合の平行光源から放射される平行光の方向ベクトル）を設定する（ステップＳ１７）。ここでは、光源方向ベクトルの逆ベクトルを正規化したものを、仮想空間における平行光源ベクトルとして設定する。
【００８５】
その一方で、クライアント端末１０は、カメラが撮影した撮像画像の中に高輝度画素が含まれていないと判定された場合には（ステップＳ１５：ＮＯ）、上述したステップＳ１２の処理に戻り、所定のタイミングでカメラが再び撮影した他の撮像画像を取得して、それ以降の処理を繰り返し行う。
【００８６】
次に、クライアント端末１０の光源設定部１０４は、上述したステップＳ１４の処理においてカメラの撮影方向が上向きでない（つまり、カメラの撮影方向が下向き又は水平である）と判定した場合には（ステップＳ１４：ＮＯ）、撮像画像に対応する各画素のＲＧＢ値を用いて各画素の輝度値を求め、その輝度値が所定の閾値（低輝度画素判定用の閾値）まで達しない低輝度画素が撮像画像に含まれているか否かを判定する（ステップＳ１８）。
【００８７】
カメラの撮影方向が下向き又は水平である場合には、カメラが撮影した撮像画像の中に現実空間の光源が含まれている可能性が低いが、現実空間に存在する物体の影が含まれている可能性が高い。そして、撮像画像の中に現実空間の影が含まれている場合には、その画像領域に対応する画素の輝度値は極めて低くなるので、低輝度画素として抽出することができる。また、撮像画像が現実空間の光源の真逆の方向を撮影した撮像画像である場合にも、その撮像画像に対応する何れかの画素の輝度値は極めて低くなるので、低輝度画素として抽出することができる。
【００８８】
次に、クライアント端末１０の光源設定部１０４は、カメラが撮影した撮像画像の中に低輝度画素が含まれていると判定された場合には（ステップＳ１８：ＹＥＳ）、ステップＳ１３の処理において特定したカメラの回転角度に基づいて、カメラ座標系の原点から現実空間の影へ向かう影方向ベクトルを決定する（ステップＳ１９）。
【００８９】
図１４は、カメラの撮影方向が下向きである場合の影方向ベクトル及び光源方向ベクトルについて説明する図である。ここでは、図１４に示すように、カメラの撮影方向が下向きであるときのカメラ座標系（Ｘ'ｃ、Ｙ'ｃ、Ｚ'ｃ）は、元のカメラ座標系（Ｘｃ、Ｙｃ、Ｚｃ）をＸｃ軸周りの角度α（時計回り）だけ傾けたものであったものとする。この場合には、このカメラ座標系（Ｘ'ｃ、Ｙ'ｃ、Ｚ'ｃ）におけるＺ'ｃ方向は、下向きに傾いたときのカメラの撮影方向となる。そのため、このカメラの撮影方向から見える視界には、現実空間の影が存在することになるので、その撮影方向の方向ベクトルを影方向ベクトルとして決定する。
【００９０】
次に、クライアント端末１０の光源設定部１０４は、このようにして影方向ベクトルが決定されると、その決定された影方向ベクトルを用いて、カメラ座標系の原点から現実空間の光源へ向かう光源方向ベクトルを決定する（ステップＳ１６）。
【００９１】
ここでは、図１４に示すように、上述したステップ１９の処理によって決定された影方向ベクトルをＸｃＺｃ平面に投影した投影ベクトルを求め、さらにその投影ベクトルをＸｃ軸周り（反時計回り）に１８０度回転させた回転ベクトルを求める。その後、その回転ベクトルをＸｃ軸周り（時計回り）の一定角度θ（例えば、８０度）だけ回転させた方向ベクトルを光源方向ベクトルとして決定する。つまり、影方向ベクトルと光源方向ベクトルが、互いにほぼ反対方向を向くように設定されることになる。
【００９２】
次に、クライアント端末１０の光源設定部１０４は、このようにして決定された光源方向ベクトルを用いて、仮想空間における平行光源ベクトル（光源が無限遠に存在すると仮定した場合の平行光源から放射される平行光の方向ベクトル）を設定する（ステップＳ１７）。ここでは、光源方向ベクトルの逆ベクトルを正規化したものを、仮想空間における平行光源ベクトルとして設定する。
【００９３】
その一方で、クライアント端末１０は、カメラが撮影した撮像画像の中に低輝度画素が含まれていないと判定された場合には（ステップＳ１８：ＮＯ）、上述したステップＳ１２の処理に戻り、所定のタイミングでカメラが再び撮影した他の撮像画像を取得して、それ以降の処理を繰り返し行う。
【００９４】
このようにして仮想空間に設定された平行光源ベクトルを用いてシャドウマッピングを行なうことで、出現キャラクターに対して影をつけたり、またこの平行光源ベクトルと出現キャラクターを構成するポリゴンの各頂点に設定された法線ベクトルとの内積を求め、各頂点の内積に応じて各頂点の頂点色を設定したりすることで、仮想空間の出現キャラクターに対して現実空間の光源に応じた色彩や陰影をつけることができるようになる。
【００９５】
そのため、撮像画像と仮想画像を重畳した拡張現実画像がクライアント端末１０に表示されたとしても、出現キャラクターの陰影や色彩が現実空間のもの（現実空間の物体の陰影や色彩）に近似するようになるので、ゲームをプレイするユーザーに対して与える違和感を低減することが可能となる。
【００９６】
［具体例２］
図１５は、平行光源ベクトルの設定に関する動作例（具体例２）を説明するフローチャートである。図１６は、撮影時の撮影データの一例を示す構成図である。この具体例２では、撮像画像の中に現実空間の光源や影が含まれていない場合であっても、平行光源ベクトルを設定することができるため、何時までも出現キャラクターが表示できないという状況に陥ることがない。
【００９７】
図１５に示すように、先ず、クライアント端末１０の画像生成部１０５は、ゲームアプリが起動されると、カメラの撮影方向を変えながら出現キャラクターを探し出すゲームの開始をユーザーに知らせるゲーム画面を生成して画面表示部１６０に表示させる（ステップＳ３１）。
【００９８】
次に、クライアント端末１０の撮像画像取得部１０２は、この出現キャラクターを探し出すゲームのプレイ動作（出現キャラクターを探し出すためにカメラの撮影方向を変える動作）がユーザーによって行われている際に、ゲームをプレイするユーザーの周囲環境（現実空間）をカメラが撮影した撮像画像を取得する（ステップＳ３２）。
【００９９】
ここでは、例えば、上記のゲーム画面からカメラ画面に切り替わったタイミングで撮像画像の取得を開始する。なお、上記のゲーム画面からカメラ画面に切り替えるユーザーの操作が行われた際に、撮像画像の取得を開始してもよい。
【０１００】
次に、クライアント端末１０の撮影方向特定部１０３は、ジャイロセンサーからの検出信号に基づいて、ステップＳ３２の処理においてカメラが撮影したときのカメラの回転角度を特定する（ステップＳ３３）。
【０１０１】
ここでは、ジャイロセンサーからの検出信号に基づいて、カメラ座標系（Ｘｃ、Ｙｃ、Ｚｃ）におけるＸｃ方向を軸とする回転角度α（Ｘｃ軸周りの角度α）と、Ｙｃ方向を軸とする回転角度β（Ｙｃ軸周りの角度β）と、Ｚｃ方向を軸とする回転角度γ（Ｚｃ軸周りの角度γ）を特定する。
【０１０２】
次に、クライアント端末１０の光源設定部１０４は、上述したステップＳ３２の処理によって取得された撮像画像と、上述したステップＳ３３の処理によって特定されたカメラの回転角度を関連付けて、クライアント記憶部１２０に記憶する（ステップＳ３４）。
ここでは、図１６に示すように、撮像画像とカメラと回転角度を関連付けて撮影時刻毎にクライアント記憶部１２０に記憶する。すなわち、ユーザーによるゲームプレイ動作が継続している際、そのユーザーの周囲環境を一定時間（例えば、１／６０秒）ごとにカメラで繰り返し撮影すると共に、撮影時刻に対応付けて各々の撮像画像とカメラの回転角度などを撮影データとしてクライアント記憶部１２０に記憶している。
【０１０３】
次に、クライアント端末１０の光源設定部１０４は、所定条件が成立したか否かを判定する（ステップＳ３５）。
【０１０４】
本実施形態では、例えば、ゲームアプリが起動してから所定時間が経過したことを所定条件とすることができる。また例えば、出現キャラクターが設定されたいずれかの地域にユーザーが位置してから所定時間が経過したことを所定条件とすることもできる。他にも例えば、出現キャラクターの出現場所を見つけたユーザーが出現キャラクターを表示するための操作を行ったことを所定条件とすることもできる。
【０１０５】
次に、クライアント端末１０の光源設定部１０４は、所定条件が成立していないと判定した場合には（ステップＳ３５：ＮＯ）、上述したステップＳ３２の処理に戻り、再びカメラが撮影した他の撮像画像を取得して、それ以降の処理を繰り返し行う。
その一方で、クライアント端末１０の光源設定部１０４は、所定条件が成立したと判定した場合には（ステップＳ３５：ＹＥＳ）、これまでに取得された撮像画像の中で最も輝度値が高い画素が含まれる撮影画像を特定する（ステップＳ３６）。
【０１０６】
具体的には、クライアント端末１０の光源設定部１０４は、図１６に示す撮影データを参照して、これまでに取得された撮像画像毎に、撮像画像に対応する各画素のＲＧＢ値を用いて各画素の輝度値を求める。そして、その複数の撮像画像の中から、その輝度値が最も高い最高輝度画素を含んだ撮像画像を特定する。
【０１０７】
次に、クライアント端末１０の光源設定部１０４は、上述したステップＳ３６の処理において特定した最高輝度画素を含んだ撮像画像の撮影時におけるカメラの回転角度に基づいて、カメラの撮影方向が上向きであるか否かを判定する（ステップＳ３７）。
【０１０８】
例えば、Ｘｃ軸周りの角度αが１〜１７９度までの範囲であれば、カメラの撮影方向が上向きであると判定し、それ以外の範囲であれば、カメラの撮影方向が下向き又は水平であると判定する。その他、Ｘｃ軸周りの角度αが４５〜１３５度までの範囲であれば、カメラの撮影方向が上向きであると判定し、それ以外の範囲であれば、カメラの撮影方向が下向き又はほぼ水平であると判定してもよい。
【０１０９】
次に、クライアント端末１０の光源設定部１０４は、カメラの撮影方向が上向きであると判定した場合には（ステップＳ３７：ＹＥＳ）、上述したステップＳ３３の処理において特定したカメラの回転角度に基づいて、カメラ座標系の原点から現実空間の光源へ向かう光源方向ベクトルを決定する（ステップＳ３８）。ここでは、図１２に示すステップＳ１６の処理と同様にして処理する。
【０１１０】
次に、クライアント端末１０の光源設定部１０４は、上述したステップＳ３８の処理によって決定された光源方向ベクトルを用いて、仮想空間における平行光源ベクトル（光源が無限遠に存在すると仮定した場合の平行光源から放射される平行光の方向ベクトル）を設定する（ステップＳ３９）。ここでは、図１２に示すステップＳ１７の処理と同様にして処理する。
【０１１１】
その一方で、クライアント端末１０の光源設定部１０４は、上述したステップＳ３７の処理においてカメラの撮影方向が上向きでない（つまり、カメラの撮影方向が下向き又は水平である）と判定した場合には（ステップＳ３７：ＮＯ）、これまでに取得された撮像画像の中で最も輝度値が低い画素が含まれる撮影画像を特定する（ステップＳ４０）。
【０１１２】
具体的には、クライアント端末１０の光源設定部１０４は、図１６に示す撮影データを参照して、これまでに取得された撮像画像毎に、撮像画像に対応する各画素のＲＧＢ値を用いて各画素の輝度値を求める。そして、その複数の撮像画像の中から、その輝度値が最も低い最低輝度画素を含んだ撮像画像を特定する。
【０１１３】
次に、クライアント端末１０の光源設定部１０４は、上述したステップＳ３３の処理において特定したカメラの回転角度に基づいて、カメラ座標系の原点から現実空間の影へ向かう影方向ベクトルを決定する（ステップＳ４１）。ここでは、図１２に示すステップＳ１９の処理と同様にして処理する。
【０１１４】
次に、クライアント端末１０の光源設定部１０４は、上述したステップＳ４２の処理によって決定された影方向ベクトルを用いて、カメラ座標系の原点から現実空間の光源へ向かう光源方向ベクトルを決定する（ステップＳ３９）。ここでは、図１２に示すステップＳ１６の処理と同様にして処理する。
【０１１５】
このようにして仮想空間に設定された平行光源ベクトルを用いてシャドウマッピングを行なうことで、出現キャラクターに対して影をつけたり、またこの平行光源ベクトルと出現キャラクターを構成するポリゴンの各頂点に設定された法線ベクトルとの内積を求め、各頂点の内積に応じて各頂点の頂点色を設定したりすることで、仮想空間の出現キャラクターに対して現実空間の光源に応じた色彩や陰影をつけることができるようになる。
【０１１６】
そのため、撮像画像と仮想画像を重畳した拡張現実画像がクライアント端末１０に表示されたとしても、出現キャラクターの陰影や色彩が現実空間のもの（現実空間の物体の陰影や色彩）に近似するようになるので、ゲームをプレイするユーザーに対して与える違和感を低減することが可能となる。
【０１１７】
［具体例３］
図１７は、平行光源ベクトルの設定に関する動作例（具体例３）を説明するフローチャートである。なお以下では、図１７に示すステップＳ５１〜ステップＳ５５までの処理は、図１５に示すステップＳ３１〜ステップＳ３５までの処理と同じであるため、具体的な説明を省略する。この具体例３では、撮像画像の中に現実空間の光源や影が含まれていない場合であっても、平行光源ベクトルを設定することができるため、何時までも出現キャラクターが表示できないという状況に陥ることがない。
【０１１８】
クライアント端末１０の光源設定部１０４は、所定条件が成立したと判定した場合には（ステップＳ５５：ＹＥＳ）、これまでに取得された撮像画像の中で最も輝度値が高い画素が含まれる撮影画像（第１撮像画像）を特定する（ステップＳ５６）。ここでは、図１５に示すステップＳ３６の処理と同様にして処理する。
【０１１９】
次に、クライアント端末１０の光源設定部１０４は、上述したステップＳ５６の処理において特定した最高輝度画素を含んだ撮像画像の撮影時におけるカメラの回転角度に基づいて、カメラ座標系の原点から撮影方向へ向かう明方向ベクトルを決定する（ステップＳ５７）。
【０１２０】
図１８は、明方向ベクトル、暗方向ベクトル、及び平行光源ベクトルについて説明する図である。ここでは、図１６に示す撮影データに基づき、最高輝度画素を含んだ撮像画像の撮影時が撮影時刻Ｔ１であったものとする。そして、図１８に示すように、撮影時刻Ｔ１のときのカメラ座標系（Ｘ'ｃ、Ｙ'ｃ、Ｚ'ｃ）は、元のカメラ座標系（Ｘｃ、Ｙｃ、Ｚｃ）をＸｃ軸周りの角度α１（反時計回り）だけ傾けたものであったものとする。この場合には、このカメラ座標系（Ｘ'ｃ、Ｙ'ｃ、Ｚ'ｃ）におけるＺ'ｃ方向は、上向きに傾いたときのカメラの撮影方向となる。そのため、このカメラの撮影方向から見える視界には、現実空間の明るい空間や物体が存在することになるので、その撮影方向の方向ベクトルを明方向ベクトルとして決定する。
【０１２１】
次に、クライアント端末１０の光源設定部１０４は、これまでに取得された撮像画像の中で最も輝度値が低い画素が含まれる撮影画像（第２撮像画像）を特定する（ステップＳ５８）。ここでは、図１５に示すステップＳ４０の処理と同様にして処理する。
【０１２２】
次に、クライアント端末１０の光源設定部１０４は、上述したステップＳ５６の処理において特定した最低輝度画素を含んだ撮像画像の撮影時におけるカメラの回転角度に基づいて、カメラ座標系の原点から撮影方向へ向かう暗方向ベクトルを決定する（ステップＳ５９）。
【０１２３】
ここでは、図１６に示す撮影データに基づき、最低輝度画素を含んだ撮像画像の撮影時が撮影時刻Ｔ２であったものとする。そして、図１８に示すように、撮影時刻Ｔ２のときのカメラ座標系（Ｘ“ｃ、Ｙ“ｃ、Ｚ“ｃ）は、元のカメラ座標系（Ｘｃ、Ｙｃ、Ｚｃ）をＸｃ軸周りの角度α２（時計回り）だけ傾けたものであったものとする。この場合には、このカメラ座標系（Ｘ“ｃ、Ｙ“ｃ、Ｚ“ｃ）におけるＺ“ｃ方向は、下向きに傾いたときのカメラの撮影方向となる。そのため、このカメラの撮影方向から見える視界には、現実空間の暗い空間や物体が存在することになるので、その撮影方向の方向ベクトルを暗方向ベクトルとして決定する。
【０１２４】
次に、クライアント端末１０の光源設定部１０４は、上述したステップＳ５７の処理によって決定された明方向ベクトルと、上述したステップＳ５９の処理によって決定された暗方向ベクトルを用いて、仮想空間における平行光源ベクトル（光源が無限遠に存在すると仮定した場合の平行光源から放射される平行光の方向ベクトル）を設定する（ステップＳ６０）。
【０１２５】
ここでは、図１８に示すように、上述したステップＳ５９の処理によって決定された暗方向ベクトルと、上述したステップＳ５７の処理によって決定された明方向ベクトルとの差を算出することによって、平行光源ベクトルを設定する。このように、現実空間の光源から放射される光が明るい所から暗い所へ向かって進行することから推測して、仮想空間の平行光源ベクトルを設定することができる。
【０１２６】
このようにして仮想空間に設定された平行光源ベクトルを用いてシャドウマッピングを行なうことで、出現キャラクターに対して影をつけたり、またこの平行光源ベクトルと出現キャラクターを構成するポリゴンの各頂点に設定された法線ベクトルとの内積を求め、各頂点の内積に応じて各頂点の頂点色を設定したりすることで、仮想空間の出現キャラクターに対して現実空間の光源に応じた色彩や陰影をつけることができるようになる。
【０１２７】
そのため、撮像画像と仮想画像を重畳した拡張現実画像がクライアント端末１０に表示されたとしても、出現キャラクターの陰影や色彩が現実空間のもの（現実空間の物体の陰影や色彩）に近似するようになるので、ゲームをプレイするユーザーに対して与える違和感を低減することが可能となる。
【０１２８】
＜出現キャラクターの設定＞
図１９は、出現キャラクターの設定に関する動作例を説明するフローチャートである。
【０１２９】
クライアント端末１０のゲーム進行部１０１は、ゲームアプリが起動されると、ゲームをプレイするユーザーの周囲環境をカメラが撮影した撮像画像を取得する共に、ＧＰＳセンサーがＧＰＳ衛星からの電波を検出することによって自分の位置情報を取得すると、その取得された撮像画像と位置情報をサーバー装置２０に送信する（ステップＳ２１）。
【０１３０】
サーバー装置２０のゲーム管理部２０１は、クライアント端末１０から送信された撮像画像と位置情報を受信すると、出現キャラクターを設定する処理を出現設定部２０２に対して依頼する。サーバー装置２０の出現設定部２０２は、ゲーム管理部２０１からの依頼を受けると、出現キャラクター情報記憶部２２３が記憶する出現キャラクター情報を参照して、その受信したクライアント端末１０の位置情報からクライアント端末１０が現在位置する地域を特定する（ステップＳ２２）。
【０１３１】
サーバー装置２０の出現設定部２０２は、クライアント端末１０が現在位置する地域を特定すると、出現キャラクター情報記憶部２２３が記憶する出現キャラクター情報を参照して、その特定された地域に対応付けられた出現キャラクターを取得する。そして、キャラクター情報記憶部２２１が記憶するキャラクター情報に設定された複数のキャラクターの中から、その特定された地域の出現キャラクターを抽出する（ステップＳ２３）。
【０１３２】
サーバー装置２０の出現設定部２０２は、そのクライアント端末１０から受信した撮像画像、及び、パターン画像情報記憶部２２４が記憶するパターン画像情報を参照して、ゲームをプレイするユーザーの周囲環境に合った属性（屋内・屋外）を特定する（ステップＳ２４）。
【０１３３】
ここでは、クライアント端末１０から受信した撮像画像を解析して、パターン画像情報に設定された各種のパターン画像との一致度に基づいて、ゲームをプレイするユーザーの周囲環境に合った属性を特定する。例えば、撮像画像を解析した結果、「草むら」のパターン画像との一致度が極めて高い場合には、ユーザーの周囲環境が「屋外」であるものとして特定する。
【０１３４】
サーバー装置２０の出現設定部２０２は、このようにしてゲームをプレイするユーザーの周囲環境に合った属性が特定されると、キャラクター情報記憶部２２１が記憶するキャラクター情報を参照して、上述したステップＳ２３の処理によって抽出された出現キャラクターの中から、上述したステップＳ２４の処理によって特定された属性と同じ属性を持つ出現キャラクターを選択し、そのユーザーが現在位置する地域の出現キャラクターとして設定する（ステップＳ２５）。
【０１３５】
その後、サーバー装置２０の出現設定部２０２は、その設定された出現キャラクターのキャラクター情報を、ゲームをプレイするユーザーのクライアント端末１０に送信する。そして、クライアント端末１０のゲーム進行部１０１は、サーバー装置２０から送信された出現キャラクターのキャラクター情報を受信すると、その出現キャラクターを拡張現実画像として表示させる前に先立って、出現キャラクターの獲得率に基づきユーザーに獲得させるか否かの事前決定を行なう。
【０１３６】
なお、クライアント端末１０のゲーム進行部１０１は、ユーザーに獲得させると決定された場合には、ユーザーが出現キャラクターを見つけたことを条件として、その出現キャラクターをユーザーに獲得させてもよい。また、クライアント端末１０のゲーム進行部１０１は、ユーザーに獲得させると決定された場合には、ユーザーが出現キャラクターを見つけ、さらに捕まえるためのアイテムを使用したことを条件として、その出現キャラクターをユーザーに獲得させてもよい。
【０１３７】
このように、ゲームをプレイするユーザーは、自分のクライアント端末１０を持ち歩きながら或る地域内に移動すると、そのときのユーザーの周囲環境に合った属性を持つ出現キャラクターと遭遇することが可能となる。
【０１３８】
＝＝＝その他の実施形態＝＝＝
前述の実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。また、前述の各具体例は、適宜組合せてもよい。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。特に、以下に述べる実施形態であっても、本発明に含まれるものである。
【０１３９】
＜出現キャラクターの獲得＞
前述の実施形態では、出現キャラクターに設定された獲得率に基づいて、その出現キャラクターをユーザーが獲得できるか否かを決定する場合を例に挙げて説明したが、本発明はこれに限定されるものではない。例えば、出現キャラクターとの対戦で勝利したことを条件として、その出現キャラクターをユーザーに獲得させてもよい。
【０１４０】
＜カメラの撮影方向＞
前述の実施形態（具体例１、具体例２）では、平行光源ベクトルを設定するにあたり、カメラの撮影方向が上向きであるか、又は、下向き（又は水平）であるか否かを判定した上で、それぞれの判定結果に合わせて異なる処理を実行する場合を例に挙げて説明したが、本発明はこれに限定されるものではない。例えば、かかる判定を省略して、カメラの撮影方向がどの向きであるか否かに関わらず同じ処理を実行してもよい。
【０１４１】
＜出現キャラクターの表示＞
前述の実施形態では、本願発明の特徴的な方法によって仮想空間に平行光源ベクトルを設定することによって、例えばシャドウマッピングを行なった際に、仮想空間の出現キャラクターに対して現実空間の光源に応じた色彩や陰影をつけることができるようになる。すなわち、仮想空間に平行光源ベクトルを設定した後に、現実空間の光源に応じた色彩や陰影がつけられた仮想空間の出現キャラクターを含む拡張現実画像がクライアント端末１０に表示されることになる。
【符号の説明】
【０１４２】
１  情報処理システム
１０  クライアント端末
２０  サーバー装置
５０  コンピューター
５１  ＣＰＵ
５２  ＲＡＭ
５３  ＲＯＭ
５４  通信インタフェース
５５  入力装置
５６  表示装置
５７  外部インタフェース
５８  ＨＤＤ
６０  コンピューター
６１  ＣＰＵ
６２  ＲＡＭ
６３  ＲＯＭ
６４  通信インタフェース
６５  カメラユニット
６６  入力装置
６７  表示装置
６８  外部インタフェース
６９  ＨＤＤ
７０  センサー群
１００  クライアント制御部
１０１  ゲーム進行部
１０２  撮像画像取得部
１０３  撮影方向特定部
１０４  光源設定部
１０５  画像生成部
１２０  クライアント記憶部
１４０  クライアント通信部
１５０  操作受付部
１６０  画面表示部
２００  サーバー制御部
２０１  ゲーム管理部
２０２  出現設定部
２２０  サーバー記憶部
２２１  キャラクター情報記憶部
２２２  ユーザー情報記憶部
２２３  出現キャラクター情報記憶部
２２４  パターン画像情報記憶部
２４０  サーバー通信部
５０１  物体
５０２  出現キャラクター
Ｂ  バスライン
Ｎ  ネットワーク
【図１】
2019212062.tif 000003
【図２】
2019212062.tif 000004
【図３】
2019212062.tif 000005
【図４】
2019212062.tif 000006
【図５】
2019212062.tif 000007
【図６】
2019212062.tif 000008
【図７】
2019212062.tif 000009
【図８】
2019212062.tif 000010
【図９】
2019212062.tif 000011
【図１０】
2019212062.tif 000012
【図１１】
2019212062.tif 000013
【図１２】
2019212062.tif 000014
【図１３】
2019212062.tif 000015
【図１４】
2019212062.tif 000016
【図１５】
2019212062.tif 000017
【図１６】
2019212062.tif 000018
【図１７】
2019212062.tif 000019
【図１８】
2019212062.tif 000020
【図１９】
2019212062.tif 000021