(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-29
(45)【発行日】2023-07-07
(54)【発明の名称】ゲームプログラム、記録媒体、ゲーム処理方法
(51)【国際特許分類】
A63F 13/52 20140101AFI20230630BHJP
A63F 13/577 20140101ALI20230630BHJP
G06T 15/50 20110101ALI20230630BHJP
G06T 19/00 20110101ALI20230630BHJP
【FI】
A63F13/52
A63F13/577
G06T15/50 300
G06T19/00 C
G06T19/00 300A
(21)【出願番号】P 2019011829
(22)【出願日】2019-01-28
【審査請求日】2022-01-07
(73)【特許権者】
【識別番号】595000427
【氏名又は名称】株式会社コーエーテクモゲームス
(74)【代理人】
【識別番号】110003096
【氏名又は名称】弁理士法人第一テクニカル国際特許事務所
(72)【発明者】
【氏名】高橋 裕太郎
【審査官】遠藤 孝徳
(56)【参考文献】
【文献】特開平11-306383(JP,A)
【文献】特開2009-271664(JP,A)
【文献】特開2006-346507(JP,A)
【文献】特開2005-322108(JP,A)
【文献】特開平11-42370(JP,A)
【文献】特許第4912377(JP,B2)
【文献】特許第6298130(JP,B2)
【文献】特許第4118920(JP,B2)
【文献】特許第5154775(JP,B2)
【文献】特開2018-147002(JP,A)
【文献】特許第5822655(JP,B2)
【文献】特許第4707080(JP,B2)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00 - 13/98
G06T 15/00 - 15/87
G06T 19/00 - 19/20
(57)【特許請求の範囲】
【請求項1】
情報処理装置を、
仮想的な3次元空間内において仮想カメラから見える画像を生成する画像生成処理部、
前記画像を生成する際に、前記3次元空間内に配置された第1のオブジェクトの位置から前記仮想カメラの位置までの範囲に亘って存在する透明化オブジェクトを設定する透明化オブジェクト設定処理部、
前記画像を生成する際に、前記3次元空間内に配置された第2のオブジェクトの
うち前記透明化オブジェクトと接触する部分に透明化処理を実行
し、前記第2のオブジェクトのうち前記透明化オブジェクトと接触しない部分に透明化処理を実行しない透明化実行処理部、
として機能させる、ゲームプログラム。
【請求項2】
前記情報処理装置を、
前記第1のオブジェクトの位置から前記仮想カメラの位置までの範囲に亘って存在する
、衝突判定を有する第1の衝突判定用オブジェクトを設定する第1衝突判定用オブジェクト設定処理部、
前記第2のオブジェクトを包含する
、衝突判定を有する第2の衝突判定用オブジェクトを設定する第2衝突判定用オブジェクト設定処理部、
前記第1の衝突判定用オブジェクトと前記第2の衝突判定用オブジェクトとの衝突の有無を判定する衝突判定処理部、
として機能させ、
前記透明化実行処理部は、
前記衝突があったと判定された前記第2の衝突判定用オブジェクトに対応した前記第2のオブジェクトの
うち前記透明化オブジェクトと接触する部分に前記透明化処理を実行する、
請求項1に記載のゲームプログラム。
【請求項3】
前記透明化オブジェクト設定処理部は、
前記衝突があったと判定された場合に前記透明化オブジェクトを設定し、前記衝突がないと判定された場合には前記透明化オブジェクトを設定せず、
前記透明化実行処理部は、
前記衝突があったと判定された場合に前記透明化処理を実行し、前記衝突がないと判定された場合には前記透明化処理を実行しない、
請求項
2に記載のゲームプログラム。
【請求項4】
前記透明化オブジェクト設定処理部は、
前記第1のオブジェクト
から前記仮想カメラまでの範囲で単調増加する曲線の前記第1のオブジェクトと前記仮想カメラとを結ぶ軸を回転軸とした回転体である前記透明化オブジェクトを設定する、
請求項
1乃至3のいずれか1項に記載のゲームプログラム。
【請求項5】
前記透明化オブジェクト設定処理部は、
前記仮想カメラ側の端部に前記
第1のオブジェクトと前記仮想カメラとを結ぶ軸に垂直な楕円形状の端面を有する前記透明化オブジェクトを設定する、
請求項
1乃至4のいずれか1項に記載のゲームプログラム。
【請求項6】
前記透明化オブジェクト設定処理部は、
敵キャラクタが前記第1のオブジェクトに対して特定の方向に表示される場合、前記特定の方向に長い楕円形状の前記端面を有する前記透明化オブジェクトを設定する、請求項5に記載のゲームプログラム。
【請求項7】
請求項1乃至6のいずれか1項に記載のゲームプログラムを記録した、情報処理装置が読み取り可能な記録媒体。
【請求項8】
情報処理装置によって実行されるゲーム処理方法であって、
仮想的な3次元空間内において仮想カメラから見える画像を生成するステップと、
前記画像を生成する際に、前記3次元空間内に配置された第1のオブジェクトの位置から前記仮想カメラの位置までの範囲に亘って存在する透明化オブジェクトを設定するステップと、
前記画像を生成する際に、前記3次元空間内に配置された第2のオブジェクトの
うち前記透明化オブジェクトと接触する部分に透明化処理を実行
し、前記第2のオブジェクトのうち前記透明化オブジェクトと接触しない部分に透明化処理を実行しないステップと、
を有する、ゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲームプログラム、当該ゲームプログラムが記録された記録媒体、及びゲーム処理方法に関する。
【背景技術】
【0002】
従来、仮想的な3次元空間であるオブジェクト空間内において仮想カメラから見える画像を生成する画像生成システムにおいて、プレイヤの視点とキャラクタとの間に障害物となるオブジェクトが入り込んだ場合に、プレイヤの視界がその障害物オブジェクトによりふさがれてしまいキャラクタの周辺がプレイヤから見えなくなることを防止する画像処理技術が知られている。
【0003】
例えば特許文献1には、視点から見て第1のオブジェクトが第2のオブジェクトの奥側にあると判断され、第1のオブジェクトの透視変換画像が第2のオブジェクトの透視変換画像に重なった場合に、第2のオブジェクトを透過して第1のオブジェクトを視点から見えるようにした画像生成システムが記載されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記従来技術では、オブジェクトの全体に対して透過処理を行うため、例えば壁や塀等のオブジェクトの全体が透過されてその向こう側が見えてしまう等、開発者がプレイヤに見せることを意図していない画像が表示されてしまう可能性があった。
【0006】
本発明はこのような問題点に鑑みてなされたものであり、オブジェクトの透過処理により開発者の意図しない画像が表示されることを防止できるゲームプログラム、記録媒体、及びゲーム処理方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、本発明のゲームプログラムは、情報処理装置を、仮想的な3次元空間内において仮想カメラから見える画像を生成する画像生成処理部、前記画像を生成する際に、前記3次元空間内に配置された第1のオブジェクトの位置から前記仮想カメラの位置までの範囲に亘って存在する透明化オブジェクトを設定する透明化オブジェクト設定処理部、前記画像を生成する際に、前記3次元空間内に配置された第2のオブジェクトの前記透明化オブジェクトと接触する部分に透明化処理を実行する透明化実行処理部、として機能させる。
【0008】
上記目的を達成するために、本発明の記録媒体は、上記ゲームプログラムを記録した、情報処理装置が読み取り可能な記録媒体である。
【0009】
上記目的を達成するために、本発明のゲーム処理方法は、情報処理装置によって実行されるゲーム処理方法であって、仮想的な3次元空間内において仮想カメラから見える画像を生成するステップと、前記画像を生成する際に、前記3次元空間内に配置された第1のオブジェクトの位置から前記仮想カメラの位置までの範囲に亘って存在する透明化オブジェクトを設定するステップと、前記画像を生成する際に、前記3次元空間内に配置された第2のオブジェクトの前記透明化オブジェクトと接触する部分に透明化処理を実行するステップと、を有する。
【発明の効果】
【0010】
本発明のゲームプログラム等によれば、オブジェクトの透過処理により開発者の意図しない画像が表示されることを防止できる。
【図面の簡単な説明】
【0011】
【
図1】一実施形態に係るゲームシステムの全体構成の一例を表すシステム構成図である。
【
図2】情報処理装置の機能的構成の一例を表すブロック図である。
【
図3】仮想カメラと各オブジェクトの配置を説明するための説明図である。
【
図4】第1の衝突判定用オブジェクトの一例を表す説明図である。
【
図5】第2の衝突判定用オブジェクトの一例を表す説明図である。
【
図6】透明化オブジェクトの形状の一例を表す説明図である。
【
図7】
図6に示す透明化オブジェクトの曲面形状を説明するためのグラフである。
【
図8】透明化オブジェクトの形状の他の例を表す説明図である。
【
図9】
図8に示す透明化オブジェクトの曲面形状を説明するためのグラフである。
【
図10】透明化オブジェクトの形状のさらに他の例を表す説明図である。
【
図11】
図10に示す透明化オブジェクトの曲面形状を説明するためのグラフである。
【
図12】透明化処理を実行する際の接触判定手法の一例を表す説明図である。
【
図13】透明化処理が実行された場合の画像の一例を表す図である。
【
図14】情報処理装置のCPUによって実行される処理手順の一例を表すフローチャートである。
【
図15】光軸に対する径が仮想カメラからプレイヤキャラクタに向けて大きくなる形状の透明化オブジェクトが設定された比較例を説明するための説明図である。
【
図17】本実施形態の透明化オブジェクトの形状による効果を説明するための説明図である。
【
図19】透明化オブジェクトの端面を楕円形状とする変形例において、透明化処理を実行する際の接触判定手法の一例を表す説明図である。
【
図20】透明化オブジェクトの端面を楕円形状とする変形例において、透明化処理が実行された場合の画像の一例を表す図である。
【
図21】情報処理装置のハードウェア構成の一例を表すブロック図である。
【発明を実施するための形態】
【0012】
以下、本発明の一実施の形態について図面を参照しつつ説明する。
【0013】
<1.ゲームシステムの全体構成>
まず、
図1を用いて、本実施形態に係るゲームシステム1の全体構成の一例について説明する。
図1に示すように、ゲームシステム1は、情報処理装置3と、ゲームコントローラ5と、表示装置7を有する。ゲームコントローラ5及び表示装置7の各々は、情報処理装置3と有線又は無線により通信可能に接続されている。
【0014】
情報処理装置3は、例えば据え置き型のゲーム機である。但しこれに限定されるものではなく、例えば入力部や表示部等を一体に備えた携帯型のゲーム機でもよい。また、ゲーム機以外にも、例えば、サーバコンピュータ、デスクトップ型コンピュータ、ノート型コンピュータ、タブレット型コンピュータ等のように、コンピュータとして製造、販売等されているものや、スマートフォン、携帯電話、ファブレット等のように、電話機として製造、販売等されているものでもよい。
【0015】
プレイヤは、ゲームコントローラ5を用いて各種の操作入力を行う。
図1に示す例では、ゲームコントローラ5は例えば十字キー9や複数のボタン11等を有する。なお、ゲームコントローラ5は上記に代えて又は加えて、例えばジョイスティックやタッチパッド等を有してもよい。
【0016】
<2.ゲームの概略内容>
次に、本実施形態に係るゲーム、すなわち、本発明のゲームプログラム及びゲーム処理方法が情報処理装置3によって実行されることにより提供されるゲームの概略内容の一例について説明する。
【0017】
本実施形態に係るゲームでは、プレイヤが操作可能なプレイヤキャラクタ(第1のオブジェクトの一例)が、仮想的な3次元空間であるゲームフィールド上を移動しながらステージを進めていく。仮想的な3次元空間内においては、プレイヤキャラクタを被写体としつつプレイヤの操作によっても移動可能な仮想カメラから見える画像が生成される。プレイヤキャラクタは、敵キャラクタと遭遇した場合には戦闘を行う。ゲームフィールドには、プレイヤキャラクタや敵キャラクタの背景を構成する多数の背景オブジェクト(第2のオブジェクトの一例)が配置される。
【0018】
なお、「第1のオブジェクト」は、本実施形態のように例えば人間のキャラクタに限定されるものではなく、人間以外の動物、人間や動物以外の生物、仮想的な生物(例えば怪物、ゴースト、妖怪等)、ロボットやアンドロイド、物品や物体などのオブジェクト等でもよい。
【0019】
本実施形態に係るゲームでは、仮想カメラとプレイヤキャラクタとの間に障害物となる背景オブジェクトが入り込んだ場合でも、背景オブジェクトを部分的に透明化して、プレイヤキャラクタがプレイヤの視界から見えなくなることを防止する。以下、この内容について詳細に説明する。
【0020】
<3.情報処理装置の機能的構成>
次に、
図2及び
図3~
図13を用いて、情報処理装置3の機能的構成の一例について説明する。
【0021】
図2に示すように、情報処理装置3は、画像生成処理部13と、第1衝突判定用オブジェクト設定処理部15と、第2衝突判定用オブジェクト設定処理部17と、衝突判定処理部19と、透明化オブジェクト設定処理部21と、透明化実行処理部23とを有する。
【0022】
画像生成処理部13は、仮想的な3次元空間内において仮想カメラ(視点)から見える画像を生成する。仮想カメラは、プレイヤキャラクタを被写体とするように自動的に移動する。また、プレイヤの操作によって、例えばプレイヤキャラクタの周りを旋回したり、カメラの向きを変えたり、高さ方向やプレイヤキャラクタに対して遠近する方向等に移動することが可能である。
【0023】
第1衝突判定用オブジェクト設定処理部15は、プレイヤキャラクタの位置から仮想カメラの位置までの範囲に亘って存在する直方体形状の第1の衝突判定用オブジェクトを設定する。「プレイヤキャラクタの位置」は、処理上設定されるプレイヤキャラクタの基準となる位置であり、例えばプレイヤキャラクタの中心位置である。但し、プレイヤキャラクタの特定の部位(例えば顔)や、身体の表面、近傍位置等も含まれる。「仮想カメラの位置」は、処理上設定される仮想カメラ(視点)の基準となる位置であり、例えば仮想カメラのレンズの中心位置(光軸の位置)である。但し、仮想カメラの近傍位置等も含まれる。
【0024】
第1の衝突判定用オブジェクトは、直方体形状の軸平行境界ボックス(AABB:Axis-Aligned Bounding Box)であり、直方体の各面の法線がゲームフィールドのワールド座標系のX軸、Y軸、Z軸のそれぞれと平行となるように設定される。第1の衝突判定用オブジェクトは、例えばプレイヤキャラクタの位置と仮想カメラの位置とをつなぐカプセルコリジョンを包含するように設定される。
【0025】
第2衝突判定用オブジェクト設定処理部17は、背景オブジェクトを包含する直方体形状の第2の衝突判定用オブジェクトを設定する。第2の衝突判定用オブジェクトは、第1の衝突判定用オブジェクトと同様、直方体形状の軸平行境界ボックスであり、直方体の各面の法線がゲームフィールドのワールド座標系のX軸、Y軸、Z軸のそれぞれと平行となるように設定される。ゲームフィールドには多様な形状の大小様々な背景オブジェクトが配置されるが、第2の衝突判定用オブジェクトは、各背景オブジェクトに対して設定される。
【0026】
衝突判定処理部19は、上記第1衝突判定用オブジェクト設定処理部15により設定された第1の衝突判定用オブジェクトと、上記第2衝突判定用オブジェクト設定処理部17により設定された第2の衝突判定用オブジェクトとの衝突の有無を、公知の軸平行境界ボックスによる衝突判定手法により判定する。
【0027】
図3~
図5に、衝突判定用オブジェクトの一例を示す。
図3は、仮想カメラと各オブジェクトの配置を説明するための説明図である。
図3に示す例では、仮想的な3次元空間内に、プレイヤキャラクタ25と、床27、壁29,31,33、柱35等の背景オブジェクトと、仮想カメラ37が配置されている。仮想カメラ37は、光軸39がプレイヤキャラクタ25の基準位置41を向くように配置されている。
【0028】
図4に示すように、第1の衝突判定用オブジェクト43は、プレイヤキャラクタ25の基準位置41から仮想カメラ37の基準位置45までの範囲に亘って存在するように、且つ、直方体の各面の法線がワールド座標系47のX軸、Y軸、Z軸のそれぞれと平行となるように、設定される。
【0029】
図5に示すように、第2の衝突判定用オブジェクト49は、背景オブジェクトである柱35をそれぞれ包含するように、且つ、直方体の各面の法線がワールド座標系47のX軸、Y軸、Z軸のそれぞれと平行となるように、それぞれ設定される。なお、
図5では図示を省略しているが、柱35以外の床27や壁29,31,33についても第2の衝突判定用オブジェクトが設定されてもよい。
【0030】
上述のようにして設定された第1の衝突判定用オブジェクト43と第2の衝突判定用オブジェクト49との衝突の有無が判定される。衝突判定用オブジェクト43,49はワールド座標系47に対して同じ向きであるため、衝突判定の処理を高速に実行できると共に処理負荷を大幅に軽減できる。
【0031】
図2に戻り、透明化オブジェクト設定処理部21は、仮想カメラ37による画像を生成する際に、3次元空間内に配置されたプレイヤキャラクタ25の基準位置41から仮想カメラ37の基準位置45までの範囲に亘って存在する透明化オブジェクトを設定する。透明化オブジェクトは、プレイヤキャラクタ25の基準位置41と仮想カメラ37の基準位置45とを結ぶ光軸39(軸の一例)に対する径がプレイヤキャラクタ25から仮想カメラ37に向けて大きくなる形状となるように設定される。より詳細には、透明化オブジェクトは、プレイヤキャラクタ25側の先端が尖り、且つ、光軸39に対する径がプレイヤキャラクタ25から仮想カメラ37に向けて曲線状に拡大する形状となるように設定される。
【0032】
透明化実行処理部23は、仮想カメラ37による画像を生成する際に、3次元空間内に配置された背景オブジェクトの、上記透明化オブジェクト設定処理部21により設定された透明化オブジェクトと接触する部分に透明化処理を実行する。このとき、透明化実行処理部23は、上述した衝突判定処理部19により衝突があったと判定された第2の衝突判定用オブジェクト49に対応した衝突オブジェクトに対してのみ透明化処理を実行する。
【0033】
なお、「透明化処理」は透明化(透明度100%)する処理と半透明化(透明度が100%未満)する処理の両方を含む。透明化する場合には、本来描画される背景オブジェクトの該当するピクセルを描画しないようにする。また、半透明化する場合には、描画するピクセルと描画しないピクセルを透明度に応じた割合となるように配置することによって行う(いわゆるディザリング)。透明化実行処理部23は、光軸39に近づくにつれて透明度が高くなるように、背景オブジェクトの透明化オブジェクトと接触する部分に透明化処理を実行する。
【0034】
なお、「背景オブジェクトの透明化オブジェクトと接触する部分」の判定は、両者の位置や形状の情報を使用して厳密に行ってもよいが、処理負荷を軽減するために簡易的な手法(後述の
図12参照)を採用してもよい。すなわち、当該簡易的手法により「厳密には透明化オブジェクトと接触していないが実質的に透明化オブジェクトと接触しているとみなせる部分」を含むものとする。
【0035】
図6~
図11に、透明化オブジェクトの形状の例を示す。
図6に示す透明化オブジェクト51は、光軸39に対する径がプレイヤキャラクタ25から仮想カメラ37に向けて大きくなる形状であり、且つ、プレイヤキャラクタ25側の先端が尖り、光軸39に対する径がプレイヤキャラクタ25から仮想カメラ37に向けて曲線状に拡大する形状となるように設定されている。透明化オブジェクト51は、仮想カメラ37側の端部に光軸39に垂直な円形状の端面55を有する。
【0036】
図7は、
図6に示す透明化オブジェクト51の曲面形状を説明するためのグラフである。
図7に示す曲線は、透明化オブジェクト51を、仮想カメラ37のカメラ座標系53(基準位置45を原点としZ軸が光軸39と一致する)におけるZ軸を含む断面で見た場合における曲面形状を表している。言い換えると、透明化オブジェクト51は、
図7に示す曲線を光軸39周りに回転させることにより生成される回転体である。
図7において、グラフの横軸xは、透明化オブジェクト51のプレイヤキャラクタ25側の先端(基準位置41)から仮想カメラ37側の端面55への距離の割合を表しており、x=0で先端位置(基準位置41)、x=1で端面55の中心位置となる。グラフの縦軸yは、端面55の半径に乗算する値である。
【0037】
図7に示す曲線は、例えば次式の関数h(x)で表される。
f(x)=-x+1
g(x)=x
2
h(x)=f(g(f(x)))
なお、log(対数関数)を使うことでも同様の曲線を生成できるが、上記関数h(x)を使用することで計算負荷を軽減できる。
【0038】
透明化オブジェクト51の形状とする場合には、以下のような効果が得られる。すなわち、透明化オブジェクト51のプレイヤキャラクタ25側の先端を尖らせることができるので、プレイヤキャラクタ25の近くにはあるが表示の障害とはならない背景オブジェクトを透明化の処理対象から除外し易くなる。また、透明化オブジェクト51は例えば直線状に拡大する形状の場合に比べて膨らみがあるため、プレイヤキャラクタ25の表示の障害とはならないがカメラ画像に割り込んで視界の煩雑さを招き易い、仮想カメラ37から近い距離にある背景オブジェクトを、より透明化し易くなる。したがって、仮想カメラ37の視界をより良好にできる。
【0039】
図8に示す透明化オブジェクト57も同様に、光軸39に対する径がプレイヤキャラクタ25から仮想カメラ37に向けて大きくなる形状であり、且つ、プレイヤキャラクタ25側の先端が尖り、光軸39に対する径がプレイヤキャラクタ25から仮想カメラ37に向けて曲線状に拡大する形状となるように設定されている。透明化オブジェクト57は、仮想カメラ37側の端部に光軸39に垂直な円形状の端面59を有する。
【0040】
図9は、
図8に示す透明化オブジェクト57の曲面形状を説明するためのグラフである。透明化オブジェクト57は、
図9に示す曲線を光軸39周りに回転させることにより生成される回転体である。
【0041】
図9に示す曲線は、例えば次式の関数g(x)で表される。
g(x)=x
2
【0042】
透明化オブジェクト57の形状とする場合には、以下のような効果が得られる。すなわち、透明化オブジェクト57のプレイヤキャラクタ25側の先端をより一層尖らせることができるので、プレイヤキャラクタ25の近くにはあるが表示の障害とはならない背景オブジェクトを透明化の処理対象からさらに除外し易くなる。したがって、プレイヤキャラクタ25の近くにある重要な情報の表示を阻害しないようにできる。
【0043】
図10に示す透明化オブジェクト61も同様に、光軸39に対する径がプレイヤキャラクタ25から仮想カメラ37に向けて大きくなる形状であり、且つ、プレイヤキャラクタ25側の先端が尖り、光軸39に対する径がプレイヤキャラクタ25から仮想カメラ37に向けて曲線状に拡大する形状となるように設定されている。透明化オブジェクト61は、仮想カメラ37側の端部に光軸39に垂直な円形状の端面63を有する。
【0044】
図11は、
図10に示す透明化オブジェクト61の曲面形状を説明するためのグラフである。透明化オブジェクト61は、
図11に示す曲線を光軸39周りに回転させることにより生成される回転体である。
【0045】
図11に示す曲線は、例えば次式の関数i(x)で表される。
i(x)=-2x
3+3x
2
【0046】
透明化オブジェクト61の形状とする場合には、上記透明化オブジェクト51,57の双方の効果が得られる。
【0047】
図12に、透明化処理を実行する際の接触判定手法の一例を示す。
図12に示す円は、上述した透明化オブジェクト51,57,61をカメラ座標系53のZ軸に垂直な任意の位置の断面で見た形状を表している。円の半径aは、上述した関数h(x)、g(x)、i(x)によりZ軸位置に応じて求められる。
【0048】
図12において、例えばピクセルP1に対する処理は次のように行われる。まず、ピクセルP1と透明化オブジェクトの中心線(光軸39)との間に垂線ベクトル65を生成し、当該垂線ベクトル65のカメラ座標系53におけるXZ平面での長さをX1として、当該X1の値を用いて円の式(x
2+y
2=a
2)よりY1を算出する。このY1の値と垂線ベクトル65の長さL1とを比較し、Y1がL1よりも大きい場合には透明化処理を実行する。ピクセルP1の場合にはY1がL1よりも大きいので、ピクセルP1には透明化処理が実行される。
【0049】
ピクセルP2に対する処理も上記と同様である。まず、ピクセルP2と透明化オブジェクトの中心線(光軸39)との間に垂線ベクトル67を生成し、当該垂線ベクトル67のカメラ座標系53におけるXZ平面での長さをX2として、当該X2の値を用いて円の式(x2+y2=a2)よりY2を算出する。このY2の値と垂線ベクトル67の長さL2とを比較すると、Y2がL2よりも小さいので、ピクセルP2には透明化処理が実行されない。
【0050】
図13に、透明化処理が実行された場合の画像の一例を示す。
図13に示す例では、プレイヤキャラクタ25と仮想カメラ37との間に柱35が存在しており、上述した画像処理によって柱35が部分的に半透明化されている。半透明化は、プレイヤキャラクタ25に近づくにつれて透明度が高くなるように行われる。
【0051】
なお、以上説明した各処理部における処理等は、これらの処理の分担の例に限定されるものではなく、例えば、更に少ない数の処理部(例えば1つの処理部)で処理されてもよく、また、更に細分化された処理部により処理されてもよい。また、上述した各処理部の機能は、後述するCPU101(後述の
図21参照)が実行するゲームプログラムにより実装されるものであるが、例えばその一部がASICやFPGA等の専用集積回路、その他の電気回路等の実際の装置により実装されてもよい。
【0052】
<4.情報処理装置が実行する処理手順>
次に、
図14を用いて、情報処理装置3のCPU101によって実行される処理手順の一例について説明する。
【0053】
ステップS10では、情報処理装置3は、画像生成処理部13により、仮想的な3次元空間内において仮想カメラ37による画像を生成する。
【0054】
ステップS20では、情報処理装置3は、第1衝突判定用オブジェクト設定処理部15により、プレイヤキャラクタ25と仮想カメラ37の間に直方体形状の第1の衝突判定用オブジェクト43を設定する。
【0055】
ステップS30では、情報処理装置3は、第2衝突判定用オブジェクト設定処理部17により、背景オブジェクトを包含する直方体形状の第2の衝突判定用オブジェクト49を設定する。
【0056】
ステップS40では、情報処理装置3は、衝突判定処理部19により、上記ステップS20で設定された第1の衝突判定用オブジェクト43と、上記ステップS30で設定された第2の衝突判定用オブジェクト49との衝突の有無を判定する。衝突がない場合には(ステップS40:NO)、後述するステップS70に直接移る。一方、衝突があった場合には(ステップS40:YES)、ステップS50に移る。
【0057】
ステップS50では、情報処理装置3は、透明化オブジェクト設定処理部21により、プレイヤキャラクタ25と仮想カメラ37の間に透明化オブジェクト51,57,61を設定する。
【0058】
ステップS60では、情報処理装置3は、透明化実行処理部23により、背景オブジェクトの上記ステップS50で設定された透明化オブジェクト51,57,61と接触する部分に透明化処理を実行する。
【0059】
ステップS70では、情報処理装置3は、プレイヤによりゲーム終了の指示が行われたか否かを判定する。ゲーム終了の指示が行われていない場合には(ステップS70:NO)、先のステップS10に戻り、同様の手順を繰り返す。一方、ゲーム終了の指示が行われた場合には(ステップS70:YES)、本フローチャートを終了する。
【0060】
なお、上述した処理手順は一例であって、上記手順の少なくとも一部を削除又は変更してもよいし、上記以外の手順を追加してもよい。また、上記手順の少なくとも一部の順番を変更してもよいし、複数の手順が単一の手順にまとめられてもよい。
【0061】
<5.実施形態の効果>
本実施形態のゲームプログラムは、情報処理装置3を、仮想的な3次元空間内において仮想カメラ37から見える画像を生成する画像生成処理部13、画像を生成する際に、3次元空間内に配置されたプレイヤキャラクタ25の基準位置41から仮想カメラ37の基準位置45までの範囲に亘って存在する透明化オブジェクト51,57,61を設定する透明化オブジェクト設定処理部21、画像を生成する際に、3次元空間内に配置された背景オブジェクト35(上記実施形態では柱35)の透明化オブジェクト51,57,61と接触する部分に透明化処理を実行する透明化実行処理部23、として機能させる。
【0062】
これにより、仮想カメラ37とプレイヤキャラクタ25との間に障害物となる背景オブジェクト35が入り込んだ場合でも、背景オブジェクト35を部分的に透明化して、プレイヤキャラクタ25が見えなくなることを防止できる。このとき、背景オブジェクト35の全体について透明化を行うのではなく必要な部分のみについて透明化を行うので、開発者の意図しないオブジェクト等が見えてしまうことを防止できる。また、オブジェクト全体の透明化を回避するために例えばオブジェクトを細かく分断して作成しておく等の必要もなくなるので、開発工数やコストが増大することを防止できる。
【0063】
また、本実施形態では特に、ゲームプログラムは、情報処理装置3を、プレイヤキャラクタ25の基準位置41から仮想カメラ37の基準位置45までの範囲に亘って存在する直方体形状の第1の衝突判定用オブジェクト43を設定する第1衝突判定用オブジェクト設定処理部15、背景オブジェクト35を包含する直方体形状の第2の衝突判定用オブジェクト49を設定する第2衝突判定用オブジェクト設定処理部17、第1の衝突判定用オブジェクト43と第2の衝突判定用オブジェクト49との衝突の有無を判定する衝突判定処理部19、としてさらに機能させ、透明化実行処理部23は、衝突があったと判定された第2の衝突判定用オブジェクト49に対応した背景オブジェクト35の透明化オブジェクト51,57,61と接触する部分に透明化処理を実行する。
【0064】
本実施形態では、衝突判定により衝突があったと判定された背景オブジェクト35に対してのみ透明化処理を実行する。これにより、プレイヤキャラクタ25の表示の障害とならない背景オブジェクト35に対しては透明化を行わず、障害となる背景オブジェクト35に対してのみ透明化を行うことができるので、情報処理装置3の処理負荷を軽減できる。また、衝突判定をいわゆる軸平行境界ボックスにより行うので、衝突判定の処理を高速に実行できると共に処理負荷を大幅に軽減できる。
【0065】
また、本実施形態では特に、透明化オブジェクト設定処理部21は、プレイヤキャラクタ25と仮想カメラ37とを結ぶ光軸39に対する径がプレイヤキャラクタ25から仮想カメラ37に向けて大きくなる形状の透明化オブジェクト51,57,61を設定する。
【0066】
これによる効果を比較例を用いて説明する。
図15は、光軸39に対する径が仮想カメラ37からプレイヤキャラクタ25に向けて大きくなる形状の透明化オブジェクト69が設定された比較例における配置の一例を説明するための説明図であり、
図16は
図15に示す仮想カメラ37による画像の一例である。この場合、
図15及び
図16に示すように、プレイヤキャラクタ25の近くにはあるがプレイヤキャラクタ25の表示の障害とはならないオブジェクト71(例えば宝箱等)を透明化してしまう可能性がある。また、仮想カメラ37から近い距離にあるオブジェクト73(例えば柱、壁、塀等)については透明化されず、
図16に示すようにカメラ画像に割り込んで視界の煩雑さを招く可能性がある。
【0067】
一方、本実施形態では、透明化オブジェクト51,57,61(
図17では代表して透明化オブジェクト51を示す)を上述の形状に設定することにより、プレイヤキャラクタ25の近くにはあるが表示の障害とならないオブジェクト71を透明化の処理対象から除外し易くなる。その一方で、プレイヤキャラクタ25の表示の障害とはならなくともカメラ画像に割り込んで視界の煩雑さを招き易い、仮想カメラ37から近い距離にあるオブジェクト73については、透明化の処理対象に含め易くなる。その結果、
図18に示すように、障害とならないオブジェクト71の透明化を回避しつつ良好なカメラの視界を確保できる。
【0068】
また、本実施形態では特に、透明化オブジェクト設定処理部21は、プレイヤキャラクタ25側の先端が尖り、且つ、光軸39に対する径がプレイヤキャラクタ25から仮想カメラ37に向けて曲線状に拡大する形状の透明化オブジェクト51,57,61を設定する。
【0069】
透明化オブジェクト51,57,61のプレイヤキャラクタ25側の先端を尖らせることにより、プレイヤキャラクタ25の近くにはあるが表示の障害とならないオブジェクトを透明化の処理対象からより除外し易くなる。また、透明化オブジェクト51,57,61の径を仮想カメラ37に向けて曲線状に拡大する形状とすることにより、特に透明化オブジェクト51,61の場合には、仮想カメラ37から近い距離にあるオブジェクトをより透明化し易くなり、カメラの視界をより良好にできる。
【0070】
また、本実施形態では特に、透明化実行処理部23は、光軸39に近づくにつれて透明度が高くなるように、背景オブジェクト35の透明化オブジェクト51,57,61と接触する部分に透明化処理を実行する。
【0071】
これにより、仮想カメラ37の視界の中央部分については透明度を高くしてプレイヤキャラクタ25の視認性を確保することができる。また、視界の中央部分から離れるにつれて透明度を徐々に低くすることで、
図13に示すように、背景オブジェクト35の描画の変化が連続的となり、半透明化が実行されている部分と実行されていない部分との境界を不明瞭にできる。その結果、見た目に不自然な透過画像(例えばオブジェクトに穴がぽっかり空いた画像)となるのを防止できる。
【0072】
<6.変形例等>
なお、本発明は、上記の実施形態に限られるものではなく、その趣旨及び技術的思想を逸脱しない範囲内で種々の変形が可能である。
【0073】
例えば、以上では透明化オブジェクトの仮想カメラ37側の端面が円形である場合について説明したが、当該端面の形状を楕円形状としてもよい。本変形例では、透明化オブジェクト設定処理部21は、仮想カメラ37側の端部に光軸39に垂直な楕円形状の端面(図示省略)を有する透明化オブジェクト51A,57A,61A(図示省略)を設定する。
【0074】
図19に、本変形例における透明化処理を実行する際の接触判定手法の一例を示す。
図19の楕円は、前述した透明化オブジェクト51,57,61をカメラ座標系53におけるY方向に長くした透明化オブジェクト51A,57A,61Aを、カメラ座標系53のZ軸に垂直な任意の位置の断面で見た形状を表している。楕円の短半径a及び長半径bは、上述した関数h(x)、g(x)、i(x)(但し楕円の半径に応じてyの値を適宜変化させる必要がある)によりZ軸位置に応じて求められる。
【0075】
図19において、例えばピクセルP3に対する処理は次のように行われる。まず、ピクセルP3と透明化オブジェクトの中心線(光軸39)との間に垂線ベクトル75を生成し、当該垂線ベクトル75のカメラ座標系53におけるXZ平面での長さをX3として、当該X3の値を用いて楕円の式(x
2/a
2+y
2/b
2=1)よりY3を算出する。このY3の値と垂線ベクトル75の長さL3とを比較し、Y3がL3よりも大きい場合には透明化処理を実行する。ピクセルP3の場合にはY3がL3よりも大きいので、ピクセルP3には透明化処理が実行される。
【0076】
ピクセルP4に対する処理も上記と同様である。まず、ピクセルP4と透明化オブジェクトの中心線(光軸39)との間に垂線ベクトル77を生成し、当該垂線ベクトル77のカメラ座標系53におけるXZ平面での長さをX4として、当該X4の値を用いて楕円の式(x2/a2+y2/b2=1)よりY4を算出する。このY4の値と垂線ベクトル77の長さL4とを比較すると、Y4がL4よりも小さいので、ピクセルP4には透明化処理が実行されない。
【0077】
図20に、透明化処理が実行された場合の画像の一例を示す。
図20に示す例では、プレイヤキャラクタ25と敵キャラクタ79とが戦闘中であり、仮想カメラ37から見て上下方向に並んで表示されている。そして、プレイヤキャラクタ25と仮想カメラ37との間に柱35が存在しており、上述した画像処理によって柱35が上下方向に長い楕円形状に半透明化されている。特に、リアルタイムに進行する戦闘においてはプレイヤによる一瞬一瞬の判断及び操作が重要となるため、仮に敵キャラクタ79が見えなくなった場合には敵からの攻撃に対して適切な防御ができなかったり、効果的な攻撃のタイミングを逃す等により、戦闘において不利益を受ける可能性がある。本変形例によれば、プレイヤキャラクタ25だけでなく敵キャラクタ79についても合わせて視認性を確保することができるので、上記のような不利益を受けることを防止できる。なお、本変形例は、例えば敵をロックオンする機能等により、プレイヤキャラクタ25と敵キャラクタ79との画面上での配置が固定される場合に特に有効である。
【0078】
以上の変形例によれば、プレイヤキャラクタ25に関わる重要な情報(上記の例では敵キャラクタ79)がプレイヤキャラクタ25に対して特定の方向に表示されるような場合に、当該特定の方向に長い楕円形状の端面とすることで、重要な情報も合わせて視認性を確保することができる。
【0079】
なお、本発明は、仮想カメラと被写体であるオブジェクトの間に他のオブジェクトが入り込む場合があるゲームであれば、様々なジャンルのゲームに適用可能である。例えば、シミュレーションゲーム、ロールプレイングゲーム、アクションゲーム、アクションロールプレイングゲーム、格闘ゲーム、アドベンチャーゲーム等にも、本発明は適用可能である。
【0080】
また、以上既に述べた以外にも、上記実施形態や各変形例による手法を適宜組み合わせて利用しても良い。その他、一々例示はしないが、上記実施形態や各変形例は、その趣旨を逸脱しない範囲内において、種々の変更が加えられて実施されるものである。
【0081】
<7.情報処理装置のハードウェア構成>
次に、
図21を用いて、上記で説明したCPU101等が実行するプログラムにより実装された各処理部を実現する情報処理装置3のハードウェア構成の一例について説明する。
【0082】
図21に示すように、情報処理装置3は、例えば、CPU101と、ROM103と、RAM105と、GPU106と、例えばASIC又はFPGA等の特定の用途向けに構築された専用集積回路107と、入力装置113と、出力装置115と、記録装置117と、ドライブ119と、接続ポート121と、通信装置123を有する。これらの構成は、バス109や入出力インターフェース111等を介し相互に信号を伝達可能に接続されている。
【0083】
ゲームプログラムは、例えば、ROM103やRAM105、記録装置117等に記録しておくことができる。
【0084】
また、ゲームプログラムは、例えば、フレキシブルディスクなどの磁気ディスク、各種のCD、MOディスク、DVD等の光ディスク、半導体メモリ等のリムーバブルな記録媒体125に、一時的又は永続的(非一時的)に記録しておくこともできる。このような記録媒体125は、いわゆるパッケージソフトウエアとして提供することもできる。この場合、これらの記録媒体125に記録されたゲームプログラムは、ドライブ119により読み出されて、入出力インターフェース111やバス109等を介し上記記録装置117に記録されてもよい。
【0085】
また、ゲームプログラムは、例えば、ダウンロードサイト、他のコンピュータ、他の記録装置等(図示せず)に記録しておくこともできる。この場合、ゲームプログラムは、LANやインターネット等のネットワークNWを介し転送され、通信装置123がこのプログラムを受信する。そして、通信装置123が受信したプログラムは、入出力インターフェース111やバス109等を介し上記記録装置117に記録されてもよい。
【0086】
また、ゲームプログラムは、例えば、適宜の外部接続機器127に記録しておくこともできる。この場合、ゲームプログラムは、適宜の接続ポート121を介し転送され、入出力インターフェース111やバス109等を介し上記記録装置117に記録されてもよい。
【0087】
そして、CPU101が、上記記録装置117に記録されたプログラムに従い各種の処理を実行することにより、前述の画像生成処理部13、透明化オブジェクト設定処理部21、透明化実行処理部23等による処理が実現される。この際、CPU101は、例えば、上記記録装置117からプログラムを、直接読み出して実行してもよく、RAM105に一旦ロードした上で実行してもよい。更にCPU101は、例えば、プログラムを通信装置123やドライブ119、接続ポート121を介し受信する場合、受信したプログラムを記録装置117に記録せずに直接実行してもよい。
【0088】
また、CPU101は、必要に応じて、前述のゲームコントローラ5を含む、例えばマウス、キーボード、マイク等(図示せず)の入力装置113から入力する信号や情報に基づいて各種の処理を行ってもよい。
【0089】
GPU106は、CPU101からの指示に応じて例えばレンダリング処理などの画像表示のための処理を行う。
【0090】
そして、CPU101及びGPU106は、上記の処理を実行した結果を、例えば前述の表示装置7や音声出力部を含む、出力装置115から出力する。さらにCPU101及びGPU106は、必要に応じてこの処理結果を通信装置123や接続ポート121を介し送信してもよく、上記記録装置117や記録媒体125に記録させてもよい。
【符号の説明】
【0091】
3 情報処理装置
13 画像生成処理部
15 第1衝突判定用オブジェクト設定処理部
17 第2衝突判定用オブジェクト設定処理部
19 衝突判定処理部
21 透明化オブジェクト設定処理部
23 透明化実行処理部
25 プレイヤキャラクタ(第1のオブジェクト)
35 柱(第2のオブジェクト)
37 仮想カメラ
39 光軸(軸)
41 基準位置(第1のオブジェクトの位置)
43 第1の衝突判定用オブジェクト
45 基準位置(仮想カメラの位置)
49 第2の衝突判定用オブジェクト
51 透明化オブジェクト
57 透明化オブジェクト
61 透明化オブジェクト
125 記録媒体