(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2026-02-17
(45)【発行日】2026-02-26
(54)【発明の名称】ゲームプログラム、情報処理システム、情報処理装置、および、ゲーム処理方法
(51)【国際特許分類】
A63F 13/52 20140101AFI20260218BHJP
A63F 13/57 20140101ALI20260218BHJP
A63F 13/69 20140101ALI20260218BHJP
G06T 19/00 20110101ALI20260218BHJP
【FI】
A63F13/52
A63F13/57
A63F13/69
G06T19/00 C
(21)【出願番号】P 2024196730
(22)【出願日】2024-11-11
【審査請求日】2025-05-20
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100158780
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【氏名又は名称】小沢 昌弘
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】栗原 竜矢
【審査官】西村 民男
(56)【参考文献】
【文献】特表2024-521128(JP,A)
【文献】特開2024-7703(JP,A)
【文献】特開2022-171068(JP,A)
【文献】特表2018-514885(JP,A)
【文献】特開2017-99744(JP,A)
【文献】特開2004-62666(JP,A)
【文献】Unityでボクセルデータをもとにメッシュを生成する方法(Naive Surface Nets),Qiita[online],2022年11月15日,URL https://qiita.com/GossiperLoturot/items/671ae90dfa0dc8ebacfa,[2025年12月04日検索]
(58)【調査した分野】(Int.Cl.,DB名)
A63F 9/24,13/00-98
G02B 27/00-30/60
G06T 1/00,11/00-40,
11/60-13/80,
15/00-17/00,05,
17/10-30,19/00-20
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
仮想空間内のボクセル空間に定義されたボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定され、さらに少なくとも一部のボクセルについて、ボクセル間を結ぶ線とメッシュとの交点に関する交点情報が設定されたボクセルデータに基づいて、
前記ボクセルデータに基づいたメッシュであって、当該メッシュの頂点座標が少なくとも前記密度と前記交点情報に基づいて決定されるボクセルメッシュを生成および更新させ、
操作入力に基づいて、前記仮想空間内においてプレイヤキャラクタを制御させ、操作入力に基づいた第1の指示に応じて、前記プレイヤキャラクタに第1のアクションを行わせ、
前記第1のアクションが行われた位置に基づいて設定される第1のボクセル更新範囲に該当する前記ボクセルデータのボクセルの前記密度を減少させると共に、前記第1のアクションが行われた位置に基づいて設定される第1の交点情報更新範囲に該当する前記ボクセルデータのボクセルに前記交点情報が設定されている場合、当該交点情報を削除させ、
前記ボクセルメッシュを含む前記仮想空間の描画を行わせる、ゲームプログラム。
【請求項2】
前記交点情報は、ボクセル毎に、
当該ボクセルと所定方向に隣接するボクセルとの
間を結ぶ線とメッシュとの交点について、当該交点の座標を示すデータと、法線方向を示すデータを含み、
前記コンピュータに、
前記密度が第1の範囲の値となるボクセルと前記密度が第2の範囲の値となるボクセルとの間に前記ボクセルメッシュの頂点が設定され、
前記交点情報が設定されたボクセルに関して、当該交点情報に基づいて、前記ボクセルメッシュの面が、前記交点の座標において前記法線方向を向く配置となる、または当該配置からの誤差が最小となる位置に前記ボクセルメッシュの頂点の座標が決定され、
前記交点情報が設定されていないボクセルに関して、前記密度に基づいて設定される交点に基づいて、
前記ボクセルメッシュの頂点の座標が決定される手法に基づいて、前記ボクセルメッシュを生成及び更新させる、請求項1記載のゲームプログラム。
【請求項3】
前記コンピュータに、
複数の前記交点情報のそれぞれに基づいた、前記交点の座標において前記法線方向を向く複数の面からの距離が最小となる位置に前記ボクセルメッシュの頂点の座標が決定される手法に基づいて、前記ボクセルメッシュを生成及び更新させる、請求項2記載のゲームプログラム。
【請求項4】
前記コンピュータにさらに、
操作入力に基づいた第2の指示に応じて、前記プレイヤキャラクタに第2のアクションを行わせ、
前記第2のアクションに応じて設定される第2のボクセル更新範囲に該当する前記ボクセルデータのボクセルについて、前記交点情報を削除せずに前記密度を減少させる、請求項1から3のいずれか記載のゲームプログラム。
【請求項5】
前記ボクセルデータは、第1のボクセル空間に定義された第1のボクセルデータと第2のボクセル空間に定義された第2のボクセルデータとを少なくとも含み、
前記第1のアクションは、前記第1のボクセルデータに対するアクションであって、前記第1のボクセル更新範囲は、前記第1のボクセルデータに対する更新範囲であって、
前記第2のアクションは、前記第2のボクセルデータに対するアクションであって、前記第2のボクセル更新範囲は、前記第2のボクセルデータに対する更新範囲である、請求項4記載のゲームプログラム。
【請求項6】
前記ボクセルデータは、第3のボクセル空間に定義され、複数のボクセルそれぞれについて、前記第2のボクセルデータのそれぞれのボクセルとの対応関係が設定された第3のボクセルデータをさらに含み、
前記コンピュータにさらに、
前記第2のボクセルデータのボクセルの前記密度を減少させた場合に、当該密度が減少したボクセルである減少対象ボクセルとの前記対応関係が設定された前記第3のボクセルデータのボクセルである増加対象ボクセルの前記密度を増加させる、請求項5記載のゲームプログラム。
【請求項7】
前記ボクセルデータは、
第1のボクセル空間に定義された第1のボクセルデータと、
第2のボクセル空間に定義された第2のボクセルデータと、
第3のボクセル空間に定義され、複数のボクセルそれぞれについて、前記第2のボクセルデータのそれぞれのボクセルとの対応関係が設定された第3のボクセルデータをさらに含み、
前記コンピュータにさらに、
前記第1のアクションに基づいて、前記第2のボクセルデータのボクセルの前記密度を減少させた場合に、当該密度が減少したボクセルである減少対象ボクセルとの前記対応関係が設定された前記第3のボクセルデータのボクセルである増加対象ボクセルの前記密度を増加させると共に、前記減少対象ボクセルに前記交点情報が設定されていた場合に、前記減少対象ボクセルから削除された交点情報と同じ交点情報を前記増加対象ボクセルに設定させる、請求項1から3のいずれか記載のゲームプログラム。
【請求項8】
前記コンピュータにさらに、
操作入力に基づいた第3の指示に応じて、前記プレイヤキャラクタに第3のアクションを行わせ、
前記第3のアクションに応じて設定される第3のボクセル更新範囲に該当する前記ボクセルデータのボクセルについて、前記密度を更新させるとともに、さらに少なくとも一部のボクセルに対して前記交点情報を設定させる、請求項1から3のいずれか記載のゲームプログラム。
【請求項9】
前記ボクセルデータは、第4のボクセル空間に定義され、所定のボクセルに前記交点情報が設定された第4のボクセルデータを少なくとも含み、
前記コンピュータにさらに、
前記第1のアクションに基づいて前記第4のボクセルデータの前記密度が減少した場合に、
第4のボクセル更新範囲に該当する前記第4のボクセルデータのボクセルについて、前記密度を増加させるとともに、前記第1のアクションに基づいて削除された前記交点情報を復元させる、請求項1から3のいずれか記載のゲームプログラム。
【請求項10】
仮想空間内のボクセル空間に定義されたボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定され、さらに少なくとも一部のボクセルについて、ボクセル間を結ぶ線とメッシュとの交点に関する交点情報が設定されたボクセルデータに基づいて、
前記ボクセルデータに基づいたメッシュであって、当該メッシュの頂点座標が少なくとも前記密度と前記交点情報に基づいて決定されるボクセルメッシュを生成および更新し、
操作入力に基づいて、前記仮想空間内においてプレイヤキャラクタを制御させ、操作入力に基づいた第1の指示に応じて、前記プレイヤキャラクタに第1のアクションを行わせ、
前記第1のアクションが行われた位置に基づいて設定される第1のボクセル更新範囲に該当する前記ボクセルデータのボクセルの前記密度を減少させると共に、前記第1のアクションが行われた位置に基づいて設定される第1の交点情報更新範囲に該当する前記ボクセルデータのボクセルに前記交点情報が設定されている場合、当該交点情報を削除させ、
前記ボクセルメッシュを含む前記仮想空間の描画を行う、情報処理システム。
【請求項11】
前記交点情報は、ボクセル毎に、
当該ボクセルと所定方向に隣接するボクセルとの
間を結ぶ線とメッシュとの交点について、当該交点の座標を示すデータと、法線方向を示すデータを含み、
前記密度が第1の範囲の値となるボクセルと前記密度が第2の範囲の値となるボクセルとの間に前記ボクセルメッシュの頂点が設定され、
前記交点情報が設定されたボクセルに関して、当該交点情報に基づいて、前記ボクセルメッシュの面が、前記交点の座標において前記法線方向を向く配置となる、または当該配置からの誤差が最小となる位置に前記ボクセルメッシュの頂点の座標が決定され、
前記交点情報が設定されていないボクセルに関して、前記密度に基づいて設定される交点に基づいて、
前記ボクセルメッシュの頂点の座標が決定される手法に基づいて、前記ボクセルメッシュを生成及び更新する、請求項10記載の情報処理システム。
【請求項12】
複数の前記交点情報のそれぞれに基づいた、前記交点の座標において前記法線方向を向く複数の面からの距離が最小となる位置に前記ボクセルメッシュの頂点の座標が決定される手法に基づいて、前記ボクセルメッシュを生成及び更新する、請求項11記載の情報処理システム。
【請求項13】
操作入力に基づいた第2の指示に応じて、前記プレイヤキャラクタに第2のアクションを行わせ、
前記第2のアクションに応じて設定される第2のボクセル更新範囲に該当する前記ボクセルデータのボクセルについて、前記交点情報を削除せずに前記密度を減少させる、請求項10から12のいずれか記載の情報処理システム。
【請求項14】
前記ボクセルデータは、第1のボクセル空間に定義された第1のボクセルデータと第2のボクセル空間に定義された第2のボクセルデータとを少なくとも含み、
前記第1のアクションは、前記第1のボクセルデータに対するアクションであって、前記第1のボクセル更新範囲は、前記第1のボクセルデータに対する更新範囲であって、
前記第2のアクションは、前記第2のボクセルデータに対するアクションであって、前記第2のボクセル更新範囲は、前記第2のボクセルデータに対する更新範囲である、請求項13記載の情報処理システム。
【請求項15】
前記ボクセルデータは、第3のボクセル空間に定義され、複数のボクセルそれぞれについて、前記第2のボクセルデータのそれぞれのボクセルとの対応関係が設定された第3のボクセルデータをさらに含み、
前記第2のボクセルデータのボクセルの前記密度を減少させた場合に、当該密度が減少したボクセルである減少対象ボクセルとの前記対応関係が設定された前記第3のボクセルデータのボクセルである増加対象ボクセルの前記密度を増加させる、請求項14記載の情報処理システム。
【請求項16】
前記ボクセルデータは、
第1のボクセル空間に定義された第1のボクセルデータと、
第2のボクセル空間に定義された第2のボクセルデータと、
第3のボクセル空間に定義され、複数のボクセルそれぞれについて、前記第2のボクセルデータのそれぞれのボクセルとの対応関係が設定された第3のボクセルデータをさらに含み、
前記第1のアクションに基づいて、前記第2のボクセルデータのボクセルの前記密度を減少させた場合に、当該密度が減少したボクセルである減少対象ボクセルとの前記対応関係が設定された前記第3のボクセルデータのボクセルである増加対象ボクセルの前記密度を増加させると共に、前記減少対象ボクセルに前記交点情報が設定されていた場合に、前記減少対象ボクセルから削除された交点情報と同じ交点情報を前記増加対象ボクセルに設定する、請求項10から12のいずれか記載の情報処理システム。
【請求項17】
操作入力に基づいた第3の指示に応じて、前記プレイヤキャラクタに第3のアクションを行わせ、
前記第3のアクションに応じて設定される第3のボクセル更新範囲に該当する前記ボクセルデータのボクセルについて、前記密度を更新するとともに、さらに少なくとも一部のボクセルに対して前記交点情報を設定する、請求項10から12のいずれか記載の情報処理システム。
【請求項18】
前記ボクセルデータは、第4のボクセル空間に定義され、所定のボクセルに前記交点情報が設定された第4のボクセルデータを少なくとも含み、
前記第1のアクションに基づいて前記第4のボクセルデータの前記密度が減少した場合に、
第4のボクセル更新範囲に該当する前記第4のボクセルデータのボクセルについて、前記密度を増加させるとともに、前記第1のアクションに基づいて削除された前記交点情報を復元する、請求項10から12のいずれか記載の情報処理システム。
【請求項19】
プロセッサを備える情報処理装置であって、
前記プロセッサは、
仮想空間内のボクセル空間に定義されたボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定され、さらに少なくとも一部のボクセルについて、ボクセルを結ぶ線とメッシュとの交点に関する交点情報が設定されたボクセルデータに基づいて、
前記ボクセルデータに基づいたメッシュであって、当該メッシュの頂点座標が少なくとも前記密度と前記交点情報に基づいて決定されるボクセルメッシュを生成および更新し、
操作入力に基づいて、前記仮想空間内においてプレイヤキャラクタを制御させ、操作入力に基づいた第1の指示に応じて、前記プレイヤキャラクタに第1のアクションを行わせ、
前記第1のアクションが行われた位置に基づいて設定される第1のボクセル更新範囲に該当する前記ボクセルデータのボクセルの前記密度を減少させると共に、前記第1のアクションが行われた位置に基づいて設定される第1の交点情報更新範囲に該当する前記ボクセルデータのボクセルに前記交点情報が設定されている場合、当該交点情報を削除させ、
前記ボクセルメッシュを含む前記仮想空間の描画を行う、情報処理装置。
【請求項20】
前記交点情報は、ボクセル毎に、
当該ボクセルと所定方向に隣接するボクセルとの
間を結ぶ線とメッシュとの交点について、当該交点の座標を示すデータと、法線方向を示すデータを含み、
前記プロセッサは、
前記密度が第1の範囲の値となるボクセルと前記密度が第2の範囲の値となるボクセルとの間に前記ボクセルメッシュの頂点が設定され、
前記交点情報が設定されたボクセルに関して、当該交点情報に基づいて、前記ボクセルメッシュの面が、前記交点の座標において前記法線方向を向く配置となる、または当該配置からの誤差が最小となる位置に前記ボクセルメッシュの頂点の座標が決定され、
前記交点情報が設定されていないボクセルに関して、前記密度に基づいて設定される交点に基づいて、
前記ボクセルメッシュの頂点の座標が決定される手法に基づいて、前記ボクセルメッシュを生成及び更新する、請求項19記載の情報処理装置。
【請求項21】
前記プロセッサは、
複数の前記交点情報のそれぞれに基づいた、前記交点の座標において前記法線方向を向く複数の面からの距離が最小となる位置に前記ボクセルメッシュの頂点の座標が決定される手法に基づいて、前記ボクセルメッシュを生成及び更新する、請求項20記載の情報処理装置。
【請求項22】
情報処理システムに、
仮想空間内のボクセル空間に定義されたボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定され、さらに少なくとも一部のボクセルについて、ボクセルを結ぶ線とメッシュとの交点に関する交点情報が設定されたボクセルデータに基づいて、
前記ボクセルデータに基づいたメッシュであって、当該メッシュの頂点座標が少なくとも前記密度と前記交点情報に基づいて決定されるボクセルメッシュを生成および更新させ、
操作入力に基づいて、前記仮想空間内においてプレイヤキャラクタを制御させ、操作入力に基づいた第1の指示に応じて、前記プレイヤキャラクタに第1のアクションを行わせ、
前記第1のアクションが行われた位置に基づいて設定される第1のボクセル更新範囲に該当する前記ボクセルデータのボクセルの前記密度を減少させると共に、前記第1のアクションが行われた位置に基づいて設定される第1の交点情報更新範囲に該当する前記ボクセルデータのボクセルに前記交点情報が設定されている場合、当該交点情報を削除させ、
前記ボクセルメッシュを含む前記仮想空間の描画を行わせる、ゲーム処理方法。
【請求項23】
前記交点情報は、ボクセル毎に、
当該ボクセルと所定方向に隣接するボクセルとの
間を結ぶ線とメッシュとの交点について、当該交点の座標を示すデータと、法線方向を示すデータを含み、
前記情報処理システムに、
前記密度が第1の範囲の値となるボクセルと前記密度が第2の範囲の値となるボクセルとの間に前記ボクセルメッシュの頂点が設定され、
前記交点情報が設定されたボクセルに関して、当該交点情報に基づいて、前記ボクセルメッシュの面が、前記交点の座標において前記法線方向を向く配置となる、または当該配置からの誤差が最小となる位置に前記ボクセルメッシュの頂点の座標が決定され、
前記交点情報が設定されていないボクセルに関して、前記密度に基づいて設定される交点に基づいて、
前記ボクセルメッシュの頂点の座標が決定される手法に基づいて、前記ボクセルメッシュを生成及び更新させる、請求項22記載のゲーム処理方法。
【請求項24】
前記情報処理システムに、
複数の前記交点情報のそれぞれに基づいた、前記交点の座標において前記法線方向を向く複数の面からの距離が最小となる位置に前記ボクセルメッシュの頂点の座標が決定される手法に基づいて、前記ボクセルメッシュを生成及び更新させる、請求項23記載のゲーム処理方法。
【請求項25】
前記情報処理システムにさらに、
操作入力に基づいた第2の指示に応じて、前記プレイヤキャラクタに第2のアクションを行わせ、
前記第2のアクションに応じて設定される第2のボクセル更新範囲に該当する前記ボクセルデータのボクセルについて、前記交点情報を削除せずに前記密度を減少させる、請求項22から24のいずれか記載のゲーム処理方法。
【請求項26】
前記ボクセルデータは、第1のボクセル空間に定義された第1のボクセルデータと第2のボクセル空間に定義された第2のボクセルデータとを少なくとも含み、
前記第1のアクションは、前記第1のボクセルデータに対するアクションであって、前記第1のボクセル更新範囲は、前記第1のボクセルデータに対する更新範囲であって、
前記第2のアクションは、前記第2のボクセルデータに対するアクションであって、前記第2のボクセル更新範囲は、前記第2のボクセルデータに対する更新範囲である、請求項25記載のゲーム処理方法。
【請求項27】
前記ボクセルデータは、第3のボクセル空間に定義され、複数のボクセルそれぞれについて、前記第2のボクセルデータのそれぞれのボクセルとの対応関係が設定された第3のボクセルデータをさらに含み、
前記情報処理システムにさらに、
前記第2のボクセルデータのボクセルの前記密度を減少させた場合に、当該密度が減少したボクセルである減少対象ボクセルとの前記対応関係が設定された前記第3のボクセルデータのボクセルである増加対象ボクセルの前記密度を増加させる、請求項26記載のゲーム処理方法。
【請求項28】
前記ボクセルデータは、
第1のボクセル空間に定義された第1のボクセルデータと、
第2のボクセル空間に定義された第2のボクセルデータと、
第3のボクセル空間に定義され、複数のボクセルそれぞれについて、前記第2のボクセルデータのそれぞれのボクセルとの対応関係が設定された第3のボクセルデータをさらに含み、
前記情報処理システムにさらに、
前記第1のアクションに基づいて、前記第2のボクセルデータのボクセルの前記密度を減少させた場合に、当該密度が減少したボクセルである減少対象ボクセルとの前記対応関係が設定された前記第3のボクセルデータのボクセルである増加対象ボクセルの前記密度を増加させると共に、前記減少対象ボクセルに前記交点情報が設定されていた場合に、前記減少対象ボクセルから削除された交点情報と同じ交点情報を前記増加対象ボクセルに設定させる、請求項22から24のいずれか記載のゲーム処理方法。
【請求項29】
前記情報処理システムにさらに、
操作入力に基づいた第3の指示に応じて、前記プレイヤキャラクタに第3のアクションを行わせ、
前記第3のアクションに応じて設定される第3のボクセル更新範囲に該当する前記ボクセルデータのボクセルについて、前記密度を更新させるとともに、さらに少なくとも一部のボクセルに対して前記交点情報を設定させる、請求項22から24のいずれか記載のゲーム処理方法。
【請求項30】
前記ボクセルデータは、第4のボクセル空間に定義され、所定のボクセルに前記交点情報が設定された第4のボクセルデータを少なくとも含み、
前記情報処理システムにさらに、
前記第1のアクションに基づいて前記第4のボクセルデータの前記密度が減少した場合に、
第4のボクセル更新範囲に該当する前記第4のボクセルデータのボクセルについて、前記密度を増加させるとともに、前記第1のアクションに基づいて削除された前記交点情報を復元させる、請求項22から24のいずれか記載のゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想空間におけるオブジェクトを生成するゲームプログラム、情報処理システム、情報処理装置、および、ゲーム処理方法に関する。
【背景技術】
【0002】
従来、オブジェクトのメッシュを生成する際に、或る位置における法線方向の情報を規定することで、ポリゴンの面が当該位置において当該法線方向に垂直となるように各ポリゴンの頂点を決定することが行われている(例えば、非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0003】
【文献】“DualContouring of Hermite Data”、ACM Transactions on Graphics, 21(3) 339-346ページ、T. Ju, F.Losasso, S. Schaefer, J. Warren、2002年
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記の情報を用いてオブジェクトのメッシュを生成する処理における処理負荷の増加を抑えることが望ましい。
【課題を解決するための手段】
【0005】
上記の課題を解決すべく、本発明は、以下の(1)~(9)の構成を採用した。
【0006】
(1)
本発明の一例は、コンピュータに、次の処理を実行させるゲームプログラムである。
・仮想空間内のボクセル空間に定義されたボクセルデータであって、複数のボクセルそれぞれについて、当該ボクセルが定義する空間が仮想的に中身に占められている度合いを示す密度が少なくとも設定され、さらに少なくとも一部のボクセルについて、ボクセル間を結ぶ線とメッシュとの交点に関する交点情報が設定されたボクセルデータに基づいて、ボクセルデータに基づいたメッシュであって、当該メッシュの頂点座標が少なくとも密度と交点情報に基づいて決定されるボクセルメッシュを生成および更新する処理
・操作入力に基づいて、仮想空間内においてプレイヤキャラクタを制御させ、操作入力に基づいた第1の指示に応じて、プレイヤキャラクタに第1のアクションを行わせる処理
・第1のアクションが行われた位置に基づいて設定される第1のボクセル更新範囲に該当するボクセルデータのボクセルの密度を減少させると共に、第1のアクションが行われた位置に基づいて設定される第1の交点情報更新範囲に該当するボクセルデータのボクセルに交点情報が設定されている場合、当該交点情報を削除する処理
・ボクセルメッシュを含む仮想空間の描画を行う処理
【0007】
上記(1)の構成によれば、交点情報を用いてボクセルメッシュを生成する処理における処理負荷の増加を抑えることができる。
【0008】
(2)
上記(1)の構成において、交点情報は、ボクセル毎に、所定方向に隣接するボクセルとの境界とメッシュとの交点について、当該交点の座標を示すデータと、法線方向を示すデータを含んでもよい。ゲームプログラムは、コンピュータに、次の処理を実行させてもよい。
・密度が第1の範囲の値となるボクセルと密度が第2の範囲の値となるボクセルとの間にボクセルメッシュの頂点が設定され、交点情報が設定されたボクセルに関して、当該交点情報に基づいて、ボクセルメッシュの面が、交点の座標において法線方向を向く配置となる、または当該配置からの誤差が最小となる位置にボクセルメッシュの頂点の座標が決定され、交点情報が設定されていないボクセルに関して、密度に基づいて設定される交点に基づいて、ボクセルメッシュの頂点の座標が決定される手法に基づいて、ボクセルメッシュを生成及び更新する処理
【0009】
上記(2)の構成によれば、交点情報によってボクセルメッシュの形状をより詳細に規定することができる。
【0010】
(3)
上記(2)の構成において、ゲームプログラムは、コンピュータに、複数の交点情報のそれぞれに基づいた、交点の座標において法線方向を向く複数の面からの距離が最小となる位置にボクセルメッシュの頂点の座標が決定される手法に基づいて、ボクセルメッシュを生成及び更新させてもよい。
【0011】
上記(3)の構成によれば、交点情報によって規定される面上、または、面に近い位置にボクセルメッシュの頂点を決定することができる。
【0012】
(4)
上記(1)から(3)のいずれかの構成において、ゲームプログラムは、コンピュータにさらに、次の処理を実行させてもよい。
・操作入力に基づいた第2の指示に応じて、プレイヤキャラクタに第2のアクションを行わせる処理
・第2のアクションに応じて設定される第2のボクセル更新範囲に該当するボクセルデータのボクセルについて、交点情報を削除せずに密度を減少する処理
【0013】
上記(4)の構成によれば、減少された密度が元に戻される場合に、交点情報を用いてボクセルメッシュの形状を生成することができるので、ボクセルメッシュの形状をより正確に元の形状に戻すことができる。
【0014】
(5)
上記(4)の構成において、ボクセルデータは、第1のボクセル空間に定義された第1のボクセルデータと第2のボクセル空間に定義された第2のボクセルデータとを少なくとも含んでもよい。第1のアクションは、第1のボクセルデータに対するアクションであって、第1のボクセル更新範囲は、第1のボクセルデータに対する更新範囲であってもよい。第2のアクションは、第2のボクセルデータに対するアクションであって、第2のボクセル更新範囲は、第2のボクセルデータに対する更新範囲であってもよい。
【0015】
上記(5)の構成によれば、第1のアクションに応じたボクセルオブジェクトの変形に関しては、交点情報を用いてボクセルメッシュを生成する処理における処理負荷の増加を抑えることができるとともに、第2のアクションに応じたボクセルオブジェクトの変形に関しては、ボクセルメッシュの形状をより正確に元の形状に戻すことができる。
【0016】
(6)
上記(5)の構成において、ボクセルデータは、第3のボクセル空間に定義され、複数のボクセルそれぞれについて、第2のボクセルデータのそれぞれのボクセルとの対応関係が設定された第3のボクセルデータをさらに含んでもよい。ゲームプログラムは、コンピュータにさらに、第2のボクセルデータのボクセルの密度を減少させた場合に、当該密度が減少したボクセルである減少対象ボクセルとの対応関係が設定された第3のボクセルデータのボクセルである増加対象ボクセルの密度を増加させてもよい。
【0017】
上記(6)の構成によれば、一方のボクセルオブジェクトの体積の減少に応じて他方のボクセルオブジェクトの体積が増加したように見える表現を行うことができる。
【0018】
(7)
上記(1)から(3)のいずれかの構成において、ボクセルデータは、第1のボクセル空間に定義された第1のボクセルデータと、第2のボクセル空間に定義された第2のボクセルデータと、第3のボクセル空間に定義され、複数のボクセルそれぞれについて、第2のボクセルデータのそれぞれのボクセルとの対応関係が設定された第3のボクセルデータをさらに含んでもよい。ゲームプログラムは、コンピュータにさらに、第1のアクションに基づいて、第2のボクセルデータのボクセルの密度を減少させた場合に、当該密度が減少したボクセルである減少対象ボクセルとの対応関係が設定された第3のボクセルデータのボクセルである増加対象ボクセルの密度を増加させると共に、減少対象ボクセルに交点情報が設定されていた場合に、減少対象ボクセルから削除された交点情報と同じ交点情報を増加対象ボクセルに設定させてもよい。
【0019】
上記(7)の構成によれば、第2のボクセルデータに基づくメッシュの生成に関する処理負荷の増加を抑えることができる。また、第3のボクセルデータに基づくメッシュの生成に関して、第2のボクセルデータに関するボクセルオブジェクトと同じ形状をより正確に再現するように生成することができる。
【0020】
(8)
上記(1)から(7)のいずれかの構成において、ゲームプログラムは、コンピュータにさらに、次の処理を実行させてもよい。
・操作入力に基づいた第3の指示に応じて、プレイヤキャラクタに第3のアクションを行わせる処理
・第3のアクションに応じて設定される第3のボクセル更新範囲に該当するボクセルデータのボクセルについて、密度を更新するとともに、さらに少なくとも一部のボクセルに対して交点情報を設定する処理
【0021】
上記(8)の構成によれば、変形前のボクセルオブジェクトに関して交点情報が設定されていない場合であっても、変形後のボクセルオブジェクトのメッシュの形状を意図したものにしやすくすることができる。
【0022】
(9)
上記(1)から(8)のいずれかの構成において、ボクセルデータは、第4のボクセル空間に定義され、所定のボクセルに交点情報が設定された第4のボクセルデータを少なくとも含んでもよい。ゲームプログラムは、コンピュータにさらに、第1のアクションに基づいて第4のボクセルデータの密度が減少した場合に、第4のボクセル更新範囲に該当する第4のボクセルデータのボクセルについて、密度を増加させるとともに、第1のアクションに基づいて削除された交点情報を復元させてもよい。
【0023】
上記(9)の構成によれば、ボクセルオブジェクトの形状を、より正確な変形前の形状となるように復元することができる。
【0024】
なお、本発明の別の一例は、上記(1)~(9)における処理を実行する情報処理装置または情報処理システムであってもよい。また、本発明の別の一例は、上記(1)~(9)における処理を情報処理システムに実行させるゲーム処理方法であってもよい。
【発明の効果】
【0025】
上記ゲームプログラム、情報処理システム、情報処理装置、または、ゲーム処理方法によれば、オブジェクトのメッシュを生成する処理における処理負荷の増加を抑えることができる。
【図面の簡単な説明】
【0026】
【
図1】本体装置に左コントローラおよび右コントローラを装着した状態の一例を示す図
【
図2】本体装置から左コントローラおよび右コントローラをそれぞれ外した状態の一例を示す図
【
図7】本体装置と左コントローラおよび右コントローラとの内部構成の一例を示すブロック図
【
図8】ボクセルオブジェクトである地形オブジェクトの一例を示す図
【
図9】
図8に示す地形オブジェクトの一部が削除される前後の様子の一例を示す図
【
図10】
図8に示す地形オブジェクトの一部が削除される前後の様子の一例を示す図
【
図13】更新イベントが発生した場合におけるゲーム空間の一例を示す図
【
図16】交点情報が設定される場合における頂点の決定方法の一例を示す図
【
図17】
図16に示すものとは異なる交点情報が設定される場合における頂点の決定方法の一例を示す図
【
図21】各頂点に基づいて生成されるメッシュの一例を示す図
【
図22】地形オブジェクト上をプレイヤキャラクタが移動する様子を表すゲーム画像の一例を示す図
【
図23】プレイヤキャラクタが地形オブジェクトから破片オブジェクトを引き抜く様子を表すゲーム画像の一例を示す図
【
図24】プレイヤキャラクタが地形オブジェクトを破壊することで破片オブジェクトが生成される様子を表すゲーム画像の一例を示す図
【
図25】プレイヤキャラクタによる投げアクションが可能な状態におけるゲーム画像の一例を示す図
【
図26】
図25に示す地形オブジェクトに対して破片オブジェクトが接触したことによって地形オブジェクトに変更が加えられた後のゲーム画像の一例を示す図
【
図27】地形オブジェクトに交点情報が設定される場合におけるゲーム画像の一例を示す図
【
図28】
図27に示す状況において地形オブジェクト271に変形が加えられる前後におけるゲーム画像の例を示す図
【
図29】地形オブジェクトに設定される更新範囲と削除範囲の一例を示す図
【
図30】第1対応オブジェクトが配置されているゲーム空間を表すゲーム画像の一例を示す図
【
図31】
図30に示す状況からパンチアクションが行われた後の状況を表すゲーム画像の一例を示す図
【
図32】
図31に示す状況から、さらに各第1対応オブジェクトに対してパンチアクションが行われた状況を表すゲーム画像の一例を示す図
【
図33】
図32に示す状況において、第2対応オブジェクトに対してパンチアクションが行われた状況を表すゲーム画像の一例を示す図
【
図34】第1対応オブジェクトおよび第2対応オブジェクトの各ボクセルに設定される密度の値の一例を示す図
【
図35】対応オブジェクトに設定される交点情報の一例を示す図
【
図36】地形オブジェクトの一部が上方にせり上がるように変形する状況におけるゲーム画像の一例を示す図
【
図37】キャラクタオブジェクトが変形後に復元される様子の一例を示す図
【
図38】ゲームシステムにおける情報処理に用いられる各種データの一例を示す図
【
図39】ゲームシステムによって実行されるゲーム処理の流れの一例を示すフローチャート
【
図40】
図39に示すステップS4のボクセル更新処理の詳細な流れの一例を示すサブフローチャート
【
図41】
図40に示すステップS24の交点情報制御処理の詳細な流れの一例を示すサブフローチャート
【
図42】
図39に示すステップS5の対応オブジェクト更新処理の詳細な流れの一例を示すサブフローチャート
【
図43】
図39に示すステップS13の対応オブジェクト更新処理の詳細な流れの一例を示すサブフローチャート
【発明を実施するための形態】
【0027】
[1.ゲームシステムの構成]
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(
図2参照)。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0028】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0029】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図1および
図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0030】
図3は、本体装置2の一例を示す六面図である。
図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0031】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0032】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0033】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0034】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、
図6に示すスピーカ88)を備えている。
図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0035】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0036】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0037】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0038】
図4は、左コントローラ3の一例を示す六面図である。
図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、
図1および
図4に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0039】
左コントローラ3は、アナログスティック32を備える。
図4に示すように、アナログスティック32は、ハウジング31の主面に設けられる。アナログスティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック32を押下する入力が可能である。
【0040】
左コントローラ3は、各種操作ボタンを備える。左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33~36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および左方向ボタン36)を備える。さらに、左コントローラ3は、録画ボタン37および-(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上に第1Lボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面の、本体装置2に装着される際に装着される側の面に第2Lボタン43および第2Rボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0041】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0042】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0043】
右コントローラ4は、左コントローラ3と同様、方向入力部としてアナログスティック52を備える。本実施形態においては、アナログスティック52は、左コントローラ3のアナログスティック32と同じ構成である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53~56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。さらに、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上に第1Rボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、第2Lボタン65および第2Rボタン66を備える。
【0044】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0045】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図3に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0046】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0047】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0048】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0049】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0050】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi-Fi(登録商標)の規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0051】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0052】
プロセッサ81は、上述の左側端子17、右側端子21、および下側端子27に接続される。プロセッサ81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、プロセッサ81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、プロセッサ81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0053】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0054】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0055】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0056】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0057】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0058】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0059】
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。
図7に示すように、通信制御部101は、端子42を含む各構成要素に接続される。本実施形態においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
【0060】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0061】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、アナログスティック(
図7では「スティック」と記載する)32を備える。各ボタン103およびアナログスティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0062】
通信制御部101は、各入力部(具体的には、各ボタン103、および、アナログスティック32)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0063】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103およびアナログスティック32に対する操作を、操作データに基づいて判別することができる。
【0064】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0065】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0066】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、および、アナログスティック52を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0067】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0068】
[2.ゲームシステムにおける処理の概要]
次に、
図8~
図32を参照して、ゲームシステム1において実行される処理の概要について説明する。本実施形態においては、ゲームシステム1は、3次元の仮想空間であるゲーム空間に地形オブジェクトやキャラクタ(例えば、プレイヤによって操作されるプレイヤキャラクタ)が配置されたゲーム画像を生成し、表示装置に表示させる。なお、本実施形態において、ゲーム画像が表示される表示装置は、上述のディスプレイ12であってもよいし、据置型モニタであってもよい。
【0069】
[2-1.ボクセル]
本実施形態では、ゲーム空間におけるいくつかのオブジェクトについては、ボクセルデータによって形状が規定される。ここで、ボクセルとは、ゲーム空間に格子状に並べられた直方体状(より具体的には、立方体状)の領域であり、ボクセルデータとは各ボクセルに関する情報を示すデータである。以下では、ボクセルデータによって形状が規定されるオブジェクトを、「ボクセルオブジェクト」と呼ぶ。本実施形態においては、ゲームシステム1は、ゲーム空間内に設定される複数のボクセルについて、ボクセルオブジェクトをゲーム空間内において生成するためのデータとして、ボクセルデータを記憶する。
【0070】
図8は、ボクセルオブジェクトである地形オブジェクトの一例を示す図である。
図8に示すように、本実施形態においては、地面等の地形を表す地形オブジェクトは、ボクセルデータによって形状が規定される(つまり、ボクセルオブジェクトである)。
図8に示す各立方体は、地形オブジェクトを示す。なお、
図8においては、地形オブジェクトの辺となる部分を太線で示しているが、この太線は図面を見やすくする目的で付したものであり、実際には地形オブジェクトの辺が太く表示される必要はない。
【0071】
なお、
図8に示す地形オブジェクトは、例えば、「ボクセルに設定されるボクセルデータに含まれるパラメータが所定値より大きい場合は当該ボクセルの位置に立方体を配置し、所定値以下の場合は当該ボクセルの位置に何も配置しない」というルールで生成されたものである。
図8に示す地形オブジェクトは、ボクセルとボクセルオブジェクトとの関係をわかりやすく例示する目的で示されるものである。本実施形態においては、実際には、例えば後述する
図13に示す地形オブジェクトのように、複雑な形状となるようなルールで(ボクセルデータに基づいて)ボクセルオブジェクトが生成される。なお、ボクセルデータに基づいてボクセルオブジェクトの形状を決定するルールは任意である。他の実施形態においては、ゲームシステム1は、オブジェクトデータに基づいて、
図8に示すようなボクセルオブジェクトを生成してもよいし、
図13に示すようなボクセルオブジェクトを生成してもよい。
【0072】
ボクセルオブジェクトについては、各ボクセルのボクセルデータを変更することで、形状を変化させることができる。
図9および
図10は、
図8に示す地形オブジェクトの一部が削除される前後の様子の一例を示す図である。すなわち、
図9に示す地形オブジェクトのうちの斜線部分が破壊される場合、地形オブジェクトは
図10に示すような形状に変化する。このとき、ゲームシステム1は、上記斜線部分のボクセルについて、地形オブジェクトが存在しないことを示すように、後述のボクセルデータを書き換えることで、地形オブジェクトを容易に消去することができる。なお、ゲームシステム1は、地形オブジェクトを追加する場合も、地形オブジェクトを消去する場合と同様に、各ボクセルのボクセルデータを変更することで、地形オブジェクトの形状を容易に変化させることができる。
【0073】
このように、ゲームシステム1は、ボクセルデータを書き換えることによって、ボクセルオブジェクトの形状を自由に変化させることができる。例えば、ゲームにおいて地形オブジェクトが何らかの理由(例えば、プレイヤキャラクタが地形オブジェクトに打撃を加える等)で破壊される結果として当該地形オブジェクトの形状を変化させる場合、ゲームシステム1は、地形オブジェクトの外形形状を示すデータ(すなわち、後述するメッシュ)を直接変更するのではなく、地形オブジェクトの生成に用いられるボクセルデータを変更することで、地形オブジェクトの形状を自由に変化させることができる。
【0074】
なお、本実施形態においては、ゲーム空間の全体にボクセルが規定される(つまり、ボクセルが設定されるボクセル空間がゲーム空間全体に対応する)ものとする。ただし、ボクセル空間はゲーム空間の全体に設定される必要はなく、ゲーム空間の一部の領域に設定されてもよい。ボクセル空間がゲーム空間の一部の領域に設定される場合、当該ボクセル空間におけるボクセル関するボクセルデータによってボクセルオブジェクトの形状が規定され、ゲーム空間における当該ボクセル空間の位置によって当該ゲーム空間におけるボクセルオブジェクトの位置が規定される。また、ゲーム空間には、ゲーム空間の全体に設定される主ボクセル空間と、ゲーム空間の一部の領域に設定される副ボクセル空間とが設定されてもよい。このとき、ゲームシステム1は、ボクセル空間毎にボクセルデータを記憶する。
【0075】
図11は、ボクセルデータの一例を示す図である。ボクセルデータは、ゲーム空間に定義される各ボクセルについて、密度データ、第1マテリアルID、第2マテリアルID、マテリアル混合比データ、および、状態データを含む。本実施形態におけるボクセルデータには、これらのデータが1つのボクセル毎に設定される。
【0076】
密度データは、当該ボクセルに基づいたボクセルオブジェクトの形状(具体的には、後述するメッシュで規定される形状)を規定するために用いられる指標である密度を示す。詳細は後述するが、ボクセルオブジェクトの表面(すなわち、後述するメッシュ)の位置および形状は、上記の密度に基づいて決定される。
【0077】
本実施形態においては、密度は、下限値(例えば、0)から上限値(例えば、255)までの範囲の整数値をとり得る。本実施形態においては、ゲームシステム1は、ボクセルに設定される密度の値が高いと、当該ボクセル内においてボクセルオブジェクト内の領域が占める体積の割合が大きくなりやすく、当該密度の値が低いと当該割合が小さくなりやすいように、密度に基づいてボクセルオブジェクトの表面形状を決定する。このように、密度は、当該ボクセル内においてボクセルオブジェクト内の領域が占める体積の割合に影響を与える指標である。密度は、当該ボクセルの空間が仮想的に中身(すなわち、ボクセルオブジェクトの仮想的な中身)に占められている度合いを示す指標であるとも言える。例えば、密度が0である場合には当該ボクセル内が空であり、密度が255の場合には当該ボクセル内の全てがボクセルオブジェクトの中身であり、密度が0と255の間の値の場合には値に応じた割合で当該ボクセル内をボクセルオブジェクトの中身が占めるものとすることができる。そして、上記密度に基づいて、メッシュの形状、すなわちボクセルオブジェクトの表面形状を決定することができる。メッシュは、ボクセルにおいて中身が存在する部分の表面であると言うこともできるし、ボクセルにおいて中身が存在する部分と存在しない部分の境界であると言うこともできる。なお、上記密度に基づいて生成されたボクセルオブジェクト内の領域が占める体積は、密度が示す割合と厳密に一致する体積になる必要はない。例えば、
図8のようなボクセルオブジェクトを生成する手法と、
図13のようなボクセルオブジェクトを生成する手法とでは、同じ密度に基づいていてもボクセルオブジェクトの体積が異なることもある。
【0078】
他の実施形態においては、密度は、ボクセル内の領域の全体をボクセルオブジェクト内の領域が占める体積が占める状態と、ボクセル内の領域にボクセルオブジェクト内の領域が占める体積が含まれない状態とのいずれかを示すものであってもよい。例えば、密度データは、0または1のみをとり得るデータであってもよい。また、他の実施形態においては、密度は、当該ボクセルの空間が仮想的に中身に占められている度合いが、密度の値が大きいほど小さくなることを示す指標であってもよい。
【0079】
第1マテリアルIDおよび第2マテリアルIDは、当該ボクセルのマテリアル(換言すれば、物質)を示す情報である。ここで、本実施形態においては、ボクセルには、例えば、砂、岩、または、土といったマテリアルが設定される。なお、ゲームシステム1においては、ボクセルに設定され得るマテリアルとして複数種類のマテリアルが用意されている(
図12に示すマテリアルデータを参照)。本実施形態においては、1つのボクセルには、用意された複数種類のマテリアルのうち2つまでのマテリアルが設定可能である。第1マテリアルIDは、当該ボクセルに設定される第1のマテリアルを示すIDであり、第2マテリアルIDは、当該ボクセルに設定される第2のマテリアルを示すIDである。詳細は後述するが、ボクセルオブジェクトのマテリアル(すなわち、ボクセルオブジェクトのポリゴンに設定されるマテリアル)は、ボクセルに設定されるマテリアルに基づいて決定される。
【0080】
上記のように、本実施形態においては、ボクセルデータは、マテリアルを示すIDを含むものとしたが、他の実施形態においては、ボクセルデータは、マテリアルの内容(すなわち、後述する名称や、性質や、描画設定の情報)を直接示すデータを含むデータ構造であってもよい。
【0081】
マテリアル混合比データは、当該ボクセルにおけるそれぞれのマテリアルの比率を示すデータの一例である。本実施形態においては、1つのボクセルに設定されるマテリアルIDが2つまでなので、上記第1マテリアルIDが示すマテリアルと上記第2マテリアルIDが示すマテリアルの一方の比率を示すマテリアル混合比データで他方の比率も表すことができる。本実施形態においては、マテリアル混合比は、0以上1以下の値によって第1のマテリアルおよび第2のマテリアルからなる全体に対する第2のマテリアルの割合を示す値とする。例えば、あるボクセルに設定されるマテリアル混合比が0.4である場合、当該ボクセルにおいて、第1のマテリアルと第2のマテリアルとが0.6:0.4の比で構成されることを表す。詳細は後述するが、ボクセルオブジェクトの見た目および性質はマテリアルに基づいて決定される。マテリアル混合比は、ボクセルオブジェクトの見た目および性質を決定するために用いられる。マテリアル混合比は、他の実施形態においては、第1のマテリアルの割合を示す値であってもよい。また、マテリアルのボクセル内の比率は、それぞれのマテリアル毎の割合を示すそれぞれの値によって表されてもよい。特に、他の実施形態において、マテリアルを2種類まででなくて3種類以上設定可能な場合には、それぞれのマテリアル毎の割合をそれぞれ示す複数の値としてマテリアルのボクセル内の比率を表すことになる。
【0082】
なお、本実施形態において、ボクセルには必ずしも2種類のマテリアルが設定される必要はなく、1種類のマテリアルが設定されてもよい。例えば、あるボクセルに設定されるマテリアルが1種類である場合、第1マテリアルIDが当該マテリアルを示し、マテリアル混合比は0に設定される。
【0083】
状態データは、当該ボクセルに設定される状態を示す。状態データの具体的な内容や種類数は任意である。本実施形態においては、状態データは、当該ボクセルに設定されるダメージの量を示すデータを含む。なお、他の実施形態においては、状態データには、例えば当該ボクセルが濡れた状態であるか否か(および、その程度)を示すデータが含まれていてもよい。
【0084】
上記のように、本実施形態においてはボクセルデータにはマテリアルIDが含まれるので、ゲームシステム1は、当該マテリアルIDが示すマテリアルの内容を規定するマテリアルデータを記憶する。
図12は、マテリアルデータの一例を示す図である。
図12に示すように、本実施形態におけるマテリアルデータにおいては、マテリアル毎に、マテリアルIDと、当該マテリアルに設定される名称、性質、および、描画設定の情報とが対応付けられる。
【0085】
マテリアルデータに含まれる名称は、当該マテリアルに設定される名称(例えば、土、砂、草等)である。詳細は後述するが、ゲーム中においては、ボクセルオブジェクトのマテリアルの名称が表示されることがある(
図25参照)。このような表示を行うために、マテリアルデータはマテリアルの名称の情報を含む。
【0086】
マテリアルデータに含まれる性質は、当該マテリアルに設定される性質である。マテリアルの性質とは、当該マテリアルが設定されるボクセルオブジェクトがゲームにおいて有する性質である。なお、マテリアルの性質の具体的な内容や種類数は任意である。例えば、マテリアルの性質として下記の情報の少なくともいずれかが設定されてもよい。
・硬さ
・重さ
・滑り易さ
・プレイヤキャラクタが接触した場合のダメージ設定
・温度
・ボクセルオブジェクトに他のオブジェクトが接着可能か否か
・プレイヤキャラクタがボクセルオブジェクトを破壊または取得した場合におけるプレイヤキャラクタの体力の回復量
・プレイヤキャラクタがボクセルオブジェクトを破壊または取得した場合にプレイヤキャラクタが取得するゲーム内通貨の量
他の実施形態においては、マテリアルの性質を示す情報として、上記とは異なる情報が設定されてもよい。
【0087】
本実施形態においては、マテリアルデータは、マテリアルの性質を特定する情報として、当該性質を示すIDを含む(
図12参照)。図示しないが、ゲームシステム1は、用意される性質毎に、性質IDに対して当該性質の内容(例えば、上述の重さや滑りやすさを示す値)が対応付けられた性質情報を記憶する。ゲームシステム1は、上記性質情報を参照することで、マテリアルについて設定される性質の具体的な内容を特定することができる。
【0088】
マテリアルデータに含まれる描画設定は、当該マテリアルが設定されるボクセルオブジェクトの描画に用いられるテクスチャ等、描画に関する設定を示す情報である。本実施形態においては、マテリアルデータは、描画設定の情報として、当該マテリアルが設定されるボクセルオブジェクトの描画に用いるテクスチャのIDを含む(
図12参照)。図示しないが、ゲームシステム1は、用意されるテクスチャ毎に、テクスチャIDと、当該テクスチャIDが示すテクスチャとを対応付けたテクスチャ情報を記憶する。ゲームシステム1は、上記テクスチャ情報を参照することで、マテリアルについて設定されるテクスチャの具体的な内容を特定することができる。なお、他の実施形態においては、描画設定の情報として、テクスチャの情報に加えて、シェーディングの設定に関する任意の情報が設定されてもよい。たとえば、反射率や、法線に関する情報等が設定されていてもよい。
【0089】
また、マテリアルデータは、
図13に示すデータ以外の他のデータを含んでいてもよい。例えば、マテリアルデータは、サウンド設定に関するデータを含んでいてもよい。例えば、サウンド設定に関するデータは、当該ボクセルに基づくボクセルオブジェクト上をプレイヤキャラクタが歩いた場合に出力される足音を規定するデータであってもよい。
【0090】
なお、マテリアルデータは、マテリアルの性質および/または描画設定を特定可能な任意の形式のデータであってよい。例えば、他の実施形態においては、マテリアルデータは、マテリアルIDやテクスチャIDを含むデータ構造に代えて、マテリアルの性質および/または描画設定を直接示すデータを含むデータ構造を有していてもよい。
【0091】
[2-2.ボクセルデータの更新]
ゲーム中においては、上述のボクセルデータが更新されることで、ボクセルオブジェクトが変形される。本実施形態においては、ボクセルオブジェクトを更新させるためのゲームイベント(以下、「更新イベント」と呼ぶ。)が発生した場合、ゲームシステム1はボクセルデータの更新を行う。更新イベントの具体的な内容は任意である。更新イベントは、例えば、ゲームに登場するキャラクタが、ボクセルオブジェクトを変形させるアクションを行った(例えば、プレイヤキャラクタがボクセルオブジェクトに対してパンチを行った)ことであってもよいし、ボクセルオブジェクトを変形させる事象が発生したこと(例えば、キャラクタが投げつけたオブジェクトがボクセルオブジェクトに接触したことや、爆弾が爆発したこと)であってもよい。
【0092】
図13は、更新イベントが発生した場合におけるゲーム空間の一例を示す図である。
図13に示す状況は、ボクセルオブジェクトである地形オブジェクト202に対してプレイヤキャラクタ201がパンチアクションを行った状況である。詳細は後述するが、
図13に示す例においては、プレイヤキャラクタ201によるパンチアクションが当たった位置の周囲の地形オブジェクト202が消去されるように、ボクセルデータが更新される。これによって、プレイヤキャラクタ201によるパンチアクションによって地形オブジェクト202が破壊される様子が表現される。
【0093】
本実施形態においては、更新イベントが発生した場合、ゲームシステム1は、ボクセルオブジェクトの更新を行う更新範囲(
図13に示す例においては、更新範囲203)をゲーム空間において設定する。更新範囲の位置、形状、および、大きさは任意である。更新範囲の位置は、例えば、発生した更新イベントに関するオブジェクト(例えば、パンチを行ったプレイヤキャラクタ)とボクセルオブジェクトとが接触した位置に基づいて決定されてもよい。
図13に示す例においては、プレイヤキャラクタ201によるパンチが当たった位置に基づいて更新範囲203の位置が決定されてよく、例えば、当たった位置、あるいは、当たった位置から所定距離だけ前方の位置が更新範囲203の中心位置とされてもよい。更新範囲の形状および大きさは、更新イベントの種類に応じた形状となるように予め決定されてもよい。例えば、プレイヤキャラクタ201のパンチによる更新イベントが発生した場合、
図13に示すような所定の大きさの球体として、更新範囲の形状および大きさが決定されてもよい。また、更新範囲の大きさは、発生した更新イベントの影響度合いを示す値(例えば、パンチの強さや爆発の大きさ)に応じて決定されてもよい。
【0094】
ゲームシステム1は、設定された更新範囲に対応するボクセルについて密度を変更する。なお、更新範囲に対応するボクセルとは、例えば、更新範囲内のボクセル、あるいは、更新範囲と重複するボクセルである。密度が変更される結果、後述する処理によってボクセルオブジェクトのメッシュが変更されることで、ボクセルオブジェクトの形状(見た目の形状、および、接触判定に用いられる形状)が変更される。なお、他の実施形態においては、ゲームシステム1は、更新範囲内に含まれるボクセルについて密度を変更することに加えて、当該ボクセルにおけるマテリアル(すなわち、第1のマテリアル、第2のマテリアル、および、マテリアル混合比)を変更してもよいし、当該ボクセルにおける状態を変更してもよい。
【0095】
本実施形態においては、ゲームシステム1は、ボクセルが更新範囲に含まれるか否かの判定を、SDF(Signed Distance Field:符号付距離場)を用いて行う。ゲームシステム1は、ゲーム空間内に設定される更新範囲を示すSDFを設定し、SDFの値に基づいて上記の判定を行う。SDFは、任意の位置について、規定する形状からの距離を符号付で表すものである。
図14は、更新範囲の一例を示す図である。
図14に示す例においては、ゲーム空間に球形の更新範囲が設定されている。例えば、
図14に示す例においては、ゲーム空間内の位置のうち、SDFが表す形状の内側の位置についてはSDFの値が負の値となり、SDFが表す形状の外側の位置についてはSDFの値が正の値となるようにSDFが設定される。この例では、SDFの値の正であるか負であるかによって、更新範囲に含まれるか否かを判定することができる。また、符号付距離の値を用いることで、単純な内外判定だけでなく、補正や補間等の処理を行うこともできる。
【0096】
上記においては、更新範囲内のボクセルオブジェクトが消去されたように変形されるという変更がボクセルオブジェクトに加えられる例について説明したが、更新範囲を用いてボクセルオブジェクトに加えられる変更はこれに限らない。例えば、更新範囲内にボクセルオブジェクトが新たに追加される(つまり、更新範囲の分だけボクセルオブジェクト内の領域が占める体積が増加する)変更がボクセルオブジェクトに対して加えられてもよい(後述する
図26参照)。また、ボクセルの密度は変更されずに、更新範囲内におけるボクセルのマテリアルのみが変化するような変更がボクセルオブジェクトに対して加えられてもよい。また、ボクセルの密度の変更とマテリアルの変更とが複合的に加えられてもよい。
【0097】
[2-3.頂点の算出]
上記のようにしてボクセルの密度が更新された場合、ゲームシステム1は、更新後のボクセルデータに基づいて頂点を設定する。上記の頂点とは、ボクセルオブジェクトのメッシュの頂点となり得るものである。詳細は後述するが、本実施形態においては、上記の頂点について簡略化が行われ、簡略化後の頂点がボクセルオブジェクトのメッシュの頂点となる。
【0098】
図15は、頂点の設定方法の一例を示す図である。なお、以下において説明する
図15~
図17、および、
図19~
図21では、図面を見やすくし、説明を分かりやすくする目的で、ボクセル、頂点、メッシュ等を2次元で表現しているが、実際には3次元空間におけるボクセルに基づいて3次元空間において頂点およびメッシュが設定される。本実施形態においては、ゲームシステム1は、存在することを示す設定の密度(すなわち、後述する基準値以上の密度)を有するボクセルと、存在しないことを示す設定の密度(すなわち、後述する基準値未満の密度)を有するボクセルとが隣接する部分に対し、周囲の複数のボクセルの位置と密度とに基づいた座標に頂点を設定させる手法を用いる。以下、この手法の詳細について説明する。
【0099】
上述のように、本実施形態においては、ボクセルに設定される密度は、0~255の範囲で設定される。密度が0のボクセルは完全に空中で、密度が255のボクセルは完全に中身が詰まっている状態を表す。0と255の間の密度は補間的に扱われ、頂点の決定に用いられる。そして、本実施形態においては、密度が基準値以上のボクセルをオブジェクト内とし、密度が基準値未満のボクセルをオブジェクト外であると仮想的に扱う。密度が基準値以上のボクセルを、存在することを示すボクセルであるとし、密度が基準値未満のボクセルを、存在しないことを示すボクセルであるとして仮想的に扱う、ということもできる。密度が0のボクセルのみをオブジェクト外と定義する(すなわち基準値=1とする)必要はなく、当該基準値は、例えば128とする。
図15に示す例においては、ボクセル211および外側の他のボクセルにおいては密度が0、ボクセル212は密度が基準値未満である100、ボクセル213、214においては密度が基準値以上である150、210と設定されているものとする。本実施形態においては、ゲームシステム1は、密度が基準値以上のボクセルと基準値未満のボクセルとの間に頂点を生成する。具体的には、隣接する8個(図面では4個)のボクセルに跨がった領域(図面では点線に囲まれた領域)ごとに、頂点を生成するか否かの判定を行う。つまり、密度が基準値以上のボクセルと基準値未満のボクセルの両方に跨がる領域に頂点を生成する。頂点の座標は、XYZの軸ごとに、隣接するボクセル同士の密度を比較し、密度の差に基づいた補間によって決定される。なお、詳細は後述するが、頂点間を結ぶ直線の位置および向きを規定する交点情報を設定しておくことで、さらに交点情報に基づいて頂点の座標を計算することができる。なお、交点情報は、少なくとも一部のボクセルについて予め保持しておくようにしてもよいし、保持されていない場合は交点情報も隣接するボクセル同士の密度に基づいて算出されてもよい。なお、
図15において、ボクセル212の密度は基準値未満であるので、頂点の有無の判定においては、ボクセル212はオブジェクト外として扱われるが、ボクセル212の密度の値自体は、生成される頂点の座標計算に用いられる。仮にボクセル212の密度よりも低い値に基準値を設定した場合は、
図15のボクセル212における右上側と左上側に頂点がさらに増える結果となる。
【0100】
上記のように頂点を設定することで、設定された各頂点(あるいは、設定された各頂点に対して後述の簡略化処理を行った後の各頂点)を結ぶメッシュを生成する場合には、ボクセルごとの密度をある程度反映した体積を有する形状を生成することができる。ただし、隣接ボクセルとの関係によっては、密度0のボクセルが一部オブジェクト内の領域を含むことや、密度255のボクセルが一部オブジェクト外の領域を含むようなこともあり得る。また、本実施形態では、基準値未満のボクセルはオブジェクト外として処理するため、オブジェクト内として処理する場合に比べて頂点が少なくなる分、体積も小さくなる。このように、厳密に密度の値に対応する体積となるようにポリゴンメッシュを算出する必要は無い。
【0101】
なお、頂点の算出には、交点情報が用いられてもよい。交点情報は、ボクセルが設定される空間における3次元の位置および方向を示す。詳細は後述するが、交点情報が設定される場合、複数の頂点で形成される多角形の面が、理想的には、交点情報が示す位置を含み、かつ、交点情報が示す方向に垂直となるように、頂点が設定される。なお、上記「複数の頂点で形成される多角形の面」は、後述の簡略化が当該頂点について行われない場合にボクセルオブジェクトのメッシュの面となる面である。上記の交点情報を設定することで、ボクセルオブジェクトのメッシュの形状をより詳細に規定することができる。なお、以下では、便宜上、交点情報が示す位置の座標を「交点座標」と呼び、交点情報が示す方向を「法線方向」と呼ぶ。ただし、後述するように、決定された各頂点で形成される面は、交点座標の位置を含まないことがあったり、法線方向に垂直にならないことがあったりする。
【0102】
図16は、交点情報が設定される場合における頂点の決定方法の一例を示す図である。
図16においては、
図15に示すボクセル213について交点情報が設定される例が示されている。
図16に示すように、交点情報が示す交点座標は、ボクセル間を結ぶ線上、より具体的には例えば、ボクセルの中心と当該ボクセルに隣接するボクセルの中心とを結ぶ線上に設定される。交点情報が示す法線方向は、交点座標の位置における方向を示す。
図16に示すように、交点情報が示す交点座標および法線方向は、交点座標の位置を始点とし、法線方向を向くベクトルとして表すことができる。
【0103】
なお、交点情報は、全てのボクセルについて設定される必要はなく、ボクセル空間における各ボクセルのうち一部のボクセルについて設定されてよい。例えば、交点情報は、周囲に頂点が設定されるボクセルに設定される。より具体的には、上述の基準値以上の密度が設定されるボクセルと、当該ボクセルに隣接し、基準値未満の密度が設定されるボクセルとが存在する場合、これらのボクセルのいずれかに交点情報が設定される。このとき、交点座標は、基準値以上の密度が設定されるボクセルの中心と、当該ボクセルに隣接し、基準値未満の密度が設定されるボクセルの中心との間の線上に設定される。
【0104】
交点情報が設定される場合、理想的には、複数の頂点で形成される多角形の面が交点座標の位置を含み、かつ、法線方向に垂直となるように、頂点が設定される。
図16に示す例においては、ボクセル213に関して、ベクトル215およびベクトル216として表される2つの交点情報が設定されている。このとき、ベクトル215として表される第1の交点情報により規定される面217上であって、かつ、ベクトル216として表される第2の交点情報により規定される面218上となる位置に、頂点219が設定される。なお、「交点情報により規定される面」とは、交点情報が示す交点座標の位置を通り、かつ、交点情報が示す法線方向に垂直な面を指す。なお、
図16に示す例は2次元であるので交点情報によって規定されるものが線として表されているが、ボクセル空間は3次元であるので実際には交点情報によって面が規定される。
【0105】
図17は、
図16に示すものとは異なる交点情報が設定される場合における頂点の決定方法の一例を示す図である。
図17に示す例においては、ボクセル213に関して、
図16に示すベクトル215および216とは異なる2つのベクトル215’および216’で表される2つの交点情報が設定されている。このとき、ベクトル215’として表される第1の交点情報により規定される面217’上であって、かつ、ベクトル216’として表される第2の交点情報により規定される面218’上となる位置に、頂点219’が設定される。
図17に示す頂点219’は、
図16に示す頂点219よりもボクセル213の中心から離れた位置に設定され、頂点219’の角度は頂点219の角度よりも小さくなる。
図17に示す例においては、ボクセルオブジェクトのメッシュは、頂点219’の位置において、
図16に示す例よりも尖った形状となる。
【0106】
図16および
図17において示したように、交点情報を設定することで、ボクセルに設定される密度が同じであっても異なる形状となるようにボクセルオブジェクトのメッシュを生成することができる。ここで、交点情報を用いずに密度に基づいて頂点を決定する方法では、メッシュの細かい形状を開発者の意図通りに規定することが難しい場合がある。上記の方法では、例えば、ボクセルオブジェクトのメッシュの角を尖った形状としたり、直方体のボクセルオブジェクトのメッシュの角を、3つの面が互いに垂直に接する角としたりすることが難しい。これに対して、交点情報を設定して当該交点情報を用いて頂点を決定する方法によって、メッシュの形状をより詳細に規定しやすくなり、意図した形状としやすくすることができる。
【0107】
なお、複数の交点情報が設定される場合には、各交点情報による条件を全て満たすように各頂点を設定することが不可能となることもある。つまり、複数の頂点で形成される多角形の面が、各交点情報が示す各交点座標の位置を含み、かつ、各交点情報が示す各法線方向に垂直となるように、各頂点を設定することが不可能であることもある。そのため、本実施形態においては、ゲームシステム1は、交点情報により規定される面と頂点との誤差が最小となるように、頂点を設定する。これによって、設定された頂点に基づいて生成されるメッシュの面は、交点座標の位置において法線方向を向く配置、あるいは、当該配置からの誤差が最小となる配置となる。なお、頂点の具体的な決定方法は任意である。例えば、ゲームシステム1は、交点情報により規定される面と頂点との距離の2乗和が最小となるように、頂点を設定する。なお、頂点は、交点情報が設定されるボクセルの位置に基づく所定範囲内において設定されてもよく、このとき、当該所定範囲内において誤差が最小となる位置に頂点が設定されてもよい。なお、上記所定範囲は、例えば、交点情報が設定されるボクセルの中心を含む、後述の頂点区分領域の範囲(
図16に示す例では、破線で示される正方形の範囲)である。
【0108】
交点情報を用いて頂点が決定される場合、ゲームシステム1は、交点情報が設定されないボクセルに関しては、ボクセルに設定される密度に基づいて設定される交点座標および法線方向に基づいて頂点を決定してもよい。つまり、ゲームシステム1は、交点情報が示す交点座標および法線方向と同様の交点座標および法線方向を密度に基づいて設定し、設定された交点座標および法線方向を用いて、ボクセルに設定される交点情報に基づいて頂点を決定する方法と同様にして、頂点を決定してもよい。なお、密度に基づいて交点座標および法線方向を設定する方法は任意である。交点座標および法線方向は、当該交点座標が設定される線の両端に中心が位置する2つのボクセルの密度に基づいて算出されてもよい。例えば、ゲームシステム1は、ボクセルの中心間を結ぶ上記線上の各位置における密度の値を、2つのボクセルの密度を補間することで算出し、密度のとり得る値の範囲の中間値(例えば、127.5)となる位置を、交点座標の位置としてもよい。また、例えば、ゲームシステム1は、当該ボクセルとその周囲のボクセルに設定される各密度に基づいて密度の傾きを算出し、当該傾きを法線方向としてもよい。なお、本実施形態においては、ボクセルに設定される密度に基づいて交点座標および法線方向の両方を算出したが、他の実施形態においては、ゲームシステム1は、密度に基づいて交点座標のみを算出し、算出された交点座標と交点情報とを用いて頂点を決定してもよい。
【0109】
ゲームシステム1は、設定される交点情報を示す交点情報データを記憶する。
図18は、交点情報データの一例を示す図である。本実施形態においては、交点情報データは、ボクセル毎に設定される交点情報を示すデータである。交点情報は、ゲーム空間におけるボクセルのいずれかに関連付けられる。例えば、ゲーム空間においてボクセルによる格子と同じ位置および大きさで設定される格子における位置を示す情報(例えば、座標情報)が交点情報に関連付けられることで、ゲーム空間における1つのボクセルに交点情報が関連付けられてもよい。上述のように、交点情報は一部のボクセルについて設定されてよく、交点情報が設定されないボクセルがあってもよい。
【0110】
本実施形態においては、1つのボクセルには、当該ボクセルから3方向に設定される交点情報が関連付けられる(
図18参照)。具体的には、ゲーム空間においてボクセルが並ぶ3方向に延びる軸をxyz軸としたとき、当該ボクセルには、当該ボクセルの中心から、x軸正側に延びる線上に設定される第1交点情報、y軸正側に延びる線上に設定される第2交点情報、および、z軸正側に延びる線上に設定される第3交点情報が関連付けられる。なお、1つのボクセルには、第1~第3の3つの交点情報が関連付けられる必要はなく、1つまたは2つの交点情報が関連付けられてもよい。また、1つの交点情報は、交点座標と法線方向の情報を含む。なお、交点情報は、任意の形式の情報であってよい。例えば、交点情報は、交点座標を表す3次元座標を示す情報と、法線方向を所定の3軸方向に関する各成分として表したときの3つのベクトルを示す情報を含んでもよい。なお、法線方向を示す情報は、データ量をより低減するべく、上記3軸方向のうちの2軸方向に関する2つのベクトルの情報と、残りの1軸方向に関する向き(つまり、正方向か負方向か)を示す値の情報とで構成されてもよい。
【0111】
上記のように、本実施形態においては、ゲームシステム1は、ボクセルデータとは別に交点情報データを記憶する。なお、他の実施形態においては、交点情報データはボクセルデータに含まれる形で記憶されてもよい。例えば、ボクセルデータは、当該ボクセルに関連付けられる3つの交点情報を示す交点情報データを含む形式であってもよい。
【0112】
ゲームシステム1は、上記のように設定された各頂点についてマテリアルを決定する。頂点のマテリアルは、当該頂点の周囲のボクセルに関するマテリアルに基づいて決定される。頂点の周囲のボクセルとは、例えば、当該頂点を生成するか否かの判定に用いられたボクセル(すなわち、上述の「ボクセルに跨がった領域」と重なるボクセル)である。頂点のマテリアルの決定方法は任意である。例えば本実施形態においては、ゲームシステム1は、周囲のボクセルに設定されるマテリアルのうち、所定数まで(例えば、2種類まで)のマテリアルを選択して頂点のマテリアルとして決定する。
【0113】
[2-4.頂点の簡略化]
本実施形態においては、ゲームシステム1は、上記のようにして算出された各頂点について簡略化を行う。すなわち、ゲームシステム1は、上記のようにして算出された各頂点のいくつかをまとめて1つの頂点に置き換えることで、頂点数を減少させる。なお、詳細は後述するが、置き換えられる頂点の座標(すなわち、位置)およびマテリアルは、置き換え前の複数の頂点に基づいて設定される。このような簡略化によって、ボクセルオブジェクトのメッシュを構成する頂点の数やポリゴンの数を減少させることができ、処理に用いられるメモリ量を低減したり、処理負荷を低減したりすることができる。
【0114】
本実施形態においては、ゲームシステム1は、SVO(Sparse Voxel Octree)を用いて各頂点を表現することで簡略化を行う。
図19は、頂点の簡略化の一例を示す図である。なお、
図19では、
図19(a)に示す実線で示される1つの正方形が1つの頂点区分領域を表す。ここで、頂点区分領域とは、ボクセルの中心位置を頂点とする正方形の領域であり(実際の3次元空間では、頂点区分領域は立方体または直方体である)、上述の
図15~
図17における破線を辺とする領域である。また、
図19において、内部に「v」の文字が示されている頂点区分領域は、頂点が設定されている頂点区分領域を示す。
【0115】
本実施形態においては、ゲームシステム1は、互いに隣接する所定個数(
図19では4個、実際の3次元空間では8個)の頂点区分領域内の頂点について、簡略化が可能であるか否かを判定する。簡略化が可能であると判定される場合、当該所定個数の頂点区分領域内の頂点について簡略化が行われる。
【0116】
図19の(a)は、簡略化が行われる前の状態である。
図19に示す例においては、点線で囲まれる範囲内の頂点区分領域について簡略化可能と判定されるものとする。このとき、ゲームシステム1は、簡略化可能と判定される上記所定個数の各頂点区分領域内の頂点が、1つの頂点に置き換えられるように簡略化を行う(
図19(b)参照)。これによって、上記所定個数の頂点区分領域内の頂点が1つの頂点に簡略化されることとなる。
【0117】
本実施形態においては、ゲームシステム1は複数段階で簡略化を行う。段階数は任意であるが、
図19では、2段階目までを図示して説明する。
図19の(b)は、1段階目の簡略化が行われた状態を示し、
図19の(c)は、2段階目の簡略化が行われた状態を示している。2段階目の簡略化においては、1段階目の簡略化によって生じた頂点を対象として、簡略化が可能であるか否かが判定される。
図19に示す例においては、
図19の(b)において点線で囲まれる範囲内の頂点区分領域について簡略化可能と判定される結果、当該頂点区分領域の頂点が簡略化され、
図19の(c)に示す状態となる。なお、1段階目の簡略化が可能であるか否かの判定条件と、2段階目の簡略化が可能であるか否かの判定条件とは同じ内容であってもよいし、異なる内容であってもよい。
【0118】
簡略化が可能であるか否かの判定について、具体的な方法は任意である。本実施形態においては、上記判定のための条件として、ボクセルオブジェクトの形状に関する条件と、マテリアルに関する条件とが用いられる。本実施形態においては、ボクセルオブジェクトの形状に関する条件と、マテリアルに関する条件との両方が満たされる場合、簡略化可能であると判定され、ボクセルオブジェクトの形状に関する条件と、マテリアルに関する条件との少なくとも一方が満たされない場合、簡略化不可能であると判定される。
【0119】
形状に関する条件とは、例えば、簡略化前の各頂点による形状と、簡略化後の各頂点による形状とが大きく変更されないことである。例えば、各頂点による形状が簡略化前後で大きく変更されないか否かは、簡略化前のメッシュと簡略化後のメッシュとの間の誤差を示す指標を算出し、当該指標が所定の許容値以下であるか否かによって判定することもできる。また例えば、簡略化前の各頂点による形状が中空の形状であるのに対して、簡略化後の各頂点による形状が中空でない形状となる(つまり、簡略化によって中空であるという情報が欠落してしまう)場合も、形状に関する条件が満たされないと判定される。なお、上記の場合が生じるか否かは、例えば、判定対象となる頂点区分領域に対応する各ボクセルの密度に基づいて判定することができる。また例えば、簡略化前の各頂点による形状が、2以上の頂点によってしか表現できず、1つの頂点では表現できないような形状である場合も、形状に関する条件が満たされないと判定される。なお、ボクセルオブジェクトの形状に関する条件としては、SVOを用いた従来の手法と同様の条件が用いられてもよい。
【0120】
また、マテリアルに関する条件としては、本実施形態においては、簡略化の対象となる上記所定個数の頂点区分領域内の各頂点に設定されるマテリアルの種類数に関する条件が用いられる。
図20は、マテリアルに関する条件の一例を示す図である。
図20の(a)は、頂点221~224のマテリアルが、それぞれ、(草)、(草)、(草と土)、(草と土)である場合を示しており、
図20の(b)は、頂点221~224のマテリアルが、それぞれ、(草と砂)、(草)、(草と土)、(草と土)である場合を示している。本実施形態においては、マテリアルに関する条件は、簡略化の対象となる上記各頂点に設定されるマテリアルの種類の合計が所定数以下となることである。たとえば、マテリアルに関する条件は、1つの頂点に設定可能なマテリアルの数以下となることとする。本実施形態においては、上記所定数は2である。例えば、
図20の(a)の場合には、簡略化の対象となる各頂点221~224に設定されるマテリアルの種類の合計は、草と土の2種類となるので、マテリアルに関する条件は満たされる。このとき、上述のオブジェクトの形状に関する条件が満たされることを条件に、各頂点221~224は簡略化可能と判定される。一方、
図20の(b)の場合には、簡略化の対象となる各頂点221~224に設定されるマテリアルの種類の合計は、草と土と砂の3種類となるので、マテリアルに関する条件は満たされない。このとき、上述のオブジェクトの形状に関する条件が満たされるか否かに関わらず、各頂点221~224は簡略化不可能と判定される。
【0121】
なお、ゲームシステム1において、厳密には異なる種類に分類されるマテリアルであっても、設定される性質が同じであって、見た目が異なる複数種類のマテリアルが用意されてもよい。このような複数種類のマテリアルの一部については、マテリアルに関する条件の判定においては同じ種類とみなして判定を行ってもよい。例えば、土のマテリアルに関して、性質は同じであるものの見た目(例えば、テクスチャの色や模様)が近い複数種類の土のマテリアルが用意される場合がある。このような場合、ゲームシステム1は、当該複数種類の土のマテリアルについては同じ種類とみなしてマテリアルに関する条件の判定を行ってもよい。
【0122】
ここで、本実施形態においては、頂点に関してはボクセルと同様に、2種類までのマテリアルが設定可能である。これに対して、本実施形態においては、簡略化の対象となる各頂点に設定されるマテリアルの種類の合計が3種類以上である場合には、簡略化が行われない。すなわち、マテリアルの種類の合計が1つの頂点に設定可能なマテリアルの数を超える場合には簡略化が行われない。したがって、簡略化によって頂点の数を減らしたとしても、頂点に設定されたマテリアルの情報が簡略化によって欠落することはなく、マテリアルの情報を維持することができる。
【0123】
本実施形態においては、簡略化後の頂点のマテリアルは、簡略化前の各頂点のマテリアルに基づいて決定される。具体的には、ゲームシステム1は、簡略化前の頂点に設定される1種類または2種類のマテリアルを、簡略化後の頂点における第1のマテリアルおよび第2のマテリアルに設定する。これによって、マテリアルの情報を維持することができる。なお、簡略化後のマテリアルの比率は、簡略化前の各頂点のマテリアルの比率に基づいて決定される。
【0124】
[2-5.メッシュの生成]
本実施形態においては、上記のようにして簡略化された各頂点に基づいて、ボクセルオブジェクトのメッシュが生成される。
図21は、各頂点に基づいて生成されるメッシュの一例を示す図である。なお、
図21に示す正方形は、上述の頂点区分領域、あるいは、簡略化によって複数の頂点区分領域がまとめられて1つになった頂点区分領域を示す。
図21に示すように、ゲームシステム1は、頂点区分領域が隣接する頂点同士を結ぶ直線を辺とする多角形で構成されるメッシュを生成する。メッシュを構成する各多角形は三角形または四角形となる。
【0125】
本実施形態においては、ゲームシステム1は、表示用メッシュと、判定用メッシュの2種類のメッシュを生成する。表示用メッシュは、ボクセルオブジェクトの表示のために用いられるメッシュである。判定用メッシュは、ボクセルオブジェクトのコリジョン判定のために用いられるメッシュである。詳細は後述するが、ゲームシステム1は、上記の2種類のメッシュを用いることで、ボクセルオブジェクトの表示およびコリジョン判定のそれぞれに適したメッシュを用いて処理を行うことができる。
【0126】
本実施形態においては、ゲームシステム1は、表示用メッシュおよび判定用メッシュを、上述のSVOのデータに基づいて(すなわち、簡略化された各頂点に基づいて)生成する。これによれば、2種類のメッシュの生成に用いられる頂点データを共有することで、処理の効率化を図ることができる。なお、他の実施形態においては、ゲームシステム1は、頂点の簡略化を行わなくてもよく、簡略化されていない頂点に基づいて表示用メッシュおよび/または判定用メッシュを生成してもよい。
【0127】
本実施形態においては、ゲームシステム1は、判定用メッシュを、表示用メッシュよりも簡易な形状となるように生成する。具体的には、ゲームシステム1は、判定用メッシュの頂点数が表示用メッシュの頂点数よりも少なくなるようにする。ここで、本実施形態においては、SVOのデータは、簡略化前の頂点のデータと、簡略化された頂点のデータとを八分木構造で保持するデータであるが、簡略化可能であるか否かの判定のために用いられたデータも含む。このデータは、例えば、簡略化後の頂点の候補として算出された頂点(仮の頂点と呼ぶ。)のデータ、および、簡略化前の頂点と当該仮の頂点との間の誤差を示す上述の指標のデータを含む。例えば、ゲームシステム1は、仮の頂点のうち、上記指標が所定の閾値(この閾値は、上記許容値よりも大きいものとする)以下である頂点を、判定用メッシュの生成に用いるようにしてもよい。これによれば、判定用メッシュの頂点数を表示用メッシュの頂点数よりも少なくすることができる。判定用メッシュの頂点数を表示用メッシュの頂点数よりも少なくすることで、コリジョン判定による処理負荷を軽減できる。また、表示用メッシュの頂点数を過度に減らすことがないのでボクセルオブジェクトの見た目を詳細に表現できる。
【0128】
なお、他の実施形態においては、表示用メッシュおよび判定用メッシュは、同じデータに基づいて生成されてもよいし、異なるデータに基づいて生成されてもよい。また、表示用メッシュと判定用メッシュは同じ形状であってもよい(ただし、この場合でも両者に設定されるマテリアルは異なっていてもよい)。また、判定用メッシュの頂点数は、表示用メッシュの頂点数と同じであってもよいし、表示用メッシュの頂点数よりも多くてもよい。
【0129】
また、ゲームシステム1は、メッシュのポリゴン毎にマテリアルを決定する。ポリゴンのマテリアルは、当該ポリゴンの各頂点に設定されるマテリアルに基づいて決定される。ポリゴンのマテリアルの具体的な決定方法は任意である。本実施形態においては、表示用メッシュのポリゴンについては、ゲームシステム1は、当該ポリゴンの各頂点に設定される各マテリアルのうち、2種類までのマテリアルを選択してポリゴンのマテリアルとして決定する。表示用メッシュのポリゴンについては、ポリゴンの頂点毎に上記2種類までのマテリアルが設定され、各頂点に設定されたマテリアルに基づいて当該ポリゴンの描画が行われる。また、判定用メッシュのポリゴンについては、ゲームシステム1は、当該ポリゴンの各頂点に設定される各マテリアルのうち、1種類のマテリアルを選択してポリゴンのマテリアルとして決定する。
【0130】
上記のように、本実施形態においては、1つのボクセルオブジェクトについて表示用メッシュと判定用メッシュとが設定され得る。ただし、ゲーム状況によっては、1つのボクセルオブジェクトについて表示用メッシュと判定用メッシュとの両方が同時に設定される必要はない(例えば、1フレームにおける処理において両方が設定される必要はない)。例えば、判定用メッシュは、ゲーム空間のうちで、コリジョン判定が行われる範囲において生成され、コリジョン判定が行われない範囲においては生成されなくてもよい。一例としては、ゲームシステム1は、プレイヤキャラクタを中心とした所定範囲内のボクセルオブジェクトについて判定用メッシュを生成し、当該所定範囲外のボクセルオブジェクトについては判定用メッシュを生成せず、表示用メッシュのみを生成するようにしてもよい。
【0131】
また、ゲームシステム1は、表示用メッシュについては、生成されたメッシュに関するデータをメモリに記憶しておき、当該メッシュが生成された後のフレームにおいては、更新が行われた範囲を除き、メッシュを生成する処理を再度実行せずに、当該データを用いるようにしてもよい。これによれば、表示用メッシュを生成するための処理負荷を軽減できる。また、判定用メッシュについては、生成されたメッシュに関するデータをメモリに記憶せず、必要に応じて(例えば、コリジョン判定を行う必要が生じる度に)逐次メッシュを生成するようにしてもよい。これによれば、メッシュの生成に用いられるメモリ領域を節約することができる。
【0132】
以上においては、ボクセルデータが初期状態から変更された場合に、変更後のボクセルデータに基づいて各メッシュ(すなわち、表示用メッシュおよび判定用メッシュ)を生成する方法について説明した。なお、上記の方法は、例えばゲームの開始時において、初期状態のボクセルデータに基づいて各メッシュを生成する場合にも用いることができる。ただし、初期状態のボクセルデータに基づく各メッシュは、ゲーム開始時に初期状態のボクセルデータに基づいて生成される必要はなく、ゲーム開始前に予め用意されていてもよい。
【0133】
[2-6.メッシュを用いた処理]
次に、ボクセルオブジェクトについて上記のようにして生成されるメッシュを用いた処理例について説明する。以下においては、地面や壁等の地形オブジェクトがボクセルオブジェクトであるものとし、プレイヤキャラクタがアクションを行い、コリジョン判定が行われた結果として、ゲーム内の作用が発生する場合の例について説明する。
【0134】
図22は、地形オブジェクト上をプレイヤキャラクタが移動する様子を表すゲーム画像の一例を示す図である。
図22に示す例においては、地面である地形オブジェクトの判定用メッシュのうち一部の領域251のポリゴンについてのマテリアルが「溶岩」に設定されている。なお、地形オブジェクトの判定用メッシュのうち領域251以外のポリゴンについてのマテリアルは「岩」に設定されている。
図22に示す例において、ゲームシステム1は、判定用メッシュを用いて地形オブジェクトとプレイヤキャラクタ201とのコリジョン判定を行う。すなわち、地形オブジェクトの判定用メッシュと、プレイヤキャラクタについて設定される判定領域(例えば、プレイヤキャラクタの位置に基づいて設定される、所定形状の領域)とが接触するか否かのコリジョン判定を行う。そして、マテリアルが溶岩であるポリゴンとプレイヤキャラクタ201とのコリジョンが判定された場合、ゲーム内の作用を発生させる処理として、プレイヤキャラクタ201の体力を減少させる処理を行う。また、上記の場合、プレイヤキャラクタ201に所定のリアクションを行わせる処理を行う。
【0135】
なお、本実施形態においては、上述のマテリアルデータに含まれる性質情報として、溶岩のマテリアルについて、接触したプレイヤキャラクタの体力を減少させる性質(例えば、温度が所定値以上であるという性質)が設定されているものとする。ゲームシステム1は、コリジョン判定によってコリジョンが判定された判定用メッシュ内のポリゴンに設定されたマテリアルに対応する性質情報に基づいたゲーム内作用(上記の例では、プレイヤキャラクタの体力減少)を発生させる。
【0136】
なお、マテリアルが岩であるポリゴンとプレイヤキャラクタ201とのコリジョンが判定された場合には、プレイヤキャラクタの体力を減少させる処理は実行されない。また、当該コリジョンに基づいて、プレイヤキャラクタ201は、当該ポリゴンの内側には進入できないように制御される。したがって、プレイヤキャラクタは、上記ポリゴンの上に立ったり、上を歩いたりすることができる。このように、本実施形態においては、マテリアルをポリゴン毎に設定することによって、ゲームシステム1は、他のオブジェクトがボクセルオブジェクトのどの部分に接触したかに応じて異なる処理を実行することができる。また、実行される処理の内容を、マテリアルの種類に応じたものとすることができる。なお、本実施形態においては、プレイヤキャラクタは地形オブジェクトを変化させる(例えば、変形させたり、マテリアルを変更したりする)を行うことができるので、例えば、地形オブジェクトのうち溶岩の部分を消去したり、溶岩を他のマテリアルに変更したりすることができる。そのため、プレイヤは、地形オブジェクトを変化させることで、溶岩に接触することによるプレイヤキャラクタの体力減少を回避することができる。
【0137】
なお、ボクセルオブジェクトと他のオブジェクトとのコリジョンが判定された場合に実行される処理の内容は任意である。例えば、上記他のオブジェクトがプレイヤキャラクタや敵キャラクタのような移動するオブジェクトである場合、上記処理は、当該オブジェクトの足音を出力したり、接触した場所にエフェクト(例えば、砂埃や水しぶきを表すエフェクト)を表示したりする処理であってもよい。このとき、ゲームシステム1は、ボクセルオブジェクトのうち接触した部分のポリゴンに設定されるマテリアルの種類に応じて、足音を異ならせたり、エフェクトを異ならせたりすることができる。
【0138】
図23は、プレイヤキャラクタが地形オブジェクトから破片オブジェクトを引き抜く様子を表すゲーム画像の一例を示す図である。
図23に示すように、本実施形態においては、プレイヤは、所定の操作入力によって、地形オブジェクト202を掴んでその一部を破片オブジェクト252として引き抜いて把持するアクション(「引き抜きアクション」と呼ぶ)をプレイヤキャラクタ201に行わせることができる。ゲームシステム1は、引き抜きアクションによって生じるゲーム内の作用として、地形オブジェクト202の一部を消去するとともに、破片オブジェクト252を発生させる。
【0139】
引き抜きアクションが行われる際、ゲームシステム1は具体的には次の処理を実行する。すなわち、プレイヤキャラクタに引き抜きアクションを行わせる操作入力がプレイヤによって行われた場合、ゲームシステム1は、プレイヤキャラクタに前方を掘って掴むようなアクションを行わせ、コリジョン判定を行う。そして、引き抜きアクションを行うプレイヤキャラクタと地形オブジェクトとのコリジョンが判定された場合、プレイヤキャラクタの位置および向きに基づいて更新範囲253を生成する。例えば、更新範囲253は、プレイヤキャラクタを基準とした所定方向(例えば、前方)に生成される。なお、更新範囲の形状および大きさは、プレイヤキャラクタのアクションの種類に応じたものとなるように予め決定されてもよい。また、ゲームシステム1は、更新範囲253に対応するボクセルについて密度を減少させる。そして、ボクセルの密度減少に応じたメッシュの更新によって、地形オブジェクト202は、更新範囲253内の部分が消去されるように変形される(
図23の(b)参照)。なお、本実施形態においては、更新範囲253に対応する各ボクセルについて密度を減少させるが、密度を減少させる対象となるボクセルは、更新範囲253に対応するボクセルのうち少なくとも一部のボクセルであってもよい。
【0140】
また、上記においては、引き抜きアクションによって更新範囲253に対応するボクセルオブジェクトが無条件に変形されるものとしたが、他の実施形態においては、ボクセルに設定されるダメージの量を条件として、更新範囲253に対応するボクセルオブジェクトの変形が行われてもよい。例えば、ゲームシステム1は、更新範囲253に対応するボクセルオブジェクトを無条件に変形させることに代えて、更新範囲253に対応するボクセルに設定されるダメージの量を増加させ、ダメージの量が所定値を超えたことに応じて当該ボクセルにおける密度を減少させるようにしてもよい。このとき、ダメージの増加量は、ボクセルオブジェクトに対して行われたアクションに応じて決定されてもよい。
【0141】
また、ゲームシステム1は、地形オブジェクト202のうちで消去された部分を表す破片オブジェクト252を生成する。すなわち、ゲームシステム1は、上記引き抜きアクションに基づいて、破片オブジェクト252をプレイヤキャラクタに持たせた状態で生成させる。破片オブジェクト252は、地形オブジェクト202のうちで消去された部分に応じた形状となるように生成されてもよいし、予め定められた形状であってもよい。破片オブジェクト252は、ボクセルオブジェクトであってもよいし、ボクセルオブジェクトでなくてもよい。破片オブジェクトがボクセルオブジェクトである場合は、地形オブジェクト202等に対応するボクセルのボクセル空間とは異なるボクセル空間が破片オブジェクト252のために定義される。
【0142】
ゲームシステム1は、上記破片オブジェクト252のマテリアルを決定する。破片オブジェクト252のマテリアルは、地形オブジェクト202の判定用メッシュのうち、更新範囲253と接触する判定用メッシュ内のポリゴンに設定されるマテリアルに基づいて決定される。破片オブジェクト252のマテリアルは、更新範囲253と接触する判定用メッシュ内のポリゴンに設定されるマテリアルのいずれか1つと同じになるように決定される。これによれば、破片オブジェクト252のマテリアルを、地形オブジェクトのうち消去された部分のマテリアルと同じにすることができる。上記の説明から明らかなように、破片オブジェクト252は実際には地形オブジェクトの一部ではない。しかし、地形オブジェクトの一部の消去とともに生成され、地形オブジェクトの消去された部分のマテリアルが破片オブジェクト252に引き継がれることで、プレイヤキャラクタ201が引き抜きアクションによって地形オブジェクト202の一部を取り出したような印象をプレイヤに与えることができる。
【0143】
本実施形態においては、用意されるマテリアルの各種類にはそれぞれ優先順位が設定され、ゲームシステム1は、更新範囲253内の判定用メッシュの各ポリゴンに設定されるマテリアルのうち優先順位が最も高いマテリアルを、破片オブジェクト252のマテリアルとして決定する。ここで、例えば、更新範囲253内の判定用メッシュは、マテリアルが岩のポリゴンと、マテリアルが溶岩のポリゴンとを含む場合を考える。このような場合に、仮に破片オブジェクト252のマテリアルが溶岩に設定されると、引き抜きアクションによってプレイヤキャラクタが破片オブジェクト252を把持したことでプレイヤキャラクタの体力が減少してしまう(なお、
図22でも説明したように、溶岩のマテリアルについては、接触したことでプレイヤキャラクタの体力を減少させる性質が設定されているものとする)といった不都合が生じるおそれがある。また、上記のように、更新範囲253内の判定用メッシュが、異なる種類のマテリアルが設定されたポリゴンを含む場合、破片オブジェクト252のマテリアルが何になるかはプレイヤにとって予想しにくいことも考えられ、プレイヤの意に反して上記の不都合が生じることも考えられる。これに対して、本実施形態においては、破片オブジェクトのマテリアルとして設定されるマテリアルに優先順位を設定しておくことで、上記の不都合が生じる可能性を低減することができる。
【0144】
図24は、プレイヤキャラクタが地形オブジェクトを破壊することで破片オブジェクトが生成される様子を表すゲーム画像の一例を示す図である。
図24に示すように、本実施形態においては、プレイヤは、所定の操作入力によって、パンチアクションをプレイヤキャラクタ201に行わせることができる。また、ゲームシステム1は、パンチアクションによって生じるゲーム内の作用として、上記のパンチアクションの場合と同様、地形オブジェクト202の一部を消去するとともに、破片オブジェクト255を発生させる。具体的には、一部が消去されたように地形オブジェクト202を変形させる。なお、パンチアクションが行われた場合は、上述の引き抜きアクションとは異なり、パンチアクション後において、破片オブジェクト255はプレイヤキャラクタ201によって把持されず、パンチアクションが行われた位置の周囲に配置される(
図24の(b)参照)。なお、地形オブジェクト202の破壊に応じた当該破片は、発生しない場合があってもよい。
【0145】
パンチアクションが行われる際、ゲームシステム1は具体的には次の処理を実行する。すなわち、プレイヤキャラクタにパンチアクションを行わせる操作入力がプレイヤによって行われた場合、ゲームシステム1は、プレイヤキャラクタに前方に向かってパンチを出すアクションを行わせ、コリジョン判定を行う。そして、パンチアクションを行うプレイヤキャラクタと地形オブジェクトとのコリジョンが判定された場合、プレイヤキャラクタの位置および向きに基づいて更新範囲254を生成する。例えば、更新範囲254は、プレイヤキャラクタを基準とした所定方向(例えば、前方)に生成される。なお、パンチアクションによる更新範囲254の位置、形状、および大きさは、引き抜きアクションによる更新範囲253と同じであってもよいし、異なっていてもよい。そして、ゲームシステム1は、更新範囲254に対応するボクセルの密度を減少させる。これによって、引き抜きアクションと同様にパンチアクションによっても、地形オブジェクト202は、更新範囲254内の部分が消去されるように変形される(
図24の(b)参照)。なお、パンチアクションについても引き抜きアクションと同様、ゲームシステム1は、更新範囲254に対応するボクセルオブジェクトを無条件に変形することに代えて、更新範囲254内のボクセルに設定されるダメージの量をパンチアクションに応じて増加させ、ダメージの量が所定値を超えたことに応じて当該ボクセルにおける密度を減少させるようにしてもよい。また、パンチアクションによって密度を減少させる対象となるボクセルは、更新範囲254に対応するボクセルのうち少なくとも一部のボクセルであってもよい。
【0146】
また、ゲームシステム1は、地形オブジェクト202のうちで消去された部分に対応する破片オブジェクト255を生成する。すなわち、ゲームシステム1は、上記パンチアクションに基づいて、破片オブジェクト255をプレイヤキャラクタに持たせていない状態で(例えば、パンチアクションが行われた位置の周囲に配置された状態で)生成させる。破片オブジェクト255は、地形オブジェクト202のうちで消去された部分に応じた形状となるように生成されてもよいし、予め定められた形状であってもよい。破片オブジェクト255は、ボクセルオブジェクトであってもよいし、ボクセルオブジェクトでなくてもよい。
【0147】
ゲームシステム1は、上記破片オブジェクト255のマテリアルを決定する。破片オブジェクト255のマテリアルは、地形オブジェクト202の判定用メッシュのうち、更新範囲254と接触する判定用メッシュ内のポリゴンに設定されるマテリアルに基づいて決定される。破片オブジェクト255のマテリアルは、更新範囲254と接触する判定用メッシュ内のポリゴンに設定されるマテリアルのいずれか1つと同じになるように決定される。これによれば、破片オブジェクト255のマテリアルを、地形オブジェクトのうち消去された部分のマテリアルと同じにすることができる。また、地形オブジェクトの一部の消去とともに破片オブジェクト255が生成され、地形オブジェクトの消去された部分のマテリアルが破片オブジェクト255に引き継がれることで、プレイヤキャラクタによるパンチアクションによって破壊された地形オブジェクトの一部が破片オブジェクトとして発生したような印象をプレイヤに与えることができる。
【0148】
本実施形態においては、破片オブジェクト255のマテリアルは、更新範囲254と接触する判定用メッシュ内のポリゴンに設定されるマテリアルのうち、ボクセルにおける密度が減少した度合いが最も大きいマテリアルに決定される。これによれば、地形オブジェクトのうちでパンチアクションによって消去された部分のマテリアル構成をより正確に反映した破片オブジェクトを生成することができる。
【0149】
なお、上記の引き抜きアクションまたはパンチアクションによって生成される破片オブジェクトのマテリアルを決定する方法は任意である。例えば、破片オブジェクトのマテリアルを決定する方法は、引き抜きアクションとパンチアクションとで同じであってもよい。また例えば、更新範囲内の判定用メッシュの各ポリゴンのうちに設定されるマテリアルのうち、最も多くのポリゴンに設定されるマテリアルが、破片オブジェクトのマテリアルとして決定されてもよい。また例えば、更新範囲内の判定用メッシュの各ポリゴンのうち、所定の条件を満たすポリゴン(例えば、引き抜きアクションまたはパンチアクションを行うプレイヤキャラクタの手に接触する位置のポリゴン)に設定されるマテリアルが、破片オブジェクトのマテリアルとして決定されてもよい。また、他の実施形態においては、破片オブジェクトには複数種類のマテリアルが設定されてもよい。
【0150】
本実施形態においては、プレイヤは、上記のようにして生成される破片オブジェクト252または255を投げるアクション(以下、「投げアクション」と呼ぶ)をプレイヤキャラクタに行わせることができる。なお、プレイヤは、所定の操作入力によって、パンチアクションに応じて生成されて地面に配置されている破片オブジェクトを持つアクションをプレイヤキャラクタに行わせることができる。上記引き抜きアクションによって、または、上記パンチアクション後の破片オブジェクトを持つアクションによって、プレイヤキャラクタが破片オブジェクトを持っている状態となる。この状態において、ゲームシステム1は、プレイヤによる操作入力に応じた投げアクションとして、プレイヤキャラクタに、持っている破片オブジェクトを所定方向に放つアクションを行わせる。
【0151】
図25は、プレイヤキャラクタによる投げアクションが可能な状態で、投げるための構えをした状態で投げる方向を決定する場面におけるゲーム画像の一例を示す図である。
図25に示すようにプレイヤキャラクタ201が破片オブジェクト261を持った状態において、プレイヤキャラクタ201は投げアクションを行うことができる。この状態においては、
図25に示すように、ゲームシステム1は、ゲーム内の作用を発生させる処理として、ゲーム空間を示す画像に重ねて、照準画像262およびオブジェクト情報画像263を表示する。
【0152】
照準画像262は、投げアクションによって破片オブジェクトが放たれる方向(エイム方向とも言う)を示す。すなわち、投げアクションを行うための操作入力をプレイヤが行ったことに応じて、ゲームシステム1は、プレイヤキャラクタ201の位置から照準画像262が示すゲーム空間内の位置に向かって破片オブジェクト261を移動させる。なお、エイム方向は、プレイヤによる操作入力に基づいて制御される。例えば、ゲームシステム1は、仮想カメラの向きを変更する操作入力に応じてエイム方向を変更してもよい。具体的には、ゲームシステム1は、プレイヤキャラクタを視野範囲に含む状態を維持しつつプレイヤキャラクタの周りを回転移動するように操作入力に応じて仮想カメラを制御し、仮想カメラの視線方向に応じた方向となるようにエイム方向を制御してもよい。このとき、プレイヤキャラクタの位置からエイム方向に延びる直線と地形オブジェクト264とが交差する位置を指し示す照準画像262が表示される。具体的には、ゲームシステム1は、エイム方向(すなわち、エイム方向に延びる上記直線)と、地形オブジェクト264の判定用メッシュとのコリジョン判定を行い、コリジョンが判定される場合、照準画像262を表示する。照準画像262は、判定用メッシュのうち、エイム方向に延びる上記直線と交差するポリゴンの位置を指し示すように配置される。
【0153】
上記の照準画像262によって、プレイヤキャラクタに投げアクションを行わせた場合に破片オブジェクトがボクセルオブジェクトに接触する位置をプレイヤに提示することができる。これによって、投げアクションの操作をプレイヤにとって行いやすくすることができる。なお、エイム方向および照準画像262の具体的な制御方法は任意であり、従来における方法が用いられてもよい。例えば、他の実施形態においては、照準画像262が表示される状態においては、プレイヤキャラクタが表示されない一人称視点のゲーム画像において照準画像262が表示されてもよい。
【0154】
プレイヤキャラクタが破片オブジェクトを投げる構えをした状態で、プレイヤによる所定の操作入力に応じて、上記エイム方向へ破片オブジェクトを投げる投げアクションが行われる。
【0155】
オブジェクト情報画像263は、照準画像262が指し示す位置における地形オブジェクト264に関する情報を示す。本実施形態においては、オブジェクト情報画像263は、照準画像262が指し示す位置における判定用メッシュのポリゴンに設定されるマテリアルの名称(
図25に示す例においては、岩)を示す。これによって、投げアクションによって放たれた破片オブジェクトが接触するボクセルオブジェクトのマテリアルをプレイヤに提示することができる。また、オブジェクト情報画像263は、当該マテリアルの性質に関する情報(ここでは、硬さ)を示す。これによって、投げアクションによって放たれた破片オブジェクトが接触するボクセルオブジェクトの性質をプレイヤに提示することができる。なお、オブジェクト情報画像263が示す内容は任意である。例えば、他の実施形態においては、オブジェクト情報画像263は、照準画像262が指し示す位置におけるポリゴンに設定されるマテリアルに関する任意の性質を示すものでもよいし、当該ポリゴンの状態(例えば、上述のダメージの量)を示すものでもよい。本実施形態においては、判定用メッシュのポリゴンのマテリアルは1種類なので、照準位置に対応するマテリアルは1つに特定される。したがって、マテリアルに関する情報を表示するのに適している。
【0156】
本実施形態においては、投げアクションによって放たれた破片オブジェクトが、コリジョン判定の結果、ボクセルオブジェクトに接触したと判定されたことに応じて、ゲームシステム1は、ゲーム内の作用として、当該ボクセルオブジェクトに変更を加える。
図26は、
図25に示す地形オブジェクト264に対して破片オブジェクト261が接触したことによって地形オブジェクト264に変更が加えられた後のゲーム画像の一例を示す図である。
図26に示す例においては、破片オブジェクトと地形オブジェクト264との接触位置に当該破片オブジェクトが付けられたような形状となるように、地形オブジェクト264が変形される。具体的には、ゲームシステム1は、上記接触位置を含むように更新範囲を生成し、当該更新範囲におけるボクセルの密度を増加させることで、上記の形状となるように地形オブジェクト264を変形させる。例えば、上記更新範囲は、破片オブジェクトの形状に対応する形状に設定され、更新範囲内が地形オブジェクト264内となるように地形オブジェクト264が変形されてもよい。以上によって、
図26に示す例においては、変形前の地形オブジェクトに対して追加部分265が加えられた形状となる。なお、
図26に示す例においては、破片オブジェクトは、地形オブジェクト264に接触したことに応じて消去される。
【0157】
また、上記追加部分265におけるポリゴンのマテリアルは、地形オブジェクト264に接触した破片オブジェクトのマテリアルに基づいて決定される。具体的には、ゲームシステム1は、上記更新範囲内のボクセルに対し、当該ボクセルのマテリアルを当該破片オブジェクトのマテリアルとなるように設定する。そして、ボクセルのマテリアルに基づいて表示用メッシュと判定用メッシュのマテリアルが決定される。これによれば、付けられた追加部分265の見た目を破片オブジェクトの見た目と同じにできるので、(実際には、上記のように地形オブジェクト264に変形が加えられたのであるが)破片オブジェクトが地形オブジェクト264に付いたような印象をプレイヤにより与えやすくなる。
【0158】
図26に示す例においては、破片オブジェクトがボクセルオブジェクトに接触したことに応じてボクセルオブジェクトに加えられる変更は、ボクセルオブジェクトに追加部分を加える変形であったが、ボクセルオブジェクトに加えられる変更はこれに限らない。上記の変更は、ボクセルの密度を変更させるものであってもよいし、マテリアルを変更させるものであってもよい。例えば、破片オブジェクトが爆発する性質を有する場合、破片オブジェクトはボクセルオブジェクトに接触したことに応じて爆発してもよく、このとき、ボクセルオブジェクトの一部が消去されたように当該ボクセルオブジェクトを変形させてもよい。具体的には、ゲームシステム1は、接触位置を含むように更新範囲を設定し、当該更新範囲内のボクセルの密度を減少させる。また例えば、ボクセルオブジェクトのマテリアルが溶岩であり、破片オブジェクトのマテリアルが氷である場合、破片オブジェクトが接触したことに応じてボクセルオブジェクトのマテリアルが変更されてもよい。具体的には、ゲームシステム1は、接触位置を含む更新範囲を設定し、当該更新範囲内のボクセルのマテリアルのうち、溶岩となっているマテリアルを黒曜石や岩に変更してもよい。これによれば、溶岩のオブジェクトが氷のオブジェクトによって冷やされて黒曜石や岩になる状況を表現することができる。
【0159】
上記の変更の内容は、ボクセルオブジェクトのマテリアルに基づいて、破片オブジェクトのマテリアルに基づいて、あるいは、ボクセルオブジェクトのマテリアルと破片オブジェクトのマテリアルとの組み合わせに基づいて、決定されてもよい。これによれば、ボクセルオブジェクトに対して種々の変化を生じさせることができる。
【0160】
また、ゲームシステム1は、上記の変更を行うか否かを、ボクセルオブジェクトのマテリアルに基づいて、破片オブジェクトのマテリアルに基づいて、あるいは、ボクセルオブジェクトのマテリアルと破片オブジェクトのマテリアルとの組み合わせに基づいて決定してもよい。例えば、ゲームシステム1は、マテリアルが岩であるボクセルオブジェクトに対して、マテリアルが岩である破片オブジェクトが接触する場合には、
図26に示したような変更を行う一方、マテリアルが鉄であるボクセルオブジェクトに対して、マテリアルが岩である破片オブジェクトが接触する場合には、
図26に示したような変更を行わなくてもよい。
【0161】
なお、本実施形態においては、上述のように判定用メッシュのポリゴンおよび破片オブジェクトについては1種類のマテリアルが設定される。ここで、仮に判定用メッシュのポリゴンおよび破片オブジェクトの少なくともいずれかについて複数種類のマテリアルが設定されるとすれば、判定用メッシュと破片オブジェクトとが接触した場合に両者のマテリアルの種類に応じてボクセルオブジェクトに加えられる変更の内容を決定することが難しくなる。これに対して、本実施形態においては、コリジョン判定によって接触していると判定された判定用メッシュと破片オブジェクトとのマテリアルはそれぞれ1種類であるので、ボクセルオブジェクトに加えられる変更の内容を決定することが容易になる。
【0162】
[2-7.ボクセルオブジェクトの変形に応じた交点情報に関する処理]
次に、
図27~
図37を参照して、ボクセルオブジェクトが変形される際に、ボクセルに設定される交点情報に関して実行される処理について説明する。
【0163】
[2-7-1.交点情報を削除する例]
図27は、地形オブジェクトに交点情報が設定される場合におけるゲーム画像の一例を示す図である。
図27においては、ボクセルオブジェクトである地形オブジェクト271が、崖を形成するような形状である。このような形状とするべく、
図27に示す例においては、地形オブジェクト271のメッシュが生成されるボクセルには交点情報が設定される。なお、
図27においては、地形オブジェクト271に設定される交点情報を表すベクトルの一例として、上方向を向く2つのベクトル272と、水平方向を向く2つのベクトル273を示しているが、実際には、より多くの交点情報が設定されてよい。なお、各ベクトル272および273は、ゲーム画像において実際には表示されない。
【0164】
図27に示す例においては、地形オブジェクト271のうちで上側を向く面となるメッシュが生成される位置のボクセルに、上方向を法線方向とするベクトル272として表される交点情報が設定される。また、地形オブジェクト271のうちで水平方向に平行な所定方向を向く面となるメッシュが生成される位置のボクセルに、当該所定方向を法線方向とするベクトル273として表される交点情報が設定される。なお、上側を向く面となるメッシュが生成される位置のボクセルとは、密度が上記基準値以上に設定され、かつ、上側で隣接するボクセルの密度が基準値未満であるボクセルである。また、所定方向を向く面となるメッシュが生成される位置のボクセルとは、密度が上記基準値以上に設定され、かつ、当該所定方向の側で隣接するボクセルの密度が基準値未満であるボクセルである。上記の交点情報によって、地形オブジェクト271のメッシュは、上側を向く面と所定方向側を向く面が垂直に接する形状となるように生成される。なお、ボクセルに交点情報が設定されない場合には、上記のように崖際において2つの面が垂直に接するような形状のメッシュを生成することが難しいが、交点情報が設定されることで、地形オブジェクト271における崖際の角度を、直角またはそれに近い角度にすることができる。
【0165】
図28は、
図27に示す状況において地形オブジェクト271に変形が加えられる前後におけるゲーム画像の例を示す図である。
図28に示す(a)の状況は、地形オブジェクト271のうちの交点情報が設定される位置の近くにおいてプレイヤキャラクタ201がパンチアクションを行った状況である。
図28に示す(b)の状況は、プレイヤキャラクタ201がパンチアクションによって地形オブジェクト271の一部が消失するように変形された後の状況である。
図28に示すように、地形オブジェクト271に対してパンチアクションが行われると、上述の
図24に示す例と同様に、地形オブジェクト271のボクセルの密度が減少されることで、地形オブジェクト271は、一部が消去されたように変形する。具体的には、ゲームシステム1は、パンチアクションに基づいて更新範囲を設定し、更新範囲内のボクセルの密度を減少させることで地形オブジェクト271のメッシュを変形させる。
【0166】
また、本実施形態においては、ゲームシステム1は、ボクセルオブジェクトの変形が行われる場合、交点情報を削除する削除範囲を設定する。なお、本実施形態においては、削除範囲283も更新範囲282と同様、SDFによって表される。
図29は、地形オブジェクトに設定される更新範囲と削除範囲の一例を示す図である。
図29に示すように、更新範囲282は、例えば、パンチアクションに基づく位置281を含むように設定される。本実施形態においては、削除範囲283も更新範囲282と同様、パンチアクションに基づく位置281を含むように設定される。削除範囲283の具体的な決定方法は任意である。例えば、削除範囲281は、パンチアクションが行われた位置に基づいて決定されてもよいし、当該位置に基づく更新範囲282に基づいて決定されてもよい。本実施形態においては、削除範囲283は、更新範囲282を内包するように設定される。具体的には、ゲームシステム1は、更新範囲282を拡大することで削除範囲283を決定する。これによれば、更新範囲282を内包する削除範囲283を容易に生成することができる。また、本実施形態においては、削除範囲283の中心位置は更新範囲282の中心位置と同じ位置に設定される。ただし、削除範囲283は、更新範囲282を内包する任意の位置に設定されてよい。なお、
図29に示す例においては、削除範囲283は、更新範囲282よりも大きいものとするが、他の例においては、削除範囲283は、更新範囲282と同じであってもよい。また、
図29に示す例においては、更新範囲282および削除範囲283は球形であるが、任意の形状であってよい。他の実施形態においては、更新範囲282と削除範囲283は相似形でなくてもよい。
【0167】
ゲームシステム1は、上記のようにして設定された削除範囲内のボクセルに設定される交点情報を削除する(
図28および
図29参照)。そして、地形オブジェクト271の変形後におけるメッシュを生成する際には、交点情報に基づかずにボクセルの密度に基づいて頂点を設定し、当該頂点に基づいてメッシュを生成する。なお、頂点に基づいてメッシュを生成する方法は、上記[2-4.頂点の簡略化]および[2-5.メッシュの生成]で述べた方法と同様である。したがって、
図28の(b)に示す状況においては、地形オブジェクト271のメッシュのうちで一部が消去されるように変形する部分のメッシュについては、変形前において設定されていた交点情報に基づかずにメッシュの形状が規定される。
【0168】
上記のように、本実施形態においては、削除範囲内の交点情報が削除されるので、上記アクションに応じた変形後のメッシュを生成する際には交点情報を用いることなく計算が行われるので、ゲームシステム1における処理負荷の増加を抑えることができる。また、メッシュの生成に用いられるメモリ量を抑えることができる。また、
図28に示す例においては、地形オブジェクト271の変形後のメッシュは、交点情報が用いられないことによって、メッシュにおける頂点が尖った形状とはなりにくい。そのため、変形後における地形オブジェクト271の形状を、パンチアクションによって破壊された後の形状としてより自然な形状とすることができる。
【0169】
なお、上記の交点情報の削除とは、頂点の設定(メッシュの生成とも言える)に用いられるデータにおいて交点情報を削除する意味であって、ゲームシステム1自体は、頂点の設定に用いられるデータとは別のデータとして交点情報のデータを記憶していてもよい意味である。例えば、ゲームにおいて所定の条件が満たされた場合において、ゲーム空間に配置される地形オブジェクト等のボクセルオブジェクトが初期形状にリセットされてもよく、この場合、記憶されている交点情報のデータを用いて初期形状のメッシュが生成されてよい。
【0170】
上記のように
図28に示す例においては、地形オブジェクト271の内部領域の体積が減少するような変形が行われる場合について説明した。なお、例えば
図26に示すように、地形オブジェクト271の内部領域の体積が増加するような変形が行われる場合も、ゲームシステム1は、削除範囲を設定し、当該削除範囲内のボクセルに設定される交点情報を削除してもよい。
【0171】
[2-7-2.交点情報を保持する例]
なお、本実施形態においては、一定条件下においては、ボクセルオブジェクトが変形される際に交点情報が保持されることがあってもよい。以下、交点情報が保持される例について説明する。
【0172】
本実施形態においては、2つのボクセルオブジェクトに対応関係が設定され、一方のボクセルオブジェクトの変形に応じて他方のボクセルオブジェクトが変形する。例えば、ゲームシステム1は、2つのボクセルオブジェクトが相互に補完的な形状となるように各ボクセルオブジェクトのメッシュを生成する。このとき、当該ボクセルオブジェクトに関する交点情報は、当該ボクセルオブジェクトの変形に応じて削除されることなく保持されてもよい。
【0173】
以下、
図30~
図35を参照して、対応関係が設定される2つのボクセルオブジェクトの形状を変更する処理について説明する。なお、以下においては、対応関係が設定される2つのボクセルオブジェクトの一方を「第1対応オブジェクト」と記載し、他方を「第2対応オブジェクト」と記載する。また、第1対応オブジェクトと第2対応オブジェクトの総称として「対応オブジェクト」と記載することがある。
【0174】
図30は、第1対応オブジェクトが配置されているゲーム空間を表すゲーム画像の一例を示す図である。
図30に示す例においては、3つの第1対応オブジェクト291~293がゲーム空間に配置されている。各第1対応オブジェクト291~293には、それぞれに対応する第2対応オブジェクト(
図32に示すオブジェクト301~303)が設定されているものとする。なお、
図30に示す状況では、第2対応オブジェクトは、各ボクセルの密度が0であって、存在していないため表示されていない。
【0175】
なお、本実施形態においては、各対応オブジェクトは、それぞれ異なるボクセル空間に対応するボクセルオブジェクトである。つまり、対応オブジェクト毎に異なるボクセル空間が設定される。なお、他の実施形態においては、複数の対応オブジェクトに関するボクセル空間が共通であってもよい。
図30に示す例においては、対応オブジェクトのボクセル空間は、上述の副ボクセル空間であり、直方体の空間であるとする。
図30に示す例においては、第1対応オブジェクト291~293はそれぞれ、内部領域の体積が最大となる形状(以下、「最大形状」と呼ぶ。)、つまり、当該第1対応オブジェクトの表面および内部領域がボクセル空間の全体を占める状態である。このときの第1対応オブジェクト291~293の各ボクセルの密度は、上限値(具体的には、255)となる。
【0176】
図30に示す例においては、プレイヤキャラクタ201が第1対応オブジェクト292に対してパンチアクションを行っている。
図31は、
図30に示す状況からパンチアクションが行われた後の状況を表すゲーム画像の一例を示す図である。第1対応オブジェクト292に対してパンチアクションが行われると、上述の
図24に示す例と同様に、第1対応オブジェクト292のボクセルの密度が減少されることで、第1対応オブジェクト292は、一部(全部でもよい)が消去されたように変形する(
図31参照)。
【0177】
本実施形態においては、上記のように第1対応オブジェクト292が変形した場合、ゲームシステム1は、第1対応オブジェクト292に対応する第2対応オブジェクト302についても変形を行う。具体的には、ゲームシステム1は、第1対応オブジェクト292のボクセルの密度が減少された場合、第2対応オブジェクト302のボクセルの密度を増加させる。これによって、
図31に示すように、第2対応オブジェクト302は、自身の内側領域の体積が増加するように変形する。なお、
図30および
図31に示す例では、第2対応オブジェクト302が存在しない状態から、第2対応オブジェクト302が存在する状態となる。詳細は後述するが、本実施形態においては、第2対応オブジェクト302の追加部分の形状は、第1対応オブジェクト292の消失部分の形状と同じ形状となる。
【0178】
図32は、
図31に示す状況から、さらに各第1対応オブジェクト291~293に対してパンチアクションが行われた状況を表すゲーム画像の一例を示す図である。
図32に示す例においては、プレイヤキャラクタ201によるパンチアクションに応じて、第1対応オブジェクト291~293のそれぞれが、一部が消失するように変形されている。このとき、各第1対応オブジェクト291~293の変形に応じて、第2対応オブジェクト301~303は、第1対応オブジェクト291~293の消失した部分が第2対応オブジェクト301~303に追加されたような形状となるように変形される。なお、第1対応オブジェクトが小さくなっており、パンチアクションに基づく更新範囲内に第1対応オブジェクトの全体が含まれる場合には、プレイヤキャラクタ201によるパンチアクションに応じて当該第1対応オブジェクトの全部が消失する。このとき、第2対応オブジェクトは上記の最大形状となるように変形される。
【0179】
図33は、
図32に示す状況において、第2対応オブジェクト302に対してパンチアクションが行われた状況を表すゲーム画像の一例を示す図である。本実施形態においては、ゲームシステム1は、第2対応オブジェクト302に対してパンチアクションが行われた場合も、第1対応オブジェクトに対する場合と同様、第2対応オブジェクト302の一部が消失したように第2対応オブジェクト302を変形させる。このとき、第2対応オブジェクト302に対応する第1対応オブジェクト292が変形される。具体的には、第1対応オブジェクト292は、第2対応オブジェクト302の消失した部分が第1対応オブジェクト292に追加されたような形状となるように変形される(
図33参照)。上記のように、本実施形態においては、第2対応オブジェクトが変形された場合も、第1対応オブジェクトが変形された場合と同様に、それに対応する対応オブジェクトが変形される。
【0180】
上記のように、本実施形態においては、1つの対応オブジェクトが変形されることで、対応する他の対応オブジェクトに対しても変形が行われる。これによって、例えば、或る対応オブジェクトを小さくすることで、他の位置にある対応オブジェクトを大きくして、足場を作ったり、あるいは、敵に対する防壁としたりすることができるので、ゲームの戦略性を向上することができる。なお、
図30に示す例においては、対応オブジェクトは、プレイヤキャラクタの足場として利用されるオブジェクトであるが、対応オブジェクトはゲーム内において任意の用途で用いられるものであってよい。
【0181】
なお、本実施形態においては、対応オブジェクト291~293,301~303が配置される位置を示す画像の一例として、枠画像294~296,304~306がそれぞれ表示される(
図30~
図32参照)。そのため、例えば
図30における第2対応オブジェクトのように、対応オブジェクトが存在しない場合でも、当該対応オブジェクトが配置される位置を枠画像によってユーザに通知することができる。また、本実施形態においては、枠画像は、対応オブジェクトが最大形状となった場合における当該対応オブジェクトの外形を示す。そのため、本実施形態においては、枠画像によって、対応オブジェクトの位置に加えて、対応オブジェクトが配置され得る範囲もユーザに通知することができる。なお、他の実施形態においては、オブジェクトが配置される位置を示す画像の態様は任意である。例えば、上記画像は、当該オブジェクトの中心位置を示す画像であってもよい。また他の実施形態においては、上記画像は表示されなくてもよい。
【0182】
次に、対応オブジェクトの変形に応じて、それに対応する対応オブジェクトを変形すべく密度を更新する処理について説明する。まず、ゲームシステム1は、第1対応オブジェクトと第2対応オブジェクトとの対応関係を示す対応情報を記憶しておく。例えば、ゲームシステム1は、第1対応オブジェクトに関するボクセルデータと、第2対応オブジェクトに関するボクセルデータとを関連付ける情報を対応情報として記憶する。なお、対応情報の形式は任意である。例えば、他の実施形態においては、ボクセルデータが、対応情報として、当該ボクセルオブジェクトに対応するボクセルオブジェクト(またはボクセルデータ)を示す情報を含んでもよい。ボクセルオブジェクトを変形させるアクションによって対応オブジェクトが変形された場合、ゲームシステム1は、上記対応情報を参照して、当該対応オブジェクトに対応する対応オブジェクトを特定する。
【0183】
図34は、第1対応オブジェクトおよび第2対応オブジェクトの各ボクセルに設定される密度の値の一例を示す図である。なお、
図34においては、図面を見やすくし、説明を分かりやすくする目的で、2次元のボクセル空間において2次元的に配置されるボクセルを表しているが、実際には、ボクセルは3次元のボクセル空間において3次元的に配置される。なお、
図34において、1つの四角形が1つのボクセルを表し、四角形内の数値は、ボクセルに設定される密度を示す。
図34に示す例においては、変形前における第1対応オブジェクトの各ボクセルの密度は上限値(ここでは、255)に設定されており、このときの第2対応オブジェクトの各ボクセルの密度は下限値(ここでは、0)に設定されているものとする。つまり、
図34における変形前の状況は、
図30に示す状況のように、第1対応オブジェクトが最大形状となり、第2対応オブジェクトが存在しない状況である。
【0184】
第1対応オブジェクトを変形するためのアクションがプレイヤキャラクタ等によって行われた場合、当該アクションに基づいて更新範囲311が設定され、更新範囲311内のボクセルについて密度が減少するように更新される。
図34に示す例においては、第1対応オブジェクトの各ボクセルのうち右下の4つのボクセルが更新範囲311内となり、これら4つのボクセルの密度が、それぞれ、150、100、100、0に更新される。更新後の密度に基づいてメッシュが生成されることで、第1対応オブジェクトが変形される。
【0185】
上記のように第1対応オブジェクトが変形された場合、ゲームシステム1は、第2対応オブジェクトに更新範囲312を設定する。第2対応オブジェクトに関する更新範囲312は、第1対応オブジェクトに関する更新範囲311と同じになるように設定される。具体的には、第2対応オブジェクトに関するボクセル空間と更新範囲312との位置関係が、第1対応オブジェクトに関するボクセル空間と更新範囲311との位置関係と同じになるように、更新範囲312が設定される。
【0186】
ゲームシステム1は、更新範囲312内のボクセルについて密度を更新する。本実施形態においては、更新範囲312内のボクセルの密度は、更新範囲311内のボクセルの密度が減少されたことに応じて増加される。ここで、本実施形態においては、第1対応オブジェクトの各ボクセルは、それぞれ、第2対応オブジェクトの各ボクセルと対応付けられる。具体的には、ボクセルには、ボクセル空間における当該ボクセルの位置に応じた識別番号が付されており、第1対応オブジェクトのボクセルと、当該ボクセルに対応する、第2対応オブジェクトのボクセルには、同じ番号が付される。ゲームシステム1は、上記の識別番号を参照することで、第1対応オブジェクトのボクセルに対応する、第2対応オブジェクトのボクセルを特定できる。なお、第1対応オブジェクトのボクセルと第2対応オブジェクトのボクセルを対応付ける具体的な方法は任意である。例えば、他の実施形態においては、ボクセルデータが、当該ボクセルオブジェクトに対応する他のボクセルオブジェクトのボクセルのうちで、当該ボクセルに対応するボクセルを示す情報を含んでいてもよい。
【0187】
本実施形態においては、ゲームシステム1は、第2対応オブジェクトの更新範囲312内のボクセルについて、当該ボクセルに対応するボクセル(第1対応オブジェクトの更新範囲311内のボクセル)の密度の減少量に応じた量だけ密度を増加させる。例えば
図34に示す例においては、更新範囲311内のボクセルのうちで右下のボクセルについては密度が255から0に減少されているので、当該ボクセルに対応するボクセルについては、密度が0から255に増加される。このように、本実施形態においては、ゲームシステム1は、第1対応オブジェクトのボクセルの密度の減少量と同じ増加量で、第2対応オブジェクトに関するボクセルの密度を増加させる。これによって、第1対応オブジェクトが減少した分だけ第2対応オブジェクトを追加することができる。
【0188】
本実施形態においては、第2対応オブジェクトのボクセルの密度は、当該密度と、当該ボクセルに対応する、第1対応オブジェクトのボクセルの密度との合計が、密度の上限値(ここでは、255)となるように算出される。例えば
図34に示す例においては、変形後において更新範囲311内の各ボクセルの密度は、155、100、100、0となっており、それらの各ボクセルに対応する、更新範囲312内の各ボクセルの密度は、100、155、155、255となっている。これによれば、第1対応オブジェクトの形状と第2対応オブジェクトの形状を、相互に補完的な形状となるようにすることができる。例えば
図30~
図33に示す例においては、第1対応オブジェクトと第2対応オブジェクトとを合わせると1つの直方体となるように、第1対応オブジェクトおよび第2対応オブジェクトの形状が設定される。これによって、第1対応オブジェクトと第2対応オブジェクトとの対応関係をプレイヤにとってわかりやすくすることができる。例えば、
図30に示すように複数の第1対応オブジェクトが配置される場合であっても、或る第1対応オブジェクトに対してどの第2対応オブジェクトが対応するのかがプレイヤにとってわかりやすくなる。なお、他の実施形態においては、第1対応オブジェクトのボクセルの密度と、当該ボクセルに対応する、第2対応オブジェクトのボクセルの密度との合計は、密度の上限値とならなくてもよい。
【0189】
なお、本実施形態においては、第1対応オブジェクトと第2対応オブジェクトは相互に補完的な形状となるが、これは、第1対応オブジェクトと第2対応オブジェクトを合わせた形状が厳密に一定の形状となることを要件とする意味ではない。例えば、本実施形態のように、ボクセルに設定される密度に基づいてボクセルオブジェクトのメッシュが生成される場合には、第1対応オブジェクトのメッシュの面と、第2対応オブジェクトのメッシュの面とが(概ね合致するものの)厳密には合致しないこともあり得る。第1対応オブジェクトのメッシュの面と第2対応オブジェクトのメッシュの面とが厳密には合致しない場合も、第1対応オブジェクトと第2対応オブジェクトは相互に補完的な形状であると言うことができる。
【0190】
なお、第2対応オブジェクトの変形に応じて第1対応オブジェクトを変形させるための処理は、第1対応オブジェクトの変形に応じて第2対応オブジェクトを変形させるための処理と同様である。具体的には、ゲームシステム1は、第2対応オブジェクトを変形させるアクションに基づいて設定される更新範囲に対応する更新範囲を第1対応オブジェクトのボクセル空間に設定し、更新範囲内のボクセルの密度を、当該ボクセルに対応するボクセル(第2対応オブジェクトのボクセル)の密度の減少量だけ増加させる。これによって、本実施形態においては、対応関係が設定される2つのボクセルオブジェクトについて、一方のボクセルオブジェクトの変形が他方のボクセルオブジェクトに影響を与える処理を双方向に行うことができる。
【0191】
なお、本実施形態においては、対応オブジェクトのボクセルの密度が増加する変形がプレイヤキャラクタによるアクションによって行われてもよい。対応オブジェクトについてボクセルの密度が増加される場合、ゲームシステム1は、当該対応オブジェクトに対応する対応オブジェクトのボクセルの密度を減少させる。この場合における密度の算出方法は、
図34に示した方法と同様、第1対応オブジェクトのボクセルの密度と、それに対応する第2対応オブジェクトのボクセルの密度との合計が、密度の上限値となるように算出される方法である。これによって、アクションによって対応オブジェクトのボクセルの密度が増加する変形が行われる場合も、対応する2つの対応オブジェクトを相互に補完的な形状にすることができる。
【0192】
なお、対応オブジェクトを変形させるアクションに基づく更新範囲が複数の対応オブジェクトに跨る場合もある。この場合、本実施形態においては、ゲームシステム1は複数の対応オブジェクトについて変形を行い、当該変形に応じて、当該複数の対応オブジェクトに対応するそれぞれの対応オブジェクトについて変形を行う。例えば、上記アクションに基づく更新範囲が複数の第1対応オブジェクトに跨る場合は、複数の第1対応オブジェクトの変形が行われ、当該変形に応じて複数の第2対応オブジェクトが変形される。また例えば、上記アクションに基づく更新範囲が第1対応オブジェクトおよび第2対応オブジェクトに跨る場合は、これらの対応オブジェクトの変形が行われ、当該変形に応じて、これらの対応オブジェクトにそれぞれ対応する第2対応オブジェクトおよび第1対応オブジェクトがそれぞれ変形される。上記の場合、ゲームシステム1は、上述した方法によってボクセルの密度を更新する処理を対応オブジェクト毎に実行する。
【0193】
本実施形態においては、第1対応オブジェクトと第2対応オブジェクトについて、ボクセル空間におけるボクセルの数および大きさは同じであるとする。そのため、第1対応オブジェクトの各ボクセルと第2対応オブジェクトの各ボクセルは1対1に対応する。なお、他の実施形態においては、第1対応オブジェクトのボクセルの数および大きさと、第2対応オブジェクトのボクセルの数および大きさは、異なっていてもよい。
【0194】
第1対応オブジェクトと第2対応オブジェクトについてボクセルの数が同じで大きさが異なる場合も、本実施形態と同様にして、第1対応オブジェクトの変形に応じて第2対応オブジェクトのボクセルの密度を更新することで、第1対応オブジェクトの変形に応じて第2対応オブジェクトを変形させることができる。なお、この場合、最大形状となるときの第1対応オブジェクトの大きさと第2対応オブジェクトの大きさは、異なる大きさとなる。
【0195】
また、第1対応オブジェクトと第2対応オブジェクトでボクセルの数が異なる場合には、第1対応オブジェクトの各ボクセルと第2対応オブジェクトの各ボクセルとの対応関係を次のように設定してもよい。例えば、第1対応オブジェクトのボクセルの数が、第2対応オブジェクトのボクセルの数よりも少ないとした場合、第1対応オブジェクトの各ボクセルを、第2対応オブジェクトの各ボクセルのうちいくつかのボクセルに対応付け、第2対応オブジェクトのボクセルのいくつかは第1対応オブジェクトのボクセルに対応付けられないようにしてもよい。上記の場合、第2対応オブジェクトが変形されたことに応じて第1対応オブジェクトを変形させる際には、ゲームシステム1は、例えば、第1対応オブジェクトのボクセルの密度を、当該ボクセルに対応する第2対応オブジェクトのボクセルの密度に基づいて更新する。また、上記の場合、第1対応オブジェクトが変形されたことに応じて第2対応オブジェクトを変形させる際には、ゲームシステム1は、例えば、第2対応オブジェクトのボクセルのうち、第1対応オブジェクトのボクセルに対応付けられているボクセルについては、対応する第1対応オブジェクトのボクセルの密度に基づいて密度を更新し、第1対応オブジェクトのボクセルに対応付けられていないボクセルについては、第1対応オブジェクトのボクセルに対応付けられているボクセルの密度を用いた補間により密度を更新する。上記のように、第1対応オブジェクトと第2対応オブジェクトのボクセル数が異なる場合であっても、一方の対応オブジェクトの変形に応じて他方の対応オブジェクトを変形させることができる。
【0196】
また、他の実施形態においては、第1対応オブジェクトのボクセルの数が、第2対応オブジェクトのボクセルの数よりも少ないとした場合、第2対応オブジェクトの各ボクセルを、第1対応オブジェクトのボクセルのいずれかに対応付けるようにしてもよい。このとき、第2対応オブジェクトの複数のボクセルが、第1対応オブジェクトの1つのボクセルに対応付けられることとなる。このとき、第2対応オブジェクトの上記複数のボクセルについて密度が変更された際には、ゲームシステム1は、当該複数のボクセルの各密度に基づいて、当該複数のボクセルに対応する第1対応オブジェクトの1つのボクセルの密度を更新してもよい。例えば、当該複数のボクセルに対応する第1対応オブジェクトの1つのボクセルの密度は、当該複数のボクセルの各密度の減少量の平均値だけ増加するように、更新されてもよい。
【0197】
また、
図30~
図33に示す例においては、第1対応オブジェクトと第2対応オブジェクトのボクセル空間は共に直方体であり、ゲーム空間において各ボクセル空間が同じ向きに配置されるが、各ボクセル空間は同じ向きに配置されなくてもよい。例えば、一方のボクセル空間は縦長となる向きで配置され、他方のボクセル空間は横長となる向きで配置されてもよい。また例えば、一方のボクセル空間と他方のボクセル空間は、反転して配置されてもよく、例えば、一方のボクセルとそれに対応するボクセルとの関係が点対称または線対称となるように配置されてもよい。このとき、一方のボクセル空間に設定される更新範囲に対応する、他方のボクセル空間に設定される更新範囲は、当該他方のボクセル空間と更新範囲との位置関係が、当該一方のボクセル空間と更新範囲との位置関係を反転させた位置関係と同じになるように、設定される。
【0198】
第1対応オブジェクトおよび第2対応オブジェクトのボクセルのいくつかには上述の交点情報が設定される。
図35は、対応オブジェクトに設定される交点情報の一例を示す図である。
図35においては、対応オブジェクト320は、各ボクセルの密度が上限値となっており、最大形状となる。
図35に示す例では、交点情報は、最大形状となっている対応オブジェクト320のメッシュが生成される位置のボクセルに設定される。具体的には、最大形状となるときの対応オブジェクト320の角に対応する位置のボクセルについては、角を形成する3つの面にそれぞれ垂直な3つのベクトル321として表される各交点情報が設定される。最大形状となるときの対応オブジェクト320の辺に対応する位置のボクセルについては、辺を形成する2つの面にそれぞれ垂直な2つのベクトル322として表される各交点情報が設定される。最大形状となるときの対応オブジェクト320の面に対応する位置のボクセルについては、当該面に垂直なベクトル323として表される交点情報が設定される。なお、各ベクトル321~323は、ゲーム画像として実際には表示されるものではない。上記のように交点情報が設定されることで、対応オブジェクト320のメッシュを、
図35に示すような、より正確な直方体とすることができる。なお、
図35においては、対応オブジェクト320について設定される交点情報を表すベクトルの一部を示しており、実際には、より多くの交点情報が設定される。例えば、
図35においては、1つの辺または面について1つのベクトルのみを示しているが、実際には、1つの辺または面について複数の交点情報が設定されてよい。
【0199】
本実施形態においては、交点情報が設定される対応オブジェクトが、上述のパンチアクション等のアクションによって変形される場合、あるいは、それに対応する対応オブジェクトの変形に応じて変形される場合、交点情報は保持される。本実施形態においては、交点情報は、密度が基準値以上のボクセルと、密度が基準値未満のボクセルとの間に当該交点情報が設定される場合(例えば、
図16や
図17に示す場合)に、頂点の設定に用いられ、密度がともに基準値以上であるボクセル間、あるいは、密度がともに基準値未満であるボクセル間に当該交点情報が設定される場合は、頂点の設定に用いられない。したがって、交点情報が設定される位置とその周囲のボクセルの密度が0に更新された場合には、当該交点情報が用いられずに頂点の設定が行われるので、或るボクセルおよびその周囲のボクセルの密度が0であるにも関わらず当該ボクセルにメッシュの頂点が設定されることはない。
【0200】
また、交点情報が設定される位置とその周囲のボクセルの密度が0である状態から、当該対応オブジェクトの各ボクセルの密度が上限値となるように更新が行われた場合には、保持されていた交点情報に基づいて頂点が設定されてメッシュが生成される。したがって、本実施形態においては、対応オブジェクトは、その一部が消去されるような変形が一旦行われた後で、最大形状に戻るようにさらに変形が行われた場合においても、より正確な直方体となる形状に復元されることとなる。
【0201】
なお、他の実施形態においては、ゲームシステム1は、対応オブジェクトの変形の際に密度が減少された(より具体的には、密度が基準値未満の値に減少された)ボクセルに交点情報が設定されている場合、当該交点情報を削除してもよい。この場合、交点情報を削除する削除範囲は、例えば、ボクセルの密度を更新する更新範囲と同じ範囲であってよい。上記の場合、ゲームシステム1は、交点情報が削除された当該対応オブジェクトに対応する対応オブジェクトのボクセルであって、交点情報が削除されたボクセルに対応するボクセルについて、削除された交点情報と同じ交点情報を設定してもよい。これによれば、ボクセルの密度が減少された対応オブジェクトについては、頂点の設定に影響しない交点情報を削除することで、処理負荷の増加を抑えることができる。また、ボクセルの密度が増加される対応オブジェクトについては、対応する対応オブジェクトにおいて削除された交点情報と同じ交点情報に基づいて頂点が設定されるので、対応する対応オブジェクトの形状をより正確に再現するようにメッシュを生成することができる。
【0202】
また、上記の「削除された交点情報と同じ交点情報」とは、ボクセル空間と交点情報が示す交点座標および法線方向との位置関係が、交点情報が削除された対応オブジェクトとそれに対応する対応オブジェクトで同じである意味である。なお、一方のボクセル空間と他方のボクセル空間が反転して配置される場合には、反転を考慮した上で上記位置関係を判断する。したがって、一方のボクセル空間と他方のボクセル空間が反転して配置される場合、上記の「削除された交点情報と同じ交点情報」とは、削除された交点情報が示す交点座標および法線方向をボクセル空間と同様に反転させた交点座標および法線方向を示す交点情報である。
【0203】
本実施形態においては、ゲームシステム1は、第1対応オブジェクトの一部が消去されるように変形することに応じて第2対応オブジェクトの変形が行われる場合には、
図31に示すように、エフェクト画像298を発生させる。エフェクト画像298は、変形が行われた第1対応オブジェクト292から第2対応オブジェクト302へと移動するように表示される。また、ゲームシステム1は、第2対応オブジェクトの一部が消去されるように変形することに応じて第1対応オブジェクトの変形が行われる場合には、
図33に示すように、エフェクト画像308を発生させる。エフェクト画像308は、変形が行われた第2対応オブジェクト302から第1対応オブジェクト292へと移動するように表示される。上記のエフェクト画像によって、変形された対応オブジェクトに対応する対応オブジェクトをプレイヤに通知することができる。
【0204】
本実施形態においては、エフェクト画像298および308は、密度が減少されたボクセルが少なくとも含まれる第1範囲内の開始位置から、密度が増加されるボクセルが少なくとも含まれる第2範囲内の目標位置へと移動する。これによれば、対応オブジェクトのうちで消去されたように見える部分と、当該対応オブジェクトに対応する対応オブジェクトのうちで追加されたように見える部分とをプレイヤに通知することができる。なお、第1範囲は、例えば、密度が減少されるボクセルからなる範囲であって、第1範囲内の開始位置は、例えば、当該範囲の中心位置であってもよい。また、第2範囲は、例えば、密度が増加されるボクセルからなる範囲であって、第2範囲内の目標位置は、例えば、当該範囲の中心位置であってもよい。
【0205】
なお、
図31および
図33においては、対応オブジェクトの一部が消去するような変形と、エフェクト画像298または308の表示と、当該対応オブジェクトに対応する対応オブジェクトの一部が追加されるような変形とが同時に行われているゲーム画像が示される。ただし、本実施形態においては、実際には、まず、対応オブジェクトの一部が消去するような変形が行われたことに応じて、当該対応オブジェクトの上記第1範囲内の位置にエフェクト画像が表示され、その後、エフェクト画像が、対応する対応オブジェクトの上記第2範囲内の位置へと移動した後で、当該対応オブジェクトの一部が追加されるような変形が行われる。これによって、対応関係を有する2つの対応オブジェクトをよりわかりやすくすることができる。また、一方の対応オブジェクトについて減少した部分が他方の対応オブジェクトの方へ移動するような演出を行うことができる。
【0206】
なお、対応オブジェクトの一部が追加される変形が行われたことに応じて、当該対応オブジェクトに対応する対応オブジェクトの一部が消去されるような変形が行われる場合にも、エフェクト画像が表示されてもよい。例えば、第1対応オブジェクトの一部が追加される変形が行われたことに応じて、第2対応オブジェクトの一部が消去されるような変形が行われる場合、エフェクト画像は、第1対応オブジェクトから第2対応オブジェクトへ移動するように表示されてもよいし、第2対応オブジェクトから第1対応オブジェクトへ移動するように表示されてもよい。
【0207】
対応オブジェクトについては、任意の方法でマテリアルが決定されてよい。例えば、第1対応オブジェクトと第2対応オブジェクトで異なる見た目となるように、第1対応オブジェクトのボクセルと第2対応オブジェクトのボクセルには互いに異なるマテリアルが設定されてもよい。また、第1対応オブジェクトのボクセルと第2対応オブジェクトのボクセルには同じマテリアルが設定されてもよい。なお、各対応オブジェクトにはマテリアルが設定されなくてもよい。
【0208】
上記のように、本実施形態においては、第1のボクセルオブジェクト(例えば、
図28に示す地形オブジェクト271)に対する第1のアクションに応じてボクセルの密度を更新する場合には、交点情報を削除し、第2のボクセルオブジェクト(例えば、
図30に示す第1対応オブジェクト292)に対する第2のアクションに応じてボクセルの密度を更新する場合には、交点情報を削除しないようにする。これによれば、交点情報を用いるメッシュの生成処理による処理負荷の増加を抑えることができるとともに、所定のボクセルオブジェクトに関しては、交点情報を保持することで、当該ボクセルオブジェクトの密度が元に戻された場合にメッシュの形状をより正確に元の形状に戻すことができる。
【0209】
なお、上記「第1のアクション」と「第2のアクション」は、アクションの動作内容が互いに異なる2つのアクションでもよいし、アクションの対象となるボクセルオブジェクトが互いに異なる2つのアクションでもよい意味である。本実施形態においては、パンチアクションが地形オブジェクトに対して行われた場合には交点情報が削除されるのに対して、パンチアクションが対応オブジェクトに対して行われた場合には交点情報が保持される。これに対して、他の実施形態においては、パンチアクションが地形オブジェクトに対して行われた場合には交点情報が削除されるのに対して、パンチアクションとは異なる動作内容のアクション(例えば、体当たりのアクション)が地形オブジェクトに対して行われた場合には交点情報が保持されるようにしてもよい。
【0210】
[2-7-3.交点情報を追加する例]
また、本実施形態においては、ボクセルオブジェクトの変形に応じて、交点情報を新たに設定する処理が実行されてもよい。以下、交点情報が新たに設定される例について説明する。
【0211】
図36は、地形オブジェクトの一部が上方にせり上がるように変形する状況におけるゲーム画像の一例を示す図である。
図36に示す例においては、地形オブジェクトのうちの一部であるボクセルオブジェクト331が、四角柱が上方へ伸びるように、地面から上方にせり上がるように変形している。ボクセルオブジェクト331を変形させる条件は任意である。
図36に示す例においては、例えば、ボクセルオブジェクト331の上面に配置されるオブジェクト332に対する所定のアクション(例えば、オブジェクト332を叩くアクション)をプレイヤキャラクタ201が行うことに応じて、ボクセルオブジェクト331が変形する。
【0212】
図36に示すようにボクセルオブジェクト331を変形させる場合、ゲームシステム1は、変形前におけるボクセルオブジェクト331の上面から上側の範囲にあるボクセルの密度を基準値以上の値に増加させる。ボクセルオブジェクト331を変形させる具体的な方法は任意である。例えば、ゲームシステム1は、四角柱の形状を表すSDFを用意し、ボクセル空間において四角柱の形状を地面から上方へと移動させ、新たに四角柱の内側となる範囲をボクセルの更新範囲とする。なお、更新範囲の設定方法は任意であり、更新範囲は、プレイヤキャラクタ201による所定のアクションが行われた位置に基づいて設定されてもよいし、予め定められた位置に設定されてもよい。上記の更新範囲内のボクセルについて密度を増加させることで、ボクセルオブジェクト331を上方へせり上がるように変形させることができる。また例えば、上記の変形を複数のフレームにわたって繰り返すことで、上方へ次第に伸びるようにボクセルオブジェクト331を変形させることができる。
【0213】
本実施形態においては、上記の変形を行う処理において密度が増加されたボクセルについて交点情報が新たに設定される。例えば、交点情報は、更新範囲の設定に用いられるSDFに基づいて、あるいは、設定された更新範囲に基づいて設定される。一例としては、上記SDFまたは更新範囲の外形形状が表す面上の位置を交点座標とし、当該面に垂直な方向を法線方向とする交点情報が設定される。
図36に示す例においては、密度が増加されたボクセルのうち、四角柱の側面および上面に位置するボクセルについて交点情報が設定される。なお、
図36においては、設定される交点情報のいくつかを表すベクトル335~337(実線の矢印参照)が例示される。
図36に示す例においては、四角柱の上面および側面上の位置となる交点座標と、当該位置において四角柱の面に垂直となる法線方向とを示す交点情報が設定される。具体的には、四角柱の側面と上面で形成される角の部分については、角を形成する3つの面にそれぞれ垂直な3つのベクトル335として表される各交点情報が設定される。四角柱の2つの側面、または、側面と上面で形成される辺の部分については、辺を形成する2つの面にそれぞれ垂直な2つのベクトル336として表される各交点情報が設定される。四角柱側面または上面の部分については、当該面に垂直なベクトル337として表される交点情報が設定される。ゲームシステム1は、このような交点情報に基づいて変形後のボクセルオブジェクト331のメッシュを生成する。これによって、変形後のボクセルオブジェクト331のメッシュを、より正確な四角柱の形状とすることができる。
【0214】
図36に示す例においては、ボクセルの密度が増加される変形が行われる場合に交点情報が新たに設定されたが、ボクセルの密度が減少される変形が行われる場合においても交点情報が新たに設定されてもよい。例えば、プレイヤキャラクタが所定のアクションによって地形オブジェクトに穴をあけるような変形が行われる場合、穴の側面の位置となるボクセルに交点情報が設定されてもよい。例えば、四角柱の形状にくり抜かれたような穴をあける場合には、交点座標は、四角柱の側面上の位置を示す交点座標と、当該位置において側面に垂直となる法線方向とを示すように設定される。
【0215】
上記のように、ゲームシステム1は、更新範囲内のボクセルについて密度を更新するとともに、密度が更新されたボクセルのうちの少なくとも一部のボクセルに交点情報を設定してもよい。これによって、変形後のボクセルオブジェクトのメッシュの形状を意図したものにしやすくすることができる。
【0216】
[2-7-4.ボクセルオブジェクトが復元される際の処理]
本実施形態においては、ボクセルオブジェクトの変形に応じて削除された交点情報は、当該ボクセルオブジェクトの形状が復元されることに応じて復元されてもよい。以下、交点情報が復元される例について説明する。
【0217】
図37は、キャラクタオブジェクトが変形後に復元される様子の一例を示す図である。
図37に示す例においては、ボクセルオブジェクトであるキャラクタオブジェクト341は、当該キャラクタオブジェクト341に関する各ボクセルのうち一部のボクセルに、ベクトル342として表される交点情報が設定されているものとする。また、
図37に示す例においては、キャラクタオブジェクト341は、所定の条件に応じて一部が消去されるように変形し(
図37の(b)参照)、その後、元の形状に復元される(
図37の(c)参照)ものとする。なお、所定の条件は任意であり、例えば、プレイヤキャラクタによるパンチアクションが行われたことである。また、キャラクタオブジェクト341が復元される条件は任意である。例えば、一部が消去されるような変形が行われてから所定時間が経過したことに応じてキャラクタオブジェクト341が復元されてもよいし、ゲームに関する条件(例えば、キャラクタオブジェクト341に対して所定の回復アイテムが使用されたこと)が満たされたことに応じてキャラクタオブジェクト341が復元されてもよい。
【0218】
図37に示す例において、キャラクタオブジェクト341の一部が消去されるように変形した場合、キャラクタオブジェクト341について設定される交点情報が削除される(
図37の(b)参照)。なお、
図37においては、キャラクタオブジェクト341に関して設定される交点情報のいくつかを表すベクトル(実線の矢印参照)を示している。
図37に示す例において交点情報を削除する処理は、上記[2-7-1.交点情報を削除する例]で述べた処理同様である。具体的には、ゲームシステム1は、ボクセルの更新範囲に基づいて交点情報の削除範囲を設定し、削除範囲内のボクセルに設定される交点情報を削除する。
【0219】
図37に示す例において、キャラクタオブジェクト341の形状が復元される際には、当該キャラクタオブジェクト341に関する各ボクセルの密度が変形前の値に戻される(ここでは、密度が増加される)。このとき、ゲームシステム1は、削除された交点情報を復元する(
図37の(c)参照)。例えば、ゲームシステム1は、
図37の(b)に示す状況において削除された交点情報を、頂点の設定に用いられるデータとは別のデータとして記憶しておき、当該データを用いて交点情報を復元する。復元後におけるキャラクタオブジェクト341のメッシュは、復元された交点情報に基づいて生成される。これによって、復元後におけるキャラクタオブジェクト341の形状を、より正確に変形前の形状とすることができる。なお、キャラクタオブジェクト341は、例えば、プレイヤキャラクタ201が進むべき方向を示す矢印の形状等のように、ゲームにおける情報を示唆する形状であってもよい。このとき、交点情報を復元することで、復元後におけるキャラクタオブジェクト341の形状を、ゲームにおける情報をより正確に示唆する形状とすることができる。
【0220】
[3.ゲームシステムにおける処理の具体例]
次に、
図38~
図43を参照して、ゲームシステム1における情報処理の具体例について説明する。
【0221】
図38は、ゲームシステム1における情報処理に用いられる各種データの一例を示す図である。
図38に示す各データは、本体装置2がアクセス可能なメモリ(例えば、フラッシュメモリ84、DRAM85、および/または、スロット23に装着されたメモリカード等)に記憶される。
図38に示すように、ゲームシステム1はゲームプログラムを記憶する。ゲームプログラムは、本実施形態におけるゲーム処理(具体的には、
図39に示すゲーム処理)を実行するためのものである。なお、ゲームプログラムには、上述のマテリアルデータ(
図12参照)が含まれる。また、
図38に示すように、上記メモリには、上述のボクセルデータ(
図11参照)、上述の交点情報データ(
図18参照)、更新範囲データ、削除範囲データ、メッシュデータ、対応情報データ、オブジェクトデータ等が記憶される。
【0222】
更新範囲データは、上述の更新範囲を示すデータである。削除範囲データは、上述の削除範囲を示すデータである。本実施形態においては、上述のSDFによって更新範囲および削除範囲が表される。
【0223】
メッシュデータは、ボクセルオブジェクトのメッシュに関する各種データを含む。
図38に示すように、本実施形態においては、メッシュデータは、SVOデータ、表示用メッシュデータ、および、判定用メッシュデータを含む。SVOデータは、ボクセルデータから算出される各頂点を、上述のSVO構造で保持するデータである。なお、本実施形態においては、SVOデータには、各頂点の位置を示すデータに加えて、各頂点に設定されるマテリアルを示すデータ(例えば、マテリアルのIDを示すデータ)が含まれる。表示用メッシュデータは、表示用メッシュに関する各種データを含む。具体的には、表示用メッシュデータは、表示用メッシュの各頂点を示すデータと、各頂点に設定されるマテリアルを示すデータ(例えば、マテリアルのIDを示すデータ)を含む。判定用メッシュデータは、判定用メッシュに関する各種データを含む。具体的には、判定用メッシュデータは、判定用メッシュの各頂点を示すデータと、各頂点に設定されるマテリアルを示すデータ(例えば、マテリアルのIDを示すデータ)を含む。
【0224】
対応情報データは、第1対応オブジェクトと第2対応オブジェクトとの対応関係を示す上述の対応情報を示す。対応情報は、例えば、ボクセルデータの識別情報とボクセルデータの識別情報との対応を示すものであってもよいし、ボクセル空間の識別情報とボクセル空間の識別情報との対応を示すものであってもよいし、ボクセルオブジェクトの識別情報とボクセルオブジェクトの識別情報との対応を示すものであってもよい。対応情報は、ゲームプログラムにおいて予め定められていてもよいし、ゲーム中において所定の条件が満たされることに応じて対応関係が追加、削除、および/または変更されてもよい。
【0225】
オブジェクトデータは、ボクセルオブジェクト以外のオブジェクト(例えば、プレイヤキャラクタや、破片オブジェクト等)に関する各種データを含む。オブジェクトデータは、ゲーム空間に登場するオブジェクト毎に記憶される。オブジェクトデータは、例えば、当該オブジェクトの位置、速度、および状態等を示すデータを含む。
【0226】
図39は、ゲームシステム1によって実行されるゲーム処理の流れの一例を示すフローチャートである。ゲーム処理の実行は、例えば、上記ゲームプログラムの実行中において、プレイヤの指示に応じてゲームが開始されたことに応じて開始される。なお、ステップS1~S15の一連の処理からなる処理ループは、1フレームに1回のサイクルで実行される。
【0227】
なお、本実施形態では、本体装置2のプロセッサ81が、ゲームシステム1に記憶されている上記ゲームプログラムを実行することによって、
図39~
図43に示す各ステップの処理を実行するものとして説明する。ただし、他の実施形態においては、上記各ステップの処理のうちの一部の処理を、プロセッサ81とは別のプロセッサ(例えば、専用回路等)が実行するようにしてもよい。また、ゲームシステム1が他の情報処理装置(例えば、サーバ)と通信可能である場合、
図39~
図43に示す各ステップの処理の一部は、他の情報処理装置において実行されてもよい。また、
図39~
図43に示す各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。
【0228】
また、プロセッサ81は、
図39~
図43に示す各ステップの処理を、メモリ(例えば、DRAM85)を用いて実行する。すなわち、プロセッサ81は、各処理ステップによって得られる情報(換言すれば、データ)をメモリに記憶し、それ以降の処理ステップにおいて当該情報を用いる場合には、メモリから当該情報を読み出して利用する。
【0229】
図39に示すステップS1において、プロセッサ81は、プレイヤによる操作入力を示す上記操作データを取得する。すなわち、プロセッサ81は、コントローラ通信部83および/または各端子17および21を介して各コントローラから受信される操作データを取得する。ステップS1の次にステップS2の処理が実行される。
【0230】
ステップS2において、プロセッサ81は、処理が必要なゲーム空間のオブジェクトのうち、処理が完了していないいずれかのオブジェクトを処理対象として指定し、指定されたオブジェクトについて、速度を算出する処理、および、前のフレームにおけるオブジェクト同士の接触の結果を反映する処理を実行する。オブジェクトの速度は、後述するステップS11の処理において、今回のフレームにおけるオブジェクトの位置を算出するために用いられる。例えば、指定されたオブジェクトがプレイヤキャラクタである場合、プレイヤキャラクタの速度は、ステップS1で取得された操作データに基づいて算出される。また、指定されたオブジェクトが、プレイヤによって操作されないオブジェクト(例えば、破片オブジェクト)である場合、当該オブジェクトの速度は、ゲームプログラムにおいて予め定められたルールに基づいて算出される。例えば破片オブジェクトの速度は、地形オブジェクト上に配置されて移動していない場合には0に設定され、プレイヤキャラクタに把持されている場合にはプレイヤキャラクタの速度と同じに設定され、プレイヤキャラクタによる投げアクションによって放たれた場合には、上記ルールで決められた大きさで上述のエイム方向に移動する速度に設定される。具体的には、オブジェクトの速度は、オブジェクト間の相互作用を含めた仮想的な物理演算に基づいて算出される。例えば、オブジェクト同士の衝突による反発や、接触による摩擦等の相互作用、仮想的な重力による落下や仮想的な空気抵抗による減速等が速度決定に反映される。
【0231】
また、前のフレームにおけるオブジェクト同士の接触の結果を反映する処理には、前のフレームにおけるコリジョン判定(ステップS10)においてオブジェクト同士が接触したと判定された場合に、当該オブジェクトに対して接触による影響を与える処理が含まれる。上記処理は、例えば次のような処理である。
・前のフレームにおいてプレイヤキャラクタが溶岩の地形オブジェクトに接触したと判定された場合に、プレイヤキャラクタの体力を減少させる処理
・前のフレームにおいて引き抜きアクションあるいはパンチアクションによってプレイヤキャラクタが地形オブジェクトに接触したと判定された場合に、破片オブジェクトを生成する処理
・前のフレームにおいて破片オブジェクトが岩の地形オブジェクトに接触したと判定された場合に、破片オブジェクトを消滅させる処理
以上のステップS2の処理においてオブジェクトに関する状態が変更された場合、プロセッサ81は、当該オブジェクトに関してメモリに記憶されているオブジェクトデータを、変更後の内容を示すように更新する。ステップS2の次にステップS3の処理が実行される。
【0232】
ステップS3において、プロセッサ81は、ステップS2で指定されたオブジェクトによって、ボクセルオブジェクトを更新させる更新イベントが発生したか否かを判定する。例えば、ステップS3の判定は、前のフレームにおけるコリジョン判定(ステップS10)の結果に基づいて行われる。例えば、前のフレームにおいて、ボクセルオブジェクトを変形させるためのアクションによってプレイヤキャラクタが地形オブジェクトや対応オブジェクト等のボクセルオブジェクトに接触したと判定された場合には、更新イベントが発生したと判定される。より具体的には、パンチアクションによってプレイヤキャラクタがボクセルオブジェクトに接触したと判定された場合には、ボクセルオブジェクトの一部が消去されたように変形させる(
図24、
図28、
図31、および、
図37参照)更新イベントが発生したと判定される。なお、上記のような更新イベントには、地形オブジェクトの一部が消去されたように変形させるとともに、変形された部分とその周囲の部分の範囲についてのマテリアルが変更されるイベントが含まれる。また例えば、前のフレームにおいて破片オブジェクトが岩の地形オブジェクトに接触したと判定された場合には、破片オブジェクトが地形オブジェクトに付いたように地形オブジェクトを変形させる(
図26参照)更新イベントが発生したと判定される。また例えば、所定のアクションによって、
図36に示すオブジェクト332にプレイヤキャラクタが接触したと判定された場合には、地形オブジェクトを上方にせり上がるように変形させる(
図36参照)更新イベントが発生したと判定される。また例えば、
図37に示す例のように、変形されたキャラクタオブジェクトの形状を復元させる条件が満たされた場合には、当該キャラクタオブジェクトを復元する更新イベントが発生したと判定される。ステップS3の判定結果が肯定である場合、ステップS4の処理が実行される。一方、ステップS3の判定結果が否定である場合、後述のステップS5の処理が実行される。
【0233】
ステップS4において、プロセッサ81は、ステップS3で更新イベントが発生したと判定されたボクセルオブジェクトに関するボクセルデータを更新するボクセル更新処理を実行する。以下、
図40を参照して、ステップS4のボクセル更新処理の詳細について説明する。
【0234】
図40は、
図39に示すステップS4のボクセル更新処理の詳細な流れの一例を示すサブフローチャートである。ボクセル更新処理においてはまずステップS21において、プロセッサ81は、当該ボクセルオブジェクトのボクセルの更新を行う更新範囲をゲーム空間に設定する。例えば、更新範囲の具体的な内容(すなわち、位置、形状、および、大きさ)は、ゲームプログラムにおいて更新イベントの種類毎に関連付けられている。ステップS21で設定される更新範囲は、ステップS3において発生すると判定された更新イベントの種類に関連付けられる内容となるように設定される。プロセッサ81は、設定された更新範囲を示すデータを更新範囲データとしてメモリに記憶する。ステップS21の次にステップS22の処理が実行される。
【0235】
ステップS22において、プロセッサ81は、ステップS21で設定された更新範囲に対応するボクセルについて、更新イベントに応じた変更を行う。例えば、更新範囲内のボクセルオブジェクトを消去されたように変形させたり、更新範囲内にボクセルオブジェクトが追加されたように変形させたりする場合には、更新範囲に対応するボクセルの密度を変更するように、メモリに記憶されているボクセルデータを更新する(上記[2-2.ボクセルデータの更新]参照)。また例えば、更新範囲内のボクセルオブジェクトのマテリアルを変更する場合には、更新範囲に対応するボクセルの第1および第2マテリアルIDとマテリアル混合比とを更新するように、メモリに記憶されているボクセルデータを更新する。ステップS22の次にステップS23の処理が実行される。
【0236】
ステップS23において、プロセッサ81は、ステップS22の処理においてボクセルオブジェクトの変形が行われたか否かを判定する。例えば、上述の
図23、
図24、
図26、
図28、
図30~
図33、
図36、および、
図37に示す更新イベントが行われる場合には、ボクセルオブジェクトの変形が行われたと判定される。ステップS23の判定結果が肯定である場合、ステップS24の処理が実行される。一方、ステップS23の判定結果が否定である場合、プロセッサ81はボクセル更新処理を終了する。
【0237】
ステップS24において、プロセッサ81は、交点情報制御処理を実行する。交点情報制御処理は、ステップS22の処理において変形が行われたボクセルオブジェクトについて交点情報の削除、追加、または、復元を行うための処理である。以下、
図41を参照して、ステップS24の交点情報制御処理の詳細について説明する。
【0238】
図41は、
図40に示すステップS24の交点情報制御処理の詳細な流れの一例を示すサブフローチャートである。交点情報制御処理においてはまずステップS31において、プロセッサ81は、更新イベントに応じて交点情報を削除するか否かを判定する。本実施形態においては、更新イベントに応じて交点情報が削除されるか、追加されるか、復元されるか、あるいは、保持されるかは、更新イベントの種類、更新イベントの要因となったアクションの種類、および/または、更新対象のボクセルオブジェクトの種類に応じて予め定められる。例えば上記[2-7.ボクセルオブジェクトの変形に応じた交点情報に関する処理]で説明した例について言えば、プレイヤキャラクタによるパンチアクションによって地形オブジェクトまたはキャラクタオブジェクトが破壊される更新イベントについては、交点情報は削除されると判定される。ステップS31の判定結果が肯定である場合、ステップS32の処理が実行される。一方、ステップS31の判定結果が否定である場合、ステップS34の処理が実行される。
【0239】
ステップS32において、プロセッサ81は、上記ステップS21で設定された更新範囲に基づいて、上記[2-7-1.交点情報を削除する例]で述べた方法に従って、削除範囲を設定する。プロセッサ81は、設定された更新範囲を示すデータを更新範囲データとしてメモリに記憶する。ステップS32の次にステップS33の処理が実行される。
【0240】
ステップS33において、プロセッサ81は、ステップS32で設定された削除範囲内のボクセルに設定される交点情報を削除する。プロセッサ81は、上記のボクセルに対応する交点情報が削除されるように、メモリに記憶されている交点情報データを更新する。なお、上述したように、プロセッサ81は、後述するステップS7~S10におけるメッシュを生成するための一連の処理において用いられるデータから交点情報を削除すればよく、当該データとは異なる他のデータとして交点情報のデータを記憶していてもよい。ステップS33の次にステップS34の処理が実行される。
【0241】
ステップS34において、プロセッサ81は、更新イベントに応じて交点情報を追加するか否かを判定する。例えば、
図36に示すオブジェクト332に対するアクションによって地形オブジェクトが上方にせり上がるように変形する更新イベントについては、交点情報は追加されると判定される。ステップS34の判定結果が肯定である場合、ステップS35の処理が実行される。一方、ステップS34の判定結果が否定である場合、ステップS35の処理が実行される。
【0242】
ステップS35において、プロセッサ81は、上記ステップS22の処理において密度が更新されたボクセルのうちのいくつかについて、交点情報を追加する。例えば、プロセッサ81は、上記[2-7-3.交点情報を追加する例]で述べた方法に従って、追加される交点情報の交点座標および法線方向を決定し、当該交点情報を示す交点情報データをメモリに記憶する。ステップS33の次にステップS34の処理が実行される。
【0243】
ステップS36において、プロセッサ81は、更新イベントに応じて交点情報を復元するか否かを判定する。例えば、
図37に示す変形されたキャラクタオブジェクト341を復元する更新イベントについては、交点情報は復元されると判定される。ステップS36の判定結果が肯定である場合、ステップS37の処理が実行される。一方、ステップS36の判定結果が否定である場合、プロセッサ81は交点情報制御処理を終了する。
【0244】
ステップS37において、プロセッサ81は、上記ステップS22の処理において密度が更新されたボクセルについての交点情報を復元する。例えば、プロセッサ81は、以前の変形によって上記ステップS33の処理で削除された交点情報データを、メッシュを生成するための一連の処理において用いられるデータとは別のデータとして記憶しておき、上記ステップS37において、当該データを用いて交点情報データを復元する。ステップS37の後、プロセッサ81は交点情報制御処理を終了する。
【0245】
なお、上述の対応オブジェクトの変形時においては、上記ステップS31、S34、および、S36における判定はそれぞれ否定となる。その結果、交点情報が保持される。なお、他の実施形態においては、プロセッサ81は、上記ステップS22の処理において対応オブジェクトのボクセルの密度が減少される場合に、上記ステップS33の処理において、当該ボクセルに設定されている交点情報を削除してもよい。このとき、プロセッサ81は、上記交点情報が削除された対応オブジェクトに対応する対応オブジェクトについて上記ステップS35の処理が実行される場合には、ステップS35の処理において、削除された交点情報と同じ交点情報を設定してもよい。
【0246】
図39の説明に戻り、ステップS24の次のステップS25において、プロセッサ81は、ステップS3で更新イベントが発生したと判定されたボクセルオブジェクトが上述の対応オブジェクトであるか否か、つまり、対応するボクセルオブジェクトがあるか否かを判定する。この判定は、例えば、メモリに記憶されている対応情報データにおいて、当該ボクセルオブジェクトに対応するボクセルオブジェクトがあるか否かによって行われる。ステップS25の判定結果が肯定である場合、ステップS26の処理が実行される。一方、ステップS25の判定結果が否定である場合、プロセッサ81はボクセル更新処理を終了する。
【0247】
ステップS26において、プロセッサ81は、ステップS3で更新イベントが発生したと判定されたボクセルオブジェクトについて、エフェクトフラグをオンに設定する。エフェクトフラグは、対応オブジェクトが変形された際に表示されるエフェクト画像(
図31および
図33参照)が発生中であるか否かを示すフラグである。なお、エフェクトフラグは、対応オブジェクト毎に設定される。エフェクトフラグがオンである場合、後述のエフェクト制御処理(ステップS13)において、エフェクト画像の表示に関する設定が行われ、後述のステップS14の処理においてエフェクト画像を含むゲーム画像が生成される。ステップS26の後、プロセッサ81はボクセル更新処理を終了する。
【0248】
図39の説明に戻り、ステップS4のボクセル更新処理の次のステップS5において、プロセッサ81は、対応オブジェクト更新処理を実行する。対応オブジェクト更新処理は、ステップS2で指定されたオブジェクトが対応オブジェクトである場合に一定条件下でボクセルデータを更新する処理である。以下、
図42を参照して、ステップS5の対応オブジェクト更新処理の詳細について説明する。
【0249】
図42は、
図39に示すステップS5の対応オブジェクト更新処理の詳細な流れの一例を示すサブフローチャートである。対応オブジェクト更新処理においてはまずステップS41において、プロセッサ81は、ステップS2で指定された当該ボクセルオブジェクトが対応オブジェクトであり、それに対応するボクセルオブジェクトの変形に応じて変形を行うタイミングが到来したか否かを判定する。本実施形態においては、上記タイミングは、当該ボクセルオブジェクトに対応するボクセルオブジェクトの変形に応じて発生したエフェクト画像が、当該ボクセルオブジェクトの位置に到達したタイミングである。したがって、ステップS41の判定は、後述のエフェクト制御処理におけるステップS55における判定結果が肯定となり、ステップS56の処理が実行されたか否かによって行うことができる。なお、ステップS2で指定されたボクセルオブジェクトが対応オブジェクトでない場合や、それに対応するボクセルオブジェクトの変形が行われていない場合や、または、それに対応するボクセルオブジェクトの変形が行われていても上記タイミングがまだ到来していない場合は、ステップS41の判定の判定結果は否定となる。ステップS41の判定結果が肯定である場合、ステップS42の処理が実行される。一方、ステップS41の判定結果が否定である場合、プロセッサ81は対応オブジェクト更新処理を終了する。
【0250】
ステップS42において、プロセッサ81は、ステップS2で指定されたボクセルオブジェクトについて、密度を更新する更新範囲を設定する。この更新範囲は、当該ボクセルオブジェクトに対応するボクセルオブジェクトについて実行される上記ステップS21で設定された更新範囲に対応するものである。上記更新範囲は、上記[2-7.2つのボクセルオブジェクトの形状を変更する処理]で述べた方法に従って、対応する更新範囲に基づいて設定される。プロセッサ81は、設定された更新範囲を示すデータを更新範囲データとしてメモリに記憶する。ステップS42の次にステップS43の処理が実行される。
【0251】
ステップS43において、プロセッサ81は、ステップS42で設定された更新範囲内のボクセルについて密度を更新する。具体的には、当該ボクセルの更新後の密度は、上記[2-7.2つのボクセルオブジェクトの形状を変更する処理]で述べた方法に従って、当該ボクセルに対応するボクセルの密度に基づいて算出される。プロセッサ81は、算出された密度の値を示すように、メモリに記憶されているボクセルデータを更新する。ステップS43の後、プロセッサ81は対応オブジェクト更新処理を終了する。
【0252】
図39の説明に戻り、ステップS5の対応オブジェクト更新処理の次のステップS6において、プロセッサ81は、処理が必要な全てのオブジェクトについて上記ステップS2~S5の処理が完了したか否かを判定する。ステップS6の判定結果が肯定である場合、ステップS7の処理が実行される。一方、ステップS6の判定結果が否定である場合、ステップS2の処理が再度実行される。
【0253】
ステップS7において、プロセッサ81は、ゲーム空間におけるボクセルオブジェクトの頂点を更新する。すなわち、上記ステップS4またはS5の処理においてボクセルデータが更新された場合には、更新後のボクセルデータに基づいて新たな頂点が算出される。なお、新たな頂点の位置およびマテリアルは、上記[2-3.頂点の算出]で述べた方法に従って算出される。ステップS7の次にステップS8の処理が実行される。
【0254】
ステップS8において、プロセッサ81は頂点の簡略化を行う。すなわち、プロセッサ81は、ステップS7の処理による更新後の各頂点について、上記[2-4.頂点の簡略化]で述べた方法に従って簡略化を行う。メモリに記憶されるSVOデータは、以上のステップS7およびS8の処理によって得られた各頂点を示すように更新される。したがって、ステップS7およびS8の処理によってSVOデータの更新が行われる。なお、ステップS7およびS8の処理は、ボクセルデータの全体について頂点を算出しなおす必要はなく、ステップS4またはS5の処理においてボクセルの内容が変更された部分についてのみ実行されてもよい。ステップS8の次にステップS9の処理が実行される。
【0255】
ステップS9において、プロセッサ81は、メモリに記憶されるSVOデータに基づいてボクセルオブジェクトの表示用メッシュを更新する。なお、表示用メッシュの各頂点の位置、および、表示用メッシュの各ポリゴンのマテリアル(すなわち、ポリゴンの各頂点に設定されるマテリアル)は、上記[2-5.メッシュの生成]で述べた方法に従って算出される。プロセッサ81は、メモリに記憶されている表示用メッシュデータを、更新後の表示用メッシュの各頂点の位置およびマテリアルを示すように更新する。ステップS9の次にステップS10の処理が実行される。なお、プロセッサ81は、ステップS9の完了を待たずに、ステップS10以降の処理を開始し、並行して実行するようにしてもよい。その場合、ステップS9はステップS14の開始前に完了している必要がある。
【0256】
ステップS10において、プロセッサ81は、メモリに記憶されるSVOデータに基づいてボクセルオブジェクトの判定用メッシュを更新する。なお、判定用メッシュの各頂点の位置、および、判定用メッシュの各ポリゴンのマテリアル(すなわち、ポリゴンの各頂点に設定されるマテリアル)は、上記[2-5.メッシュの生成]で述べた方法に従って算出される。プロセッサ81は、メモリに記憶されている判定用メッシュデータを、更新後の判定用メッシュの各頂点の位置およびマテリアルを示すように更新する。ステップS10の次にステップS11の処理が実行される。
【0257】
なお、
図39に示す例においては、判定用メッシュの生成処理(ステップS10)を毎フレーム実行するものとしたが、判定用メッシュの生成処理は、毎フレーム実行されなくてもよい。例えば、ステップS11のコリジョン判定処理が所定の条件を満たすフレームにおいてのみ実行される場合、プロセッサ81は、ステップS11のコリジョン判定を行うフレームで判定用メッシュの生成処理を実行してもよい。また、プロセッサ81は、ゲーム空間のうちでステップS11のコリジョン判定を行う領域内のボクセルについて判定用メッシュの生成処理を実行してもよい。例えば、ゲーム空間においてプレイヤキャラクタの周囲にはボクセルオブジェクト以外にはコリジョン判定の対象となるオブジェクトが存在しない状況(つまり、プレイヤキャラクタとその周囲のボクセルオブジェクトとのコリジョン判定のみを行えばよい状況)では、プロセッサ81は、プレイヤキャラクタを基準とした所定範囲内のボクセルについて判定用メッシュの生成処理を実行してもよい。
【0258】
ステップS11において、プロセッサ81は、メモリに記憶されている判定用メッシュデータとオブジェクトデータとに基づいて、ゲーム空間における各オブジェクトについてコリジョン判定を行う。すなわち、プロセッサ81は、ボクセルオブジェクトについては判定用メッシュを用い、ボクセルオブジェクトでないオブジェクトについては当該オブジェクトに設定される所定形状の判定領域を用いて、コリジョン判定を行う。なお、本実施形態においては、上記ステップS2で算出された速度を考慮してステップS11のコリジョン判定が行われる。つまり、プロセッサ81は、各オブジェクトの位置として、上記速度で移動した場合の位置を用いてコリジョン判定を行う。
【0259】
本実施形態においては、ステップS11のコリジョン判定によって例えば次の接触の有無が判定される。
・移動、パンチアクション、または、引き抜きアクションを行うプレイヤキャラクタと、地形オブジェクト等のボクセルオブジェクトとの接触
・(破片オブジェクトを)持ち上げるアクションを行うキャラクタと破片オブジェクトとの接触
・プレイヤキャラクタの位置からエイム方向に延びる直線とボクセルオブジェクトとの接触
・プレイヤキャラクタによる投げアクションによって放たれた破片オブジェクトと、ボクセルオブジェクトとの接触
なお、ステップS11のコリジョン判定においてオブジェクト同士が接触したと判定された場合には、次のフレームにおけるステップS2の処理において、オブジェクト同士の接触の結果を反映する処理が実行されたり、次のフレームにおけるステップS3の処理において、更新イベントが発生したと判定されたりする。ステップS11の次にステップS12の処理が実行される。
【0260】
ステップS12において、プロセッサ81は、ゲーム空間における各オブジェクトの動作を制御する。例えばプレイヤキャラクタについては、プロセッサ81は、ステップS1において取得された操作データに基づいて、移動や各種アクションを行わせる制御を行う。所定のアクションが発生した場合には、ゲーム空間内に、当該アクションに応じたコリジョン判定のための領域が生成される。また例えば、破片オブジェクトは、プレイヤキャラクタによる投げアクションによって放たれたことに応じて、上述のエイム方向に移動するように制御される。なお、1回のステップS12の処理においては、プロセッサ81は、複数フレームにわたって行われる動作(例えば、プレイヤキャラクタによるアクション)については1フレーム分の動作の進行を行うように各オブジェクトを制御する。ステップS12の処理が複数フレームにわたって繰り返し実行されることで、移動や各種アクションに関する一連の動作を各オブジェクトが行うこととなる。また、オブジェクトの位置は、基本的には、上記ステップS2で算出される速度で移動した後の位置となるように決定される。ただし、ステップS11のコリジョン判定によって他のオブジェクトと接触すると判定され、接触した他のオブジェクトによって移動が妨げられる場合には、当該オブジェクトの位置は変化しないように決定される。メモリに記憶されているオブジェクトデータは、ステップS12における制御後のオブジェクトを示す内容となるように更新される。ステップS12の次にステップS13の処理が実行される。
【0261】
ステップS13において、プロセッサ81は、エフェクト設定処理を実行する。エフェクト設定処理は、対応オブジェクトの変形に応じて表示するエフェクト画像に関する設定を行う処理である。以下、
図43を参照して、ステップS13のエフェクト設定処理の詳細について説明する。
【0262】
図43は、
図39に示すステップS13の対応オブジェクト更新処理の詳細な流れの一例を示すサブフローチャートである。エフェクト設定処理においてはまずステップS51において、プロセッサ81は、エフェクトフラグがオンに設定されている対応オブジェクトがあるか否かを判定する。ステップS51の判定結果が肯定である場合、ステップS52の処理が実行される。一方、ステップS51の判定結果が否定である場合、プロセッサ81はエフェクト設定処理を終了する。
【0263】
ステップS52において、プロセッサ81は、エフェクト画像が発生したタイミングであるか否かを判定する。ステップS52の判定は、例えば、ステップS1~S15における処理ループにおける今回のフレームでの処理において、上記ステップS25の処理によってエフェクトフラグがオンに設定されたか否かによって行われる。ステップS52の判定結果が肯定である場合、ステップS53の処理が実行される。一方、ステップS52の判定結果が否定である場合、ステップS54の処理が実行される。
【0264】
ステップS53において、プロセッサ81は、エフェクト画像を新たに発生させる。具体的には、上記ステップS25の処理によってエフェクトフラグがオンに設定されたボクセルオブジェクトの位置にエフェクト画像が新たに配置されるように表示設定を行う。なお、エフェクト画像を表示する方法は任意であり、例えば、エフェクト画像を表すオブジェクトが仮想空間に配置されてもよい。また、エフェクト画像が配置される具体的な開始位置は、上記[2-7.2つのボクセルオブジェクトの形状を変更する処理]で述べた方法に従って決定される。このとき、プロセッサ81は、エフェクト画像が配置される位置を示すデータをメモリに記憶する。上記の表示設定が行われた場合、後述するステップS14の処理において、エフェクト画像を含むゲーム画像が生成されて表示される。ステップS53の次にステップS55の処理が実行される。
【0265】
ステップS54において、プロセッサ81は、配置されているエフェクト画像の位置を移動させる。本実施形態においては、プロセッサ81は、エフェクト画像を、現在の位置から目標位置への所定の軌道に沿って、所定の速度でエフェクト画像を移動させる。1回のステップS54の処理においては、現在の位置から、1フレームの間に移動する分の距離だけ移動された位置が算出され、算出された位置が移動後のエフェクト画像の位置とされる。プロセッサ81は、算出された移動後の位置を示すデータをメモリに記憶する。なお、上記目標位置は、エフェクトフラグがオンに設定されたボクセルオブジェクトに対応するボクセルオブジェクトの位置である。目標位置は、上記[2-7.2つのボクセルオブジェクトの形状を変更する処理]で述べた方法に従って決定される。また、上記所定の軌道は、具体的には任意の軌道であってよく、例えば、上記開始位置と上記目標位置とを結ぶ放物線の軌道であってもよい。ステップS54の次にステップS55の処理が実行される。
【0266】
ステップS55において、プロセッサ81は、エフェクト画像が、エフェクトフラグがオンに設定されたボクセルオブジェクトに対応するボクセルオブジェクトに到達したか否かを判定する。具体的には、プロセッサ81は、ステップS54で算出された移動後の位置が目標位置に到達したか否かを判定する。ステップS55の判定結果が肯定である場合、ステップS56の処理が実行される。一方、ステップS55の判定結果が否定である場合、プロセッサ81はエフェクト設定処理を終了する。
【0267】
ステップS56において、プロセッサ81は、エフェクトフラグをオフに設定する。これによって、後述のステップS14の処理においては、当該エフェクトフラグに対応するエフェクト画像は表示されなくなる。ステップS56の後、プロセッサ81はエフェクト設定処理を終了する。
【0268】
なお、
図43に示すエフェクト設定処理においては、1つのエフェクト画像が表示される場合について説明したが、同時に複数のエフェクト画像が表示されてもよい。このとき、プロセッサ81は、配置されている各エフェクト画像について上記ステップS52~S56の処理を実行する。
【0269】
図39の説明に戻り、ステップS13のエフェクト設定処理の次のステップS14において、プロセッサ81は、ゲーム画像を生成する。すなわち、プロセッサ81は、ボクセルオブジェクトの表示用メッシュの各ポリゴン、および、ボクセルオブジェクト以外の各オブジェクトのポリゴンについて、仮想カメラに基づいて描画を行うことでゲーム画像を生成する。なお、表示用メッシュの各ポリゴンは、ポリゴンに設定されるマテリアルに対応するテクスチャ等の描画設定を用いて描画される。また、本実施形態においては、上記ステップS13の処理によってエフェクト画像を生成する表示設定となっている場合には、上記ステップS53またはS54で算出される位置に配置されるエフェクト画像を含むゲーム画像が生成される(
図31および
図33参照)。また、プレイヤキャラクタが、投げアクションが可能な状態である場合には、プロセッサ81は、上述の照準画像およびオブジェクト情報画像を含むようにゲーム画像を生成する(
図25参照)。ステップS14で生成されたゲーム画像は、1フレームに1回のサイクルで表示装置に出力されて表示される。
【0270】
ステップS15において、プロセッサ81は、ゲームを終了するか否かを判定する。例えば、プロセッサ81は、ゲームを終了するための所定の操作入力がプレイヤによって行われた場合、ゲームを終了すると判定する。ステップS15の判定結果が否定である場合、ステップS1の処理が再度実行される。以降、ステップS15においてゲームを終了すると判定されるまで、ステップS1~S15の一連の処理が繰り返し実行される。一方、ステップS15の判定結果が肯定である場合、プロセッサ81は、
図39に示すゲーム処理を終了する。
【0271】
[4.本実施形態の作用効果および変形例]
上記実施形態によれば、ボクセルに設定される密度と交点情報に基づいてボクセルメッシュを生成し、更新範囲に該当するボクセルの密度を減少させる場合に、削除範囲に該当するボクセルに設定される交点情報を削除する。これによれば、交点情報を用いてボクセルメッシュを生成する処理における処理負荷の増加を抑えることができる。
【0272】
上記実施形態においては、プレイヤキャラクタによるアクションに応じてボクセルの密度の更新および交点情報の削除が行われる例について説明したが、ゲームにおける任意の条件に応じてボクセルの密度の更新および交点情報の削除が行われてもよい。例えば、ゲームにおいて或るタイミングから所定の時間が経過したことに応じて、ボクセルの密度の更新および交点情報の削除が行われてもよい。
【0273】
なお、上記の実施形態において、ある情報処理装置においてデータ(プログラムを含む意味である)を用いて処理が実行される場合、当該処理に必要なデータの一部が、当該ある情報処理装置とは異なる他の情報処理装置から送信されてもよい。このとき、当該ある情報処理装置は、他の情報処理装置から受信されたデータと、自身に記憶されているデータとを用いて上記処理を実行してもよい。
【0274】
なお、他の実施形態において、情報処理システムは、上記実施形態における構成の一部を備えていなくてもよいし、上記実施形態において実行される処理の一部を実行しなくてもよい。例えば、情報処理システムは、上記実施形態における一部の特定の結果を得るためには、当該結果を得るための構成を備え、当該結果を得るための処理を実行すればよく、その他の構成を備えていなくてもよいし、その他の処理を実行しなくてもよい。
【産業上の利用可能性】
【0275】
上記実施形態は、オブジェクトのメッシュを生成する処理における処理負荷の増加を抑えること等を目的として、例えばゲームシステムやゲームプログラムとして利用することができる。
【符号の説明】
【0276】
1 ゲームシステム
2 本体装置
81 プロセッサ
201 プレイヤキャラクタ
271,331 地形オブジェクト
282 更新範囲
283 削除範囲
291~293 第1対応オブジェクト
301~303 第2対応オブジェクト
341 キャラクタオブジェクト