IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社カプコンの特許一覧

特開2024-7703仮想空間生成プログラム、および仮想空間生成装置
<>
  • 特開-仮想空間生成プログラム、および仮想空間生成装置 図1
  • 特開-仮想空間生成プログラム、および仮想空間生成装置 図2
  • 特開-仮想空間生成プログラム、および仮想空間生成装置 図3
  • 特開-仮想空間生成プログラム、および仮想空間生成装置 図4
  • 特開-仮想空間生成プログラム、および仮想空間生成装置 図5
  • 特開-仮想空間生成プログラム、および仮想空間生成装置 図6
  • 特開-仮想空間生成プログラム、および仮想空間生成装置 図7
  • 特開-仮想空間生成プログラム、および仮想空間生成装置 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024007703
(43)【公開日】2024-01-19
(54)【発明の名称】仮想空間生成プログラム、および仮想空間生成装置
(51)【国際特許分類】
   G06T 19/00 20110101AFI20240112BHJP
   A63F 13/55 20140101ALI20240112BHJP
   G06T 13/20 20110101ALI20240112BHJP
【FI】
G06T19/00 300A
A63F13/55
G06T13/20 500
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2022108950
(22)【出願日】2022-07-06
(71)【出願人】
【識別番号】000129149
【氏名又は名称】株式会社カプコン
(74)【代理人】
【識別番号】110001427
【氏名又は名称】弁理士法人前田特許事務所
(72)【発明者】
【氏名】小島 健二
(72)【発明者】
【氏名】松下 翔
(72)【発明者】
【氏名】中山 穂香
(72)【発明者】
【氏名】袖裂 勇樹
(72)【発明者】
【氏名】柳口 弥生
【テーマコード(参考)】
5B050
【Fターム(参考)】
5B050BA09
5B050CA07
5B050EA07
5B050EA12
5B050EA13
5B050FA05
5B050FA10
(57)【要約】
【課題】想空間における情報取得の効率化を図る。
【解決手段】コンピュータを、仮想空間における所定領域を示す体積要素データを第1記憶装置から読取り、読み取った体積要素データを第2記憶装置に格納する読取り部として機能させる。体積要素データには、所定領域の種類を特定するための第1情報と、所定領域を構成する要素の特性を特定するための第2情報とが含まれる。
【選択図】図5
【特許請求の範囲】
【請求項1】
コンピュータを、
仮想空間における所定領域を示す体積要素データを第1記憶装置から読取り、読み取った体積要素データを第2記憶装置に格納する読取り部として機能させ、
前記体積要素データには、
前記所定領域の種類を特定するための第1情報と、
前記所定領域を構成する要素の特性を特定するための第2情報と
が含まれる
仮想空間生成プログラム。
【請求項2】
請求項1において、
前記第1情報は、前記所定領域の種類を特定する情報を格納したリストのインデックスである
仮想空間生成プログラム。
【請求項3】
請求項1または請求項2において、
前記第2情報は、前記所定領域を構成する要素の特性を特定する情報を格納したリストのインデックスである
仮想空間生成プログラム。
【請求項4】
請求項2の仮想空間生成プログラムにおいて、
前記仮想空間には複数の前記体積要素データが対応付けられており、
前記読取り部は、複数の前記体積要素データの一部分ずつを前記第1記憶装置から読み込み、
前記リストは、前記読取り部による読取りの単位に対応して設けられている
仮想空間生成プログラム。
【請求項5】
請求項1の仮想空間生成プログラムにおいて、
前記体積要素データには、第3情報を含む
仮想空間生成プログラム。
【請求項6】
請求項1の仮想空間生成プログラムにおいて、
前記コンピュータを、
前記仮想空間内でキャラクタを動作させるキャラクタ制御部として機能させ、
前記読取り部は、前記仮想空間における前記キャラクタの現在位置から、前記キャラクタが移動可能な経路について、前記体積要素データを前記第1記憶装置から読み取る
仮想空間生成プログラム。
【請求項7】
請求項6の仮想空間生成プログラムにおいて、
前記読取り部は、読み取る体積要素データの範囲を、第1閾値以下の移動で前記キャラクタが到達できる範囲の前記体積要素データに限定する
仮想空間生成プログラム。
【請求項8】
請求項7の仮想空間生成プログラムにおいて、
前記読取り部は、前記キャラクタが移動した結果、移動後における前記キャラクタの位置から第1閾値以下の移動で前記キャラクタが到達できる範囲に新たに含まれることとなった前記体積要素データを前記第1記憶装置から読み取る
仮想空間生成プログラム。
【請求項9】
請求項6から請求項8のうちの何れか1項の仮想空間生成プログラムにおいて、
前記読取り部は、前記キャラクタが移動した結果、移動後の前記キャラクタの位置からの距離が第2閾値よりも大きくなった前記体積要素データについては、前記第2記憶装置からアンロードする
仮想空間生成プログラム。
【請求項10】
請求項1または請求項6の仮想空間生成プログラムにおいて、
前記コンピュータを、
前記仮想空間内でキャラクタを動作させるキャラクタ制御部として機能させ、
前記読取り部は、前記仮想空間における前記キャラクタの現在位置の周囲に、第3閾値以上の広さの移動可能領域が広がる場合において、前記キャラクタの周囲の所定範囲について、前記体積要素データを前記第1記憶装置から読み取る
仮想空間生成プログラム。
【請求項11】
請求項10の仮想空間生成プログラムにおいて、
前記読取り部は、前記キャラクタが移動した結果、新たに前記第3閾値以上の広さの移動可能領域に含まれることとなった前記体積要素データを前記第1記憶装置から読み取る
仮想空間生成プログラム。
【請求項12】
請求項10の仮想空間生成プログラムにおいて、
前記読取り部は、前記キャラクタが移動した結果、移動後の前記キャラクタの位置からの距離が第4閾値よりも大きくなった前記体積要素データについては、前記第2記憶装置からアンロードする
仮想空間生成プログラム。
【請求項13】
請求項1または請求項2において、
前記コンピュータを、音声データを生成する再生部として機能させ、
前記再生部は、前記第1情報および前記第2情報の少なくとも一方を用いて前記音声データを生成する
仮想空間生成プログラム。
【請求項14】
請求項1または請求項2の仮想空間生成プログラムを記憶した記憶部と、
前記仮想空間生成プログラムを実行する制御部と、
を備えた仮想空間生成装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、仮想空間生成プログラム、および仮想空間生成装置に関する。
【背景技術】
【0002】
仮想空間における音声処理の技術として、特許文献1に開示されたものがある。特許文献1の例では、仮想音響空間において発生し得る音に関する情報である音響空間情報を記憶するとされている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2014-222306号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
仮想空間が大規模になると、音響効果等に必要な仮想空間の情報を効率的に取得する手段が必要になる。
【0005】
本開示の目的は、仮想空間における情報取得の効率化を図ることである。
【課題を解決するための手段】
【0006】
第1の態様は、コンピュータを、
仮想空間における所定領域を示す体積要素データを第1記憶装置から読取り、読み取った体積要素データを第2記憶装置に格納する読取り部として機能させ、
前記体積要素データには、
前記所定領域の種類を特定するための第1情報と、
前記所定領域を構成する要素の特性を特定するための第2情報と
が含まれる
仮想空間生成プログラムである。
【0007】
第1の態様において、前記第1情報は、前記所定領域の種類を特定する情報を格納したリストのインデックスとしてもよい。
【0008】
前記態様においては、前記第2情報は、前記所定領域を構成する要素の特性を特定する情報を格納したリストのインデックスとしてもよい。
【0009】
前記態様においては、前記仮想空間には複数の前記体積要素データが対応付けられており、
前記読取り部は、複数の前記体積要素データの一部分ずつを前記第1記憶装置から読み込み、
前記リストは、前記読取り部による読取りの単位に対応して設けてもよい。
【0010】
前記態様においては、前記体積要素データには、第3情報を含めてもよい。
【0011】
前記態様においては、前記コンピュータを、
前記仮想空間内でキャラクタを動作させるキャラクタ制御部として機能させ、
前記読取り部は、前記仮想空間における前記キャラクタの現在位置から、前記キャラクタが移動可能な経路について、前記体積要素データを前記第1記憶装置から読み取るようにしてもよい。
【0012】
前記態様においては、前記読取り部は、読み取る体積要素データの範囲を、第1閾値以下の移動で前記キャラクタが到達できる範囲の前記体積要素データに限定してもよい。
【0013】
前記態様においては、前記読取り部は、前記キャラクタが移動した結果、移動後における前記キャラクタの位置から第1閾値以下の移動で前記キャラクタが到達できる範囲に新たに含まれることとなった前記体積要素データを前記第1記憶装置から読み取るようにしてもよい。
【0014】
前記態様においては、前記読取り部は、前記キャラクタが移動した結果、移動後の前記キャラクタの位置からの距離が第2閾値よりも大きくなった前記体積要素データについては、前記第2記憶装置からアンロードするようにしてもよい。
【0015】
前記態様においては、前記仮想空間内でキャラクタを動作させるキャラクタ制御部として機能させ、
前記読取り部は、前記仮想空間における前記キャラクタの現在位置の周囲に、第3閾値以上の広さの移動可能領域が広がる場合において、前記キャラクタの周囲の所定範囲について、前記体積要素データを前記第1記憶装置から読み取るようにしてもよい。
【0016】
前記態様においては、
前記読取り部は、前記キャラクタが移動した結果、新たに前記第3閾値以上の広さの移動可能領域に含まれることとなった前記体積要素データを前記第1記憶装置から読み取るようにしてもよい。
【0017】
前記態様においては、前記読取り部は、前記キャラクタが移動した結果、移動後の前記キャラクタの位置からの距離が第4閾値よりも大きくなった前記体積要素データについては、前記第2記憶装置からアンロードするようにしてもよい。
【0018】
前記態様においては、前記コンピュータを、音声データを生成する再生部として機能させ、
前記再生部は、前記第1情報および前記第2情報の少なくとも一方を用いて前記音声データを生成するようにしてもよい。
【0019】
また、第2の態様は、前記態様の仮想空間生成プログラムを記憶した記憶部と、
前記仮想空間生成プログラムを実行する制御部と、
を備えた仮想空間生成装置である。
【発明の効果】
【0020】
本開示によれば、仮想空間における情報取得の効率化を図ることができる。
【図面の簡単な説明】
【0021】
図1】データ生成装置の構成を示すブロック図である。
図2】仮想空間に配置された建物を例示する図である。
図3】建物内を部分空間に分割した例を示す図である。
図4】ルートの一例を説明する図である。
図5】ゲーム装置の構成を示すブロック図である。
図6】ルート基準法の概念を説明する図である。
図7】ボクセルデータのアンロードの概念を説明する図である。
図8】距離基準法の概念を説明する図である。
【発明を実施するための形態】
【0022】
[実施形態]
本開示では、仮想空間生成プログラムをゲームプログラムとして実装した例を説明する。仮想空間生成プログラムで使用する一部のデータは、データ生成装置(後述)によって生成される。
【0023】
本開示では、仮想空間生成装置をゲーム装置5として実現した例を説明する。ゲームプログラム(仮想空間生成プログラム)は、ゲーム装置5(仮想空間生成装置)において実行される。
【0024】
《概要》
このゲームプログラムによるゲームでは、ユーザの操作を受けて、プレイヤキャラクタを仮想空間で活動させたり、プレイヤキャラクタ同士でグループを編成して様々なアクションを行わせたりする。以下の説明では、仮想空間は三次元である。
【0025】
仮想空間には、ユーザの操作が無くても動作するオブジェクトも存在する。ユーザの操作が無くても動作するオブジェクトとしては、いわゆるノンプレイヤキャラクタ等を例示できる。以下では、プレイヤキャラクタやノンプレイヤキャラクタを単にキャラクタと標記する場合がある。
【0026】
仮想空間には、プレイヤキャラクタやノンプレイヤキャラクタ等の他にも種々のオブジェクトが配置されている。オブジェクトには、仮想空間内の地形を表すものがある。地形を表すオブジェクトとしては、山、木、岩、洞窟などを例示できる。
【0027】
また、仮想空間には、町が設けられている。町には、建物が設けられている。建物は、部屋、窓、ドア等、現実の建物と同様の構造を有している。建物のなかには、複数の部屋を備え、それらの部屋が廊下で結ばれているものがある。部屋の中には、種々のオブジェクト(部屋の備品)が配置されている場合がある。
【0028】
このゲームでは、種々のゲーム音声が再生される。この明細書における、ゲーム音声とは、ゲーム中に、ゲーム装置のスピーカ(後述)から流れる音声である。例えば、仮想空間内に配置された種々のオブジェクト(例えば電話機を示すオブジェクトなど)が発する音や人の話し声などがゲーム音声の一例である。
【0029】
また、機械の動作音、洞窟において入口から出口に向かう風の音、町の雑踏の音(通行人の声や付近を通過する自動車の音等)、森や草原に吹く風の音等の環境音もゲーム音声の一例である。
【0030】
《データ生成装置10》
データ生成装置10は、仮想空間の生成に必要なデータを事前に作成する装置である。データ生成装置10は、仮想空間を用いたサービスなどを構築する際のツールである。
【0031】
データ生成装置10は、例えばゲームプログラムの開発ツールとして利用される。データ生成装置10によって生成されたデータは、仮想空間生成装置(例えばゲーム装置)において使用される。
【0032】
データ生成装置10は、例えば、パーソナルコンピュータに所定のソフトウェアをインストールすることによって構成できる。データ生成装置10には、データ生成プログラムがインストールされる。
【0033】
〈ハードウェアの構成〉
図1は、データ生成装置10の構成を示すブロック図である。図1に示すように、データ生成装置10には、ディスプレイ91、およびキーボード93が接続されている。
【0034】
データ生成装置10は、ネットワークインターフェース81、グラフィック処理部82、操作部84、記憶部85、および制御部86を有する。グラフィック処理部82、操作部84、および記憶部85は、バス87を介して制御部86と電気的に接続されている。
【0035】
ネットワークインターフェース81は、例えば、他のゲーム開発装置やサーバ装置(何れも図示を省略)との間で各種データを送受信するために、前記通信ネットワークに通信可能に接続される。
【0036】
グラフィック処理部82は、ディスプレイ91(例えば液晶ディスプレイ)と接続されている。グラフィック処理部82は、制御部86から出力される画像情報に従って、ディスプレイ91に各種画像を表示する。
【0037】
操作部84は、キーボード93と接続されている。操作部84には、使用者(例えばゲームの開発者)によるキーボード93の操作に応じて、操作信号が入力される。使用者は、キーボード93を操作することにより、記憶部85に記憶された各種プログラムを実行させることができる。使用者は、キーボード93を操作することで、種々の情報を入力することができる。
【0038】
記憶部85は、HDD、SSD、RAMおよびROMなどで構成される。記憶部85には、各種プログラムなどが格納されている。
【0039】
制御部86は、データ生成装置10を制御する。制御部86は、CPU(マイクロコンピュータ)および半導体メモリを備えている(図示は省略)。半導体メモリには、CPUを動作させるためのプログラムなどが格納されている。例えば、半導体メモリには、データ生成プログラムが格納される。
【0040】
〈データ生成装置10における制御部の機能的構成〉
データ生成装置10の制御部86は、そのCPUがデータ生成プログラムを実行することによって、メッシュ生成部861、ボクセル生成部862、空間分割部863、埋込情報作成部864、ルート情報作成部865、データ出力部866として機能する。
【0041】
-メッシュ生成部861-
メッシュとは、仮想空間におけるオブジェクトを単純な形状をした要素(例えば三角形などのポリゴンで形成された要素)に分割(離散化)したものをいう。ゲームプログラムなどの開発では、仮想空間内のオブジェクト(建物や洞窟など)に対して、メッシュのデータが準備されることが多い。例えば、ゲームプログラムでは、オブジェクトを描画するためのメッシュ(以下、描画メッシュ)のデータが準備される。
【0042】
メッシュ生成部861は、既存のメッシュデータ(一例として描画メッシュのデータ)を利用して、仮想空間にボクセル(後述)を対応付けるためのメッシュデータ(以下、ボクセル用メッシュデータ)を生成する。ボクセル用メッシュデータは、描画メッシュよりも少ないポリゴン数で対象のオブジェクトを定義する。
【0043】
-ボクセル生成部862-
ボクセル生成部862は、ボクセル用メッシュデータで示されたオブジェクトに対してボクセルを対応付ける。ボクセルは、仮想空間内において、体積を有する要素(体積要素データ)である。オブジェクトに対応付けられるボクセルは、全て同形状である。以下では、ボクセルを仮想空間の位置(ないしはオブジェクト)と対応付けることを、「ボクセルを仮想空間に配置する」と表現する場合がある。
【0044】
-空間分割部863-
空間分割部863は、仮想空間に配置されたボクセルをグループ分けすることによって、仮想空間を所定の小空間(部分空間)に分割する。図2は、仮想空間に配置された建物を例示する図である。図2は、天井側から建物内を見下ろした図である。
【0045】
図2に示すように、建物Bには、部屋R、廊下Cなどの部分空間が存在する。図2では、太線は、建物の壁(以下、壁W)の表面を示している。図2では、壁Wおよび部分空間に配置されたボクセルVxを四角形で表記してある。
【0046】
空間分割部863は、以下の手順によって、建物B内を部分空間(部屋R、廊下Cなど)に分割する。
【0047】
(1)壁Wに相当するボクセルVxの中心点を始点として、部屋Rの内部に向かうベクトルVを作る。なお、始点は、ボクセルVxの中心点には限定されない。始点は、例えば壁などの表面に相当する点でもよい。
【0048】
(2)ベクトルVの終点は、終点と周囲の他の壁との距離、終点と床との距離、終点と天井との距離の合計を最大化するように選ぶ。
【0049】
(3)このようなベクトルVを複数個、作成する。作成するベクトルVの数は、、例えば、開発者が適宜、設定すればよい。
【0050】
(4)作成したベクトルVについて、終点が互いに近傍にあるベクトルVの集合を作る。図2における破線の楕円は、前記集合を構成するベクトルVの終点を囲んだものである。なお、どの程度の距離を「近傍」として扱うかは、例えば、開発者が適宜、選択すればよい。
【0051】
(5)ベクトルVの集合を構成するベクトルVの始点を繋いだ凸多角形内を求める領域(分割された1つの部分空間)とする。求めた領域(部分空間)に重なるボクセルが一つのグループである。図3に、建物B内を部分空間に分割した例を示す。図3の例では、建物B内は、5つの部分空間(空間S1~S5)に分割されている。
【0052】
-埋込情報作成部864-
埋込情報作成部864は、属性リストとマテリアルリストなどの情報を作成する。
【0053】
属性リストは、複数の情報(要素)を格納でき、且つ、インデックスを指定することで情報を読み取ることができる。属性リストの要素は、リストの対象範囲に含まれる空間(仮想空間内の所定領域)の種類を特定する情報(以下、第1情報)である。
【0054】
例えば、空間S1(図3参照)が建物の部屋であるとする。埋込情報作成部864は、空間S1に関する属性リストに、空間の種類として、{部屋}という情報を格納する。空間の種類としては、その他に、{廊下}、{洞窟}、{平原}等を例示できる。部分空間の構成によっては、リストに格納される空間の種類は複数になり得る。本実施形態の属性リストは、インデックスが3ビットで表現できるように構成されている。
【0055】
マテリアルリストも、複数の情報(要素)を格納でき、且つ、インデックスを指定することで情報を読み取ることができる。空間を構成する要素(例えば壁Wなど)には、特性のひとつとして、「材料」が設定されている。マテリアルリストの要素は、空間を構成する要素に設定されている材料を特定する情報(以下、第2情報)である。
【0056】
例えば、空間S1が建物の部屋であるとする。また、その部屋は、床と天井が木で構成され、壁がコンクリートで形成され、窓にガラスが嵌め込まれているとする。埋込情報作成部864は、空間S1に関するマテリアルリストに対して、{木}、{コンクリート}、{ガラス}といった要素を格納する。本実施形態のマテリアルリストは、インデックスが5ビットで表現できるように構成されている。
【0057】
これらのリストは、部分空間ごとに作成される。「部分空間」とは、空間分割部863によって分割された部分空間である。例えば、図3における空間S1~S5のそれぞれが「部分空間」の一例である。
【0058】
埋込情報作成部864は、部分空間に配置された各ボクセルに第1情報と第2情報を埋め込む。具体的には、埋込情報作成部864は、第1情報として属性リストのインデックスをボクセルに埋め込み、第2情報としてマテリアルリストのインデックスをボクセルに埋め込む。
【0059】
例えば、埋込情報作成部864は、材料が{木}である{床}に配置されたボクセルには、属性リストの{床}に対応したインデックスを第1情報として埋め込み、マテリアルリストの{木}に対応したインデックスを第2情報として埋め込む。
【0060】
属性リストのインデックスとマテリアルリストのインデックスは、別々のデータとしてボクセルに埋め込んでもよいし、ひと塊のデータにパックしてボクセルに埋め込んでもよい。これらのインデックスをひと塊のデータにパックする場合には、コンピュータ(CPU)におけるデータの1単位(バイト、ワードなど)にパックすることが考えられる。
【0061】
本実施形態では、属性リストのインデックスが3ビットで表せ、マテリアルリストのインデックスが5ビットで表せる。換言すると、属性リストのインデックスとマテリアルリストのインデックスとは、1バイトにまとめることができる。埋込情報作成部864は、属性リストのインデックスとマテリアルリストのインデックスを1バイトにまとめてボクセルのデータに埋め込む。
【0062】
埋込情報作成部864は、ボクセルに対して、第1情報、第2情報とは別の情報(第3情報)を埋め込む場合がある。第3情報としては、そのボクセルの重心から周囲のオブジェクト(例えば壁)までの距離、そのボクセルの周囲に配置されているオブジェクト(例えば草や樹木)の密度などを例示できる。
【0063】
-ルート情報作成部865-
キャラクタ等の所定のオブジェクトは、ユーザの操作やコンピュータの制御によって、仮想空間内を移動できる。ルート情報作成部865は、仮想空間においてオブジェクトが移動できるルート等の情報をデータベースとして構築する。
【0064】
ひとつのルート(経路)は、空間分割部863によって分割された部分空間の集合として定義できる。図4は、ルートの一例を説明する図である。図4において破線で囲まれている箇所は、部分空間である。
【0065】
本明細書では、ルートを構成する部分空間のうちで、繋がる相手(部分空間)が一つのみの部分空間を「端」と呼ぶ。図4に示す仮想空間VSでは、部分空間R1が「端」である。
【0066】
また、ルートを構成する部分空間のうちで、複数の部分空間と繋がる部分空間を「節」と呼ぶ。図4の例では、部分空間R2,R3,R4,R5,R6,R7等が「節」である。仮想空間VSでは、部分空間の繋がり方には、「端から端」、「端から節」、「節から節」、「節から端」といった形態がある。
【0067】
ルート情報作成部865は、途中で分岐しない部分空間(ボクセルの集合)の繋がりを、一つのルートとして仮想空間内から抽出する。図4の例では、部分空間R8において、ルートが複数の部分空間(R9,R10)に分岐している。図4の例では、部分空間R1から部分空間R7までの部分空間が一つのルートを構成している。
【0068】
ルート情報作成部865は、一つのルートとして抽出した各ルートをデータベース化する。以下、このデータベースをルートデータベースと呼ぶ。ルート情報作成部865は、ルートを構成するそれぞれの部分空間について、その部分空間の重心とその部分空間における開口(他の部分空間と繋がる部分)との距離を取得できるように、その距離の値を格納したルートデータベースを構築する。
【0069】
なお、ルートを構成するボクセルのデータは、仮想空間における位置に基づいて、木構造のデータとして管理するとよい。木構造としては、例えば、Bounding Volume Hierarchy(以下、BVHと略記する)を採用できる。
【0070】
本実施形態では、ルートデータベースに登録されているルートについては、ルートを構成するボクセルをBVHによって管理する。換言すると、制御部56では、ルートを構成するボクセルをBVHによって探索できる。本実施形態では、ルート情報作成部865がBVHを作成する。
【0071】
-データ出力部866-
データ出力部866は、ボクセル生成部862が配置したボクセルの情報、属性リスト、マテリアルリストおよびルートデータベース(BVHも含む)を、他のプログラムで利用できる形態のデータ(以下、配布データと呼ぶ)として所定の記録媒体に出力する。配布データの出力先である記録媒体は、例えば、データ生成装置10が繋がるサーバ(図示を省略)の記憶装置である。
【0072】
〈データ生成装置10の動作例〉
ゲームプログラムの開発を例にしてデータ生成装置10の動作を説明する。このゲームプログラムの開発では、仮想空間内のオブジェクト(建物や洞窟など)に対して、メッシュがデータとして準備されている。このメッシュは、オブジェクトを描画するための描画メッシュである。
【0073】
データ生成装置10では、メッシュ生成部861が、ユーザ(ここではゲームプログラムの開発者)の操作に応じて、描画メッシュのデータを読み込む。メッシュ生成部861は、描画メッシュのデータを利用して、ボクセル用メッシュデータを生成する。ボクセル生成部862は、ボクセル用メッシュデータで示されたオブジェクトに対してボクセルを対応付ける。
【0074】
次に、データ生成装置10では、空間分割部863が、仮想空間に配置されたボクセルをグループ分けして、仮想空間を所定の空間(部分空間)に分割する(図2を参照)。
【0075】
埋込情報作成部864は、属性リストとマテリアルリストを作成する。更に、埋込情報作成部864は、第1情報と第2情報をボクセルに埋め込む。埋込情報作成部864は、第3情報をボクセルに埋め込む場合もある。
【0076】
ルート情報作成部865は、途中で分岐しない部分空間の繋がりを一つのルートとして仮想空間内から抽出する。ルート情報作成部865は、抽出したルートに基づいて、ルートデータベースを構築する。
【0077】
以上の動作によって配布データが作成される。データ出力部866は、配布データを所定の記録媒体に出力する。
【0078】
《ゲーム装置5》
〈ハードウェアの構成〉
ゲーム装置5は、ユーザの操作に基づいて所定のゲームを実行する。図5は、ゲーム装置5の構成を示すブロック図である。ゲーム装置5には、ディスプレイ61、スピーカ62およびコントローラ63が外部接続または内蔵される。
【0079】
ゲーム装置5には、例えば、パーソナルコンピュータ、プレイステーション(登録商標)、XBox(登録商標)、PlayStation Vita(登録商標)、Nintendo Switch(登録商標)などの、市販の装置を利用できる。
【0080】
ゲーム装置5では、例えば、インストールされたゲームプログラムおよびゲームデータに基づいてゲームが進行する。なお、ゲーム装置5同士も、通信ネットワーク(図示を省略)または近距離無線通信装置(図示せず)を用いて、互いにデータ通信を行うことができる。
【0081】
ゲーム装置5は、ネットワークインターフェース51、グラフィック処理部52、オーディオ処理部53、操作部54、記憶部55および制御部56を有する。ネットワークインターフェース51、グラフィック処理部52、オーディオ処理部53、操作部54および記憶部55は、バス59を介して制御部56と電気的に接続されている。
【0082】
ネットワークインターフェース51は、例えばゲーム装置5や外部のサーバ装置(図示を省略)との間で各種データを送受信するために、前記通信ネットワークに通信可能に接続される。
【0083】
グラフィック処理部52は、制御部56から出力されるゲーム画像情報に従って、プレイヤキャラクタおよびゲーム空間に関する各種オブジェクトを含むゲーム画像を、動画形式で描画する。グラフィック処理部52はディスプレイ61(例えば液晶ディスプレイ)と接続されている。動画形式に描画されたゲーム画像は、ゲーム画面としてディスプレイ61上に表示される。
【0084】
オーディオ処理部53は、スピーカ62と接続されている。オーディオ処理部53は、制御部56の指示に従ってデジタルのゲーム音声を再生する。具体的には、オーディオ処理部53は、制御部56(正確には後述の再生部564)が出力した音声データをアナログ信号に変換し、スピーカ62に出力する。
【0085】
オーディオ処理部53は、3次元的な音の再生を行うために、多チャンネルの音声出力ができるように構成されている。それに合わせて、ゲーム装置5には、複数のスピーカ62が接続されている。これらのスピーカ62は、3次元的な音の再生ができるように、聴取者(例えばゲームのプレイヤ)の左右、前後、上方などに配置される。
【0086】
操作部54は、コントローラ63と接続されている。操作部54は、操作入力に関するデータをコントローラ63との間で送受信する。ゲームのプレイヤは、コントローラ63のボタン等の各種操作子を操作することで、ゲーム装置5に操作信号を入力する。
【0087】
記憶部55(第1記憶装置)は、HDD、SSD、RAM、ROMなどで構成される。記憶部55には、ゲームデータ、ゲームプログラムの一部を含む各種プログラムなどが格納されている。ゲームデータとしては、データ生成装置10によって作成された配布データを例示できる。
【0088】
制御部56は、ゲーム装置5の動作を制御する。制御部56は、CPU(マイクロコンピュータ)、および半導体メモリ56a(第2記憶装置の一例)を備えている。半導体メモリ56aには、CPUを動作させるためのプログラムやデータなどが格納されている。
【0089】
〈制御部56の機能的構成〉
制御部56は、ゲームプログラム(仮想空間生成プログラム)を実行することによって、キャラクタ制御部561、読取り法判定部563、読取り部562、再生部564として機能する。
【0090】
このゲームプログラムは、データ生成装置10によって作成された配布データを利用する。配布データは、記憶部55に格納される。配布データは、必要に応じて、記憶部55から半導体メモリ56aへロードされる。
【0091】
-キャラクタ制御部561-
キャラクタ制御部561は、ユーザの操作に応じて、仮想空間内でプレイヤキャラクタPCを動作させる。キャラクタ制御部561は、ノンプレイヤキャラクタや所定のオブジェクト(例えば乗り物など)も仮想空間内で動作させる。キャラクタ制御部561は、例えばAI(artificial intelligence)によってノンプレイヤキャラクタや所定のオブジェクトの動作を制御する。以下では、キャラクタ制御部561によって仮想空間内を移動させられるものを総称して移動キャラクタと呼ぶ。
【0092】
-読取り部562-
読取り部562は、属性リスト、マテリアルリスト、ルートデータベース、およびBVHを記憶部55から読み取る。読取り部562は、読み取ったこれらの情報を半導体メモリ56aに格納する。
【0093】
読取り部562は、必要に応じて、ボクセルデータを記憶部55から読取り、半導体メモリ56aに格納する。読取り部562は、半導体メモリ56aにボクセルデータをロードする方法として、「ルート基準法」と「距離基準法」をサポートしている(何れも後述)。読取り部562は、ボクセルデータの読取りを行なう場合、読取り法判定部563にロード方法の決定を依頼する。
【0094】
ここで、「ルート基準法」は、ルート情報(ルート情報作成部865が作成した情報)に基づいて、半導体メモリ56aにボクセルデータをロードする方法である。図6は、ルート基準法の概念を説明する図である。
【0095】
「ルート基準法」では、読取り部562は、ルートデータベースを探索し、現在、移動キャラクタが存在するルート(以下、現在ルートという)を取得する。図6の例では、プレイヤキャラクタPCが部分空間R3に存在する。現在ルートは、部分空間R1,R2,R3,R4,R5,R6,R7によって構成されるルートである。
【0096】
ルートデータベースからは、現在ルートを構成する各部分空間について、重心とその部分空間の開口との距離を取得できる。この距離の値を用いることによって、現在ルート内の部分空間であって、所定値(第1閾値とする)以下の移動によって移動キャラクタが到達できる部分空間を特定できる。第1閾値は、開発者が任意に定めてよい。
【0097】
例えば、第1閾値は、移動キャラクタの種別に応じて変化させてもよい。具体的には、所定の移動キャラクタに関する第1閾値を、それよりも移動速度が遅い移動キャラクタに関する第1閾値よりも大きくすることが考えられる。
【0098】
プログラムを実行するハードウェアによって一度にロード可能なデータ量が異なるので、第1閾値はハードウェアの特性に応じて変化させてもよい。例えば、高スペックのパーソナルコンピュータ等では第1閾値を大きくして大量のデータをロードし、それよりも低スペックの端末では第1閾値を小さくして少量のデータをロードすることが考えられる。
【0099】
読取り部562は、「ルート基準法」では、現在ルート内であって、第1閾値以下の移動によって移動キャラクタが到達できる部分空間に配置されているボクセルデータをルートデータベースから特定する。読取り部562は、特定したルートに対応したボクセルデータを記憶部55から読み取る。
【0100】
図6の例では、部分空間R1から部分空間R3に至るルート上の部分空間と、部分空間R3から部分空間R5に至るルート上の部分空間については、プレイヤキャラクタPCは、第1閾値以下の移動で到達できるものとする。この場合、読取り部562は、部分空間R1,R2,R3,R4,R5に関わるボクセルデータを記憶部55から読み出す。読取り部562は、読み出したボクセルデータを半導体メモリ56aにロードする。
【0101】
読取り部562は、半導体メモリ56aにロードしたボクセルデータのアンロードを必要に応じて行なう。例えば読取り部562は、アンロードの要否を移動キャラクタの移動をトリガとして判断する。
【0102】
図7は、ルート基準法に関するボクセルデータのアンロードの概念を説明する図である。例えば、ルート基準法によってボクセルデータをロードした場合において、移動キャラクタが移動したとする。図7の例では、プレイヤキャラクタPCは、部分空間R3から部分空間R4に移動している。
【0103】
読取り部562は、移動キャラクタの移動の結果、移動後の移動キャラクタからの距離が第2閾値よりも大きくなったボクセル(アンロード対象のボクセル)を探索する。本実施形態では、第2閾値は、第1閾値と同じ値である。勿論、第2閾値と第1閾値とは、必ずしも同じ値でなくてもよい。第2閾値は、開発者が任意に定めてよい。
【0104】
アンロード対象のボクセルが見つかった場合には、読取り部562は、探索で見つかったボクセルのデータを半導体メモリ56aからアンロードする。図7の例では、部分空間R1は、プレイヤキャラクタPCからの距離が第2閾値よりも大きくなっているものとする。この場合、読取り部562は、部分空間R1に関するボクセルデータを半導体メモリ56aからアンロードする。
【0105】
また、読取り部562は、移動キャラクタが移動した結果、移動後における移動キャラクタの位置から第1閾値以下の移動によって移動キャラクタが到達できる範囲に新たに含まれることとなった経路(部分空間)について、ボクセルデータを記憶部55から読み取る。更に読取り部562は、読み出したボクセルデータを半導体メモリ56aにロードする。
【0106】
図7の例では、プレイヤキャラクタPCの移動の結果、部分空間R4から部分空間R6までの距離が第1閾値以下となったとする。この場合、読取り部562は、部分空間R6に関するボクセルデータを記憶部55から読み出して、半導体メモリ56aにロードする。
【0107】
「距離基準法」は、移動キャラクタの周囲の所定範囲に存在するボクセルのデータをロードする方法である。図8は、距離基準法の概念を説明する図である。図8は、仮想空間VSの一部分である。図8において、太い直線は、空間分割部863によって分割された部分空間である。図8において、並んだ正方形はボクセルVxを表している。
【0108】
読取り部562は、移動キャラクタを含む、所定大きさの立方体で規定される領域(以下、読取り領域)に含まれるボクセルデータをロードする。この例では、読取り領域は、一辺が(2×第3閾値)の立方体である。第3閾値は、開発者が任意に定めてよい。
【0109】
仮想空間における移動キャラクタの位置(座標)を特定できると、読取り領域に含まれるボクセルを特定できる。読取り部562は、特定したボクセルのデータを記憶部55から読み取る。
【0110】
図8の例では、プレイヤキャラクタPCは、部分空間S6に存在する。読取り部562は、部分空間S6において、読取り領域を特定する。読取り部562は、特定した読取り領域に含まれるボクセルデータを記憶部55から読み出して、半導体メモリ56aに格納する。
【0111】
読取り部562は、距離基準法によって半導体メモリ56aにロードしたボクセルデータのアンロードも必要に応じて行なう。距離基準法によってボクセルデータをロードした場合において、移動キャラクタが移動したとする。読取り部562は、移動キャラクタの移動の結果、移動後の移動キャラクタからの距離が第4閾値よりも大きくなったボクセルを探索する。
【0112】
探索で該当するボクセルが見つかった場合には、読取り部562は、探索で見つかったボクセルのデータを半導体メモリ56aからアンロードする。なお、本実施形態では、第4閾値は、第3閾値と同じ値である。勿論、第4閾値と第3閾値とは、必ずしも同じ値でなくてもよい。
【0113】
なお、移動キャラクタが移動すると、読取り領域も変化する。そこで、読取り部562は、新たに読取り領域に含まれることになったボクセルデータを記憶部55から読み出して、半導体メモリ56aにロードする。
【0114】
-読取り法判定部563-
読取り法判定部563は、何れのロード方法によってボクセルデータをロードするのかを決定する。本実施形態では、読取り法判定部563は、移動キャラクタの現在位置(仮想空間における座標)に基づいて、ロード方法を決定する。
【0115】
まず、読取り法判定部563は、移動キャラクタが、どの部分空間に存在するか確認する。読取り法判定部563は、仮想空間において、移動キャラクタの現在位置の周囲に第3閾値以上の広さの移動可能領域が広がる場合には、ロード方法を「距離基準法」に決定する。
【0116】
一方、移動可能領域の広さが第3閾値よりも小さい場合には、読取り部562は、ロード方法を「ルート基準法」に決定する。なお、本実施形態では、「第3閾値以上の広さ」とは、一辺が(2×第3閾値)である立方体よりも広い領域である。勿論、「第3閾値」は、例示であり、これと異なる値を用いてもよい。
【0117】
-再生部564-
再生部564は、音声データを生成する。再生部564は、生成した音声データをオーディオ処理部53に出力する。
【0118】
再生部564は、音声データの生成に際して、音像定位を行う。再生部564は、音像定位を行うために、音声が聴取される仮想の受音点(以下、仮想マイクL)を仮想空間に設定する。この例では仮想マイクLは、プレイヤキャラクタの近傍に設定されている。仮想マイクLは、プレイヤキャラクタの移動にともなって移動する。
【0119】
このゲームでは、仮想空間内に配置された音源(仮想の音源)から音声が発せられたように、音響的な演出が行われる。再生部564は、仮想の音源(オブジェクトなど)から発せられた音声を、あたかも仮想マイクLで集音したかのような音響表現で、スピーカ62に出力する。すなわち、仮想マイクLは、仮想の聴取者であり、オーディオ処理部53による音像定位の基準点である。
【0120】
再生部564は、音量調整、リバーブ(残響音)などの音響効果を音声データに反映している。本実施形態では、再生部564は、ボクセルに埋め込まれている第1情報および第2情報の少なくとも一方を用いて、どのような音響効果を付すかを決定している。
【0121】
音声データに反映する音響効果を決定する際に、再生部564は、仮想音源の位置に相当するボクセルを、半導体メモリ56aにロードされているボクセルの中から探索する。再生部564は、探索で見つかったボクセルデータから、第1情報および第2情報を抽出する。
【0122】
再生部564は、仮想マイクLの位置に相当するボクセルも探索する。再生部564は、仮想マイクLの位置に相当するボクセルのデータからも、第1情報および第2情報を抽出する。
【0123】
なお、再生部564は、ルート基準法によってロードされたボクセルデータからボクセルを探索する場合には、BVHを探索する。BVHを利用することで、再生部564は、高速なボクセル探索が可能になる。
【0124】
再生部564は、探索で見つかったボクセルに対応する属性リストとマテリアルリストを取得する。これらのリストは、読取り部562によって半導体メモリ56aにロードされている。
【0125】
再生部564は、第1情報を用いて、属性リストから空間の種類の情報を取得する。再生部564は、第2情報を用いて、マテリアルリストから材料の情報を取得する。
【0126】
再生部564は、例えば、空間の種類からは、残響の程度を決定する。再生部564は、例えば、材料からは、音色を決定する。例えば、再生部564は、足音の音声データを作成する場合、第2情報で特定される材料(木、土、砂利など)に応じて、足音の種類を変える。
【0127】
〈動作例〉
ゲームが開始されると、キャラクタ制御部561は、ユーザ(ここではゲームのプレイヤ)のコントローラ63の操作に応じて、プレイヤキャラクタPCを仮想空間内で動作させる。また、キャラクタ制御部561は、必要に応じてノンプレイヤキャラクタ等のオブジェクトも仮想空間内で動作させる。
【0128】
読取り部562は、読取り法判定部563にロード方法の決定を依頼する。ロード方法が決定されたら、読取り部562は、その方法でボクセルデータを記憶部55から半導体メモリ56aにロードする。
【0129】
再生部564は、半導体メモリ56aにロードされたボクセルデータから、移動キャラクタ(例えばプレイヤキャラクタPC)の位置に対応するボクセルデータ、仮想音源の位置に対応するボクセルデータを特定する。
【0130】
再生部564は、特定したボクセルデータから、第1情報および第2情報を抽出する。再生部564は、抽出した第1情報および第2情報の少なくとも一方を用いて、音声データを生成する。再生部564は、生成した音声データをオーディオ処理部53に出力する。これにより、スピーカ62から音声が出力される。
【0131】
以上をまとめると、本件態様は、コンピュータを、仮想空間VSにおける所定領域を示す体積要素データ(ボクセルデータ)を記憶部55(第1記憶装置の一例)から読取り、読み取った体積要素データを半導体メモリ56a(第2記憶装置)に格納する読取り部562として機能させ、前記体積要素データには、前記所定領域の種類を特定するための第1情報と、前記所定領域を構成する要素の特性を特定するための第2情報とが含まれるゲームプログラム(仮想空間生成プログラム)である。
【0132】
《本実施形態の効果》
以上のように、本実施形態では、第1情報と第2情報がボクセルに埋め込まれる。換言すると、本実施形態ではボクセル単位で仮想空間における情報取得を取得できる。そのため、本実施形態によれば、仮想空間が大規模になっても、仮想空間における情報取得の効率化を図ることができる。
【0133】
[その他の実施形態]
仮想空間の用途は、ゲームには限定されない。仮想空間の管理者(仮想空間生成プログラムのユーザと言ってよい)は、例えば、仮想空間を介して種々のサービス(例えばいわゆるメタバースなど)などを提供できる。
【0134】
配布データは、ゲーム装置5の記憶部55に格納する代わりに、ゲーム装置5が接続されたサーバ(図示は省略)に格納してもよい。この場合は、読取り部562は、サーバから、ルート基準法、距離基準法によってボクセルデータを半導体メモリ56aにロードする。
【0135】
属性リストやマテリアルリストにおけるインデックスの語長は例示である。また、第1情報と第2情報は、必ずしも一つ(例えば1バイト)にまとめる必要はない。
【0136】
直線上のボクセルの探索のアルゴリズムには、Bresenhamを利用してもよい。こうすることで、例えば、音源と仮想の聴取者(仮想マイクL)とを結ぶ直線上に位置するボクセルデータを容易に取得できる。
【0137】
ゲームプログラムは、いわゆるオンラインゲーム用のゲームプログラムとして実装してもよい。ゲームプログラムがオンラインゲーム用である場合には、ゲーム装置5で行っていた処理をそれらに代わってサーバ側で行ってもよいし、サーバ側とクライアント(ゲーム装置5)側とで分担してもよい。
【0138】
仮想空間は、三次元には限定されない。仮想空間は、二次元空間でもよい。また、仮想空間が三次元空間であっても、処理の簡素化のために二次元で処理してもよい。例えば、高さがないものとして処理を行なうことが考えられる。この場合、第1情報、第2情報はセル(マス目)に埋込み、ボクセルの探索はマス目によって行うよい。
【0139】
「ルート基準法」では、複数のルートに跨がって、ボクセルをロードしてもよい。例えば、図4における部分空間R9,R10のように経路が分岐する場合は、分岐した各経路について、ボクセルをロードしてもよい。ただし、この場合においても、ロードするボクセルは、移動キャラクタが第1閾値以下の移動で到達できるものとする。
【0140】
これらの他の実施形態を採用した場合においても、本態様の作用効果は発揮される。また、本実施形態と他の実施形態、および他の実施形態同士を適宜組み合わせることも可能である。
【符号の説明】
【0141】
5 ゲーム装置(仮想空間生成装置)
55 記憶部(第1記憶装置)
56 制御部(コンピュータ)
56a 半導体メモリ(第2記憶装置)
85 記憶部
86 制御部
561 キャラクタ制御部
562 読取り部
564 再生部
PC プレイヤキャラクタ(キャラクタ)
VS 仮想空間
図1
図2
図3
図4
図5
図6
図7
図8