以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素を均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
(実施形態1)
図1は、本発明の実施形態に係るゲーム装置が実現される典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
情報処理装置100は、CPU(Central Processing Unit)101と、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、インターフェース104と、コントローラ105と、外部メモリ106と、画像処理部107と、DVD−ROM(Digital Versatile Disc ROM)ドライブ108と、NIC(Network Interface Card)109と、音声処理部110と、を備える。
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態のゲーム装置等が実現される。
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行う、また、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
インターフェース104を介して接続されたコントローラ105は、ユーザがゲーム実行の際に行う操作入力を受け付ける。例えばコントローラ105には、上下左右を示す操作入力を行うのに利用される方向ボタンや、決定操作、取消操作、メニュー表示などの指示入力を行うためのボタンが、その表面の所定の位置に配置される。これら各ボタンには圧力センサが配備され、いずれのボタンが押圧操作されているかを検知することができる。ユーザは、コントローラ105に配置されたこのような各ボタンを押圧操作することで、情報処理装置100への操作指示を入力する。なお、このような操作入力を受け付けるコントローラ105は、本図に示されたような両手で把持し、主に指でボタンを押圧するタイプのものに限らず、操作入力が可能なものであればよい。例えばコントローラ105は、片手で把持するタイプのものや、レバーによる方向入力が可能なアナログスティックを備えたもの、あるいは操作入力部が表示部に重畳されたいわゆるタッチパネル形式のもの等であってもよい。
インターフェース104を介して着脱自在に接続された外部メモリ106には、ゲーム等のプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ108は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
画像処理部107は、DVD−ROMから読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部107が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部107に接続されるモニタ(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画したりすることが可能である。フォント情報は、ROM 102に記録されているが、DVD−ROMに記録された専用のフォント情報を利用することも可能である。
NIC 109は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
音声処理部110は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
音声処理部110では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ108に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
また、ユーザからの文字列の編集入力を受け付けるためのキーボードや、各種の位置の指定および選択入力を受け付けるためのマウスなどを接続する形態も採用することができる。また、本実施形態の情報処理装置100にかえて、汎用のパーソナルコンピュータを利用することもできる。
以上で説明した情報処理装置100は、いわゆる「コンシューマ向けテレビゲーム装置」に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明を実現することが可能である。
例えば、一般的なコンピュータは、上記情報処理装置100と同様に、CPU、RAM、ROM、DVD−ROMドライブ、及び、NICを備え、情報処理装置100よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ105ではなく、キーボードやマウスなどを入力装置として利用する。
図2は、本発明のゲーム装置に係る概要構成を示す模式図である。本発明のゲーム装置200は、典型的には上述した情報処理装置100によって実現される。以下、本図を参照して概要構成を説明する。
ゲーム装置200は、仮想空間内にキャラクタとオブジェクトとが配置されるゲームを提供し、取得部201、設定部202、生成部203、表示部204、移動部205を備える。ここでキャラクタとは、ゲームに登場する、例えば人や動物、あるいは怪物などの姿をした構成要素であり、オブジェクトとは、ゲームを構成する、例えば建物、樹木、柱、車、ボール、本などの種々の有体物である。このようなオブジェクトが種々に配置された仮想空間内を、プレイヤに操作された、あるいはあらかじめ用意された設定に基づいてキャラクタが様々に動くことで、ゲームが進行する。
なお、ゲーム装置200は、記憶部や受付部等も適宜備えてもよい。ここで、記憶部は、例えばRAM 103等の機能によって実現され、現在時刻、プレイヤが行った入力の内容、入力の時刻等を記憶する。また、受付部は、例えばインターフェース104を介して接続されたコントローラ105の機能によって実現され、プレイヤからの操作の入力を受け付ける。
取得部201は、視点位置とすべき位置を取得する。すなわち取得部201は、仮想空間内のキャラクタやオブジェクトの様子を表す画像を生成するための基準となる視点の位置とすべき位置を、ゲームの進行に合わせて順次取得する。さらに取得部201は、キャラクタの部位が所定の隠蔽条件を満たしている場合、オブジェクトが視点位置と所定の隠蔽条件を満たすキャラクタの部位(以下「隠蔽部位」という。)の位置とを結ぶ線分上に位置するように、視点位置とすべき位置を取得する。すなわち取得部201は、例えばキャラクタの腕、胴、頭などの体の部位が、切断されるなどによって、画像としてプレイヤに見せるべきでないような残虐な態様になっている場合は、キャラクタの部位が所定の隠蔽条件を満たしていると判断する。そして、当該隠蔽条件を満たしていると判断された場合、取得部201は、オブジェクトが視点の位置と隠蔽部位(切断されたキャラクタの腕など)の位置とを結ぶ線分上に位置することで当該隠蔽部位がオブジェクトの陰に隠れて見えなくなるような位置を、視点位置とすべき位置として取得する。取得された位置は、設定部202へと供給される。このような取得部201は、例えばCPU 101がROM 102やRAM 103等と協働することで実現される。
設定部202は、取得された位置に視点位置を設定する。すなわち、設定部202は、取得部201によって取得された仮想空間内の視点位置とすべき位置に、視点位置を設定する。例えば、取得された位置がそれまでの視点の位置と異なる場合、設定部202は視点を取得された位置にまで移動させることになる。このように設定された視点は、生成部203へと供給される。このような設定部202は、例えばCPU 101がROM 102やRAM 103等と協働することで実現される。
生成部203は、設定された視点位置から、仮想空間を見た様子を表す画像を生成する。すなわち、生成部203は、設定部202によって設定された視点位置からの視野内に映し出される仮想空間内の様子を表す画像を生成する。本実施形態では3次元仮想空間を想定するため、生成部203は、視点位置からの視野内にある3次元空間内の情報に基づき、2次元の画像を生成する。生成された画像は、表示部204へと供給される。このような生成部203は、例えばCPU 101がROM 102やRAM 103、さらに画像表示部107と協働することによって実現される。
表示部204は、生成された画像を表示する。すなわち、表示部204は、生成部203によって生成された画像を、例えばディスプレイに表示して、プレイヤに提供する。このような表示部204は、例えばCPU 101が画像表示部107を制御し、画像情報をモニタに出力することによって実現される。
移動部205は、隠蔽部位を含むキャラクタの部位、例えば切断された複数の断片、のそれぞれを移動させる。すなわち例えば、キャラクタが敵から攻撃されて2つの断片へと切断された場合において、移動部205が当該2つの断片の仮想空間内の位置を移動させることで、キャラクタが地面へと倒れていくような場面を作り出すことができる。このような移動部205は、例えばCPU 101がROM 102やRAM 103等と協働することで実現される。
図3は、本発明の実施形態に係る仮想空間内の様子を示す図である。本実施形態におけるゲーム装置200は、本図に示されるような仮想空間300を、例えばその記憶部に記憶する。
仮想空間300内には、キャラクタ301、オブジェクト302が配置される。本図では、人の形状を模した2体のキャラクタ301a,301bが配置されており、その周囲に四角状および円状の形状をした3個のオブジェクト302a〜302cが配置されている。ここで仮想空間300は、3次元の仮想空間であり、本図はキャラクタ301a,301bに対して頭上から見た様子を示している。
本図では、キャラクタ301a,301bは、それぞれ右手に剣を持った状態で、互いに向かい合って配置されている。これらのキャラクタ301a,301bは、例えばコントローラ105を介してプレイヤによって操作される。すなわち、プレイヤは、コントローラ105を把持して適宜ボタンを押圧することで仮想空間300内におけるキャラクタ301を操作し、その位置を移動させたり、攻撃させたり、アイテムを使用させたりといった様々な動作を行わせることができる。
また、オブジェクト302a〜302cは、ゲームを構成するため仮想空間300内に配置された、樹木や柱といった種々の有体物である。ここでは具体的に、オブジェクト302aは四角状の柱を模した、そしてオブジェクト302bおよびオブジェクト302cは樹木の形状を模したものであるとする。本図では、柱の形状をした四角状のオブジェクト302aがキャラクタ301bの左側近くに配置され、樹木の形状をした円状のオブジェクト302bがキャラクタ301aの右側近くに配置され、同じく樹木の形状をした比較的大きな円状のオブジェクト302cがキャラクタ301aの左側近くに配置されている様子が示されている。
なお、本図では仮想空間300内に2体のキャラクタ301a,301bと3個のオブジェクト302a〜302cが配置されているが、本実施形態ではこれらに限られず、仮想空間300内に配置されるキャラクタ301やオブジェクト302の数はいくつであってもよい。また、仮想空間300内に配置されるキャラクタ301は、本図のように人型のキャラクタに限らず、動物型のキャラクタであってもよいし、怪物のようなキャラクタであってもよい。さらに、仮想空間300内に配置されるオブジェクト302も、本図に示されるようなものに限られず、様々な形状や大きさのオブジェクトであってもよい。
また、仮想空間300内には、視点303(カメラ)がさらに配置され、仮想空間300内の様子を撮影する。本図では、視点303は2体のキャラクタ301a,301bの方向を向いており、これらを含めた仮想空間300の様子を撮影している。そして、本実施形態における生成部203は、この視点303の位置から見た3次元の仮想空間300の様子に基づいて、2次元の画像を生成する。さらに本実施形態における表示部204は、このように生成された画像を、図4に示されるようなゲーム画像350として表示する。
図4は、本発明の実施形態に係るゲーム画像の構成例を示す図である。本実施形態におけるゲーム装置200の表示部204は、本図に示されるようなゲーム画像350を、例えば画像処理部107を介してモニタに表示する。
本図のゲーム画像350には、図3と同じく、2体のキャラクタ301a,301b、および3個のオブジェクト302a〜302cが映し出されている。ここで、ゲーム画像350は、図3における仮想空間300内の様子を視点303の位置から見た画像として表したものであり、キャラクタ301a,301bやオブジェクト302a〜302cを横から見た様子として表されている。すなわち、2体のキャラクタ301,301bが互いに向かい合って立っている様子が画面に表示されている。また、画面内には、キャラクタ301bの手前には四角柱状のオブジェクト302aが、キャラクタ301aの手前には細い樹木のオブジェクト302bが、さらにキャラクタ301aの奥には太い樹木のオブジェクト302cが配置されている、といった様子が表示されている。
なお、図3および図4におけるキャラクタ301やオブジェクト302は、便宜上単純な形状のみから構成されるようなものとして示されているが、実際には、現実の人間や樹木、建物などに近いよりリアルな形状を有することが想定される。
プレイヤは、本図のように表示されたゲーム画像350を見ながらゲームをプレイすることができる。すなわち、プレイヤが、例えばコントローラ105の各種ボタンを押圧することによりキャラクタ301を操作して、その位置を移動させたり、攻撃させたり、アイテムを使用させたりといった種々の動作を行わせる。すると、ゲーム画像350内のキャラクタ301は、プレイヤの操作に従った動作をとる。プレイヤは、このような自身の操作に基づいて動作するキャラクタ301を画面に見ながら、ゲームを進行させる。
具体的に、プレイヤがキャラクタ301aを操作して、キャラクタ301bに攻撃した場合について、ここから詳細に説明する。すなわち、例えば対戦型のアクションゲームのように、プレイヤがキャラクタ301aを操作してキャラクタ301bと闘わせるゲームを想定して、以下説明する。
図5Aは、キャラクタ301aがキャラクタ301bに攻撃することにより、キャラクタ301bの部位が所定の隠蔽条件を満たしたとき、すなわちキャラクタ301bの左腕が切断されて、プレイヤに見せるべきでない残虐な表現を伴う態様になったときの仮想空間300内の様子を示す図である。本図は、図3と同様に、2体のキャラクタ301a,301bおよび3個のオブジェクト302a〜302cが配置された仮想空間300内を、上から見たときの様子を示す図である。
そして本図では、図3での状態から比べて、キャラクタ301aがキャラクタ301bの方向に向かって移動し、そして右手に把持した剣を用いてキャラクタ301bに切りかかっている様子が示されている。その結果、本図では、キャラクタ301bの左腕が切断されている。すなわち、キャラクタ301bの体は、切断面401aを含み当該切断面401aから左腕の先までの断片と、切断面401bを含み、胴体や右腕、頭などからなる断片とに切断されている。
ここで、新たに生成された面である切断面401a,401bは、本図では便宜上黒く塗り潰されて表現されているが、現実をより忠実に再現するならば、これらの表現は骨や血液、内蔵などが露出した非常に残虐なものとなる。すなわち、視点303が図5Aのような2体のキャラクタ301a,301bを横から眺める位置にあると、視点303の視界の中には、これらの隠蔽部位が入ってしまう。そして、このまま視点303が撮影した様子を表す画像を生成部203が生成すると、図5Bのように、隠蔽部位を含んだ非常に残虐な画像が表示部204によってプレイヤへ表示されてしまう。
図5Bは、キャラクタ301bの隠蔽部位、すなわち切断面401bがゲーム画像350として表示されている様子を示す図である。本図は、上記図5Aに示されたような仮想空間300内の様子を視点303の位置から眺めて生成されたゲーム画像350に対応するものである。すなわち、本図のゲーム画像350内には、キャラクタ301aがキャラクタ301bに攻撃し、それによりキャラクタ301bの左腕が切断される様子が示されている。
本図では、視点303の位置が上記図5Aと同様に、2体のキャラクタ301a,301bを横から眺めた位置のままであるとしているため、キャラクタ301bの左腕が切断されることで作成された切断面401bが視点303の視界に入ってしまい、ゲーム画像350に表示されてしまっている。そのため、(本図では便宜上黒く塗り潰されているが、)切断面401bの残虐な表現が、ゲーム画像350としてプレイヤに提供されてしまうことになる。
このような残虐な表現は、通常はプレイヤに見せるべきでないため、本実施形態では、残虐な表現を伴う画像がプレイヤに提供されるのを避けるよう、取得部201が、これら2つの切断面401a,401bを所定の隠蔽条件を満たす部位(隠蔽部位)として定義して、隠蔽部位が見えないような仮想空間300内の位置を視点303の位置とすべき位置として取得し、設定部202が、取得された位置に視点303の位置を設定する。
そのために、取得部201は、仮想空間300内に配置されたオブジェクト302を利用する。すなわち、隠蔽部位である2つの切断面401a,401bが、いずれかのオブジェクト302a〜302cの陰に隠れて見えなくなるような、オブジェクト302の位置に対して隠蔽部位の位置と反対側となる位置を求める。このように求められた位置に設定された視点303の位置から生成される画像には、プレイヤに見せるべきでない残虐な表現は、オブジェクト302の陰に隠れて映らなくなる。
このとき、本実施形態でのゲーム装置200は、取得部201が取得する視点303の位置とすべき位置の候補として、いくつかの位置候補をあらかじめオブジェクト302に対応付けておく。すなわち、本実施形態では、取得部201は、仮想空間300内のあらゆる位置を視点303の位置とすべき位置として取得できるのではなく、あらかじめ決められた有限な数の位置候補のうちから1つの位置を選ぶことで、視点303の位置とすべき位置を取得する。その結果、取得部201は、少ない計算量で、隠蔽部位がオブジェクト302に隠れるような視点303の位置とすべき位置を取得することができる。
図6は、仮想空間300内に配置されたオブジェクト302a〜302cに対応付けられた複数の位置候補を表す図である。本図は、上述した図5Aと同様に、キャラクタ301bの部位が所定の隠蔽条件を満たしたときの仮想空間300内の様子を示す図であって、さらにオブジェクト302a〜302cのそれぞれに複数の位置候補402(402a〜402l等)が対応付けられた様子を示している。なお、図を簡略化するため、図5Aでは表示されていたキャラクタ301aは、本図では表示されていない。
具体的に、四角柱状のオブジェクト302aには、その周りに四角状に等間隔で16個の十文字状の位置候補402(402a〜402f等)が対応付けられている。同様に、細い樹木のオブジェクト302bと太い樹木のオブジェクト302cには、それぞれの周りに円状に等間隔で16個の十文字状の位置候補402(402g〜402l等)が対応付けられている。本実施形態では取得部201が、これらあわせて48個の位置候補402(402a〜402l等)のうちから1つを選んで、視点303の位置とすべき位置とする。
1つの位置候補402を選ぶために、まず取得部201は、視点303の位置から見て隠蔽部位がオブジェクト302a〜302cのいずれかの陰に隠れて見えないようにするために、オブジェクト302a〜302cに対して隠蔽部位である切断面401a,401bの位置とは反対側にある位置候補402(以下「隠蔽位置候補」という)を抽出する。そのために、仮想空間300内での切断面401a,401bの位置と、それぞれの位置候補402(402a〜402l等)とを結ぶ線分403(403a〜403f等)を考え、当該線分403(403a〜403f等)上にオブジェクト302a〜302cのいずれかが位置するかどうかを判別する。そして、線分403(403a〜403f等)上にオブジェクト302a〜302cのいずれかが位置するような位置候補402を、隠蔽位置候補として抽出する。
具体的に、図6を参照して説明する。まず、オブジェクト302aに対応付けられた位置候補402aに着目すると、隠蔽部位である切断面401a,401bの位置と当該位置候補402aとを結ぶ線分403a上にはオブジェクト302aが位置していない。すなわち、当該位置候補402aに視点303の位置が設定されると、プレイヤに見せるべきでない切断面401a,401bを含む画像が表示されてしまう。そのためここでは、当該位置候補402aは、隠蔽位置候補として抽出されない。
一方で、位置候補402aに隣接する位置候補402bについては、隠蔽部位である切断面401a,401bの位置と当該位置候補402bとを結ぶ線分403b上にはオブジェクト302aが位置している。すなわち、当該位置候補402bに視点303の位置が設定されると、切断面401a,401bがオブジェクト302aによって隠蔽された画像が表示される。そのためここでは、当該位置候補402bは、隠蔽位置候補として抽出される。
同様に、同じくオブジェクト302aに対応付けられた位置候補402eと位置候補402fについては、隠蔽部位の位置と位置候補402eとを結ぶ線分403e上にはオブジェクト302aが位置しており、隠蔽部位の位置と位置候補402fとを結ぶ線分403f上にはオブジェクト302aが位置していない。そのためここでは、位置候補402eは隠蔽位置候補として抽出されるが、位置候補402fは隠蔽位置候補として抽出されない。
取得部201は、このような抽出処理をそれぞれの位置候補402(402a〜402l等)について行い、隠蔽部位である切断面401a,401bの位置と位置候補402(402a〜402l等)とを結ぶ線分403(403a〜403f等)上にオブジェクト302a〜302cのいずれかが位置するような位置候補402(402a〜402l等)を、隠蔽位置候補としてすべて抽出する。図6の例では、オブジェクト302aに対応付けられた16個の位置候補402(402a〜402f等)のうちから、線分403(403b〜403e)上にオブジェクト302aが位置する4個の位置候補402b〜402eが抽出され、そしてオブジェクト302bに対応付けられた16個の位置候補402(402g,402h等)のうちから、線分403上にオブジェクト302bが位置する2つの位置候補402g,402hが抽出され、さらにオブジェクト302cに対応付けられた16個の位置候補402(402i〜402l等)のうちから、線分403上にオブジェクト302cが位置する4個の位置候補402i〜402lが抽出され、あわせて10個の位置候補402b〜402e,402g〜402l(図6において一点鎖線で囲われたもの)が、隠蔽位置候補として抽出される。
なお、本図に示された複数の位置候補402(402a〜402l等)は1つの例であり、位置候補402が配置される数や位置などはこれに限られない。すなわち、位置候補402は、オブジェクト302の周りに円状あるいは四角状に等間隔に配置されずに、楕円状や多角形状に配置されたり、ある方向に数が集中して配置されたりしてもよい。また、本図では便宜上、位置候補402(402a〜402l等)はオブジェクト302a〜302cの比較的近傍に配置されるように示しているが、これに限られず、オブジェクト302から離れた位置に配置されてもよい。あるいは、位置候補402は、オブジェクト302から距離をあけずに、オブジェクト302の表面に設けられるようにしてもよい。その他、オブジェクト302の形状や大きさなどに応じて、視点303を配置するのに都合の良さそうな様々な位置に、位置候補402は配置されうる。
また、線分403(403a〜403f等)は、それぞれ位置候補402(402a〜402l等)の位置と隠蔽部位である切断面401a,401bの位置とを端点とする線分であるが、本図では、切断面401a,401bの位置として切断面401a,401bの中心位置を採用して説明した。すなわち、切断面401a,401bのような隠蔽部位は一般的には大きさを有するものであるが、本図では、2つの切断面401a,401bの間の中心位置を、線分403(403a〜403f等)の端点として説明した。しかしこれは1つの例であり、他の点を線分403(403a〜403f等)の端点としてもよい。例えば、中心位置以外でも、切断面401a,401b内の出血が激しい箇所や骨が露出している箇所など、最も見せるべきでない箇所をあらかじめ設定しておき、その箇所の位置を線分403の端点としてもよい。
このように、線分403(403b〜403e等)上にオブジェクト302a〜302cのいずれかが位置するような10個の隠蔽位置候補402b〜402e,402g〜402lが抽出されると、次に取得部201は、このような10個の隠蔽位置候補402b〜402e,402g〜402lのうちのいずれか1つの隠蔽位置候補を選択して、視点303の位置とすべき位置として取得する。そのための基準として、本実施形態では、キャラクタ301の速度を見込む角度に着目する。具体的に、図7を参照して以下に説明する。
図7は、仮想空間300内において、キャラクタ301bの速度ベクトルを見込む角度の例を表す図である。本図の構成要素は、図6におけるものと基本的には同様であり、仮想空間300内に、左腕を切断されたキャラクタ301b、そして周囲に位置候補402(402a〜402l等)が配置されたオブジェクト302a〜302cが示され、さらに隠蔽部位である切断面401a,401bを隠蔽可能な隠蔽位置候補402b〜402e,402g〜402lが一点鎖線で囲われて示されている。
このとき、取得された10個の隠蔽位置候補402b〜402e,402g〜402lのいずれに視点303の位置が設定されても、隠蔽部位である切断面401a,401bがオブジェクト302a〜302cのいずれかに隠された画像を生成することはできるが、キャラクタ301bが倒れていく様子がより見やすいゲーム画像350をプレイヤに提供できれば、ゲームの臨場感が高められると考えられる。そのためには、取得された10個の隠蔽位置候補402b〜402e,402g〜402lのうち、キャラクタ301bの倒れていく動きがなるべくよく捉えられる位置、例えば、キャラクタ301bの位置に近く、そして倒れていく様子を横から捉えられるような位置に設定部202が視点303の位置を設定する方が有効であると考えられる。
そこで本実施形態では、キャラクタ301bの「速度ベクトル404を見込む角度405」に着目し、取得部201が、当該見込む角度405が最大となる隠蔽位置候補を1つ選ぶ。以下、本図を参照しながら説明する。
ここでまず、「速度ベクトル404」とは、切断されたキャラクタ301bの断片が移動部205によって移動する際の、断片の速さおよび方向をいう。すなわち本図では、左腕を切断されたキャラクタ301bの体は、切断面401aから先の左腕の断片と、切断面401bを含み胴体や右腕、頭などからなる断片との、2つの断片に切断されている。ここでこれらの断片は、移動部205によって仮想空間300内を移動することで、左腕を切断されたキャラクタ301bがそのまま後方に倒れていくような様子を表現することができる。本実施形態では、このような2つの断片のうち、速度ベクトル404として、キャラクタ301bの胴体を含む断片が移動部205によって移動する際の速度ベクトルを採用する。
そして、このような「速度ベクトル404」に対し、「速度ベクトル404を見込む角度405」とは、当該速度ベクトル404の両端点と隠蔽位置候補とを頂点とする三角形を考えたときの、隠蔽位置候補における内角をいう。具体的に、本図では、例として3つの見込む角度405c,405g,405jが示されており、それぞれ、速度ベクトル404の両端点と隠蔽位置候補402c,402g,402jを頂点とする三角形を考えたときの、隠蔽位置候補402c,402g,402jにおける内角を表している。
本実施形態では、取得部201が、このような「速度ベクトル404を見込む角度405」を、図6において抽出された10個の隠蔽位置候補402b〜402e,402g〜402lのそれぞれについて行い、その中で見込む角度405の大きさが最大となる隠蔽位置候補を1つ選ぶ。本図では、隠蔽位置候補402cにおける見込む角度405cの大きさが、他の隠蔽位置候補402(402g,402j等)における見込む角度405(405g,405j等)よりも大きいため、この隠蔽位置候補402cが、選ばれることになる。
なお、速度ベクトル404は、キャラクタ301bの体全体におけるどの位置や部位についてのものであってもよい。例えば、速度ベクトル404は、仮想空間300内におけるキャラクタ301bの中心位置の速度ベクトルであってもよいし、キャラクタ301bの体全体の中で最も速度の大きい部位の速度ベクトルであってもよいし、あるいはキャラクタ301bの体全体の中で特にプレイヤに注目させたい部位の速度ベクトルであってもよい。本実施形態における取得部201は、このようにあらかじめ設定されたキャラクタ301bの位置あるいは部位の速度ベクトル404に対して、見込む角度405が最も大きくなるような隠蔽位置候補を視点303の位置とすべき位置として選ぶ。
このようにして隠蔽位置候補402cが選ばれると、その後、設定部202が、視点303の位置を当該隠蔽位置候補402cに設定する。すなわち、視点303の位置は、本図ではオブジェクト302aとオブジェクト302bの間付近に位置しているが、以下の図8に示されるように、隠蔽位置候補402cにまで、設定部202によって移動させられることになる。
図8は、本実施形態において、仮想空間300内の隠蔽位置候補402cに視点303の位置が設定される様子を示す図である。本図は上記図5A、図6、図7と同様、仮想空間300内に配置されたキャラクタ301a,301bを上から見た図であり、キャラクタ301bがキャラクタ301aに剣で攻撃されて腕を切断されている様子を示している。ここで本図では、それまでオブジェクト302aとオブジェクト302bの間付近に位置していた視点303の位置が、オブジェクト302aに近い隠蔽位置候補402cの位置にまで移動している様子が示されている。
このとき本図では、視点303の視線は、キャラクタ301bの方向へ向けられながら移動している。すなわち、左腕が切断されて地面に倒れようとしているキャラクタ301bが、生成されるゲーム画像350の中央に見やすく表示されるように、視点303の視線がキャラクタ301bの方向へ向けられている。しかし必ずしも視点303の視線方向はこれに限られず、生成したいゲーム画像350にあわせて適宜視線方向が調整されてもよい。例えば、視点303の視線が、キャラクタ301aとキャラクタ301bの中心の方向に向けられてもよいし、あるいはキャラクタ301a,301bがゲーム画像350の端に表示されるようキャラクタ301a,301bの位置から外れた方向に向けられてもよいし、その他表示したいゲーム画像350を生成するために都合の良い方向に視線を向けてもよい。
本実施形態では、このような移動している視点303の位置から見た仮想空間300内の様子を表すゲーム画像350が、生成部203によって生成され、表示部204によってプレイヤへと表示される。そして、隠蔽位置候補402cにまで到達した視点303からは、以下の図9に示すようなゲーム画像350が、プレイヤへと提供される。
図9は、本実施形態において、取得された隠蔽位置候補402cに設定された視点303の位置から撮影されたゲーム画像350を表す図である。本図のゲーム画像350内には、上記図5Bと同様に、キャラクタ301aが右手に把持した剣でキャラクタ301bに攻撃している様子が示されている。ここで、上記図5Bでは切断された切断面401bがゲーム画像350内に表示されていたが、本図では四角柱状のオブジェクト302aの陰に隠れて表示されていない。すなわち、本実施形態では視点303の位置が隠蔽位置候補402cに設定されているため、切断された切断面401bという残虐な表現を伴う部位が、ゲーム画像350内に表示されなくなっており、刺激の強い画像がプレイヤに提示されるのを避けることができている。
さらに、本実施形態では、ゲーム画像350内のキャラクタ301bはこの後、本図に示された矢印の方向、すなわち後方へ倒れていく。すなわち、キャラクタ301aによる攻撃を受け、左腕が切断されたキャラクタ301bは、移動部205が切断後のキャラクタ301bの断片を移動させることで、背中から地面へ倒れこむような動作をとる。このとき、キャラクタ301bの断片の移動に伴って、含まれる切断面401a,401bの位置も移動することになるので、当該切断面401a,401bをオブジェクト302aの陰に隠せるような視点303の位置も変化することになる。そのため本実施形態では、切断後のキャラクタ301bの断片の移動に伴い、取得部201が視点303の位置とすべき位置を順次取得し、その度に設定部202が取得された位置に視点303の位置を設定することで、視点303の位置が調整されながら、ゲーム画像350が生成される。
図10は、本実施形態において、キャラクタ301bが倒れていく様子が撮影されたゲーム画像350を表す図である。すなわち、本図は上記図9のゲーム画像350の続きの様子を表しており、腕を切断されたキャラクタ301bが背中から地面に倒れこんでいく様子が示されている。このようなキャラクタ301bが倒れる動作に伴って、そこに含まれる切断面401a,401bの位置も移動するため、視点303の位置が図9のように隠蔽位置候補402cのままの場合、オブジェクト302aの陰から外れて、視点303の視界に入ってしまう。
そのため、本図と上記図9とでは、若干異なる位置に設定された視点303から見たゲーム画像350となっている。具体的に例えば、本図では上記図9に比べて、四角柱状のオブジェクト302aの位置や、太い樹木のオブジェクト302cの位置が、ゲーム画像350内のより右側の位置へと移動している。このように、本実施形態では、切断されたキャラクタ301bの断片が移動するのに伴って視点303の位置が変化し、切断面401a,401bが視点303の視界に入らないように調整される。
なお、本図のように、キャラクタ301bの切られた腕の一部や出血表現406を表示することによって、キャラクタ301bの腕が切断されているという状況をよりリアルに表現してもよい。すなわち、ゲーム画像350を見ているプレイヤは、切断面401a,401b自体はオブジェクト302aの陰に隠されて見えないが、オブジェクト302aの傍らからは切られた腕の一部や出血表現406が見えるため、キャラクタ301bの腕が切られているという状況を強く認識することができ、高い現実感のもとゲームをプレイすることができる。
このように、図9および図10のようなゲーム画像350を見ているプレイヤは、キャラクタ301bの腕が切られて2つに分断され、そして出血表現406を伴いながらキャラクタ301bが地面に倒れていく様子は認識することができるが、切られた切断面401a,401b自体は表示されるゲーム画像350内において見ることができない。そのため、本実施形態でのゲーム装置200は、プレイヤに見せるべきでない隠蔽部位を隠しながら、ゲームの臨場感や興趣性がなるべく損なわれることなく、ゲーム画像350を表示することができる。
図11は、本実施形態のゲーム装置200に係る処理の流れを示すフローチャートである。ここまで説明してきた本実施形態において実現される処理の流れまとめて、以下に説明する。
本処理が開始されると、まずゲーム装置200のCPU 101は、各種の初期化処理を行う(ステップS101)。ここでは、RAM 103等の記憶部に記憶された各種の情報の初期化を行うとともに、仮想空間300やそこに配置されるキャラクタ301、オブジェクト302、視点303など、ゲームをプレイする上で必要となる各種データを読み込む。
次に、ゲーム装置200の生成部203が、視点303の位置から見た画像を生成する(ステップS102)。すなわち、生成部203は、視点303の位置から見た仮想空間300内に配置されたキャラクタ301やオブジェクト302の様子を表す画像を生成する。
そして、ゲーム装置200の表示部204が、生成された画像を表示する(ステップS103)。すなわち、表示部204が、ステップS102において生成された画像を、所定の周期で行われる垂直同期割り込みを待ってから、モニタなどの画面に表示する。具体的には、表示部204は、上記図4に示されたようなゲーム画像350を表示する。
ここで、ゲーム装置200の取得部201が、キャラクタ301の部位が所定の隠蔽条件を満たしているかを判定する(ステップS104)。すなわち、取得部201は、仮想空間300内に配置されたキャラクタ301のいずれかの部位が、2つに切断されるなどによって、プレイヤに見せるべきでないような態様になっているかを判定する。例えば、上記図5Aのように、プレイヤ301bの左腕が切断されて、切断面401a,401bが仮想空間300内に作成されているか否かが判定される。
所定の隠蔽条件を満たしていなければ(ステップS104;NO)、ゲーム装置200の処理は、ステップS102へと戻り、ステップS103、ステップS104の処理を繰り返す。すなわち、ゲーム装置200は、キャラクタ301の部位がプレイヤに見せるべきでない態様に変化しない限り、生成部203が仮想空間300内の様子を表す画像を生成して、表示部204が生成された画像を表示する処理を、垂直同期ごとに繰り返して、仮想空間300内の様子を表す画像をプレイヤに表示し続ける。
一方、 所定の隠蔽条件を満たしたと判定された場合(ステップS104;YES)、ゲーム装置200の処理はステップS105へと移行する。このときまず、移動部205が、キャラクタ301の断片を移動させる(ステップS105)。すなわち、移動部205が、切断されたキャラクタ301の断片について、仮想空間300内の位置を移動させる。これは例えば、上記図10のように、左腕を切断されたキャラクタ301bが、地面に倒れこませるような動きをとらせることに相当する。
次に、取得部201が、オブジェクト302に対応付けられた複数の位置候補402のうちから、隠蔽位置候補を抽出する(ステップS106)。すなわち、本実施形態では上記図6に示したように、仮想空間300内にあらかじめ配置されたオブジェクト302には複数の位置候補402(402a〜402l等)が対応付けられている。ここでは取得部201が、これら複数の位置候補402のうちから、オブジェクト302によって隠蔽部位が隠されるもの、すなわち、隠蔽部位の位置と位置候補402とを結ぶ線分上にオブジェクト302が位置するような位置候補402を、抽出する。
そして、取得部201が、抽出された隠蔽位置候補のうち、キャラクタ301の速度ベクトル404を見込む角度405が最大のものを取得する(ステップS107)。すなわちここでは、取得部201が、上記図7に示されたようなキャラクタ301の動きを表す速度ベクトル404に着目し、ステップS106において抽出された隠蔽位置候補のうち、この速度ベクトル404を見込む角度405が最大となるものを、視点303の位置とすべき位置として取得する。これにより、例えば切断されたキャラクタ301が地面に倒れていくといった、キャラクタ301の動きがよく見える位置が取得される。
さらに、ゲーム装置200の設定部202が、取得された位置に視点303の位置を設定する(ステップS108)。すなわちここでは、設定部202が、ステップS107において取得された隠蔽位置候補に視点303の位置を設定する。例えば、設定部202は、上記図9のように、隠蔽位置候補402cへ向けて、仮想空間300内の視点303の位置を移動させることになる。
この後、ゲーム装置200の処理は、ステップS102へと戻る。すなわち、生成部203が、ステップS107において設定された視点303の位置から見た仮想空間300内の様子を表す画像を生成し(ステップS102)、表示部204が、生成された画像を、所定の垂直同期に同期させて画面に表示する(ステップS103)。ここでは、設定部202によって隠蔽部位がオブジェクト302によって隠される位置へと向けて視点303の位置が移動している場合、移動した位置から撮影して生成された画像が表示部204によってプレイヤに表示されることになる。
そして、ゲーム装置200の処理は再びステップS104の判定処理へと移行し、再度、キャラクタ301の部位が所定の隠蔽条件を満たしているかどうかを判定する(ステップS104)。すなわち、例えば切断面401a,401bのような、一度現れた隠蔽部位がまだ存在しているか、あるいはキャラクタ301の別の部位が切断されるなどによって、別の隠蔽部位が現れたか、が判定される。
所定の隠蔽条件を満たしている場合は(ステップS104;YES)、ゲーム装置200は、再びステップS105〜S108の処理を繰り返すことになる。すなわち、移動部205が隠蔽部位を含む断片を移動させ、取得部201が、移動する隠蔽部位がオブジェクト302によって隠れるような位置を取得して、設定部202が、そのような位置に視点303の位置を設定する。
一方で、キャラクタ301の部位が所定の隠蔽条件を満たさなくなった場合(ステップS104;NO)、すなわち、例えば切断面401a,401bが存在しなくなったような場合は、ゲーム装置200の処理はもはやステップS105〜S108へとは移行せず、ステップS102へと戻る。すなわち、切断面401a,401bのような隠蔽部位が存在しないため、隠蔽部位がオブジェクト302の陰に隠れる位置に視点303を設定するような制限を受けることなく、ゲーム装置200は、視点303の位置から見た仮想空間300内の様子を表す画像を生成・表示することになる。
このような構成によって、本実施形態に係るゲーム装置200は、切断された2つの切断面401a,401bのようなプレイヤに見せるべきでない隠蔽部位を、仮想空間300内にあらかじめ配置されているオブジェクト302を視線を遮る障害物として利用することで、プレイヤに見せないようにする。その際に、オブジェクト302に視線が遮られるような位置の候補をあらかじめいくつか設定しておき、その中からキャラクタ301の動きがよく見えるような位置に視点303の位置を設定する。その結果、本実施形態に係るゲーム装置200は、プレイヤに見せるべきでない残虐な表現に対して、プレイヤに見せないようゲームの場面を大きく切り替えたり、そもそも残虐な表現をなくしたりすることでプレイヤに与える印象を大きく変えてしまうことをなるべく防ぎながら、残虐表現が適切に隠された画像を少ない計算量で生成して、プレイヤに提供することができる。
(実施形態2)
次に、本発明の実施形態2について説明する。実施形態1では、取得部201が視点303の位置とすべき位置を取得する際、複数の隠蔽位置候補のうちから、キャラクタ301の速度ベクトル404を見込む角度405が最大となるものを、視点303の位置とすべき位置として取得した。それに対して本実施形態では、取得部201が視点303の位置とすべき位置を取得する際、キャラクタ301の速度ベクトル404ではなく、オブジェクト302を見込む角度と隠蔽部位を見込む角度とに着目する。そして、複数の隠蔽位置候補のうちから、オブジェクト302を見込む角度が隠蔽部位を見込む角度以上で最小の位置候補402を、視点303の位置とすべき位置として取得する。以下、詳述する。
本実施形態では説明のため、上述した実施形態1での図3と同様に、仮想空間300内に2体のキャラクタ301a,301bと、その周囲に3個のオブジェクト302a〜302cが配置され、その様子を視点303が撮影して上記図4のようなゲーム画像350をプレイヤに表示する状況を想定する。
このとき、同じく上記図5Aのように、キャラクタ301bがキャラクタ301aに攻撃されて、2つの切断面401a,401bが出現したとする。このような切断面401a,401bは、残虐な表現を伴うため、オブジェクト302a〜302cのいずれかの陰に隠蔽できるような位置に視点303の位置を設定して、当該切断面401a,401bが隠蔽されたゲーム画像350を生成する。そのため、本実施形態でも同じく上記図6のように、オブジェクト302a〜302cに対応付けられた隠蔽位置候補402b〜402e,402g〜402lのうちから、視点303の位置とすべき位置を1つ選ぶ。このときの選択する基準として、実施形態1では、図7に示したようにキャラクタ301bの速度ベクトル404を見込む角度405に着目したが、本実施形態では、オブジェクト302および隠蔽部位を見込む角度に着目する。
図12は、仮想空間300内において、オブジェクト302を見込む角度と隠蔽部位を見込む角度の例を表す図である。本図は、実施形態1における図7と同様に、仮想空間300内に配置されたキャラクタ301bを上から見たときの様子を示しており、キャラクタ301bの腕が2つに切断されて、切断面401a,401bが隠蔽部位として仮想空間300内に出現している。そして、この切断面401a,401bを隠すことのできる位置として、オブジェクト302a〜302cに対応付けられたあわせて48個の位置候補402(402a〜402l等)のうちから、実施形態1と同様に10個の隠蔽位置候補402b〜402e,402g〜402l(本図において一点鎖線で囲まれたもの)が選ばれている状態とする。
そして本図では、例として3つの隠蔽位置候補402c,402g,402jについて、それぞれオブジェクト302a〜302cを見込む角度501c,501g,501jおよび隠蔽部位である切断面401a,401bを見込む角度502c,502g,502jが示されている。ここで、「オブジェクト302を見込む角度501」とは、隠蔽位置候補とオブジェクト302の両端とを頂点とする三角形を考えたときの、隠蔽位置候補における三角形の内角のことを意味し、「隠蔽部位を見込む角度502」とは、隠蔽位置候補と隠蔽部位の両端とを頂点とする三角形を考えたときの、隠蔽位置候補における三角形の内角のことを意味する。本実施形態では、取得部201が、このようなオブジェクト302を見込む角度501、および隠蔽部位を見込む角度502を、10個の隠蔽位置候補402b〜402e,402g〜402lのそれぞれについて算出し、オブジェクト302を見込む角度501が隠蔽部位を見込む角度502以上で最小の隠蔽位置候補を、視点303の位置とすべき位置として取得する。
具体的に本図では、隠蔽位置候補402cでのオブジェクト302aを見込む角度501c、隠蔽位置候補402gでのオブジェクト302bを見込む角度501g、隠蔽位置候補402jでのオブジェクト302cを見込む角度501jは、それぞれ、隠蔽位置候補402cでの隠蔽部位を見込む角度502c、隠蔽位置候補402gでの隠蔽部位を見込む角度502g、隠蔽位置候補402jでの隠蔽部位を見込む角度502jに比べて大きな角度となっている。すなわち、これら3個の隠蔽位置候補402c,402g,402jのいずれに視点303の位置が設定されたとしても、それぞれオブジェクト302a〜302cに隠されることにより、その視野内には隠蔽部位である切断面401a,401bは入らない。
一方で、これら3個の見込む角度501c,501g,501j同士の大きさを比較すると、見込む角度501gは、見込む角度501c,501jに比べて小さい。すなわち、仮に隠蔽位置候補402gに視点303の位置が設定されたとすると、その視野内のオブジェクト302bによって隠される領域は、他の2つの隠蔽位置候補402c,402jに視点303の位置が設定された場合に比べて、小さな領域となる。その結果として、隠蔽部位である切断面401a,401b以外の部分、すなわちプレイヤに隠蔽する必要のないものについては、隠蔽される領域をなるべく少なく抑えることができる。
このように、本実施形態における取得部201は、隠蔽位置候補402b〜402e,402g〜402lのそれぞれについてオブジェクト302を見込む角度501と隠蔽部位を見込む角度502とを算出し、オブジェクト302を見込む角度501が隠蔽部位を見込む角度502以上で最小の隠蔽位置候補を、視点303の位置とすべき位置として取得する。そして、設定部202が、取得された位置に視点303の位置を設定する。これにより、ゲーム装置200は、プレイヤに見せるべきでない隠蔽部位をオブジェクトによって隠蔽しつつ、隠蔽部位以外の部位がなるべく隠蔽されないような画像を、プレイヤに提供することができる。
図13は、本実施形態において、仮想空間300内の取得された隠蔽位置候補402gに視点303の位置が設定される様子を示す図である。本図は実施形態1における図8と同様、仮想空間300内に配置されたキャラクタ301a,301bを上から見た図であり、キャラクタ301bがキャラクタ301aに剣で攻撃されて腕を切断されている様子を示している。そして、図8と同様、攻撃されたキャラクタ301bの体は後方へ、すなわち速度ベクトル404の方向へ、動いている様子が示されている。
本図は例として、オブジェクト302a〜302cに対応付けられた48個の位置候補402(402a〜402l等)のうちから、図12において説明したような処理を経て、オブジェクト302を見込む角度501が隠蔽部位を見込む角度502以上で最小の隠蔽位置候補として、隠蔽位置候補402gが取得された場合について示している。このとき、設定部202が、当該取得された隠蔽位置候補402gに視点303の位置を設定する。すなわち、本図では、それまでオブジェクト302aとオブジェクト302bの間付近に位置していた視点303の位置が、オブジェクト302bに近い隠蔽位置候補402gの位置にまで移動することになる。そして、移動した視点303は、移動先の隠蔽位置候補402gから見た仮想空間300の様子を撮影して、生成部203がその画像を生成し、表示部204が画像を表示する。
図14は、本実施形態において、取得された隠蔽位置候補402gに設定された視点303の位置から撮影されたゲーム画像350を表す図である。上記図13のように位置が移動した視点303の位置から見た仮想空間300内の様子を表す画像は、本図に示されるようなゲーム画像350になる。
ここでゲーム画像350内には、実施形態1における図9と同様、キャラクタ301aが右手に把持した剣でキャラクタ301bに攻撃しており、攻撃されたキャラクタ301bは後ろに動いて(倒れて)いく様子が示されている。一方で、上記図9は、キャラクタ301bの切断された腕を四角柱状のオブジェクト302aの陰に隠蔽しつつ、キャラクタ301bの左側から見たゲーム画像350であったのに対し、本図は、キャラクタ301bの切断された腕を細い樹木オブジェクト302bの陰に隠蔽しつつ、キャラクタ301aの背後側から見たゲーム画像350となっている。
そして図15は、本実施形態において、キャラクタ301bが倒れていく様子が撮影されたゲーム画像350を表す図である。すなわち、本図は、実施形態1における図10と同様、上記図14のゲーム画像350の続きの様子を表している。具体的には、移動部205が切断されたキャラクタ301bの断片を移動させることで、キャラクタ301aに攻撃されて左腕を切断されたキャラクタ301bが、出血表現406等を伴いながら、背中から地面に倒れこんでいく様子が示されている。
ここで、実施形態1における図10では、キャラクタ301bの速度ベクトル404を見込む角度405が最大となる隠蔽位置候補402cに視点303の位置が設定された。そのため、表示されたゲーム画像350は、隠蔽部位である切断面401a,401bを隠蔽しつつ、キャラクタ301bが地面に倒れていく様子を横から捉えることができ、その動きをプレイヤに認識させるのに適切であった。それに対して、本実施形態における図15では、オブジェクト302を見込む角度501が隠蔽部位を見込む角度502以上で最小となる隠蔽位置候補402gに視点303の位置が設定された。そのため、表示されたゲーム画像350内には、隠蔽部位である切断面401a,401bが、細い樹木のオブジェクト302bによって隠される面積が抑えられ、効率的に隠蔽されている。
図16は、本実施形態のゲーム装置200に係る処理の流れを示すフローチャートである。ここまで説明してきた本実施形態において実現される処理の流れまとめて、以下に説明する。
本フローチャートは、実施形態1におけるフローチャート(図11)を原則的には踏襲しており、ステップS101〜S106、およびステップS108の処理は共通である。一方で、実施形態1でのステップS107の処理は、ここでは新たにステップS201の処理へと変更される。具体的に、以下に簡潔に説明する。
本処理が開始されると、各種の初期化処理が行われた後(ステップS101)、生成部203が仮想空間300内に配置された視点303の位置から見た画像を生成し(ステップS102)、表示部204が生成された画像を表示する(ステップS103)。すなわち、所定の周期で行われる垂直同期割り込みを待って、生成されたゲーム画像350がモニタなどの画面に表示される。
そして、取得部201が、キャラクタ301の部位が所定の隠蔽条件を満たしているかを判定する(ステップS104)。すなわち、取得部201は、キャラクタ301が切断されるなどによって、プレイヤに見せるべきでないような態様になっているかを判定する。所定の隠蔽条件を満たしていなければ(ステップS104;NO)、処理はステップS102〜S103へと戻り、仮想空間300内に配置された視点303の位置から見たゲーム画像350を生成・表示する処理を繰り返す。
一方、所定の隠蔽条件を満たしたと判定された場合(ステップS104;YES)、ゲーム装置200の処理はステップS105以降の処理へと移行する。具体的には、移動部205が、切断されたキャラクタ301の断片を移動させ(ステップS105)、取得部201が、オブジェクト302に対応付けられた複数の位置候補402のうちから、隠蔽位置候補を抽出する(ステップS106)。すなわち、隠蔽部位である切断面401a,401bをオブジェクト302a〜302cのいずれかの陰に隠蔽できるような隠蔽位置候補を抽出する。
この後、実施形態1では、取得部201が、抽出された隠蔽位置候補のうちからキャラクタ301の速度ベクトル404を見込む角度405が最大となるものを取得したが、本実施形態ではここで、抽出された隠蔽位置候補のうち、オブジェクト302を見込む角度501が隠蔽部位を見込む角度502以上で最小のものを取得する(ステップS201)。すなわち、取得部201は、ステップS106において抽出された隠蔽位置候補のそれぞれについて、上記図12のように、オブジェクト302を見込む角度501と隠蔽部位を見込む角度502とを比較し、切断面401a,401bのような隠蔽部位をオブジェクト302の陰に効率的に隠すことができるような隠蔽位置候補を、視点303の位置とすべき位置として1つ選ぶ。
そして、設定部202が、取得された位置に視点303の位置を設定する(ステップS108)。すなわちここでは、設定部202が、上記図13の例では取得された隠蔽位置候補402gへ向けて、仮想空間300内の視点303の位置を移動させることになる。
この後、ゲーム装置200の処理は、ステップS102へと戻り、上述した処理を繰り返すことになる。すなわち、キャラクタ301の部位が所定の隠蔽条件を満たしている間(ステップS104;YES)は、上記ステップS102〜S106,S201,S108の処理が行われ、視点303の位置とすべき位置が取得され、当該取得された位置に視点303の位置が設定され、設定された視点303の位置から見た仮想空間300内の様子を表すゲーム画像350を生成・表示する処理が繰り返される。一方で、キャラクタ301の部位が所定の隠蔽条件を満たさなくなると(ステップS104;NO)、隠蔽部位がオブジェクト302の陰に隠れる位置に視点303の位置を設定するような制限を受けることなく、上記ステップS102〜S103の処理、すなわち視点303の位置から見た仮想空間300内の様子を表す画像を生成・表示する処理が繰り返されることになる。
このような構成によって、本実施形態では、取得部201が、視点303の位置とすべき位置を複数の隠蔽位置候補のうちから選ぶ際、オブジェクト302を見込む角度501と隠蔽部位を見込む角度502とに着目して、オブジェクト302を見込む角度501が隠蔽部位を見込む角度502以上で最小の隠蔽位置候補を、視点303の位置とすべき位置として取得する。その結果、本実施形態に係るゲーム装置200は、切断面401a,401bのような隠蔽部位以外の部分が必要以上に隠蔽されることなく、隠蔽部位が効率的に隠蔽されたゲーム画像350をプレイヤに提供することができる。
なお、上述した図12での説明では、オブジェクト302を見込む角度501および隠蔽部位を見込む角度502として、2次元の平面角であることを想定して説明した。しかしこれに限られず、オブジェクト302を見込む角度501および隠蔽部位を見込む角度502として、3次元の立体角を用いてもよい。すなわち、オブジェクト302あるいは隠蔽部位を見込む角度として、それぞれ、隠蔽位置候補を頂点としオブジェクト302あるいは隠蔽部位に接する錐体の頂点における立体角を考えてもよい。
この場合、取得部201は、複数の隠蔽位置候補402b〜402e,402g〜402lのうち、オブジェクト302を見込む立体角が隠蔽部位を見込む立体角を包含するものの中で最小となるような隠蔽位置候補を、視点303の位置とすべき位置として取得する。これによってゲーム装置200は、3次元の仮想空間300内において、プレイヤに見せるべきでない隠蔽部位をオブジェクト302によって漏れなく隠せるような隠蔽位置候補であって、隠蔽部位以外の部分が隠される領域が最小となるような位置から撮影された画像を、プレイヤに提供することができる。
(実施形態3)
次に、本発明の実施形態3について説明する。上記実施形態では、取得部201が視点303の位置とすべき位置を取得する際、複数の隠蔽位置候補のうちから、実施形態1ではキャラクタ301の速度ベクトル404を見込む角度405が最大となるものを、また実施形態2ではオブジェクト302を見込む角度501が隠蔽部位を見込む角度502以上で最小のものを、それぞれ視点303の位置とすべき位置として取得した。それに対して本実施形態では、取得部201が視点303の位置とすべき位置を取得する際、複数の隠蔽位置候補のうち、現在設定されている視点303の位置から最も近い位置にある隠蔽位置候補を、視点303の位置とすべき位置として取得する。
本実施形態でも、説明のため、上述した実施形態1での図3と同様に、仮想空間300内に2体のキャラクタ301a,301bと、その周囲に3個のオブジェクト302a〜302cが配置され、その様子を視点303が撮影して上記図4のようなゲーム画像350をプレイヤに表示する状況を想定する。
このとき、同じく上記図5Aのように、キャラクタ301bがキャラクタ301aに攻撃されて、2つの切断面401a,401bが出現したとする。このような切断面401a,401bは、残虐な表現を伴うため、上記実施形態と同じく、オブジェクト302a〜302cのいずれかの陰に隠蔽できるような位置に視点303の位置が設定され、当該切断面401a,401bが隠蔽されたゲーム画像350が生成される。そのため、本実施形態でも同じく上記図6のように、取得部201が、オブジェクト302a〜302cに対応付けられた隠蔽位置候補402b〜402e,402g〜402lのうちから、視点303の位置とすべき位置を1つ選ぶ。このときの選択する基準として、本実施形態では、取得部201が、視点303の移動距離がなるべく小さくなるように、視点303の位置とすべき位置を取得する。
図17は、本実施形態において、視点303の位置と隠蔽位置候補との距離の関係を示す図である。本図は、実施形態1における図7と同様に、仮想空間300内に配置されたキャラクタ301bを上から見たときの様子を示しており、キャラクタ301bの腕が2つに切断されて、切断面401a,401bが隠蔽部位として仮想空間300内に出現している。そして、この切断面401a,401bを隠すことのできる位置として、オブジェクト302a〜302cに対応付けられたあわせて48個の位置候補402(402a〜402l等)のうちから、実施形態1と同様に10個の隠蔽位置候補402b〜402e,402g〜402l(本図において一点鎖線で囲まれたもの)が選ばれている状態とする。
本実施形態では、取得部201が、この10個の隠蔽位置候補402b〜402e,402g〜402lのそれぞれについて現在の視点303の位置からの距離601を比較し、距離601が最も近い隠蔽位置候補を取得する。例えば、本図のように、視点303の位置と隠蔽位置候補402bとの距離601b、視点303の位置と隠蔽位置候補402gとの距離601g、視点303の位置と隠蔽位置候補402iとの距離601i、などがそれぞれ求められ、比較される。その結果、距離601bの値が、それ以外の距離601(601g,601i等)の値に比べて最も小さくなるため、隠蔽位置候補402bが視点303の位置とすべき位置として取得される。
このような構成によって、本実施形態に係るゲーム装置200は、視点303の位置を、仮想空間300内を移動する量をなるべく抑えながら、切断面401a,401bのような隠蔽部位をオブジェクト302の陰に隠すことのできる位置へと移動させて設定することができる。その結果、このような視点303の位置から撮影されて生成されるゲーム画像350を見ているプレイヤは、視点303の位置が大きく切り替わることがないため、不自然な印象をなるべく受けることなくゲームをプレイすることができる。
(実施形態4)
次に、本発明の実施形態4について説明する。上記実施形態では、キャラクタ301bの左腕が切断された際、仮想空間300内に作成された2つの切断面401a,401bの双方とも、所定の隠蔽条件を満たす部位(隠蔽部位)として扱われた。それに対して本実施形態では、2つの切断面401a,401bのうち、当該切断面401の外向き法線が視点303の位置の方向を向いているものが、隠蔽部位として扱われる。
すなわち、これまでの実施形態1〜3では、プレイヤに見せるべきでない残虐な表現を伴うような部位として2つの切断面401a,401bが仮想空間300内に作成された場合、その双方ともが隠蔽部位として扱われ、そして双方ともがいずれかのオブジェクト302の陰に隠されるような位置に視点303の位置が設定されて、ゲーム画像350が生成された。一方で、本実施形態では、作成された切断面401a,401bのそれぞれについて、その方向に応じて、隠蔽部位として扱われるものと扱われないものとに分けられる。例として、図18Aおよび図18Bを参照して説明する。
図18Aは、切断面401と視線との関係を示す図である。本図では、上記図5A等と同様に、仮想空間300内に配置されたキャラクタ301bが、キャラクタ301aから攻撃されることにより、左腕が切断されている様子が示されている。そしてそれに伴って、2つの切断面401a,401bが仮想空間300内に出現し、キャラクタ301bの体は、切断面401aを含み当該切断面401aから左腕の先までの断片と、切断面401bを含み、胴体や右腕、頭などからなる断片とに切断されている。この新たに出現した2つの切断面401a,401bは、残虐な表現を伴うため、これまでの実施形態1〜3では、2つの切断面401a,401bともに所定の隠蔽条件を満たす部位として扱われた。そして、これら切断面401a,401bが、仮想空間300内に配置されたオブジェクト302a〜302cのいずれかの陰に隠されるように、視点303の位置が設定された。
しかし、本図の切断面401aのように、たとえ残虐な表現を伴う部位として仮想空間300内に存在していたとしても、断片が、そこに含まれる切断面401を視点303の位置の方向に向けるような状態になっていなければ、切断面401は視点303の視界には入らない。すなわち、視点303の位置と切断面401a,401bの位置(典型的には中心位置)とを結ぶ線分として、視線602a,602bを考えたとき、視線602aは、切断面401a自体を含む断片によって遮られているが、視線602bは、切断面401b自体を含む断片によっては遮られていない。そのため、視点303の位置からは、切断面401bを見ることはできるが、切断面401aは、その視界に入らず、見ることができない。そのため、切断面401aは、わざわざオブジェクト302a〜302cのいずれかの陰に隠蔽される必要はなく、切断面401bのみが隠蔽部位として隠蔽されればよいことになる。このとき取得部201は、切断面401が視点303の視界に入るか否かを判断する基準として、切断面401について以下のように外向きの法線をとり、当該外向きの法線が視点303の位置の方向を向いているか否かによって、隠蔽部位とするか否かを判断する。
図18Bは、切断面401a,401bの外向きの法線と視線602a,602bとの関係を示す図である。本図は、図18Aに示された切断面401a,401b付近の様子を拡大したものであり、説明のために便宜上、2つに切断されたキャラクタ301bの左腕の断片のみが示されている。本図に示すように、取得部201は、仮想空間300内に生成された切断面401a,401bを隠蔽部位とすべきか否かを判断するため、切断面401a,401bのそれぞれについて、それぞれ当該切断面401a,401b上の視線602a,602bの端点から延びる外向き法線603a,603bをとる。ここで外向き法線603a,603bとは、それぞれ切断面401a,401b上の点を始点として、当該切断面401a,401bが含まれる断片の外側方向へ、当該面と直角方向に延びる直線をいう。
取得部201は、このような外向き法線603a,603bが、視点303の位置の方向を向いているか否かを判断するため、当該外向き法線603a,603bと、視線602a,602bと、がなす角度604a,604bに着目する。ここで着目された角度604a,604bは、それぞれ切断面401a,401b上から延びた外向き法線603a,603bと、当該外向き法線603a,603bの始点と視点303の位置とを結ぶ視線602a,602bとに挟まれた角度であり、0度以上180度以下の値をとる。そして取得部201は、当該着目された角度604が90度以上か否かを判定し、90度未満である場合には、その切断面401を隠蔽部位とし、90度以上である場合には、その切断面401を隠蔽部位としては扱わない。
具体的には本図の切断面401bのように、角度604bが0度以上90度未満の場合は、当該切断面401bが視点303の位置からの視界に入ることになる。一方で、切断面401aのように、角度604aが90度以上180度以下の場合は、当該切断面401aは視点303の位置からの視界には入らないことになる。そのため、切断面401bについては、隠蔽部位として扱われ、オブジェクト302の陰に隠されてゲーム画像350が生成されるが、切断面401aについては、隠蔽部位として扱われず、オブジェクト302の陰には隠されずにゲーム画像350が生成されることになる。
なお、角度602a,602bは、それぞれ切断面401a,401bの中心点における角度であることが典型的であるが、必ずしもこれに限らず、切断面401a,401b上のどの点における角度であってもよい。すなわち、視点303の位置から切断面401a,401bへと延びる視線602a,602bは、切断面401a,401b上のどの点へ向けられたものであってもよい。例えば、切断面401が平面でなく、凹凸をもった面である場合には、そこでの外向き法線603は、1方向だけでなく、その始点をどの位置にとるかによって様々な方向を向くことになる。この場合には、例えば取得部201は、切断面401上の複数の凹凸の頂点のそれぞれについて、当該頂点と視点303の位置とを結ぶ視線602と当該頂点から延びる外向き法線603とがなす角度604を算出し、当該算出された角度604のうち最小のものが90度以上か否かを判断して、該当する場合に当該切断面401を隠蔽部位とするようにしてもよい。これにより、凹凸をもった切断面401内の向きの異なる複数の部分のうち、視点303の位置からの視界に入る部分が少しでもある場合には、当該切断面401は隠蔽部位として扱われ、オブジェクト302の陰に隠されてゲーム画像350が生成されることになる。
このような構成によって、本実施形態に係るゲーム装置200は、外向き法線603が視点303の位置の方向を向いている切断面401を所定の隠蔽条件を満たす部位とし、外向き法線603が視点303の位置の方向を向いていない切断面401については所定の隠蔽条件を満たさない部位とする。その結果、本実施形態に係るゲーム装置200は、オブジェクト302の陰に隠す隠蔽部位の個数を抑制することができ、効率的に隠蔽部位を隠蔽してゲーム画像350を生成することが可能となる。
(実施形態5)
次に、本発明の実施形態5について説明する。実施形態1〜3でのゲーム装置200は、キャラクタ301bの左腕が切断された際、仮想空間300内に作成された2つの切断面401a,401bの双方ともを、1つのオブジェクト302の陰に隠蔽した。それに対して本実施形態でのゲーム装置200は、複数の隠蔽部位を、必ずしも単一のオブジェクト302に限らず、複数のオブジェクト302によって別々に隠蔽することができる。
本実施形態でも、説明のため、キャラクタ301bの左腕が切断され、隠蔽部位として2つの切断面401a,401bが仮想空間300内に出現した場合を想定する。このとき、これら残虐な表現を伴う切断面401a,401bをオブジェクト302の陰に隠すことのできるよう、上記実施形態では、オブジェクト302が、視点303の位置と切断面401a,401bの中心位置とを結ぶ線分403上になるように、視点303の位置が設定されたが、本実施形態では、オブジェクト302が、視点303の位置と2つの切断面401a,401bのそれぞれの位置とを結ぶ2つの線分403上になるように、視点303の位置が設定される。このとき用いられるオブジェクト302の個数は、1つに限られず、複数であってもよい。例えば、2つのオブジェクト302を用いた場合、プレイヤに表示されるゲーム画像350は、図19のようになる。
図19は、2つの切断面がそれぞれ別のオブジェクト302によって隠蔽されて撮影されたゲーム画像350を表す図である。本図は、上記実施形態と同様に、キャラクタ301aが右手に把持した剣でキャラクタ301bを攻撃しており、キャラクタ301bの左腕が2つに切断されている様子を示している。そして本図では、このとき出現した2つの切断面がゲーム画像350内に表示されないように、それぞれ2つの細い樹木オブジェクト302b,302dを利用することで、隠して表示している。
具体的に、キャラクタ301bの左腕が切断されることで出現した2つの切断面は、残虐な表現を伴うため、実施形態1(図9)では四角柱状のオブジェクト302aを利用し、実施形態2(図14)では樹木オブジェクト302bを利用することで、ゲーム画像350内に表示されないように隠して表示した。一方で、本実施形態では、本図のように2つの切断面がそれぞれ別々のオブジェクト302b,302dによって隠されるため、2つの切断面の間の空間はいずれのオブジェクト302にも隠されていない。
すなわち、本図では、実施形態1(図9)および実施形態2(図14)での2つの切断面の間の空間までも単一のオブジェクト302によって隠されていたゲーム画像350に比べて、隠される領域がよりコンパクトに絞られている。そのため、隠蔽されなかった部分には、例えば本図のように出血表現406を見せるなどして、キャラクタ301bの腕が切断されているという状況をよりリアルに、かつ肝心の切断面は隠蔽しつつ、表現することができる。
このような構成によって、本実施形態に係るゲーム装置200は、複数の隠蔽部位に対して、仮想空間300内に配置された複数のオブジェクトを利用して、当該複数の隠蔽部位が隠蔽されたゲーム画像350を表示する。その結果、本実施形態に係るゲーム装置200は、隠蔽部位間の距離が離れているような場合でも、それぞれを別々に隠蔽することで、隠蔽部位間の空間を必要以上に隠蔽することなく、仮想空間300内の様子を表すゲーム画像350をプレイヤに表示することができる。
(他の実施形態)
以上、本発明の実施の形態について説明したが、本発明は、上述した実施形態に限定されず、種々の変形および応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
例えば、上記実施形態では、「隠蔽部位」として、切断されたキャラクタ301の切断面401a,401bを例にとって説明した。しかし、切断面401に限られず、キャラクタの様々な部位を、「隠蔽部位」、すなわち所定の隠蔽条件を満たす部位としてもよい。例えば、激しく出血しているような体の部位や内臓などのグロテスクな部位、あるいは生首などの体の一部が欠けた部位を「隠蔽部位」として扱い、オブジェクト302の陰に隠してゲーム画像350内に表示しないようにしてもよい。
また、上記実施形態では、隠蔽位置候補が複数存在する場合に、種々の条件に基づいて視点303の位置とすべき位置を、当該複数の隠蔽位置候補のうちから1つ選んだ。このときさらに、キャラクタ301の位置から所定の閾距離以内になるように、視点303の位置を設定する隠蔽位置候補として取得してもよい。すなわち、取得部201は、あらかじめ所定の閾距離を設けておき、複数の隠蔽位置候補のうち、キャラクタ301の位置から所定の閾距離よりも離れているものを除外したうえで、視点303の位置とすべき位置を1つ選んでもよい。これにより、視点303の位置がキャラクタ301の位置から離れすぎて、生成される画像に映し出されるキャラクタ301が小さくなってしまい、プレイヤに見せるべき画像として適切でなくなることを防ぐことができる。
また、本発明の実施形態に係るゲーム装置200にてプレイされるゲームは、ここまで説明してきたような対戦型ゲームに限られず、例えばプレイヤがキャラクタ301を操作してゲームを進めるタイプのアクションゲームやロールプレイングゲームであってもよい。また、これら対戦型ゲームやアクションゲーム、ロールプレイングゲーム以外でも、プレイヤに見せるべきでないキャラクタ301の部位を適切に隠蔽して表示させたい様々なジャンルのゲームにおいても、本発明は適用されうる。さらに、キャラクタ301はプレイヤによって操作されず、あらかじめ記憶されたデータに基づいてキャラクタ301が自動的に動作するムービーのようなものに対しても、本発明は適用されうる。