(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023148674
(43)【公開日】2023-10-13
(54)【発明の名称】コンピュータシステム、仮想空間制御システムおよび仮想空間制御方法
(51)【国際特許分類】
G06T 19/00 20110101AFI20231005BHJP
A63F 13/52 20140101ALI20231005BHJP
A63F 13/55 20140101ALI20231005BHJP
A63F 13/5255 20140101ALI20231005BHJP
A63F 13/30 20140101ALI20231005BHJP
【FI】
G06T19/00 300B
A63F13/52
A63F13/55
A63F13/5255
A63F13/30
【審査請求】未請求
【請求項の数】17
【出願形態】OL
(21)【出願番号】P 2022056821
(22)【出願日】2022-03-30
(71)【出願人】
【識別番号】000134855
【氏名又は名称】株式会社バンダイナムコエンターテインメント
(74)【代理人】
【識別番号】100124682
【弁理士】
【氏名又は名称】黒田 泰
(74)【代理人】
【識別番号】100104710
【弁理士】
【氏名又は名称】竹腰 昇
(74)【代理人】
【識別番号】100090479
【弁理士】
【氏名又は名称】井上 一
(72)【発明者】
【氏名】大井 隆義
(72)【発明者】
【氏名】阿須名 孝次
(72)【発明者】
【氏名】南 清志
(72)【発明者】
【氏名】小倉 建一
(72)【発明者】
【氏名】恩田 明生
(72)【発明者】
【氏名】青木 隆
(72)【発明者】
【氏名】村井 伸太郎
【テーマコード(参考)】
5B050
【Fターム(参考)】
5B050AA08
5B050BA09
5B050CA07
5B050CA08
5B050EA07
5B050EA27
(57)【要約】 (修正有)
【課題】第1の仮想空間に第2の仮想空間が存在するかのような新たな具現化手法を実現するコンピュータシステム、仮想空間制御システム及び仮想空間制御方法を提供する。
【解決手段】仮想空間制御システムは、第1の仮想空間11内に仮想スペース13を設定し、この仮想スペース13に第2の仮想空間を具現化した具現化空間14を表現する。第2の仮想空間内の具現化対象オブジェクトを具現化する仮想オブジェクト15を仮想スペース13内に配置する。仮想オブジェクト15の第1の仮想空間11での配置構成は、それらに対応づけられる具現化対象オブジェクトの第2の仮想空間における配置構成に合わせる。仮想オブジェクト15にテクスチャマッピングされる具現化画像17の元になる撮影画像は、子サーバシステムにて生成される。具現化画像17は、撮影画像に対して演算量低減化処理を施して作成される。
【選択図】
図4
【特許請求の範囲】
【請求項1】
第1の仮想空間と第2の仮想空間とを個別に制御するコンピュータシステムであって、
前記第1の仮想空間内に、所与の具現化空間を表現するための仮想スペースを設定する仮想スペース設定手段と、
前記第2の仮想空間のオブジェクトの情報に基づいて前記仮想スペースにオブジェクトを配置し、前記第2の仮想空間を具現化した前記具現化空間を表現する制御を行う空間表現制御手段と、
を備えるコンピュータシステム。
【請求項2】
前記空間表現制御手段は、前記第2の仮想空間のオブジェクトに相当するオブジェクトを、前記第2の仮想空間の配置構成に基づく配置構成で前記仮想スペースに配置することで前記具現化空間を表現する制御を行う、
請求項1に記載のコンピュータシステム。
【請求項3】
前記空間表現制御手段は、前記第2の仮想空間を完全に再現する場合の演算量よりも少ない演算量で前記第2の仮想空間を表現することが可能である、
請求項1又は2に記載のコンピュータシステム。
【請求項4】
前記空間表現制御手段は、前記第2の仮想空間を所与の撮影視点から撮影した撮影画像に基づいて、前記具現化空間を表現する制御を行う、
請求項1から3の何れか一項に記載のコンピュータシステム。
【請求項5】
前記空間表現制御手段は、前記第1の仮想空間における所与のユーザ視点の視界内に仮想オブジェクトを配置し、前記撮影画像に基づく画像がマッピングされた前記仮想オブジェクトを前記ユーザ視点に基づき描画する描画処理を行うことで、前記具現化空間を表現する制御を行う、
請求項4に記載のコンピュータシステム。
【請求項6】
前記空間表現制御手段は、前記第1の仮想空間における前記ユーザ視点の位置および/又は向きに応じて、前記仮想オブジェクトの位置および/又は向きを制御する仮想オブジェクト制御手段を有する、
請求項5に記載のコンピュータシステム。
【請求項7】
前記仮想オブジェクト制御手段は、前記ユーザ視点の位置の変化および/又は向きの変化に追従させて、前記ユーザ視点に対して所定の相対向きとなる姿勢で前記仮想オブジェクトを配置する制御を行う、
請求項6に記載のコンピュータシステム。
【請求項8】
前記撮影視点には、前記第2の仮想空間における配置位置および/又は配置向きが異なる複数の撮影視点が含まれており、
前記空間表現制御手段は、前記複数の撮影視点のうちの何れかの撮影視点から撮影した撮影画像に基づいて、前記具現化空間を表現する制御を行う、
請求項5から7の何れか一項に記載のコンピュータシステム。
【請求項9】
前記第1の仮想空間における前記ユーザ視点の位置および/又は向きに応じて、前記第2の仮想空間における前記撮影視点の位置および/又は向きを制御する撮影視点制御手段、
を更に備える請求項5から7の何れか一項に記載のコンピュータシステム。
【請求項10】
前記空間表現制御手段は、前記第1の仮想空間における前記仮想スペースの座標と前記第2の仮想空間の座標とを対応付けて前記具現化空間を表現することで、前記仮想スペースに前記第2の仮想空間が固定的に具現化された前記具現化空間を表現し、
前記撮影視点制御手段は、前記仮想スペースに対する前記ユーザ視点の位置の変化および/又は向きの変化に追従させるように、前記第2の仮想空間における前記撮影視点の位置および/又は向きを制御する、
請求項9に記載のコンピュータシステム。
【請求項11】
前記空間表現制御手段は、第1の仮想空間に参加している参加ユーザ毎に、当該参加ユーザに対応する前記ユーザ視点を配置して前記描画処理を行うことで、各ユーザ視点から見た前記具現化空間を表現する制御を行う、
請求項5から10の何れか一項に記載のコンピュータシステム。
【請求項12】
前記第2の仮想空間は複数存在し、
前記仮想スペース設定手段は、前記第1の仮想空間内に、前記第2の仮想空間それぞれの前記仮想スペースを設定し、
前記空間表現制御手段は、前記参加ユーザ毎に、当該参加ユーザに対応する前記ユーザ視点の視界内の前記仮想スペースそれぞれについて前記描画処理を行う、
請求項11に記載のコンピュータシステム。
【請求項13】
前記撮影視点と、前記第2の仮想空間に参加しているユーザのための参加ユーザ用視点とは、異なる、
請求項4から12の何れか一項に記載のコンピュータシステム。
【請求項14】
前記第2の仮想空間は、前記第2の仮想空間に参加しているユーザの操作入力に基づいてゲーム進行が制御されるゲーム空間である、
請求項1から13の何れか一項に記載のコンピュータシステム。
【請求項15】
前記第1の仮想空間を制御するコンピュータと、前記第2の仮想空間を制御するコンピュータと、を個別に具備して構成される請求項1から14の何れか一項に記載のコンピュータシステム。
【請求項16】
請求項1から15の何れか一項に記載のコンピュータシステムであるサーバシステムと、
前記第1の仮想空間に参加するユーザのマンマシンインターフェースとなるユーザ端末と、
を具備する仮想空間制御システム。
【請求項17】
第1の仮想空間と第2の仮想空間とを個別に制御する仮想空間制御方法であって、
前記第1の仮想空間内に、所与の具現化空間を表現するための仮想スペースを設定することと、
前記第2の仮想空間のオブジェクトの情報に基づいて前記仮想スペースにオブジェクトを配置し、前記第2の仮想空間を具現化した前記具現化空間を表現する制御を行うことと、
を含む仮想空間制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想空間を制御するコンピュータシステム等に関する。
【背景技術】
【0002】
コンピュータの演算処理により仮想空間(例えば、メタバース、ゲーム空間、など)を構築し、利用者であるユーザのキャラクタ(例えば、アバター、プレーヤキャラクタ、など)を配置して、ユーザに仮想空間での仮想体験を提供する技術が知られている。例えば、特許文献1には、1つの仮想空間を共有するユーザ間でコミュニケーションをとることができる技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
仮想空間が複数ある場合には、仮想空間内での仮想体験をより豊かにするために、第1の仮想空間内に、第2の仮想空間の様子を再現したいというニーズがある。例えば、対戦格闘ゲームをゲームプレイしている様子を、対戦格闘ゲームの仮想空間とは異なる別の仮想空間で再現できれば、その別の仮想空間に参加しているユーザが対戦格闘ゲームのゲームプレイの様子を観戦できるようになり、仮想体験がより豊かになる。
【0005】
他の仮想空間の様子を再現する手法としては、他の仮想空間で実行されている処理(例えば、キャラクタモデル等の動作制御やゲーム進行制御など)を、再現先の仮想空間でもそのまま同じように実行する方法が考えられる。しかし、この手法では、再現先の仮想空間を制御するコンピュータシステムでの処理負荷が非常に高くなる問題がある。そのため、第1の仮想空間に第2の仮想空間の様子を単純に再現する手法では実現が困難である。第1の仮想空間に第2の仮想空間が存在するかのような新たな具現化手法が必要となる。
【0006】
本発明が解決しようとする課題は、第1の仮想空間に第2の仮想空間が存在するかのような新たな具現化手法の技術を提供すること、である。
【課題を解決するための手段】
【0007】
上記した課題を解決するための第1の発明は、第1の仮想空間と第2の仮想空間とを個別に制御するコンピュータシステムであって、
前記第1の仮想空間内に、所与の具現化空間を表現するための仮想スペース(例えば、
図4の仮想スペース13)を設定する仮想スペース設定手段(例えば、
図1の親サーバシステム1100P、
図10の処理部200p、仮想スペース設定部212、
図12の仮想スペース管理データ530)と、
前記第2の仮想空間のオブジェクトの情報に基づいて前記仮想スペースにオブジェクトを配置し、前記第2の仮想空間を具現化した前記具現化空間(例えば、
図4の具現化空間14)を表現する制御を行う空間表現制御手段(例えば、
図1の親サーバシステム1100P、
図10の処理部200p、空間表現制御部214、
図13の空間表現制御データ566、
図18から
図19のループB)と、を備えるコンピュータシステムである。
【0008】
ここで言う「コンピュータシステム」は、単数のコンピュータで構成される場合は勿論、複数のコンピュータによって連携して構成されるものでもよい。
【0009】
第1の発明によれば、コンピュータシステムは、第1の仮想空間内に仮想スペースを設定し、この仮想スペースに第2の仮想空間を具現化した具現化空間を表現する制御を行う。第1の仮想空間内にそれよりも小さい仮想スペース内にて第2の仮想空間を具現化するので、具現化に係る処理負荷を抑制できる。これにより、第1の仮想空間に第2の仮想空間が存在するかのような新たな具現化手法の技術を提供することができる。
【0010】
第2の発明は、前記空間表現制御手段が、前記第2の仮想空間のオブジェクトに相当するオブジェクトを、前記第2の仮想空間の配置構成に基づく配置構成で前記仮想スペースに配置することで前記具現化空間を表現する制御を行う(例えば、
図19のステップS66からステップS68)、第1の発明のコンピュータシステムである。
【0011】
第2の発明によれば、コンピュータシステムは、第2の仮想空間のオブジェクト(具現化対象オブジェクト)を具現化するための、第2の仮想空間のオブジェクトに相当するオブジェクトを、第2の仮想空間における配置構成に基づいて、仮想スペースに配置することができる。
【0012】
第3の発明は、前記空間表現制御手段が、前記第2の仮想空間を完全に再現する場合の演算量よりも少ない演算量で前記第2の仮想空間を表現することが可能である、第1又は第2の発明のコンピュータシステムである。
【0013】
第3の発明によれば、コンピュータシステムは、第2の仮想空間を完全に再現する場合よりも少ない演算量で第2の仮想空間を表現することができる。
【0014】
第4の発明は、前記空間表現制御手段が、前記第2の仮想空間を所与の撮影視点から撮影した撮影画像に基づいて、前記具現化空間を表現する制御を行う、第1から第3の何れかの発明のコンピュータシステムである。
【0015】
また第5の発明は、前記空間表現制御手段が、前記第1の仮想空間における所与のユーザ視点の視界内に仮想オブジェクトを配置し、前記撮影画像に基づく画像がマッピング(テクスチャマッピング)された前記仮想オブジェクトを前記ユーザ視点に基づき描画する描画処理を行うことで、前記具現化空間を表現する制御を行う、第4の発明のコンピュータシステムである。
【0016】
第4又は第5の発明によれば、コンピュータシステムは、第2の仮想空間を所与の撮影視点から撮影した撮影画像を第1の仮想空間に配置した仮想オブジェクトにマッピングすることで、第2の仮想空間を具現化した具現化空間を表現することができる。
【0017】
第6の発明は、前記空間表現制御手段が、前記第1の仮想空間における前記ユーザ視点の位置および/又は向きに応じて、前記仮想オブジェクトの位置および/又は向きを制御する仮想オブジェクト制御手段(例えば、
図10の仮想オブジェクト制御部216、
図19のステップS72)を有する、第5の発明のコンピュータシステムである。
【0018】
第6の発明によれば、コンピュータシステムは、第1の仮想空間におけるユーザ視点の位置や向きに応じて、第1の仮想空間に配置される仮想オブジェクトの位置や向きを制御できる。例えば、仮想オブジェクトをユーザ視点に向けるように制御したり、ユーザ視点の視界外に位置する仮想オブジェクトの制御を省略する、といったことができる。
【0019】
第7の発明は、前記仮想オブジェクト制御手段が、前記ユーザ視点の位置の変化および/又は向きの変化に追従させて、前記ユーザ視点に対して所定の相対向きとなる姿勢で前記仮想オブジェクトを配置する制御(例えば、
図19のステップS72)を行う、第6の発明のコンピュータシステムである。
【0020】
第7の発明によれば、コンピュータシステムは、例えば、仮想オブジェクトの所定面(例えば、テクスチャマッピングが施されるマッピング面)をユーザ視点に向け続けるように配置制御することが可能になる。仮想オブジェクトを板状のプリミティブ面としてもよい。
【0021】
第8の発明は、前記撮影視点には、前記第2の仮想空間における配置位置および/又は配置向きが異なる複数の撮影視点(例えば、
図22の候補撮影視点C4(C4a,C4b,…))が含まれており、前記空間表現制御手段は、前記複数の撮影視点のうちの何れかの撮影視点(例えば、
図22の候補撮影視点C4a)から撮影した撮影画像に基づいて、前記具現化空間を表現する制御を行う、第5から第7の何れかの発明のコンピュータシステムである。
【0022】
第8の発明によれば、コンピュータシステムは、複数の撮影視点のうちの何れかで撮影された撮影画像に基づいて具現化空間を表現することができる。
【0023】
第9の発明は、前記第1の仮想空間における前記ユーザ視点の位置および/又は向きに応じて、前記第2の仮想空間における前記撮影視点の位置および/又は向きを制御する撮影視点制御手段(例えば、
図1の子サーバシステム1100G、
図14の処理部200g、撮影視点制御部232、
図21のステップS180からステップS182)、を更に備える第5から第7の何れかの発明のコンピュータシステムである。
【0024】
また、第10の発明は、前記空間表現制御手段が、前記第1の仮想空間における前記仮想スペースの座標と前記第2の仮想空間の座標とを対応付けて前記具現化空間を表現することで、前記仮想スペースに前記第2の仮想空間が固定的に具現化された前記具現化空間を表現し、前記撮影視点制御手段は、前記仮想スペースに対する前記ユーザ視点の位置の変化および/又は向きの変化に追従させるように、前記第2の仮想空間における前記撮影視点の位置および/又は向きを制御する(例えば、
図18のステップS52、
図21のステップS180からステップS182)、第9の発明のコンピュータシステムである。
【0025】
第9の発明によれば、コンピュータシステムは、第1の仮想空間でのユーザ視点の位置や向きの変化に、第2の仮想空間の撮影視点の位置や向きを対応させることができる。
更に第10の発明によれば、撮影画像を、第1の仮想空間の参加ユーザが第2の仮想空間に居て見ているかのような画像とすることが可能になる。第1の仮想空間の参加ユーザに対して、第2の仮想空間があたかも第1の仮想空間の固定位置に存在するかのように見せることができる。
【0026】
第11の発明は、前記空間表現制御手段が、第1の仮想空間に参加している参加ユーザ毎に、当該参加ユーザに対応する前記ユーザ視点を配置して前記描画処理を行うことで、各ユーザ視点から見た前記具現化空間を表現する制御を行う、第5から第10の何れかの発明のコンピュータシステムである。
【0027】
第11の発明によれば、コンピュータシステムは、第1の仮想空間の参加ユーザそれぞれのユーザ視点から見た具現化空間を表現することができる。
【0028】
第12の発明は、前記第2の仮想空間は複数存在し、前記仮想スペース設定手段は、前記第1の仮想空間内に、前記第2の仮想空間それぞれの前記仮想スペースを設定し、前記空間表現制御手段は、前記参加ユーザ毎に、当該参加ユーザに対応する前記ユーザ視点の視界内の前記仮想スペースそれぞれについて前記描画処理を行う、第11の発明のコンピュータシステムである。
【0029】
第12の発明によれば、コンピュータシステムは、第1の仮想空間内に複数の第2の仮想空間をそれぞれに対応する仮想スペースを設定することができる。第1の仮想空間を博覧会会場に例えれば、仮想スペースは各パビリオンに相当する。よって、第1の仮想空間で提供できる仮想体験がより豊かになる。
【0030】
第13の発明は、前記撮影視点と、前記第2の仮想空間に参加しているユーザのための参加ユーザ用視点とは、異なる、第4から第12の何れかのコンピュータシステムである。
【0031】
第13の発明によれば、第1の仮想空間に第2の仮想空間を具現化するための撮影視点と、第2の仮想空間に参加している参加ユーザ用視点とを別にすることができる。
【0032】
第14の発明は、前記第2の仮想空間が、前記第2の仮想空間に参加しているユーザの操作入力に基づいてゲーム進行が制御されるゲーム空間である、第1から第13の何れかの発明のコンピュータシステムである。
【0033】
第14の発明によれば、コンピュータシステムは、第1の仮想空間内に、第2の仮想空間で繰り広げられているゲームの様子を表現できる。
【0034】
第15の発明は、前記第1の仮想空間を制御するコンピュータと、前記第2の仮想空間を制御するコンピュータと、を個別に具備して構成される第1から第14の何れかの発明のコンピュータシステムである。
【0035】
第15の発明によれば、第1の仮想空間に係る処理と、第2の仮想空間に係る処理とを、それぞれのコンピュータに分散させることができる。
【0036】
第16の発明は、第1から第15の何れかの発明のコンピュータシステムであるサーバシステムと、前記第1の仮想空間に参加するユーザのマンマシンインターフェースとなるユーザ端末と、を具備する仮想空間制御システムである。
【0037】
第16の発明によれば、サーバシステムとマンマシンインターフェースとなるユーザ端末とを具備するシステムにおいて、第1から第15の何れかの発明の作用効果を得ることができる。
【0038】
第17の発明は、第1の仮想空間と第2の仮想空間とを個別に制御する仮想空間制御方法であって、前記第1の仮想空間内に、所与の具現化空間を表現するための仮想スペースを設定することと、前記第2の仮想空間のオブジェクトの情報に基づいて前記仮想スペースにオブジェクトを配置し、前記第2の仮想空間を具現化した前記具現化空間を表現する制御を行うことと、を含む仮想空間制御方法である。
【0039】
第17の発明によれば、第1の発明と同様の作用効果を奏する仮想空間制御方法を実現できる。
【図面の簡単な説明】
【0040】
【
図2】子サーバシステムによる第2の仮想空間の制御について説明するための図。
【
図4】親サーバシステムによる第1の仮想空間の制御について説明するための図。
【
図6】第1の仮想空間、仮想スペース、具現化空間の相対位置関係の一例を示す図。
【
図7】具現化画像の元になる撮影画像について説明するための図。
【
図8】演算量低減化処理の一例について説明するための図。
【
図9】第1の仮想空間におけるアバター、仮想スペース、仮想オブジェクトの配置の一例を示す図。
【
図10】親サーバシステムの機能構成例を示すブロック図。
【
図11】親サーバシステムの記憶部が記憶するプログラムやデータの例を示す図。
【
図12】仮想スペース管理データのデータ構成例を示す図。
【
図13】第1の仮想空間画面表示制御データのデータ構成例を示す図。
【
図14】子サーバシステムの機能構成例を示すブロック図。
【
図15】第2の仮想空間制御データのデータ構成例を示す図。
【
図16】ユーザ端末の機能構成例を示す機能ブロック図。
【
図17】第1の仮想空間制御処理の流れを説明するためのフローチャート。
【
図18】第1の仮想空間画面表示処理の流れを説明するためのフローチャート。
【
図20】子サーバシステムが実行する処理の流れを説明するためのフローチャート。
【
図22】候補撮影視点の設定について説明するための図。
【
図23】具現化視点選択処理の流れを説明するためのフローチャート。
【
図24】画像提供処理の流れを説明するためのフローチャート。
【発明を実施するための形態】
【0041】
以下、本発明の実施形態の例を説明するが、本発明を適用可能な形態が以下の実施形態に限られないことは勿論である。
【0042】
図1は、仮想空間制御システム1000の構成例を示す図である。
仮想空間制御システム1000は、多数のユーザに対して仮想空間における仮想体験を同時に提供するシステムである。仮想空間制御システム1000は、ネットワーク9を介してデータ通信可能に接続された運用サーバシステム1010およびユーザ別のユーザ端末1500(1500a,1500b,…)を含み、ユーザ端末1500をマンマシンインターフェース(Man Machine Interface:MMIF)とするコンピュータシステムである。
【0043】
ネットワーク9は、データ通信が可能な通信路を意味する。すなわち、ネットワーク9とは、直接接続のための専用線(専用ケーブル)やイーサネット(登録商標)等によるLAN(Local Area Network)の他、電話通信網やケーブル網、インターネットを含む。
【0044】
運用サーバシステム1010は、サービス提供者・システム運用者が管理運用するコンピュータシステムであって、親サーバシステム1100Pと、複数の子サーバシステム1100G(1100Ga,1100Gb,…)とを有する。親サーバシステム1100Pと、子サーバシステム1100G(1100Ga,1100Gb,…)とは、ネットワーク9を介して互いにデータ通信が可能であり、それぞれがネットワーク9を介してユーザ端末1500とデータ通信が可能である。
【0045】
親サーバシステム1100Pは、第1の仮想空間を制御・管理するコンピュータシステムであり、仮想空間制御システム1000に係る各種サービスを利用するために、ユーザ端末1500が最初にアクセスするサーバシステムである。
【0046】
子サーバシステム1100G(1100Ga,1100Gb,…)は、それぞれが個別に第2の仮想空間を制御・管理し、単数又は複数のユーザ端末1500と通信して、ユーザ端末1500をゲームクライアントとしたゲームサーバとしての機能を果たす。
【0047】
親サーバシステム1100Pと子サーバシステム1100Gとは、コンピュータとしての基本的な機能を有する。
すなわち、親サーバシステム1100Pおよび子サーバシステム1100Gは、本体装置、キーボード、タッチパネル、を有し、本体装置に制御基板1150を搭載する。制御基板1150には、CPU(Central Processing Unit)1151やGPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などの各種マイクロプロセッサ、VRAMやRAM,ROM等の各種ICメモリ1152、通信装置1153、が搭載されている。なお、制御基板1150の一部又は全部は、ASIC(Application Specific Integrated Circuit)や、FPGA(Field-Programmable Gate Array)、SoC(System on a Chip)により実現するとしてもよい。但し、親サーバシステム1100Pと子サーバシステム1100Gとは、制御基板1150が所定のプログラムおよびデータに基づいて演算処理することによりそれぞれ別個の機能を実現する。
【0048】
図1には、親サーバシステム1100Pおよび子サーバシステム1100Gは、それぞれが1台のサーバ装置であるかのように描いているが、複数の装置で実現する構成であってもよい。例えば、親サーバシステム1100Pは、各機能を分担する複数のブレードサーバを搭載して相互に内部バスを介してデータ通信可能に接続した構成であってもよい。子サーバシステム1100Gも同様である。また、親サーバシステム1100Pおよび子サーバシステム1100Gを構成するハードウェアの設置場所は問わない。離れた場所に設置された独立した複数のサーバを、ネットワーク9を介してデータ通信させることで、全体として運用サーバシステム1010として機能させる構成であってもよい。
【0049】
ユーザ端末1500は、ユーザが仮想空間制御システム1000を利用するために使用するコンピュータシステムである。ユーザ端末1500は、仮想空間制御システム1000におけるマンマシンインターフェース(MMIF)の機能を担っている。
【0050】
図1では、ユーザ端末1500を、いわゆるスマートフォンと呼ばれる装置として表しているが、コンピュータシステムであれば、ウェアラブルコンピュータや、携帯型ゲーム装置、家庭用ゲーム装置、タブレット型コンピュータ、パソコン、スタンドアローン型VRヘッドセット、などでもよい。スマートフォンと、当該スマートフォンに通信接続されたスマートウォッチ、オプション型VRヘッドセット、などの組み合わせといった複数の電子機器が通信可能に接続することで1つの機能を果たす場合にはこれらの複数の電子機器を1つのユーザ端末1500とみなすことができる。
【0051】
ユーザ端末1500は、操作入力デバイス(例えば、タッチパネル1506、キーボード、ゲームコントローラ、マウスなど)と、画像表示デバイス(例えば、タッチパネル1506、ヘッドマウントディスプレイ、グラス型ディスプレイなど)と、制御基板1550と、を備える。
【0052】
制御基板1550は、CPU1551や、GPU,DSPなどの各種マイクロプロセッサ、VRAMやRAM,ROM等の各種ICメモリ1552、ネットワーク9に接続する通信モジュール1553、などを搭載する。制御基板1550に搭載されているこれらの要素は、バス回路などを介して電気的に接続され、データの読み書きや信号の送受信が可能に接続されている。制御基板1550の一部又は全部をASICやFPGA、SoCにて構成してもよい。そして、制御基板1550は、ユーザ端末としての機能を実現させるためのプログラムや各種データをICメモリ1552に記憶する。そして、ユーザ端末1500は、所定のアプリケーションプログラムを実行することにより、仮想空間制御システム1000のマンマシンインターフェース(MMIF)としての機能を実現する。
【0053】
ユーザ端末1500は、アプリケーションプログラムやその実行に必要な各種データを親サーバシステム1100Pや子サーバシステム1100Gからダウンロードする構成としているが、ユーザが別途入手したメモリカードなどの記憶媒体から読み出す構成としてもよい。
【0054】
図2は、子サーバシステム1100Gによる第2の仮想空間12の制御について説明するための図である。子サーバシステム1100Gは、3次元仮想空間である第2の仮想空間12を制御するコンピュータシステムであって、第2の仮想空間12のデータを保持し、第2の仮想空間12に配置された様々なオブジェクトの配置構成を制御する。そして、子サーバシステム1100Gは、それらオブジェクトを用いてオンラインゲームを実現する。
【0055】
すなわち、第2の仮想空間12は、第2の仮想空間12に参加しているユーザ(以下、「第2の参加ユーザ」と呼称)の操作入力に基づいてゲーム進行が制御されるゲーム空間である。子サーバシステム1100Gは、プレイログインしたユーザをプレーヤとして、プレーヤキャラクタ4を第2の仮想空間12に配置し、当該ユーザのユーザ端末1500で検出された操作入力に応じてプレーヤキャラクタ4の動作を制御する。また、NPC(non player character)を自動制御する。つまり、子サーバシステム1100Gは、クライアントサーバ型システムのゲームサーバとして機能して、ゲームクライアントであるユーザ端末1500を操作する第2の参加ユーザへ、オンラインゲームの仮想体験を提供する。
【0056】
図2の例では、子サーバシステム1100Gは、第2の参加ユーザ別のプレーヤキャラクタ4(4a,4b)が1対1で戦う格闘対戦ゲームのオンラインゲームを実現している。便宜上、背景オブジェクトの図示を省略しているが、実際には第2の仮想空間12の大きさは
図2の例より遥かに広く、様々な背景オブジェクトが戦いのフィールドを形作っている。
【0057】
なお、子サーバシステム1100Gが実現するオンラインゲームのゲームジャンルは、格闘対戦ゲームに限らず適宜設定可能である。例えば、MORPG(Multiplayer Online Role Playing Game)、レースゲーム、サッカーや野球などのスポーツゲーム、戦略シミュレーションゲーム、であってもよい。更には、オンラインゲームに限らず、仮想ライブ、育成ゲーム、などであってもよい。
【0058】
第2の仮想空間12には、第2の参加ユーザ用の撮影視点である参加ユーザ用視点C2が設定され、参加ユーザ用視点C2から撮影した第2の仮想空間12の画像(仮想空間画像)がレンダリングされる。そして、仮想空間画像にゲームプレイ上の適宜の情報表示を加えたゲーム画面が生成される。ゲーム画面は、
図3に示すように第2の参加ユーザのユーザ端末1500にて第2の仮想空間画面W2として表示される。
【0059】
参加ユーザ用視点C2は、ゲームジャンルに応じて適宜設定可能である。
図3の例では、格闘対戦ゲームのゲーム画面なので、プレーヤキャラクタ4(4a,4b)を側方から見た画面レイアウトを維持するように参加ユーザ用視点C2の位置や視線方向が自動制御され、対戦中の第2の参加ユーザそれぞれに共通する1つの参加ユーザ用視点C2として設定されている。もし、ゲームジャンルがMORPGであれば、参加ユーザ用視点C2は、第2の参加ユーザ別に用意され、当該ユーザのプレーヤキャラクタ4を主たる被写体とするように、或いは、当該ユーザのプレーヤキャラクタ4の視界とするように、配置位置と配置向き(姿勢;視線方向)とが自動制御される。
【0060】
図4は、親サーバシステム1100Pによる第1の仮想空間11の制御について説明するための図である。親サーバシステム1100Pは、3次元仮想空間である第1の仮想空間11のデータを保持し、第1の仮想空間11に配置された様々なオブジェクトの配置構成を制御する。そして、親サーバシステム1100Pは、それらのオブジェクトを使って第1の仮想空間11の世界を作り、そこに第1の参加ユーザ毎のアバター8を配置する。
【0061】
親サーバシステム1100Pは、第1の参加ユーザがユーザ端末1500に入力した様々な操作に応じて、対応するアバター8の移動や動作を制御する。
【0062】
アバター8の頭部の所定位置に、当該アバター8を使用する第1の参加ユーザ用のユーザ視点C1が設定されている。アバター8を移動させ、アバター8の姿勢を変更すると、ユーザ視点C1も連動して移動し視線方向(視界の向き)が変わる。
【0063】
親サーバシステム1100Pは、アバター8毎(第1の参加ユーザ毎)に、そのユーザ視点C1で撮影した第1の仮想空間11の様子をレンダリング(描画処理)する。そして、
図5に示すようにアバター8が見ている第1の仮想空間11の様子を示す画像すなわち第1の仮想空間画面W1を、当該アバター8のユーザのユーザ端末1500に表示させる。
第1の仮想空間11をメタバースに相当させた場合、第1の参加ユーザは、現実さながらの擬似生活型の仮想体験を楽しむことができる。
【0064】
本実施形態の特徴の1つとして、第1の仮想空間11には、
図4に示す通り、単数又は複数の仮想スペース13が用意されている。仮想スペース13は、第2の仮想空間12(
図2参照)の少なくとも一部を具現化するための具現化空間14とされる。具現化空間14が設定される第1の仮想空間11の座標系と第2の仮想空間12の座標系とは所定の座標変換行列により変換可能であり、基本的には両者は固定的な関係にある。但し、具現化空間14を第1の仮想空間11内で移動させたい場合にはその限りではない。
【0065】
第1の仮想空間11に設定される仮想スペース13の総数、仮想スペース13それぞれの第1の仮想空間11における位置・形状・大きさは適宜設定可能である。
1つの仮想スペース13に設定される具現化空間14の総数や、第1の仮想空間11における具現化空間14の位置・形状・大きさは適宜設定可能である。
【0066】
図4では1つ仮想スペース13に1つの具現化空間14を対応付けて設定する例を示しているがこれに限らない。例えば、
図6は、第1の仮想空間11の一部を上方から俯瞰した略図であって(アバター8の図示は省略)、第1の仮想空間11の中に複数の仮想スペース13(13a,13b,…)が設定され、1つの仮想スペース13に複数の具現化空間14(14a,14b,…)が設定されている例を示している。第1の仮想空間11を万博会場と仮定すれば、仮想スペース13は万博会場に設置されたテーマ別のパビリオンに相当し、具現化空間14は、1つのパビリオンの中に設けられた詳細なテーマ別のブースに相当する、と言っても良い。
【0067】
図4に戻って、具現化空間14には、ユーザ視点C1毎に単数又は複数の仮想オブジェクト15が対応づけられて配置される。
図4の例では、アバター8およびユーザ視点C1が1つと、当該アバター8に対応づけられている3つの仮想オブジェクト15(15a,15b,15c)のみが描かれているが、実際の運用に当たっては、アバター8およびユーザ視点C1は、第1の参加ユーザ別に複数存在し得る。そして、複数のアバター8およびユーザ視点C1それぞれについて、単数又は複数の仮想オブジェクト15が用意されることになる。
【0068】
仮想オブジェクト15は、形状が単純で構成ポリゴンが少ないオブジェクトである。例えば、プリミティブ面で構成することができ、1つの板状のポリゴンで構成してもよい。
【0069】
各仮想オブジェクト15は、当該具現化空間14に紐付けられている第2の仮想空間12(具現化の対象とされる仮想空間)における1つの具現化対象オブジェクト(具現化の対象とされるオブジェクト)に対応づけられている。
【0070】
「具現化対象オブジェクト」は、第2の仮想空間12の事物を第1の仮想空間11にて具現化するにあたり、第2の仮想空間12に配置されている様々なオブジェクトの中から選抜されたオブジェクトである。第2の仮想空間12では格闘対戦ゲームが進行制御されるので、第2の仮想空間12におけるプレーヤキャラクタ4(4a,4b)やプレーヤキャラクタ4aが所持するアイテム5が具現化対象オブジェクトとされる。そして、各具現化対象オブジェクトに対応する仮想オブジェクト15(15a,15b,15c)が第1の仮想空間11に配置される。
【0071】
各仮想オブジェクト15は、マッピング面に、対応する具現化対象オブジェクトの画像である具現化画像17(17a,17b,17c)がテクスチャマッピングされ、マッピング面の法線方向を、対応するユーザ視点C1へ向けるように姿勢制御される。従って、各仮想オブジェクト15は、ユーザ視点C1の視線方向に対して所定の相対向きとなるように姿勢制御される。いわゆる、ビルボード処理が実行される。また、仮想オブジェクト15の仮想スペース13内での配置構成は、対応する具現化対象オブジェクトの第2の仮想空間12における配置構成に連動制御される。
【0072】
図7は、具現化画像17の元になる撮影画像について説明するための図である。
親サーバシステム1100Pは、アバター8のユーザ視点C1の視界に、新たな具現化空間14が入ると、当該具現化空間14に対応する第2の仮想空間12を管理する子サーバシステム1100Gへ、当該アバター8のユーザ視点C1に相当する具現化視点C3の設定をリクエストする。
【0073】
具現化視点C3は、具現化画像17の元になる撮影画像を撮影するための撮影視点である。具現化視点C3は、アバター8が第2の仮想空間12に存在すると仮定した場合のユーザ視点C1の位置に、ユーザ視点C1の視線方向をコピーした視点である。そして、アバター8が第1の仮想空間11にて移動したり視線方向を変更したりすると、対応する具現化視点C3は連動して第2の仮想空間12での位置を変更したり視線方向を変更したりするように制御される。
【0074】
具体的には、具現化視点C3の位置および視線方向は、対応するアバター8のユーザ視点C1の位置および視線方向を、第1の仮想空間11の座標系と第2の仮想空間12の座標系との間の座標変換行列に基づいて換算することで設定される。なお、具現化視点C3の撮影画角は、対応するアバター8のユーザ視点C1のそれと同じ又は略同じに設定される。
【0075】
子サーバシステム1100Gは、具現化視点C3から当該仮想オブジェクト15に対応づけられている第2の仮想空間12の具現化対象オブジェクト別の撮影画像18(18a,18b,18c)を生成する。
【0076】
理解を容易にするために、
図7では撮影画像18を矩形太線で表しているが、実施には撮影対象のオブジェクトのみが描画された画像である。
例えば、具現化対象オブジェクトであるプレーヤキャラクタ4aの撮影画像18aは、具現化視点C3でプレーヤキャラクタ4aを撮影した当該キャラクタのみをレンダリングして作成される。背景はレンダリングされない。或いは、具現化視点C3の全視界画像をレンダリングした後に、そこからプレーヤキャラクタ4aの描かれている部分のみを切り出すことで撮影画像18aを作成してもよい。プレーヤキャラクタ4bの撮影画像18bや、アイテム5の撮影画像18cについても同様である。なお、アイテム5がプレーヤキャラクタ4aに所持されている、或いは接触している場合には、両者を1つの仮想オブジェクト15とし、1つの撮影画像18として扱っても良い。
【0077】
これらの撮影画像18(18a,18b,18c)はオンラインゲーム用の画像ではないので、子サーバシステム1100Gには、第2の仮想空間12の具現化のために余分な処理が要求されることとなるが、描画対象とする具現化対象オブジェクトは第2の仮想空間12の全オブジェクトのなかの一部であり、撮影画像18の描画に伴う処理負荷は全オブジェクトを描画するよりも遥かに少なくて済む。
【0078】
子サーバシステム1100Gは、具現化視点C3に基づく撮影画像18を生成すると、そのデータを親サーバシステム1100Pへ送信する。親サーバシステム1100Pは、
図8に示すように、受信した撮影画像18に演算量低減化処理を施して具現化画像17を作成する。
【0079】
「演算量低減化処理」は、第1の仮想空間画面W1を生成する際に要する演算量を低減でるようにする処理であって、例えば、HD画質からSD画質にするといった画質低減処理(例えば、色数を減らす解像度を下げるなど)である。そして、具現化画像17が仮想オブジェクト15にテクスチャマッピングされる。
【0080】
図4に戻って、具現化画像17がマッピングされる各仮想オブジェクト15の大きさや形状は、対応する具現化対象オブジェクトの具現化画像17が収まるように設定される。
仮想オブジェクト15の大きさや形状は、例えば、具現化画像17の上下幅・左右幅と同じ幅を有する矩形(或いは、それよりやや大きい矩形)として求めても良い。或いは、仮想オブジェクト15の大きさや形状を、プレーヤキャラクタ4のオブジェクトの接触判定に用いるバウンダリボックスを具現化視点C3の法線面(視線方向を法線とする面)に投影して求めてもよい。
【0081】
結果、第1の仮想空間画面W1(W1a,W1b)では(
図5参照)、アバター8(8a)の視界に入った仮想スペース13の具現化空間14において、対応する第2の仮想空間12の様子が具現化される。具現化に要する運用サーバシステム1010の処理負荷は、第2の仮想空間12を完全に再現する場合(第2の仮想空間12に配置されている全てのオブジェクトを第1の仮想空間11に複製配置させる場合)よりも抑制される。
特に、仮想オブジェクト15(15a,15b、15c)は、板状のポリゴンに具現化画像17(17a,17b,17c)をテクスチャマッピングすることで構成されるため、演算量は極めて少ない。
【0082】
第2の仮想空間12でプレーヤキャラクタ4a、プレーヤキャラクタ4b、アイテム5が移動すると、それぞれの仮想オブジェクト15(15a,15b,15c)の位置もこれに連動して変化する。
【0083】
第2の仮想空間12を具現化した具現化空間14を第1の仮想空間11内に表現する制御は、アバター8毎に設定される。
例えば、
図9に示すように、アバター8a(
図4参照)とは別のアバター8bが第1の仮想空間11に配置されている場合、当該アバター8b用の仮想オブジェクト15(15d,15e,15f)が用意され、アバター8bのユーザ視点C1aへ向けてビルボード処理される。これらの仮想オブジェクト15にテクスチャマッピングされる具現化画像17は、先に説明したのと同様にして、アバター8bのユーザ視点C1bに対応する具現化視点が、第2の仮想空間12に設定される。基本的には、アバター8bの具現化視点の第2の仮想空間12における配置位置および/又は配置向きは、アバター8a用の撮影視点とは異なる。そして、アバター8b用の具現化画像17は、このアバター8b用の具現化視点で撮影した第2の仮想空間12の撮影画像18に基づいて作成される。
【0084】
アバター8b向けの第1の仮想空間画面W1を生成する際には、アバター8a用の仮想オブジェクト15(15a,15b,15c)は描画対象外(描画OFF)にした上で、ユーザ視点C1bから第1の仮想空間11を撮影した画像としてレンダリングされる。逆に、アバター8a向けの第1の仮想空間画面W1を生成する際には、アバター8b用の仮想オブジェクト15(15d,15e15f)は描画対象外(描画OFF)にした上で、ユーザ視点C1aから第1の仮想空間11を撮影した画像としてレンダリングされることになる。
【0085】
よって、親サーバシステム1100Pは、第1の仮想空間11のどのアバター8から見ても不自然無く、第2の仮想空間12の様子を第1の仮想空間11内に具現化させることができる。
【0086】
次に、機能構成について説明する。
図10は、親サーバシステム1100Pの機能構成例を示すブロック図である。
親サーバシステム1100Pは、操作入力部100pと、処理部200pと、音出力部390pと、画像表示部392pと、通信部394pと、記憶部500pとを備える。
【0087】
操作入力部100pは、親サーバシステム1100Pの管理のための各種操作を入力するための手段である。例えば、キーボード、タッチパネル、マウス、などがこれに該当する。
【0088】
処理部200pは、例えば、CPUやGPU、ASIC、FPGA等の演算回路となるプロセッサの他、ICメモリなどの電子部品によって実現され、操作入力部100pや記憶部500pを含む各機能部との間でデータの入出力制御を行う。そして、所定のプログラムやデータ、操作入力部100pからの操作入力信号、ユーザ端末1500や子サーバシステム1100G(1100Ga,1100Gb,…)などから受信したデータ、等に基づいて各種の演算処理を実行して、親サーバシステム1100Pの動作を統合的に制御する。
【0089】
処理部200pは、ユーザ管理部202と、第1の仮想空間制御部210と、計時部280pと、音生成部290pと、画像生成部292pと、通信制御部294pとを含む。勿論、これら以外の機能部も適宜含めることができる。
【0090】
ユーザ管理部202は、ユーザ登録手続きに係る処理、ユーザアカウントに紐付けられる各種情報の記憶管理、システムログイン/システムログアウトの処理を行う。
【0091】
第1の仮想空間制御部210は、第1の仮想空間11に係る各種制御を行う。
第1の仮想空間制御部210は、仮想スペース設定部212と、空間表現制御部214と、を有する。
【0092】
仮想スペース設定部212は、第1の仮想空間11内に、具現化空間14を表現するための仮想スペース13を設定する。第2の仮想空間12が複数存在する場合、仮想スペース設定部212は、第1の仮想空間11内に、第2の仮想空間12それぞれの仮想スペース13を設定する。
【0093】
空間表現制御部214は、第2の仮想空間12のオブジェクトの情報に基づいて仮想スペース13にオブジェクトを配置し、第2の仮想空間12を具現化した具現化空間14を、第2の仮想空間12を所与の撮影視点(
図7の具現化視点C3)から撮影した撮影画像18に基づいて、表現する制御を行う。
【0094】
具体的には、空間表現制御部214は、第1の仮想空間11における仮想スペース13の座標と第2の仮想空間12の座標とを対応付けて具現化空間14を表現することで、仮想スペース13に第2の仮想空間12が固定的に具現化された具現化空間14を表現する。そして、空間表現制御部214は、第1の仮想空間11に参加している参加ユーザ毎に、当該参加ユーザに対応するユーザ視点C1を配置して、当該参加ユーザに対応するユーザ視点C1の視界内の仮想スペース13それぞれについて描画処理を行うことで、各ユーザ視点から見た具現化空間14を表現する制御を行う。
【0095】
また、空間表現制御部214は、第2の仮想空間12内のオブジェクトに相当する仮想オブジェクト15を、第2の仮想空間12の配置構成に基づく配置構成で配置することで具現化空間を表現する制御を行う。具体的には、空間表現制御部214は、第1の仮想空間11におけるユーザ視点C1の視界内に仮想オブジェクト15を配置し、撮影画像18に基づく画像(
図4の具現化画像17)がマッピングされた仮想オブジェクト15をユーザ視点C1に基づき描画する描画処理を行うことで、具現化空間を表現する制御を行う。
【0096】
そして、空間表現制御部214は、仮想オブジェクト制御部216を有する。
仮想オブジェクト制御部216は、第1の仮想空間11におけるユーザ視点C1の位置および/又は向きに応じて、仮想オブジェクト15の位置および/又は向きを制御する。具体的には、仮想オブジェクト制御部216は、ユーザ視点C1の位置の変化および/又は向きの変化に追従させて、ユーザ視点C1に対して所定の相対向きとなる姿勢で仮想オブジェクト15を配置する制御を行う。仮想オブジェクト15へのビルボード処理がこれに該当する(
図4参照)。
【0097】
計時部280pは、システムクロックを利用して現在日時や制限時間等の各種計時を行う。
【0098】
音生成部290pは、音声データの生成やデコードをするICやソフトウェアの実行により実現される。音生成部290pは、生成した音声信号を音出力部390pへ出力する。音出力部390pは、スピーカ等により実現され、音声信号に基づいて放音する。
【0099】
画像生成部292pは、親サーバシステム1100Pのシステム管理のための各種管理画面の画像生成を行い、画像データを画像表示部392pに出力する。画像表示部392pは、フラットパネルディスプレイや、ヘッドマウントディスプレイ、プロジェクターなどで実現される。
【0100】
通信制御部294pは、データ通信に係るデータ処理を実行し、通信部394pを介して外部装置とのデータのやりとりを実現する。通信部394pは、ネットワーク9と接続して通信を実現する。例えば、無線通信機、モデム、TA(ターミナルアダプタ)、有線用の通信ケーブルのジャックや制御回路等によって実現される。
図1の例では通信装置1153がこれに該当する。
【0101】
記憶部500pは、処理部200pに親サーバシステム1100Pを統合的に制御させるための諸機能を実現するためのプログラムや各種データ等を記憶する。また、記憶部500pは、処理部200pの作業領域として用いられ、処理部200pが各種プログラムに従って実行した演算結果などを一時的に記憶する。この機能は、例えば、RAMやROMなどのICメモリ、ハードディスク等の磁気ディスク、CD-ROMやDVDなどの光学ディスク、オンラインストレージなどによって実現される。
図1の例では本体装置が搭載するICメモリ1152やハードディスクなどの記憶媒体がこれに該当する。オンラインストレージを記憶部500pに含めてもよい。
【0102】
図11は、親サーバシステム1100Pの記憶部500pが記憶するプログラムやデータの例を示す図である。
記憶部500pは、親サーバプログラム501と、配信用第1クライアントプログラム502と、子サーバ登録データ510と、ユーザ管理データ520と、第1の仮想空間制御データ522と、現在日時900と、を記憶する。なお、記憶部500pは、その他のプログラムやデータ(例えば、タイマーや、カウンタ、各種フラグ、など)も適宜記憶する。
【0103】
親サーバプログラム501は、処理部200pが読み出して実行することで、親サーバシステム1100Pを、ユーザ管理部202、第1の仮想空間制御部210、などとして機能させるためのプログラムである。
【0104】
配信用第1クライアントプログラム502は、ユーザ端末1500へ提供されて実行されるアプリケーションプログラムであって、第1の仮想空間11を利用するためのクライアントプログラムのオリジナルである。
【0105】
子サーバ登録データ510は、子サーバシステム1100G毎に用意され、固有のサーバIDと、当該子サーバシステム1100Gにて管理される第2の仮想空間12に固有に設定された仮想空間IDと、当該子サーバシステム1100Gへデータ通信可能に接続するために必要とされるサーバアクセス情報と、を含む。勿論、これら以外のデータも適宜含めることができる。
【0106】
ユーザ管理データ520は、登録手続を済ませたユーザ別に用意され、当該ユーザに係る各種データを格納し、ユーザ管理部202により管理される。1つのユーザ管理データ520は、例えば、ユーザ固有のユーザアカウント、ゲームセーブデータ、参加履歴データ(例えば、ログイン、ログアウトの日時)、などを含む。勿論、これら以外のデータも適宜含めることができる。
【0107】
第1の仮想空間制御データ522は、第1の仮想空間11の制御に係る各種データを格納する。例えば、第1の仮想空間制御データ522は、アバター8別のアバター管理データ524と、仮想スペース管理データ530と、第1の仮想空間画面表示制御データ550と、を格納する。
【0108】
アバター管理データ524は、例えば、当該アバター8を使用する第1の参加ユーザを示すユーザアカウント、当該アバター8のユーザ視点C1のユーザ視点位置及びユーザ視線方向、アバター8のオブジェクトを制御するためのアバターオブジェクト制御データ、などを含む。
【0109】
仮想スペース管理データ530は、仮想スペース13毎に作成され、当該仮想スペース13に係る各種データを格納する。1つの仮想スペース管理データ530は、例えば、
図12に示すように、仮想スペースID531と、仮想スペース定義データ533と、当該仮想スペース13に設定される具現化空間14毎に作成される具現化空間管理データ540と、を格納する。勿論、これら以外のデータも適宜格納してもよい。
【0110】
仮想スペース定義データ533は、第1の仮想空間11の何処にどのような形状の仮想スペース13が設定されているかを示す。例えば、仮想スペース13の代表点の第1の仮想空間座標系における位置座標、仮想スペース13の境界を設定するための境界設定データ(例えば、境界輪郭の各頂天座標など)、などを含む。
【0111】
1つの具現化空間管理データ540は、管理サーバID541と、具現化空間定義データ542と、座標変換定義データ544と、を含む。
【0112】
管理サーバID541は、当該具現化空間14で具現化する第2の仮想空間12を制御・管理する子サーバシステム1100Gを示す。
【0113】
具現化空間定義データ542は、当該仮想スペース13の何処にどのような形状の具現化空間14が設定されているかを示す。例えば、当該具現化空間14の第1の仮想空間11における位置や大きさを定義するデータ(例えば、代表点位置座標、境界設定データなど)を含む。
【0114】
座標変換定義データ544は、当該具現化空間14のある第1の仮想空間11の座標系(第1の仮想空間座標系)から当該具現化空間14で具現化する第2の仮想空間12の座標系(元仮想空間座標系)への変換行列を示す。
【0115】
図11に戻って、第1の仮想空間画面表示制御データ550は、アバター8別に具現化画像17を生成し、ユーザ端末1500にて第1の仮想空間画面W1を表示させる処理に係る各種データを格納する。
【0116】
第1の仮想空間画面表示制御データ550は、例えば
図13に示すように、どのアバター8についてのデータであるかを示すアバターID551と、当該アバター8のユーザ視点C1の第1の仮想空間11における位置であるユーザ視点位置553と、ユーザ視点C1の視線方向であるユーザ視線方向555と、登録具現化空間管理データ560と、を格納する。
【0117】
登録具現化空間管理データ560は、当該アバター8の視界内に入る具現化空間14が新たに検出される毎に作成され、当該具現化空間14に係る各種データを格納する。1つの登録具現化空間管理データ560は、管理サーバID561と、適用具現化視点ID562と、具現化対象オブジェクトリスト564と、空間表現制御データ566と、を含む。
【0118】
管理サーバID561は、当該具現化空間14の元である第2の仮想空間12を制御・管理する子サーバシステム1100Gを示す。
【0119】
適用具現化視点ID562は、管理サーバID561が示す子サーバシステム1100Gの第2の仮想空間12に設定される具現化視点C3であって、アバターID551が示すアバター8の具現化視点C3を示す。
【0120】
具現化対象オブジェクトリスト564は、当該具現化空間14で具現化する第2の仮想空間12における具現化対象オブジェクトのオブジェクトIDのリストである。具現化対象オブジェクトリスト564は、管理サーバID561の示す子サーバシステム1100Gに親サーバシステム1100Pから所定のリクエストを送信して子サーバシステム1100Gから提供を受ける。当該リストが、アバターID551が示すアバター8用に設定するべき仮想オブジェクト15(
図4参照)の元になる。
【0121】
空間表現制御データ566は、当該具現化空間14を表現する制御用データ群である。
例えば、空間表現制御データ566は、具現化対象オブジェクトリスト564のオブジェクト別の仮想オブジェクト制御データ570を含む。
【0122】
1つの仮想オブジェクト制御データ570は、固有の仮想オブジェクトID572と、当該仮想オブジェクト15が具現化する対象を示す具現化対象オブジェクトID574と、オブジェクト形状データ576と、第1の仮想空間11における配置位置578と、配置姿勢580と、具現化対象オブジェクトID574が示す具現化対象オブジェクトの撮影画像データ584と、当該仮想オブジェクト15にテクスチャマッピングされる具現化画像データ586と、を含む。
【0123】
配置姿勢580は、仮想オブジェクト15の向きを示す。仮想オブジェクト15が板状のポリゴンならばテクスチャマッピングされるマッピング面の法線方向を示す。
【0124】
図14は、子サーバシステム1100G(1100Ga,1100Gb,…)の機能構成例を示すブロック図である。子サーバシステム1100Gは、操作入力部100gと、処理部200gと、音出力部390gと、画像表示部392gと、通信部394gと、記憶部500gとを備える。
【0125】
操作入力部100gは、子サーバシステム1100Gの管理のための各種操作を入力するための手段である。例えば、キーボード、タッチパネル、マウス、VRコントローラなどがこれに該当する。
【0126】
処理部200gは、例えば、CPUやGPU、ASIC、FPGA等の演算回路となるプロセッサの他、ICメモリなどの電子部品によって実現され、操作入力部100gや記憶部500gを含む各機能部との間でデータの入出力制御を行う。そして、所定のプログラムやデータ、操作入力部100gからの操作入力信号、ユーザ端末1500や親サーバシステム1100Pなどから受信したデータ、等に基づいて各種の演算処理を実行して、子サーバシステム1100Gの動作を統合的に制御する。
【0127】
処理部200gは、第2の仮想空間制御部230と、計時部280gと、音生成部290gと、画像生成部292gと、通信制御部294gとを含む。勿論、これら以外の機能部も適宜含めることができる。
【0128】
第2の仮想空間制御部230は、第2の仮想空間12に係る各種制御を行う。第2の仮想空間12はゲーム空間なので、第2の仮想空間制御部230はゲームサーバとしての機能を実現する。例えば、プレーヤであるユーザ(第2の参加ユーザ)の参加登録制御(プレイログイン)、プレーヤキャラクタ4の制御、ゲーム進行制御、NPCの制御、背景オブジェクトの管理、などに係る各種制御を実行する。そして、第2の仮想空間制御部230は、撮影視点制御部232と、撮影画像生成制御部234と、を有する。
【0129】
撮影視点制御部232は、第2の仮想空間12の中に撮影視点を設定し、その位置や視線方向(向き)を制御する。具体的には、撮影視点制御部232は、参加ユーザ用視点C2、具現化視点C3を設定・制御する(
図7参照)。
【0130】
具現化視点C3については更に、第1の仮想空間11における第2の参加ユーザのアバター8に対応するユーザ視点C1の位置および/又は向きに応じて、当該アバター8用の具現化視点C3の位置および/又は向きを制御する。つまり、アバター8が第1の仮想空間11で動くことでユーザ視点C1の位置や視線方向が変化すると、対応する具現化視点C3も同じように第2の仮想空間12で動き、位置や視線方向が変化するように具現化視点C3をトレース制御する。
【0131】
撮影画像生成制御部234は、具現化視点C3別に、具現化対象オブジェクトを撮影した撮影画像18(
図7参照)の生成に係る制御を行う。
【0132】
計時部280gは、システムクロックを利用して現在日時や制限時間等の各種計時を行う。
【0133】
音生成部290gは、音声データの生成やデコードをするICやソフトウェアの実行により実現され、子サーバシステム1100Gのシステム管理や、オンラインゲームの提供に係る操作音や効果音、BGM、音声通話、などの音声データを生成或いはデコードする。そして、システム管理に関する音声信号は音出力部390gへ出力する。音出力部390gは、スピーカ等により実現され、音声信号に基づいて放音する。
【0134】
画像生成部292gは、子サーバシステム1100Gのシステム管理のための各種管理画面の画像生成を行い、生成した画像を表示させるための表示制御信号を画像表示部392gへ出力する。画像表示部392gは、フラットパネルディスプレイや、ヘッドマウントディスプレイ、プロジェクター、などの画像を表示させるデバイスで実現される。
【0135】
また、画像生成部292gは、ゲームプレイに係る画像の生成を行う。例えば、参加ユーザ用視点C2から第2の仮想空間12を撮影した画像のレンダリング(描画処理)、各ユーザ端末1500に表示させる第2の仮想空間画面W2の生成を行う(
図2参照)。
また、画像生成部292gは、具現化視点C3から第2の仮想空間12を撮影した画像(撮影画像18;
図7参照)のレンダリング(描画処理)を行う。
【0136】
通信制御部294gは、通信部394gを介して外部装置とのデータのやりとりを実現する。通信部394gは、ネットワーク9と接続して通信を実現する。例えば、無線通信機、モデム、TA(ターミナルアダプタ)、有線用の通信ケーブルのジャックや制御回路等によって実現される。
図1の例では通信装置1153がこれに該当する。
【0137】
記憶部500gは、処理部200gに子サーバシステム1100Gを統合的に制御させるための諸機能を実現するためのプログラムや各種データ等を記憶する。また、処理部200gの作業領域として用いられ、処理部200gが各種プログラムに従って実行した演算結果などを一時的に記憶する。この機能は、例えば、RAMやROMなどのICメモリ、ハードディスク等の磁気ディスク、CD-ROMやDVDなどの光学ディスク、オンラインストレージなどによって実現される。
図1の例では本体装置が搭載するICメモリ1152やハードディスクなどの記憶媒体がこれに該当する。オンラインストレージを記憶部500gに含めてもよい。
【0138】
記憶部500gは、例えば、子サーバプログラム503と、配信用第2クライアントプログラム504と、ゲーム初期設定データ590と、第2の仮想空間制御データ600と、現在日時900と、を記憶する。勿論、これら以外のデータを適宜格納してもよい。
【0139】
子サーバプログラム503は、処理部200gが読み出して実行することで、処理部200gを第2の仮想空間制御部230として機能させるためのプログラムである。本実施形態では、第2の仮想空間12を用いてオンラインゲームを実現するので、子サーバプログラム503は、ゲームサーバとしての機能を実現させるゲームサーバプログラムでもある。
【0140】
配信用第2クライアントプログラム504は、子サーバシステム1100Gにアクセスするユーザ端末1500へ提供されて実行されるアプリケーションプログラムのオリジナルである。なお、配信用第2クライアントプログラム504は、配信用第1クライアントプログラム502(
図11参照)に含まれているとしてもよい。
【0141】
ゲーム初期設定データ590は、オンラインゲームの各種初期設定データを格納する。例えば、オブジェクト定義データ592を格納する。オブジェクト定義データ592は、第2の仮想空間12に配置されるオブジェクト毎に用意され、当該オブジェクトに係る各種初期設定データを格納する。例えば、オブジェクト定義データ592は、オブジェクトIDと、当該オブジェクトが具現化対象オブジェクトである場合に「1」に設定される具現化対象フラグと、オブジェクトモデルと、を含む。勿論、これら以外のデータも適宜含めることができる。
【0142】
図15は、第2の仮想空間制御データ600のデータ構成例を示す図である。
第2の仮想空間制御データ600は、ゲーム空間の制御データに相当し、例えば、固有の仮想空間ID601と、第2の参加ユーザ管理データ602と、ゲーム進行制御データ604と、オブジェクト制御データ610と、参加ユーザ用視点制御データ630と、具現化視点制御データ640と、を含む。勿論、これら以外のデータも適宜含めることができる。
【0143】
第2の参加ユーザ管理データ602は、第2の参加ユーザがゲームプレイのためにログインする毎に作成され、ユーザアカウント、プレーヤキャラクタ4のオブジェクトID、などを格納する。
【0144】
オブジェクト制御データ610は、第2の仮想空間12に配置されたオブジェクト毎に作成され、当該オブジェクトに係る各種データを格納する。1つのオブジェクト制御データ610は、例えば、オブジェクトID611と、当該オブジェクトが背景オブジェクトであるかプレーヤキャラクタ4であるかを示すオブジェクトカテゴリー613と、具現化対象フラグ615と、配置位置617と、配置姿勢619と、を含む。勿論、これら以外のデータ、例えば動作制御データなども適宜含めることができる。
【0145】
参加ユーザ用視点制御データ630は、参加ユーザ用視点C2毎に作成され、最新の状態を記述する各種データを格納する。参加ユーザ用視点制御データ630は、撮影視点ID631と、当該視点を使用する第2の参加ユーザを示す適用ユーザアカウント633と、第2の仮想空間12における配置位置635と、第2の仮想空間12における視線方向637(配置向き)と、を含む。勿論、これら以外のデータも適宜含めることができる。
【0146】
具現化視点制御データ640は、具現化視点C3毎に作成され、具現化視点C3に係る各種データを格納する。1つの具現化視点制御データ640は、撮影視点ID641と、当該視点がどのアバター8用であるかを示す適用アバターID643と、第2の仮想空間12における配置位置645と、第2の仮想空間12における視線方向647と、を含む。勿論、これら以外のデータも適宜含めることができる。
【0147】
図16は、ユーザ端末1500の機能構成例を示す機能ブロック図である。ユーザ端末1500は、操作入力部100と、端末処理部200と、音出力部390と、画像表示部392と、通信部394と、端末記憶部500と、を備える。
【0148】
操作入力部100は、ユーザによってなされた各種の操作入力に応じた操作入力信号を端末処理部200に出力する。例えば、プッシュスイッチや、ジョイスティック、タッチパッド、トラックボール、加速度センサ、ジャイロ、VRコントローラ、などによって実現できる。
【0149】
端末処理部200は、例えば、CPUやGPU等のマイクロプロセッサや、ICメモリなどの電子部品によって実現され、操作入力部100や端末記憶部500を含む各機能部との間でデータの入出力制御を行う。そして、所定のプログラムやデータ、操作入力部100からの操作入力信号、親サーバシステム1100Pや子サーバシステム1100Gから受信した各種データに基づいて各種の演算処理を実行して、ユーザ端末1500の動作を制御する。
【0150】
端末処理部200は、クライアント制御部260と、計時部280と、音生成部290と、画像生成部292と、通信制御部294と、を有する。
【0151】
クライアント制御部260は、仮想空間制御システム1000におけるクライアント、或いはゲームクライアントとしての各種制御を行い、ユーザ端末1500をマンマシンインターフェース(MMIF)として機能させる。具体的には、クライアント制御部260は、操作入力情報提供部261と、表示制御部262と、を有する。
【0152】
操作入力情報提供部261は、操作入力部100からの入力に応じて操作入力情報を親サーバシステム1100Pや子サーバシステム1100Gへ送信する制御を行う。
【0153】
表示制御部262は、親サーバシステム1100Pや子サーバシステム1100Gから受信したデータに基づいて各種の画像を表示させるための制御を行う。
【0154】
計時部280は、システムクロックを利用して現在日時や制限時間等の計時を行う。
【0155】
音生成部290は、例えば、デジタルシグナルプロセッサ(DSP)や、音声合成ICなどのプロセッサ、音声ファイルを再生可能なオーディオコーデック等によって実現され、楽曲や効果音、各種操作音の音信号を生成し、音出力部390に出力する。音出力部390は、スピーカなど音生成部290から入力される音信号に基づいて音出力(放音)する装置によって実現される。
【0156】
画像生成部292は、クライアント制御部260の制御に基づく画像を画像表示部392へ表示させる表示制御信号を出力する。
図1の例では、制御基板1550に搭載されるGPU(Graphics Processing Unit)や、グラフィックコントローラ、グラフィックボード、などがこれに該当する。画像表示部392は、フラットパネルディスプレイや、VRヘッドセットの表示素子、プロジェクター、など、画像を表示させる装置で実現される。
【0157】
通信制御部294は、データ通信に係るデータ処理を実行し、通信部394を介して外部装置とのデータのやりとりを実現する。
【0158】
通信部394は、ネットワーク9と接続して通信を実現する。例えば、無線通信機、モデム、TA(ターミナルアダプタ)、有線用の通信ケーブルのジャックや制御回路等によって実現される。
図1の例では通信モジュール1553がこれに該当する。
【0159】
端末記憶部500は、端末処理部200に所与の機能を実現させるためのプログラムや、各種データ等を記憶する。また、端末処理部200の作業領域として用いられ、端末処理部200が各種プログラムに従って実行した演算結果や操作入力部100から入力される入力データ等を一時的に記憶する。こうした機能は、例えば、RAMやROMなどのICメモリ、ハードディスク等の磁気ディスク、CD-ROMやDVDなどの光学ディスクなどによって実現される。
図1の例では、制御基板1550が搭載するICメモリ1552がこれに該当する。
【0160】
具体的には、端末記憶部500は、第1クライアントプログラム505(アプリケーションプログラム)と、第2クライアントプログラム506(アプリケーションプログラム)と、現在日時900と、を記憶する。勿論、これら以外のデータも適宜記憶できる。例えば、トークンやフラグ、タイマー、カウンタなども記憶する。
【0161】
第1クライアントプログラム505は、第1の仮想空間11を利用するためにクライアント制御部260としての機能させるためのプログラムであって、親サーバシステム1100Pから取得する。
【0162】
第2クライアントプログラム506は、第2の仮想空間12を利用するためのクライアント制御部260として機能させるためのプログラムであって、子サーバシステム1100Gから取得する。
【0163】
図17は、親サーバシステム1100Pが実行する第1の仮想空間制御処理の流れを説明するためのフローチャートである。
同処理において、親サーバシステム1100Pは、第1の仮想空間11に背景オブジェクトを配置して、第1の仮想空間11の自動制御を開始する(ステップS10)。例えば、NPC(Non Player Character)の動作、イベントの発生などの自動制御が開始される。
【0164】
親サーバシステム1100Pは、第1クライアントプログラム505を実行するユーザ端末1500と通信して所定のシステムログインを受け付けると、参加希望ユーザありと判断し(ステップS12のYES)、システムログインしたユーザを新たな第1の参加ユーザと見なす。そして、新たな第1の参加ユーザ用にアバター管理データ524を作成して当該ユーザのアバター8を第1の仮想空間11に配置し、当該加ユーザによる操作入力に応じたアバター8の動作制御を開始する(ステップS14)。そして、新たに配置したアバター8の所定位置に当該アバター8のユーザ視点C1を設定する(ステップS16)。ユーザ視点C1は、これ以降、アバター8の動作制御に応じて、アバター8の頭の位置や向きに連動するように自動制御される。
【0165】
次に、親サーバシステム1100Pは、アバター8毎にループAを実行して、アバター8毎に第1の仮想空間画面表示処理を実行する(ステップS20からステップS22)。
【0166】
図18から
図19は、第1の仮想空間画面表示処理の流れを説明するためのフローチャートである。同処理において、親サーバシステム1100Pは、ループAの処理対象のアバター8(対象アバター)の視界範囲に入った具現化空間14を新たに検出すると(ステップS30のYES)、検出した具現化空間14の登録具現化空間管理データ560(
図13参照)を作成して、当該具現化空間14を対象アバターと対応づけて登録する(ステップS32)。
【0167】
次に、親サーバシステム1100Pは、検出した具現化空間14の具現化空間管理データ540(
図12参照)を参照して、その管理サーバID541が示す子サーバシステム1100Gへ所定の設定リクエストを送信する(ステップS34)。
具体的には、送信先の子サーバシステム1100Gの第2の仮想空間12に設定を求める具現化視点C3の配置位置および視線方向の情報が送信される。具現化視点C3の第2の仮想空間12における配置位置および視線方向は、対象アバターのユーザ視点位置553及びユーザ視線方向555(
図13参照)を、検出した具現化空間14の座標変換定義データ544(
図12参照)に基づいて変換して得られる。
【0168】
一方、親サーバシステム1100Pは、対象アバターに係り登録されている具現化空間14のなかから視界外になった具現化空間14を新たに検出したならば(ステップS36のYES)、検出した具現化空間14の登録を破棄し具現化視点C3の破棄をリクエストする(ステップS38)。具体的には、登録具現化空間管理データ560(
図13参照)を消去して、所定の具現化視点の破棄リクエストを対象アバターのアバターID551とともに、検出した具現化空間14に対応する子サーバシステム1100Gへ送信する。
【0169】
次に、親サーバシステム1100Pは、対象アバターについて登録されている具現化空間毎にループBを実行する(ステップS50からステップS76)。
【0170】
ループBにおいて、親サーバシステム1100Pは、処理対象とされる登録済みの具現化空間(対象具現化空間)の元になる第2の仮想空間12を管理する子サーバシステム1100Gへ所定の制御リクエストを送信する(ステップS52)。
【0171】
「制御リクエスト」は、対象アバターの具現化視点C3の第2の仮想空間12における位置と視線方向を、対象アバターの第1の仮想空間11におけるユーザ視点C1の位置と視線方向の最新状態に追従・連動させる制御を子サーバシステム1100Gへ求めるものである。リクエストとともに、対象アバターのアバターID551と、変更先位置と、変更後視線方向とを送信する。変更先位置および変更後視線方向は、対象アバターのユーザ視点C1の第1の仮想空間座標系の配置位置及び視線方向を、対象具現化空間の座標変換定義データ544に基づいて変換したものである。
【0172】
次に、親サーバシステム1100Pは、対象具現化空間における具現化対象オブジェクトのリスト提供を求める提供リクエストを、対象アバターのアバターID551とともに、対象具現化空間の元になる第2の仮想空間12を管理する子サーバシステム1100Gへ送信してリストを取得する(ステップS54)。受信したリストで、具現化対象オブジェクトリスト564が更新される(
図13参照)。
【0173】
次に、親サーバシステム1100Pは、対象具現化空間の仮想オブジェクト制御データ570(
図13参照)を削除して仮想オブジェクト15の設定を一旦クリアして(ステップS56)、対象具現化空間における最新の具現化対象オブジェクト毎にループCを実行して、具現化対象オブジェクトリスト564が示す具現化対象オブジェクトの第2の仮想空間12における最新状況に応じて仮想オブジェクト15を再配置する(ステップS60からステップS74)。
【0174】
ループCにおいて、親サーバシステム1100Pは、対象アバターの具現化視点C3で、ループCの処理対象とされる具現化対象オブジェクト(対象オブジェクト)を撮影した撮影画像18(
図7参照)の提供を求める所定の画像リクエストを、対象具現化空間の元になる第2の仮想空間12を管理する子サーバシステム1100Gへ送信し、これを取得する(ステップS62)。画像リクエストとともに、対象アバターのアバターID551と、対象オブジェクトの具現化対象オブジェクトID574とが送信される。子サーバシステム1100Gから受信した画像は、撮影画像データ584となる(
図13参照)。
【0175】
次いで、親サーバシステム1100Pは、受信した撮影画像18に演算量低減化処理を施して具現化画像17を生成する(ステップS64)。
【0176】
図19に移って、親サーバシステム1100Pは、具現化対象オブジェクトの第2の仮想空間12における最新の配置位置の提供を求める所定の位置リクエストを、対象オブジェクトの具現化対象オブジェクトID574とともに、対象具現化空間の元になる第2の仮想空間12を管理する子サーバシステム1100Gへ送信し、これを取得する(ステップS66)。受信した位置座標を対象具現化空間の座標変換定義データ544の逆行列で変換して、具現化対象オブジェクトの仮想オブジェクト15の配置位置578とする(
図13参照)。
【0177】
そして、親サーバシステム1100Pは、対象オブジェクトの仮想オブジェクト15の大きさと形状を決定して第1の仮想空間11に配置する(ステップS68)。
具体的には、仮想オブジェクト15の大きさと形状を、受信した撮影画像18又は生成した具現化画像17の上下幅・左右幅と同じ幅を有する矩形の大きさおよび形状としてオブジェクト形状データ576を設定し、当該設定データに従った仮想オブジェクト15を配置位置578へ配置する。
【0178】
そして、親サーバシステム1100Pは、配置した仮想オブジェクト15へ、具現化画像17をテクスチャマッピングして(ステップS70)、当該仮想オブジェクト15のマッピング面を対象アバターのユーザ視点C1へ向けるようにビルボード処理をする(ステップS72)。
【0179】
なお、ビルボード処理は、具現化対象オブジェクトの仮想オブジェクト15と対象アバターのユーザ視点C1との相対位置関係や相対向きに応じて、適宜省略するとしてもよい。例えば、ユーザ視点C1から所定距離以上離れている具現化対象オブジェクトの仮想オブジェクト15については省略することとしてもよい。また、ユーザ視点C1の視線方向の向きと仮想オブジェクト15のマッピング面の法線方向とのズレが許容角度内である場合には省略することとしてもよい。これにより、親サーバシステム1100Pの処理負荷を低減できる。
【0180】
具現化対象オブジェクトの全てについてループCを実行し、それぞれの具現化対象オブジェクトに対応する仮想オブジェクト15を仮想スペース13内に配置したならば(ステップS74)、次の登録具現化空間を対象具現化空間としてループBを繰り返す。
【0181】
全ての登録具現化空間についてループBを実行したならば(ステップS76)、親サーバシステム1100Pは、対象アバター用の仮想オブジェクト15を描画ON、他のアバター用の仮想オブジェクト15の描画OFFに設定して(ステップS100)、対象アバターのユーザ視点C1から撮影した第1の仮想空間11の画像をレンダリングして、適宜これに情報表示などを加えて第1の仮想空間画面W1を生成する(ステップS102)。
【0182】
そして、第1の仮想空間画面W1を対象アバターのユーザ端末1500へ表示させ(ステップS104)。対象アバターへの第1の仮想空間画面表示処理を終了する。
【0183】
図17に戻って、親サーバシステム1100Pは、第1の参加ユーザのユーザ端末1500から所定のシステムログアウトを受け付けると、当該ユーザのアバター8を第1の仮想空間11から消去し、アバター管理データ524と第1の仮想空間画面表示制御データ550を削除して、当該第1の参加ユーザの参加登録を抹消する(ステップS110)。
【0184】
親サーバシステム1100Pは、ステップS12からステップS110を繰り返し実行する。
【0185】
図20から
図21は、子サーバシステム1100Gが実行する処理の流れを説明するためのフローチャートである。
子サーバシステム1100Gは、ゲーム初期設定データ590を参照して第2の仮想空間12にゲーム空間を構成する背景オブジェクトを配置し、第2の仮想空間12の自動制御を開始する(ステップS130)。そして、子サーバシステム1100Gは、配置されている背景オブジェクトのうち、そのオブジェクト定義データ592で具現化対象フラグが立てられているオブジェクトに具現化対象フラグ615(
図15参照)を立てる(ステップS132)。
【0186】
子サーバシステム1100Gは、第2クライアントプログラム506を実行するユーザ端末1500と通信してゲームプレイのログインを受け付けると、参加希望ユーザありと判断し(ステップS140のYES)、プレイログインしたユーザを新たな第2の参加ユーザとしてそのプレーヤキャラクタ4を第2の仮想空間12に配置し、新たな第2の参加ユーザによる操作入力に応じた動作制御を開始する(ステップS142)。
【0187】
次いで、子サーバシステム1100Gは、新たに配置したプレーヤキャラクタ4の所定位置に参加ユーザ用視点C2(撮影視点)を設定して、プレーヤキャラクタ4の位置や向きの変更に視点の位置や視線方向を追従させる自動制御を開始し(ステップS136)、当該プレーヤキャラクタ4に具現化対象フラグ615を立てる(ステップS146)。
【0188】
本実施形態では、第2の仮想空間12で1対1の対戦を行う対戦格闘ゲームを実行するので、参加ユーザ用視点C2は共通とされるが、ゲームジャンルによってはプレーヤキャラクタ4別に参加ユーザ用視点C2を設定する。また、本実施形態では、プレーヤキャラクタ4は無条件に具現化対象オブジェクトとして設定しているが、MMORPG(Massively Multiplayer Online Role Playing Game)などでは必ずしも全てのプレーヤキャラクタ4を具現化対象オブジェクトに設定しなくてもよい。例えば、当該ステップにおいて、既に第2の仮想空間12に配置されているプレーヤキャラクタ4の中から具現化対象オブジェクトを抜粋するとしてもよい。
【0189】
次に、子サーバシステム1100Gは、ゲーム進行開始が可能になったかを判定する(ステップS150)。本実施形態では、第2の仮想空間12で1対1の対戦格闘ゲームを実行するので、第2の参加ユーザが2名揃うと肯定判定し(ステップS150のYES)、ゲーム進行制御を開始するとともに(ステップS152)、参加ユーザ用視点C2から撮影した第2の仮想空間12の画像を生成して、第2の参加ユーザのユーザ端末1500にて第2の仮想空間画面W2(
図3参照)を表示させる制御を開始する。
【0190】
なお、第2の仮想空間12で実行されるゲームのジャンルが、例えば、MORPG(Multiplayer Online Role Playing Game)などでは、ステップS150からステップS154を、ステップS142やステップS144とともに実行すればよい。
【0191】
子サーバシステム1100Gは、親サーバシステム1100Pから設定リクエストを受信すると(ステップS160のYES)、第2の仮想空間12内に具現化視点C3を設定する(ステップS162)。
【0192】
また、子サーバシステム1100Gは、親サーバシステム1100Pから破棄リクエストを受信すると(ステップS164のYES)、リクエストされた具現化視点C3を第2の仮想空間12から消去・破棄する(ステップS166)。
【0193】
図21に移って、子サーバシステム1100Gは、親サーバシステム1100Pから制御リクエストを受信すると(ステップS180のYES)、リクエストされた具現化視点C3の位置や視線方向を、当該具現化視点C3に対応するアバター8のユーザ視点C1の位置や視線方向の変化に追従するように変更制御する(ステップS182)。
【0194】
また、子サーバシステム1100Gは、親サーバシステム1100Pから提供リクエストを受信すると(ステップS184のYES)、第2の仮想空間12に配置されているオブジェクトの中から具現化対象フラグ615が「1(フラグ立ち)」になっているオブジェクトを検索して、それらのオブジェクトID611のリストを親サーバシステム1100Pへ返信する(ステップS186)。
【0195】
また、子サーバシステム1100Gは、親サーバシステム1100Pから画像リクエストを受信すると(ステップS190のYES)、リクエストされた具現化視点C3からリクエストされた具現化対象オブジェクトを撮影した撮影画像18を生成して、親サーバシステム1100Pへ返信する(ステップS192)。
【0196】
また、子サーバシステム1100Gは、親サーバシステム1100Pから位置リクエストを受信すると(ステップS194のYES)、リクエストされた具現化対象オブジェクトの位置座標を親サーバシステム1100Pへ返信する(ステップS196)。
【0197】
ゲーム終了条件が満たされると(ステップS200のYES)、子サーバシステム1100Gは、ゲーム終了処理を実行する(ステップS202)。例えば、第2の参加ユーザのプレーヤキャラクタ4を第2の仮想空間12から消去する。勝ち抜き戦タイプの対戦ゲームであれば、勝者のプレーヤキャラクタ4は消去しなくてもよい。
【0198】
以上、本実施形態によれば、第1の仮想空間に第2の仮想空間が存在するかのような新たな具現化手法の技術を提供することができる。
【0199】
仮想空間制御システム1000は、第1の仮想空間11内に仮想スペース13を設定し、この仮想スペース13に第2の仮想空間12を具現化した具現化空間14を表現する。その際、第2の仮想空間12内の具現化対象オブジェクトに限り、それを具現化する仮想オブジェクト15を仮想スペース13内に配置する。つまり、第2の仮想空間12に配置される全オブジェクトを第1の仮想空間11に複製して複製元と同じように動作制御するよりも、遥かに少ない演算量、少ない処理ステップ、少ないデータ量で第2の仮想空間12の様子を第1の仮想空間11にて具現化できる。
【0200】
しかも、仮想オブジェクト15の配置構成を、それらに対応づけられる具現化対象オブジェクトの第2の仮想空間12における配置構成に合わせることで、第2の仮想空間12の様子をライブ中継のごとく第1の仮想空間11にて表現できる。
【0201】
そして、仮想オブジェクト15には、テクスチャマッピングされる具現化画像17の元になる撮影画像18は、子サーバシステム1100Gにて生成されるので、具現化空間14の表現に係る親サーバシステム1100Pの処理負荷を抑制できる。しかも具現化画像17は、撮影画像18に対して演算量低減化処理を施して作成されるので、更に親サーバシステム1100Pの処理負荷を抑制できる。
【0202】
〔変形例〕
以上、本発明を適用した実施形態の一例について説明したが、本発明を適用可能な形態は上記形態に限定されるものではなく適宜構成要素の追加・省略・変更を施すことができる。
【0203】
(変形例その1)
例えば、上記実施形態では、具現化視点C3をアバター8別に第2の仮想空間12に設定したがこれに限らない。例えば、
図22に示すように、第2の仮想空間12内に予め候補撮影視点C4(C4a,C4b,…)を多数設定しておいて、この中から具現化視点C3を選択するとしてもよい。
【0204】
候補撮影視点C4の数は適宜設定可能であるが、例えば、100点程度を、具現化対象オブジェクト(
図22の例では、プレーヤキャラクタ4a、プレーヤキャラクタ4b、アイテム5)を四方八方から撮影するように設定する。各候補撮影視点C4は、それぞれの位置から具現化対象オブジェクト(
図22の例では、プレーヤキャラクタ4a、プレーヤキャラクタ4b、アイテム5)を所与の画面レイアウトで写すように、相対位置や視線方向が設定されている。
【0205】
図22中のアバター視点C3’は、子サーバシステム1100Gが、設定リクエストとともに受信した位置座標及び視線方向に基づく視点である。上記実施形態であれば、ステップS162(
図20参照)にて設定される具現化視点C3に相当する。
【0206】
当該変形例において、子サーバシステム1100Gは、ステップS162に代えて
図23に示す具現化視点選択処理の流れを実行する。すなわち、子サーバシステム1100Gは、候補撮影視点C4の中から、設定リクエストとともに受信した位置座標及び視線方向が最も近い候補撮影視点C4(
図23の例では候補撮影視点C4a)を選択し(ステップS200)、当該候補撮影視点C4を、対象アバターの具現化視点C3として登録する(ステップS202)。
【0207】
また、当該変形例において、子サーバシステム1100Gは、ステップS192(
図21参照)に代えて
図24に示す画像提供処理の流れを実行する。
すなわち、子サーバシステム1100Gは、画像リクエストでリクエストされたアバター8の具現化視点C3でリクエストされた具現化対象オブジェクトの撮影画像18を生成する(ステップS220)。次で、子サーバシステム1100Gは、リクエストされた具現化対象オブジェクトの代表点を起点として、(1)当該起点からアバター視点C3’までの距離L1と、当該起点から具現化視点C3までの距離L2を算出し(ステップS224)、距離L1と距離L2の比率に基づいて先に生成した撮影画像18を拡大/縮小処理する。アバター視点C3’が具現化視点C3より、リクエストされた具現化対象オブジェクトより離れていれば撮影画像18は比率に応じて縮小され、その逆であれば比率に応じて拡大される。
【0208】
次いで、子サーバシステム1100Gは、拡大/縮小した撮影画像18を、アバター視点C3’の法線面(視線方向を法線方向とする面)に投影変換処理し(ステップS226)、これを撮影画像18として親サーバシステム1100Pへ変身する(ステップS228)。
【0209】
(変形例その2)
また、上記実施形態では、仮想オブジェクト15を具現化対象オブジェクト毎に作成したが、参加ユーザ用視点C2が具現化対象オブジェクトを全て撮影範囲に収めるケースでは、全ての具現化対象オブジェクトを1つの仮想オブジェクト15で表現する構成としてもよい。
【0210】
(変形例その3)
また、上記実施形態では、プレーヤキャラクタ4を具現化対象オブジェクトとする例を示したが、光彩や爆煙、霧、火花、集中線、などの各種演出表示用のオブジェクトも適宜具現化対象オブジェクトとしてもよい。
【0211】
(変形例その4)
また、上記実施形態では、仮想オブジェクト15として、板状のポリゴンを例示したがこれに限らない。例えば、候補撮影視点C4で撮影された撮影画像18に基づくフォトグラメトリにより仮想オブジェクト15を多数のポリゴンで構成された立体的なモデルとして作成してもよい。具体的には、親サーバシステム1100Pは、ループCに代えて子サーバシステム1100Gから全ての候補撮影視点C4の撮影画像18をフォトグラメトリ素材画像として取得し、取得した撮影画像18を素材としてフォトグラメトリ処理を実行して仮想オブジェクト15を作成するとしてもよい。この場合、仮想オブジェクト15へのビルボード処理(
図19のステップS72)は実行不要となる。
【0212】
(変形例その5)
また、各種の視点(ユーザ視点C1、参加ユーザ用視点C2、具現化視点C3、候補撮影視点)に係り、それぞれの仮想空間での位置と視線方向との両方を制御する例を示したが、これに限らない。(a)第1の仮想空間11や第2の仮想空間12での主な表現対象物、(b)第2の仮想空間12で実現されるゲームの内容、(c)アバター8やプレーヤキャラクタ4のデザイン、(d)仮想オブジェクト15の形状、などによっては、位置と視線方向の何れか一方のみを制御する構成であってもよい。また、ステップS66は、第2の仮想空間12において固定位置にあるオブジェクト(例えば、ある種の背景オブジェクト)については省略してもよい。
【0213】
(変形例その6)
ステップS30およびステップS36に係り(
図18参照)、具現化空間14がアバター8の視界に入るか否かは、第1の仮想空間11におけるユーザ視点C1の位置や向き(視線方向)に応じて変わる。ユーザ視点C1の位置だけが変わるか、視線方向だけが変わるか、両方変わるのか、は上記(a)から(d)の内容次第となる。
また、ユーザ視点C1の移動や方向の変化に応じた仮想オブジェクト15の移動や向きの制御についても、移動のみの制御とするか、向きのみの制御とするか、両方を制御するのかもやはり上記(a)から(d)の内容次第となる。
つまり、ステップS72に係り、親サーバシステム1100Pは、第1の仮想空間11におけるユーザ視点C1の位置および/又は向きに応じて、仮想オブジェクト15の位置および/又は向きを制御すると言える。
【0214】
第2の仮想空間12における具現化視点C3の制御についても同様である。
すなわち、ユーザ視点C1の位置だけが変わるか、視線方向だけが変わるか、両方変わるのか、は上記(a)から(d)の内容次第となる。また、具現化視点C3を移動のみ制御するのか、向きのみ制御するのか、両方を制御するのかもやはり上記(a)から(d)の内容次第となる。
【0215】
つまり、子サーバシステム1100Gは、ステップS182に係り、第1の仮想空間11におけるユーザ視点C1の位置および/又は向きに応じて、第2の仮想空間における具現化視点C3の位置および/又は向きを制御する、と言える。
【符号の説明】
【0216】
4…プレーヤキャラクタ(具現化対象オブジェクト)
8…アバター
11…第1の仮想空間
12…第2の仮想空間
13…仮想スペース
14…具現化空間
15…仮想オブジェクト
17…具現化画像
18…撮影画像
200p…処理部
210…第1の仮想空間制御部
212…仮想スペース設定部
214…空間表現制御部
216…仮想オブジェクト制御部
230…第2の仮想空間制御部
232…撮影視点制御部
234…撮影画像生成制御部
501…親サーバプログラム
503…子サーバプログラム
505…第1クライアントプログラム
506…第2クライアントプログラム
522…第1の仮想空間制御データ
524…アバター管理データ
530…仮想スペース管理データ
540…具現化空間管理データ
544…座標変換定義データ
550…第1の仮想空間画面表示制御データ
553…ユーザ視点位置座標
555…ユーザ視線方向
560…登録具現化空間管理データ
561…管理サーバID
564…具現化対象オブジェクトリスト
566…空間表現制御データ
570…仮想オブジェクト制御データ
574…具現化対象オブジェクトID
578…配置位置
580…配置姿勢
584…撮影画像データ
586…具現化画像データ
600…第2の仮想空間制御データ
615…具現化対象フラグ
630…参加ユーザ用視点制御データ
640…具現化視点制御データ
645…位置座標
647…視線方向
1000…仮想空間制御システム
1010…運用サーバシステム
1100G…子サーバシステム
1100P…親サーバシステム
1500…ユーザ端末
C1…ユーザ視点
C2…参加ユーザ用視点
C3…具現化視点
C4…候補撮影視点
W1…第1の仮想空間画面
W2…第2の仮想空間画面