(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-08
(45)【発行日】2022-02-17
(54)【発明の名称】画像生成プログラム、画像生成処理装置及び画像生成方法
(51)【国際特許分類】
G06T 13/40 20110101AFI20220209BHJP
A63F 13/577 20140101ALI20220209BHJP
A63F 13/55 20140101ALI20220209BHJP
A63F 13/5258 20140101ALI20220209BHJP
A63F 13/833 20140101ALI20220209BHJP
【FI】
G06T13/40
A63F13/577
A63F13/55
A63F13/5258
A63F13/833
(21)【出願番号】P 2019210736
(22)【出願日】2019-11-21
【審査請求日】2021-02-25
【早期審査対象出願】
(73)【特許権者】
【識別番号】595000427
【氏名又は名称】株式会社コーエーテクモゲームス
(74)【代理人】
【識別番号】100159547
【氏名又は名称】鶴谷 裕二
(74)【代理人】
【識別番号】100091672
【氏名又は名称】岡本 啓三
(72)【発明者】
【氏名】隆藤 唯信
【審査官】片岡 利延
(56)【参考文献】
【文献】特許第3569201(JP,B2)
【文献】特許第6153985(JP,B2)
【文献】特開2007-164721(JP,A)
【文献】Chronoxiong Gaming,StreetFighter V Ken vs Guile,youtube[online][video],2017年12月20日,https://www.youtube.com/watch?v=0m69ZVhRSfw,特に0:47~0:48, [検索日:2021.05.20]
【文献】金星 章大,ボクシングにおける速いパンチと重いパンチの違いは何ですか?,[online],2019年05月,https://jp.quora.com/ボクシングにおける速いパンチと重いパンチの違い,[検索日:2021.05.20]
(58)【調査した分野】(Int.Cl.,DB名)
G06T 13/40
A63F 13/577
A63F 13/55
A63F 13/5258
A63F 13/833
(57)【特許請求の範囲】
【請求項1】
ゲーム空間での複数のキャラクタによる対戦における攻撃のヒットのタイミングを含むシーンで、基準体型を持つ基準キャラクタと、前記対戦の相手キャラクタと、前記基準キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記対戦の動作を行わせるアニメーションデータとから、前記ヒットが発生することとなる前記基準キャラクタの基準部分と前記相手キャラクタの相手部分と前記ヒットのタイミングとを特定するステップと、
前記ヒットのタイミングで、前記基準体型と異なる体型を持つ実キャラクタの、前記基準部分に対応する対応部分と、前記相手部分とがヒットする前記シーンが生成されるように、前記実キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記アニメーションデータが適用されるときに、前記実キャラクタの位置ベクトルから前記ヒットのタイミングにおける前記基準部分から前記対応部分へのベクトルAを引くこと又は前記相手キャラクタの位置ベクトルに前記ベクトルAを足すことで、前記実キャラクタ又は前記相手キャラクタの位置を移動させた前記実キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記アニメーションデータを適用して前記シーンの画像を生成するステップであって、前記実キャラクタの骨格モデルは前記基準キャラクタの骨格モデルに対応する骨格モデルを持つ、画像を生成するステップと、
をゲーム装置に実行させる画像生成プログラム
であって、
前記画像を生成するステップは、移動させる前記実キャラクタ又は移動させる前記相手キャラクタが、固定位置に固定された固定部分を持つキャラクタである場合:
前記固定部分を持つキャラクタを移動させるステップと、
前記固定部分を、前記固定位置に戻すステップと、
少なくとも前記固定部分を固定して前記固定部分を持つキャラクタにインバース・キネマティクスを適用して、前記固定部分を持つキャラクタの姿勢を修正するステップと、
を含む、画像生成プログラム。
【請求項2】
ゲーム空間での複数のキャラクタによる対戦における攻撃のヒットのタイミングを含むシーンで、基準体型を持つ基準キャラクタと、前記対戦の相手キャラクタと、前記基準キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記対戦の動作を行わせるアニメーションデータとから、前記ヒットが発生することとなる前記基準キャラクタの基準部分と前記相手キャラクタの相手部分と前記ヒットのタイミングとを特定するステップと、
前記ヒットのタイミングで、前記基準体型と異なる体型を持つ実キャラクタの、前記基準部分に対応する対応部分と、前記相手部分とがヒットする前記シーンが生成されるように、前記実キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記アニメーションデータが適用されるときに、前記実キャラクタの位置ベクトルから前記ヒットのタイミングにおける前記基準部分から前記対応部分へのベクトルAを引くこと又は前記相手キャラクタの位置ベクトルに前記ベクトルAを足すことで、前記実キャラクタ又は前記相手キャラクタの位置を移動させた前記実キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記アニメーションデータを適用して前記シーンの画像を生成するステップであって、前記実キャラクタの骨格モデルは前記基準キャラクタの骨格モデルに対応する骨格モデルを持つ、画像を生成するステップと、
をゲーム装置に実行させる画像生成プログラムであって、
前記シーンが略同時に複数のヒットを含む場合であって、前記複数のヒットの各々が、前記実キャラクタの異なる対応部分を持っているときには、前記異なる対応部分の各々から求まる前記移動の方向及び前記移動の距離を平均した値に基づいて、前記実キャラクタ又は相手キャラクタの位置を移動させる画像生成プログラム。
【請求項3】
ゲーム空間での複数のキャラクタによる対戦における攻撃のヒットのタイミングを含むシーンで、基準体型を持つ基準キャラクタと、前記対戦の相手キャラクタと、前記基準キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記対戦の動作を行わせるアニメーションデータとから、前記ヒットが発生することとなる前記基準キャラクタの基準部分と前記相手キャラクタの相手部分と前記ヒットのタイミングとを特定するステップと、
前記ヒットのタイミングで、前記基準体型と異なる体型を持つ実キャラクタの、前記基準部分に対応する対応部分と、前記相手部分とがヒットする前記シーンが生成されるように、前記実キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記アニメーションデータが適用されるときに、前記実キャラクタの位置ベクトルから前記ヒットのタイミングにおける前記基準部分から前記対応部分へのベクトルAを引くこと又は前記相手キャラクタの位置ベクトルに前記ベクトルAを足すことで、前記実キャラクタ又は前記相手キャラクタの位置を移動させた前記実キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記アニメーションデータを適用して前記シーンの画像を生成するステップであって、前記実キャラクタの骨格モデルは前記基準キャラクタの骨格モデルに対応する骨格モデルを持つ、画像を生成するステップと、
をゲーム装置に実行させる画像生成プログラムであって、
前記画像を生成するステップは、
前記シーンに含まれるタイミングkのタイミングで:
透明な基準キャラクタの基準部分から実キャラクタの対応部分へのベクトルAkを計算し、透明な相手キャラクタの相手部分から相手キャラクタの相手部分へのベクトルBkを計算するステップと、
実キャラクタの対応部分の位置ベクトルからベクトル(Ak-Bk)を引いた位置ベクトルが実キャラクタの対応部分の位置ベクトルとなるよう実キャラクタを移動させるか、又は、相手キャラクタの相手部分の位置ベクトルに前記ベクトル(Ak-Bk)を足した位置ベクトルが相手キャラクタの相手部分の位置ベクトルとなるよう相手キャラクタを移動させるステップと、
を含み、
前記透明な基準キャラクタ及び前記透明な相手キャラクタは、前記アニメーションデータ以外による位置の移動を考慮しないキャラクタである画像生成プログラム。
【請求項4】
前記シーンが第1のヒットのタイミングと、その後に第2のヒットのタイミングとを含む場合、画像を生成するステップは、
前記対戦の動作の開始から前記第1のヒットのタイミングまでは、前記第1のヒットのタイミングで、前記対応部分が、前記相手部分とヒットするように、前記実キャラクタの位置又は前記相手キャラクタの位置を移動させるステップと、
前記第1のヒットのタイミングの直後から前記第2のヒットのタイミングまでは、前記第1のヒットのタイミングの状態を初期状態に設定した後に、前記第2のヒットのタイミングで、前記対応部分が、前記相手部分とヒットするように、前記実キャラクタの位置又は前記相手キャラクタの位置を移動させるステップと、
を含む請求項1
ないし3のうちいずれか1項に記載の画像生成プログラム。
【請求項5】
前記画像を生成するステップは、
前記画像を生成するように前記シーンを撮像する仮想カメラの視線方向を維持したまま、前記実キャラクタの位置の移動又は前記相手キャラクタの位置の移動に基づいて、前記仮想カメラを移動させるステップ、
を含む請求項1ないし
4のうちいずれか1項に記載の画像生成プログラム。
【請求項6】
前記シーンが同時に複数のヒットを含む場合であって、前記複数のヒットの各々が、異なる相手キャラクタを持っているときには、前記異なる相手キャラクタの各々から求まる前記移動の方向及び前記移動の距離に基づいて、前記複数の相手キャラクタの各々の位置を移動させる、
請求項1ないし5のうちいずれか1項に記載の画像生成プログラム。
【請求項7】
前記画像を生成するステップは、
前記アニメーションデータを用いて、前記ベクトルAを計算するステップと、
前記実キャラクタの前記対応部分の位置ベクトルから前記ベクトルAを引いた位置ベクトルが前記実キャラクタの前記対応部分の位置ベクトルとなるように前記実キャラクタを移動させるか、又は、前記相手キャラクタの前記相手部分の位置ベクトルに前記ベクトルAを足した位置ベクトルが前記相手キャラクタの前記相手部分の位置ベクトルとなるように前記相手キャラクタを移動させるステップと、
前記アニメーションデータを前記実キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに適用するステップと、
を含む請求項1ないし6のうちいずれか1項に記載の画像生成プログラム。
【請求項8】
前記アニメーションデータは、前記基準部分、前記相手部分又は前記ヒットのタイミングを特定する情報を含む、
請求項1ないし
7のうちいずれか1項に記載の画像生成プログラム。
【請求項9】
ゲーム空間での複数のキャラクタによる対戦における攻撃のヒットのタイミングを含むシーンで、基準体型を持つ基準キャラクタと、前記対戦の相手キャラクタと、前記基準キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記対戦の動作を行わせるアニメーションデータとから、前記ヒットが発生することとなる前記基準キャラクタの基準部分と前記相手キャラクタの相手部分と前記ヒットのタイミングとを特定する特定部と、
前記ヒットのタイミングで、前記基準体型と異なる体型を持つ実キャラクタの、前記基準部分に対応する対応部分と、前記相手部分とがヒットする前記シーンが生成されるように、前記実キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記アニメーションデータが適用されるときに、前記実キャラクタの位置ベクトルから前記ヒットのタイミングにおける前記基準部分から前記対応部分へのベクトルAを引くこと又は前記相手キャラクタの位置ベクトルに前記ベクトルAを足すことで、前記実キャラクタ又は前記相手キャラクタの位置を移動させた前記実キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記アニメーションデータを適用して前記シーンの画像を生成する画像生成部であって、前記実キャラクタの骨格モデルは前記基準キャラクタの骨格モデルに対応する骨格モデルを持つ、画像生成部と、
を有
し、
前記画像生成部は、移動させる前記実キャラクタ又は移動させる前記相手キャラクタが、固定位置に固定された固定部分を持つキャラクタである場合:
前記固定部分を持つキャラクタを移動させ、
前記固定部分を、前記固定位置に戻し、
少なくとも前記固定部分を固定して前記固定部分を持つキャラクタにインバース・キネマティクスを適用して、前記固定部分を持つキャラクタの姿勢を修正する、画像生成装置。
【請求項10】
ゲーム装置にゲーム空間の画像を生成させる画像生成方法であって、
ゲーム空間での複数のキャラクタによる対戦における攻撃のヒットのタイミングを含むシーンで、基準体型を持つ基準キャラクタと、前記対戦の相手キャラクタと、前記基準キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記対戦の動作を行わせるアニメーションデータとから、前記ヒットが発生することとなる前記基準キャラクタの基準部分と前記相手キャラクタの相手部分と前記ヒットのタイミングとを特定するステップと、
前記ヒットのタイミングで、前記基準体型と異なる体型を持つ実キャラクタの、前記基準部分に対応する対応部分と、前記相手部分とがヒットする前記シーンが生成されるように、前記実キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記アニメーションデータが適用されるときに、前記実キャラクタの位置ベクトルから前記ヒットのタイミングにおける前記基準部分から前記対応部分へのベクトルAを引くこと又は前記相手キャラクタの位置ベクトルに前記ベクトルAを足すことで、前記実キャラクタ又は前記相手キャラクタの位置を移動させた前記実キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記アニメーションデータを適用して前記シーンの画像を生成するステップであって、前記実キャラクタの骨格モデルは前記基準キャラクタの骨格モデルに対応する骨格モデルを持つ、画像を生成するステップと、
を有する、画像生成方法
であって、
前記画像を生成するステップは、移動させる前記実キャラクタ又は移動させる前記相手キャラクタが、固定位置に固定された固定部分を持つキャラクタである場合:
前記固定部分を持つキャラクタを移動させるステップと、
前記固定部分を、前記固定位置に戻すステップと、
少なくとも前記固定部分を固定して前記固定部分を持つキャラクタにインバース・キネマティクスを適用して、前記固定部分を持つキャラクタの姿勢を修正するステップと、
を含む、画像生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像生成プログラム、画像生成処理装置及び画像生成方法に関する。
【背景技術】
【0002】
コンピュータ上で動作するゲームでは、複数のキャラクタが対戦を行う激しいいアクションにおいてキャラクタが攻撃するシーンが存在する。
【0003】
攻撃シーンなどキャラクタ同士の接触するイベントにおいては、あらかじめ定められたアニメーションデータを用いてキャラクタに対して一連の動作を行わせることで、所望のシーンの画像を生成することが行われている。
【0004】
このような複数のキャラクタに対して、一連の動作を行わせるアニメーションデータは、複数のキャラクタのそれぞれの大きさ、体型、姿勢などがアニメーションデータの想定と異なる場合には、適切なタイミングで、キャラクタの部分同士がヒットせず、適切なシーンが再現できないことがある。
このような不都合を解消するための従来技術としては、例えば以下のものが挙げられる。
【0005】
一連の動作における攻撃がヒットするであろうタイミングを示す所定タイミングと、この所定タイミングにおけるキャラクタの姿勢と、攻撃対象のゲーム内座標とに基づいて、キャラクタの背骨の角度の補正の度合いを算出する算出機能を有しており、さらに、この度合いに基づいたキャラクタの背骨の角度の補正に応じてキャラクタの姿勢を補正する。そして、補正されたキャラクタの姿勢においてキャラクタが一連の動作を実行した際に、所定のタイミングにてキャラクタの攻撃が攻撃対象にヒットする様子が表現されるようにアニメーションを補正するビデオゲーム処理プログラムの技術が存在する(例えば、特許文献1参照)。
【0006】
また、一方のキャラクタが他方のキャラクタに打撃武器等を用いて攻撃を行う場合、よりリアルな攻撃態様を創出するために、攻撃相手である他のキャラクタの回避行動(しゃがむ等)や弱点部位(頭部が弱点であるのか脚部が弱点であるのか等)に応じて武器の軌道を変更する必要がある。このために、キャラクタの所定部位が所定の仮想基準平面または仮想基準線分上を移動するような基本軌道を表す基本軌道データを取得する。基本軌道データを取得し、仮想基準平面または仮想基準線分の角度を変更することにより基本軌道を修正した修正軌道を生成して、修正軌道を移動する所定部位を起点にして関節モデルの各関節の位置および姿勢を決定することで、攻撃対象位置が異なっても、同じアニメーションデータの流用を可能とする技術が存在する(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0007】
【文献】特許第6153985号公報
【文献】特許第6310517号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
開示の技術は、複数のキャラクタに対して、アニメーションデータを適用する場合において、複数のキャラクタの大きさ、体型又は姿勢などが異なっていても、アニメーションデータを適切に適用して、複数のキャラクタに適切な一連の動作を行わせることを目的としている。
【課題を解決するための手段】
【0009】
開示の技術によって、ゲーム空間での複数のキャラクタによる対戦における攻撃のヒットのタイミングを含むシーンで、基準体型を持つ基準キャラクタと、前記対戦の相手キャラクタと、前記基準キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記対戦の動作を行わせるアニメーションデータとから、前記ヒットが発生することとなる前記基準キャラクタの基準部分と前記相手キャラクタの相手部分と前記ヒットのタイミングとを特定するステップと、前記ヒットのタイミングで、前記基準体型と異なる体型を持つ実キャラクタの、前記基準部分に対応する対応部分が、前記相手部分にヒットする前記シーンが生成されるように、前記実キャラクタ及び前記相手キャラクタのうちの少なくともいずれかに前記アニメーションデータが適用されるときに、前記実キャラクタの位置又は前記相手キャラクタの位置を移動させて前記シーンの画像を生成するステップであって、前記実キャラクタの骨格モデルは前記基準キャラクタの骨格モデルに対応する骨格モデルを持つ、画像を生成するステップと、をゲーム装置に実行させる画像生成プログラムが提供される。
加えて、開示の技術によって、画像生成処理装置及び画像生成方法が提供される。
【発明の効果】
【0010】
開示の技術によれば、複数のキャラクタに対して、アニメーションデータを適用する場合において、複数のキャラクタの大きさ、体型又は姿勢などが異なっていても、アニメーションデータを適切に適用して、複数のキャラクタに適切な一連の動作を行わせることができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、一実施形態のハードウエア構成の一例を示した図である。
【
図2】
図2は、キャラクタの体型モデルの例を示した図である。
【
図3】
図3は、キャラクタ、アニメーションデータ、ヒットにおけるキャラクタの部分などの関連を定義する表の例を示した図である。
【
図4】
図4は、一実施形態の機能ブロック図の例を示した図である。
【
図5】
図5は、実施形態1の処理のフローチャートを示した図である。
【
図6】
図6は、実施形態1の画像生成処理の具体例のフローチャートを示した図である。
【
図7】
図7は、実施形態1の画像生成処理の他の具体例のフローチャートを示した図である。
【
図8】
図8は、実施形態1の複数のヒットが略同時に発生したときの具体例のフローチャートを示した図である。
【
図9】
図9は、キャラクタの姿勢を修正するフローチャートを示した図である。
【
図10】
図10は、複数のヒットが連続して発生した時の処理を示す図である。
【
図11】
図11は、基準キャラクタと実キャラクタの違いによりヒットが発生しない例を示した図である。
【
図15】
図15は、相手キャラクタの両足を固定してIKを適用して実施形態1の変形例の各タイミングを示した図である。
【
図16】
図16は、実施形態2の処理のフローチャートを示した図である。
【
図17】
図17は、実施形態2の画像生成処理の具体例のフローチャートを示した図である。
【
図19】
図19は、実施形態1の変形例の各タイミングを示した図である。
【発明を実施するための形態】
【0012】
以下に説明する各種の実施形態は、各請求項に規定された発明を例示するためのものであって、限定するためのものではない。各実施形態のプログラムの手順は、方法の手順にも適用できる。また、プログラムは、一時的でない(non-transitory)記憶媒体に格納され得る。また、プログラム及び方法を実現する各手順は、矛盾の無い限り、順番を入れ換えたり、同時に実行したりすることができる。また、プログラムの一部は、汎用的なオペレーティングシステム又はハードウエアなどで実現されてもよい。
また、各実施形態は、それぞれが排他的なものではない。したがって、一方の実施形態の一部を他方の実施形態に組み入れることも意図されている。
各実施形態は、ゲームの画像を生成するための具体的な技術的要素により定義される。
【0013】
また、実施形態における各種のキャラクタは、プレイヤーが操作できるプレイヤーキャラクタであってもよいし、プレイヤーが操作できないノンプレイヤーキャラクタであってもよい。二つ以上のキャラクタにより対戦の画像生成を実現する各実施形態では、プレイヤーからの操作を画像生成に反映させるように、少なくとも1つのキャラクタは、プレイヤーが操作可能なプレイヤーキャラクタであることが望ましい。
【0014】
また、以下に説明する各実施形態では、説明に一貫性を持たせ、分かりやすくするために、複数のキャラクタのうち「相手キャラクタ」と称されるキャラクタが攻撃を行うキャラクタであるとして説明を行う。しかしながら、開示の技術は、必ずしも相手キャラクタが攻撃を行うキャラクタであることに限定されないことは言うまでもない。
【0015】
また、キャラクタに一連の動作を行わせるアニメーションデータは、複数のキャラクタのうちの少なくとも1つのキャラクタに対して適用されればよい。したがって、対戦に関連する複数のキャラクタのうちの一部のキャラクタはアニメーションデータの適用を受けなくてもよい。
【0016】
また、実施形態では、「ヒット」という言葉を用いる。ヒットとは、少なくとも2つのキャラクタの各々の一部の部分が接触または接近し、一方のキャラクタから他方のキャラクタにインパクト(影響)を与えることを言う。このヒットが発生するときを、ヒットのタイミングという。
【0017】
実施形態では、後述するスケルトンモデルを用いて説明を行う。スケルトンモデルにおいて、ヒットは、一方のキャラクタの骨又は関節が、他方のキャラクタの骨又は関節に接触する場合に限定されない。ヒットは、キャラクタの重心、骨から一定の距離だけ離れた体表部分、及び衣服の部分など、骨又は関節が存在しないキャラクタの部分であってもよい。したがって、以下の説明におけるキャラクタの「部分」とは、キャラクタの骨又は関節の一部でなくてもよい。なお、部分は、キャラクタ全体であってもよいし、キャラクタの特定の部分ではなく、どの部分であってもよいと定義されていてもよい。
また、実施形態は、スケルトンモデルに限定されず、スケルトンモデル以外のモデルに対しても適用され得る。
【0018】
なお、部分が骨の部分を示している場合、ヒットのタイミングで一方のキャラクタの骨と他方のキャラクタの骨とを接触させて画像生成を行うと、二つのキャラクタの体表部分同士がめり込む不自然な画像が生成されてしまうことがある。このような不自然な画像を生成させないように、二つのキャラクタの表面が接触した時点で、キャラクタ同士の体が重ならない(めり込まない)ようにキャラクタの動作が制御されてもよい。このような制御は、骨から体表までの距離のデータを、キャラクタを定義するデータが持っていることにより実現できる。なお、このような制御を行わせるか否かは、利用するマシンの能力に依存して、当業者が適宜決定すればよい。説明をわかりやすくするために、このような、キャラクタ同士の重なりについては以下の説明においては言及しないが、当然に考慮される事項であることは言うまでもない。
【0019】
以下、図面を参照しながら説明する。各図において、同じ構成又は同様の構成には、同じ符号が付されている。説明を簡略化して分かりやすくするために、同じ符号が付された構成に対して、繰り返し同じ説明を省略する場合があることに留意すべきである。
【0020】
図1は、一実施形態のハードウエア構成の一例を示した図である。ゲーム装置100において本実施形態が実現される。なお、ゲーム装置の一部のプログラム又は方法は、ネットワークNW140を介して接続されたサーバ装置150によって実行されてもよい。
【0021】
ゲーム装置100は、CPU102、RAM104、ROM106、表示制御部108、オーディオ制御部112、外部記憶制御部120、コントローラインタフェース部122、タッチパネルインタフェース部124、ネットワークインタフェース部126を備える。
表示制御部108には、ディスプレイ110が接続され、本実施形態において生成された画像が表示される。
【0022】
オーディオ制御部112には、マイク114及びスピーカ116等が接続される。RAM104、ROM106、外部記憶制御部120に接続されたメモリカード130及びDisk132には、本実施形態を実現するプログラム及びデータが格納され得る。なお、外部記憶制御部120には、その他の記憶装置(不図示)が接続されてもよい。また、本実施形態を実現する一部のプログラム、或いはデータは、サーバ装置150内に格納されていてもよい。
コントローラインタフェース部122には、プレイヤーからの操作指示を受け付けるコントローラ(不図示)が接続され得る。
【0023】
タッチパネルインタフェース部124には、ディスプレイ110などに設置されたタッチセンサ134が接続される。タッチセンサ134を介して、プレイヤーからの操作指示が受け取られてもよい。
【0024】
ネットワークインタフェース部126には、ネットワークNW140が接続される。ネットワークNW140は、電話回線、WIFI、近距離無線通信装置などが接続され、インターネットなどへのアクセスが実現される。ネットワークNW140には、サーバ装置150、他のプレイヤーのゲーム装置162などが接続され得る。ゲーム装置100は、ネットワーク140を介して、サーバ装置150及び複数のゲーム装置162と通信を行うことができる。本実施形態の一部は、サーバ装置150又はゲーム装置162の中で実現されてもよい。ゲームにおけるキャラクタの一部は、他のプレイヤーがゲーム装置162を操作することで、ゲーム装置100内で動きなどの種々の挙動が制御されてもよい。このようにすることで、ゲーム装置100において、複数のプレイヤーによってそれぞれのキャラクタが操作されて、対戦ゲームの画像が生成されてもよい。
CPU102は、RAM104、ROM106、メモリカード130又はDisk132に格納されたプログラムを実行することができる。
図1に示されたハードウエア構成は、実施形態の主要なハードウエアを例示するものであって、これらのハードウエア以外のハードウエアが接続されてもよい。
【0025】
図2は、ゲームプログラムが制御するキャラクタの例として、スケルトンモデルが例示されている。
図2のスケルトンモデルは、人間の形を表しているが、キャラクタは、人間の形に限定されない。例えばキャラクタが動物である場合には、動物のスケルトンモデルが用いられてもよい。キャラクタは建物或いは物体などであってもよい。
【0026】
キャラクタ等を動かす際に,複数の骨200aを関節200bで繋いだスケルトンモデル(骨格モデル)(
図2)が使われる場合がある。このようなスケルトンモデルは,仮想空間ばかりでなく,ロボット制御等の実空間における対象物を制御する場合にも用いられ得る。
【0027】
本明細書で扱うモデルは,
図2のように親子関係で繋がった複数の骨200a、関節200b及び体表200cで構成される。関節の回転(曲げ,捻り)の状態は,親骨を基準とした子骨の向きで表すことができる。骨の向きを表すために,各々の骨に対しては座標系(不図示)が定められる。親子関係にある骨の原点同士を結ぶ線分は骨となる。
【0028】
三次元(3D)仮想空間又は実空間上でキャラクタ(人体,動物,構造物等)の姿勢(ポーズ,動き等)を制御する際に用いられるこのようなスケルトンモデルにおいては,
図2に示す各々の骨および関節の位置,角度,回転(曲げ,捻り)等を意図したとおりに制御することが必要となる。
図2に示されるスケルトンモデルでは,各々の骨は関節で結合されており,各々の骨の動きが他の骨の動きに影響を与える。
【0029】
本実施形態では、例示として,
図2のスケルトンモデルを用いた場合を想定する。このスケルトンモデルは,人体の構造、動物及び構造物等をスケルトンモデル化したものである。したがって,例えば,肘から先の腕の可動範囲には,一定の制限がある。この制限を超えた角度(曲げ,捻り)に腕を曲げるポーズを取らせることは,現実の人間又は動物に対するモデルからかけ離れたものになる。人間又は動物として自然なポーズを取るスケルトンモデルを生成するためには,たとえば肘の関節から先の骨の可動範囲に対して,一定の制限を課すことが必要となる。
【0030】
たとえば親骨(親骨)に対する子骨(子骨)の向きを親骨の座標系を基準とした3軸(x,y,z)の各軸回りの回転角度で表現してキャラクタの動作の制御が行われてもよい。
【0031】
関節を中心点とする球面上の所与の点を焦点とし,関節に対応する中心点と焦点とを結ぶ軸に直交する平面を射影面とし,関節の可動範囲を,射影面上において設定してもよい。
【0032】
或いは、子骨の向きが,予め定められた可動範囲内に収まっていない場合、あるキャラクタの腕が、他のキャラクタの体内にめり込んでしまうなどの不自然な状況が発生する場合には,可動範囲の形状に応じた条件を満たすように、骨又は関節から体表までの距離を保持しておき、前記親骨に対する前記子骨の向きを補正してもよい。
【0033】
本実施形態において説明するアニメーションデータは、このスケルトンモデルの骨及び関節における種々のパラメータ等を時間軸と共に記憶しているデータである。同じスケルトンモデル又は類似のスケルトンモデルを持つキャラクタには、同じアニメーションデータが適用できる。スケルトンモデルが完全に一致しないキャラクタに対しても、一部の骨及び関節を一体化して取り扱ったり、制御対象から無視したりすることで、異なる体型、異なる初期ポーズ、異なる大きさのキャラクタに同じアニメーションデータを適用して、異なるキャラクタに対して、同様の一連の動作を行わせて、シーンの画像を生成することができる。
なお、本実施形態は、
図2のスケルトンモデル以外のモデルにも適用できることは言うまでもない。
図2の機能ブロック構成によって、以下に示す実施形態の処理が実行される。
【0034】
図3は、キャラクタ、アニメーションデータ、ヒットにおけるキャラクタの部分などの関連を定義する定義表300の例を示した図である。
図3の表300において、例えば基準キャラクタC0は、平手打ちのアニメーションの動作を行うことができ、そのアニメーションデータが格納されているアドレスのロケーションに付けられたラベルは、「平手打ち」であることが分かる。また、平手打ちの動作を行われる際の基準キャラクタC0が平手打ちのヒットを受ける部分(基準部分)は、右手のひらであり、相手キャラクタの相手部分は、右手のひらであることが分かる。この場合には、相手キャラクタが平手打ちを基準キャラクタに与える場合を定義している。その他のエントリも、各キャラクタの動作等を定義しているが、具体的な説明は省略する。
【0035】
また、仮想カメラのアニメーションデータが格納されているメモリ上のロケーションのラベルはカメラ3であることが分かる。また、仮想カメラのアニメーションデータには、基準キャラクタ或いは相手キャラクタのいずれに追随するかの情報が格納されていてもよい。或いは仮想カメラは、キャラクタの位置に依存せずに固定されている旨のデータが格納されていてもよい。
また、平手打ちのヒットのタイミングは、シーンの開始から0.23秒後であることが分かる。
【0036】
なお、アニメーションデータは、ヒットの後におけるキャラクタのアニメーションが含まれていてもよい。或いは、ヒットの後の各キャラクタの動作は、キャラクタに対するインパクトの大きさ、重力、風などの環境をシミュレーションすることで、実現されてもよい。本明細書では、ヒットまでの画像生成に関する技術を主として説明することとし、ヒットの後の各キャラクタの動作や挙動については、当業者が適宜に選択して実施することができる。
【0037】
図3の表300は、以上のように、各キャラクタのアニメーションデータ、ヒット時における各キャラクタのヒットする部分の位置、仮想カメラ、ヒットのタイミングなどの関連性を定義している。なお、表300に格納されるデータは以上のデータに限られるものではない。また、表300に示されているデータが必ず存在しなければならないわけではない。例えば、ヒットのタイミングは、モーションデータにおいて、基準キャラクタ又は相手キャラクタ部分の動作が一番大きくなるタイミングをヒットのタイミングと特定してもよい。
【0038】
表300の例示では、各部分が具体的に定義されているが、ヒットする部分がキャラクタの体のどの部分であってもよい場合には、具体的な部分が指定されていなくてもよい。
【0039】
また、各キャラクタの骨格モデルの形式が定義されていてもよい。同じ骨格モデル又は似た骨格モデルを持つ実キャラクタに基準キャラクタに関連付けられたモーションデータが利用できることは言うまでもない。
【0040】
図4は、画像生成装置に関する一実施形態の機能ブロック
図400の例を示した図である。アニメーションデータテーブル402は、シーンに関連する1つ又は複数のキャラクタの一連の動作を定義するアニメーションデータを定義している。アニメーションデータは、二つのキャラクタが対戦を行う場合、二つのキャラクタの両方の一連の動作を定義してもよい。或いは、片方(例えば攻撃側のキャラクタ)だけに対するアニメーションデータが定義されていてもよい。この場合、アニメーションデータが定義されていないキャラクタは、静止しているか、重力及び風などの環境の影響、プレイヤーの指示等によって動いてもよい。なお、以下に述べる実施形態では、ヒットが適切な部分に適用されるように、アニメーションデータ以外の要因での動作を禁止してもよい。或いは、アニメーションデータ以外の要因での動作を考慮して、アニメーション動作が変更されても、その変更に追随または相殺するようにすることで、ヒットの位置が、ずれないようにしてもよい。以下に述べる各実施形態及びその変形例は、アニメーションデータ以外の動作要因を考慮しているものと、考慮していないものがある点に留意すべきである。この点については、各実施形態及びその変形例を説明する際にも言及する。
【0041】
基準キャラクタデータテーブル404、実キャラクタデータテーブル406、相手キャラクタデータテーブル408は、それぞれのキャラクタの骨格モデルの種別、骨格の周りの体型及び服などの着衣している物を定義している。なお、基準キャラクタ及び実キャラクタは、下記の実施形態において、「所定のキャラクタ」と明記される場合がある点に留意すべきである。
【0042】
図4における特定部410は、シーンの画像が生成される前に、モーションデータ、関与するキャラクタ、キャラクタのヒットのする部分、ヒットのタイミング等を特定する。少なくともこれらの情報を特定することで、所望のシーンの画像が生成される。
【0043】
画像生成部420は、ベクトル計算部422、移動部424、アニメーションデータ適用部426を含む。ベクトル計算部422は、ヒットに関与する基準キャラクタの部分と実キャラクタ部分が異なる位置ベクトルに存在することを把握するために、それぞれの位置ベクトルとの差分ベクトルを計算する。また、計算された差分ベクトルをヒットまでのシーンに含まれるタイミングに適用するために、差分ベクトルをタイミングに応じて按分するなどの計算も行うことができる。
【0044】
移動部424は、例えば、ベクトル計算部422で計算されたベクトルにヒットの部分の位置ベクトルを加えたり引いたりすることによって、ヒットの部分の位置を移動させるなどの処理を行う。
【0045】
アニメーションデータ適用部は、アニメーションデータを単にキャラクタに適用するばかりでなく、上記の部分の移動、キャラクタの固定部分の存在などを考慮して、キャラクタの姿勢を制御することで、キャラクタに適切なアニメーションの動作を行わせる。また、仮想カメラを適切に移動させて、画像を生成する。
操作受取部430は、プレイヤーからの操作を受け取る。
なお、
図1に示したように、ネットワークインタフェース部を介して、他の装置からの情報が考慮されることは言うまでもない。また、音響などを生成したり、外部からの音などを収集したりする機能が含まれてもよい。
図4に示された機能は、主な機能を示した一例であって、本実施形態を限定するためのものではない点に留意すべきである。
【0046】
<実施形態1>
図5は、実施形態1の処理のフローチャートを示した図である。
図5を説明する前に、本実施形態1で対処する状況の例を示した
図11を説明する。
図11は、基準キャラクタと実キャラクタの違いによりヒットが発生しない例を示した図である。
図11(a)は、一連のヒットのシーンが5つのタイミングのフレームで構成されており、5つのフレームを重ねて描いている。
【0047】
図11(a)では、基準キャラクタC0に対して、相手キャラクタD1が右手を振り下ろして、相手キャラクタD1の右手のひらD1tが、基準キャラクタC0の右手のひらC0tにヒットする様子が示されている。
【0048】
相手キャラクタD1が右手を振り下ろす動作が、一連の5つの相手キャラクタ(相手キャラクタD10ないし相手キャラクタD14)で示されている。実際の攻撃シーンは、一秒間に例えば30フレームの映像が生成される。このため、1/2秒のヒットのシーンであっても初期フレームも含めて16フレームの画像が生成されることになる。
図11(a)は、フレーム数を少なくして、5つのフレームにより簡略化して示されている点に留意すべきである。
図11(a)に示されるように、アニメーションデータは、基準キャラクタ及び相手キャラクタの大きさ、体型又は姿勢などを前提に定義されている。
【0049】
図11(b)は、基準キャラクタC0よりも体型が小さい実キャラクタC2と相手キャラクタD1とに対してアニメーションデータを適用した例を示している。この場合には、実キャラクタC2が基準キャラクタC0よりも小さい体系であるため、実キャラクタC2の右手のひらC2tに、相手キャラクタD1の右手のひらD1tがヒットしていない。
【0050】
図11に示すように、本明細書における各実施形態は、アニメーションデータを適用してもヒットするべきキャラクタの部分同士がヒットしない場合など、アニメーションデータの適用の際に発生する不都合を解消し、適切なシーンの画像を生成することを目的の一つとしている。
図5に戻る。
図5のフローチャートは、実施形態1の処理の概略を示すフローチャートである。以下に、このフローチャートの各ステップについて説明する。
【0051】
ステップS502は、ゲーム空間での複数のキャラクタによる対戦における攻撃のヒットのタイミングを含むシーンにおいて、少なくとも以下の情報を特定する。すなわち、基準体型を持つ基準キャラクタと、対戦の相手キャラクタと、基準キャラクタ及び相手キャラクタのうちの少なくともいずれかに対戦の動作を行わせるアニメーションデータとから、ヒットが発生することとなる基準キャラクタの基準部分と相手キャラクタの相手部分とヒットのタイミングとが特定される。
【0052】
ゲームの進行を制御するゲームプログラムによって、現在使用すべきアニメーションデータが選択される。また、シーンに登場している実キャラクタ及び相手キャラクタが少なくとも特定される。実キャラクタとは、実際にシーンに登場するキャラクタであって、アニメーションデータが基準で適用される基準キャラクタとは異なる大きさ、体型、姿勢などを持つキャラクタを言う。また、相手キャラクタとは、実キャラクタの対戦のキャラクタを言う。実施形態の理解を助けるために、相手キャラクタ自体は、アニメーションデータが基準で適用されるキャラクタであるとして説明する。しかしながら、相手キャラクタも、基準キャラクタとは異なる大きさ、体型、姿勢を有していてもよい。この場合にも、実施形態の技術がそのまま適用できることは言うまでもない。
【0053】
ステップS504は、ヒットのタイミングで、基準体型と異なる体型を持つ実キャラクタの、基準部分に対応する対応部分が、相手部分にヒットするシーンが生成されるように、実キャラクタ及び相手キャラクタのうちの少なくともいずれかにアニメーションデータが適用されるときに、実キャラクタの位置又は相手キャラクタの位置を移動させてシーンの画像を生成する。なお、実キャラクタの骨格モデルは基準キャラクタの骨格モデルに対応する骨格モデルを持っており、基準キャラクタと同じアニメーションデータが実キャラクタにも適用できる。
以上の処理によって、実キャラクタの対応部分と相手キャラクタの相手部分がヒットのタイミングでヒットすることが実現される。
【0054】
図12は、実施形態1の具体例を示した図である。
図12(a)に示されるように、基準キャラクタC0の手のひらである基準部分C0tから、実キャラクタC2の対応部分C2tへのベクトルAが計算される。この場合、基準キャラクタ及び実キャラクタが、アニメーションデータにより動く場合には、ヒットのタイミングにおけるベクトルAを計算すればよい。
【0055】
なお、アニメーションデータを適用する際中に、アニメーションデータ以外の外的要因(例えば、重力、風などの環境の力、プレイヤーの動作指示など)で、キャラクタが動く場合には、実キャラクタの対応部分の動き及び相手キャラクタの相手部分の動きを考慮することが望ましい。このような場合の対処については、実施形態1の変形例において後述する。
【0056】
図12(b)に示されるように、相手キャラクタD1のキャラクタ全体の位置ベクトルにベクトルAを加える。このことにより、相手キャラクタD1の相手部分の位置ベクトルにベクトルAが足されることとなり、相手キャラクタD2の相手部分の位置ベクトルに移動する。
【0057】
図12(c)は、少なくとも相手キャラクタD2にアニメーションデータを適用して相手キャラクタD2が右手を振り下ろす動作が、一連の5つの相手キャラクタの動作(相手キャラクタD20ないし相手キャラクタD24)で示されている。
【0058】
そして、ヒットのタイミングにおける実キャラクタC2の手のひらである対応部分C2tと、相手キャラクタD24の手のひらである相手部分D2tとがヒットしている。
【0059】
以上の処理を行うことによって、基準キャラクタC0とは大きさ、体型、姿勢などが異なる実キャラクタC2を用いても、相手キャラクタD1から相手キャラクタD2の移動によって、ヒットのタイミングで、適切なヒットが含まれるシーンが得られることとなる。
【0060】
図13は、
図12と異なり、実キャラクタC2の位置ベクトルからベクトルAを引いた位置に実キャラクタC3に移動させて、実キャラクタC3と相手キャラクタD1とにアニメーションデータを適用することで、ヒットのタイミングにおける確実なヒットを実現させられることを示している。なお、
図13における各タイミングの相手キャラクタの位置は図示していないが、
図11における相手キャラクタD1の動作と同様であるので省略する。
【0061】
なお、上記の説明における移動は、実キャラクタC2又は相手キャラクタD1のいずれかをベクトルAだけ移動させる説明を行ったが、実キャラクタC2と相手キャラクタD1の位置が相対的にベクトルAに基づいて移動すればよいため、両者のキャラクタが移動するようにしてもよい。
【0062】
図6は、
図5におけるステップS504の詳細を示すフローチャートである。以下にその詳細を説明する。
ステップS602で、(1)実キャラクタを移動させるか、(2)相手キャラクタを移動させるか、を決定する。この決定は、ゲームプログラムにおいて予め決定しておくことが望ましい。或いはプレイヤーが指定してもよい。なお、移動するキャラクタは、より小さなキャラクタである方が自然なシーンとなる場合が多い。このため、ゲームプログラムが、対戦するキャラクタのうち、小さいキャラクタの方を、移動するキャラクタに選択してもよい。
【0063】
ステップS604で、アニメーションデータを用いて、ヒットのタイミングにおける基準キャラクタC0の基準部分から実キャラクタC2の対応部分へのベクトルAを計算する。
【0064】
ステップS606で、(1)実キャラクタC2の対応部分の位置ベクトルからベクトルAを引いた位置ベクトルが実キャラクタC3の対応部分の位置ベクトルとなるように実キャラクタC2を実キャラクタC3に移動させる、又は(2)相手キャラクタD1の相手部分の位置ベクトルにベクトルAを足した位置ベクトルが相手キャラクタD2の相手部分の位置ベクトルとなるように相手キャラクタD1を相手キャラクタD2に移動させる。
【0065】
ステップS608で、追随するキャラクタ(実キャラクタ又は相手キャラクタ)の移動に対応させて仮想カメラを移動させる。仮想カメラの視線方向を変更せずに、仮想カメラを追随するキャラクタ(実キャラクタ又は相手キャラクタ)の移動と同じ移動方向に平行移動させることによって、撮像対象のシーンを仮想カメラが見失うことが防止できる。
【0066】
なお、仮想カメラは、実キャラクタ又は相手キャラクタに追随させずに、広角度に撮像されている場合には、仮想カメラの移動を行うことは必ずしも必要ない場合がある点に留意すべきである。
【0067】
ステップS610で、アニメーションデータを実キャラクタ及び相手キャラクタのうちの少なくともいずれかに適用して、仮想カメラを用いてシーンの画像を生成する。
以上の処理によって、適切なシーンの画像が生成される。
【0068】
<実施形態1の変形例>
次に、上記実施形態1の変形例について説明する。実施形態1では、ヒットのタイミングにおけるベクトルAを用いているため、シーンの途中でのアニメーションデータ以外の外的要因(例えば、重力、風などの環境の力、プレイヤーの動作指示など)で、いずれかのキャラクタが動く場合には、実キャラクタの対応部分の動き及び相手キャラクタの相手部分の動きが、充分に考慮できない場合がある。このような外的要因により、ヒットが適切に実現できないことがある。
【0069】
図7は、このようなアニメーションデータ以外の外的要因(例えば、重力、風などの環境の力、プレイヤーの動作指示など)を適切に考慮するように、各タイミングに外的要因の影響を考慮する例を示す実施形態1の変形例である。
なお、本明細書及び図面において映像フレームの番号を用いて実施形態が説明される場合には、タイミングは映像フレームの番号で表され得る。例えばアニメーションの開始のフレームをフレーム0とすれば、順次フレームの番号をインクリメントして、k番目のフレームはフレームkとなる。隣り合うフレーム時間間隔は一定であるため、フレームの番号は、所定のタイミングを意味することとなる点に留意すべきである。
【0070】
ステップS702で、処理するフレーム番号を初期化してk=0とする、また、(10)実キャラクタを移動させるか、(20)相手キャラクタを移動させるか、を決定する。この決定の仕方については、
図6に述べた。
【0071】
ステップS704でkがMを超えているか否かをチェックする。フレームMは、ヒットが発生するフレームを意味する。kがMを超えている場合には、処理を終了する。なお、ヒットの後のキャラクタの動きは、更にアニメーションデータを適用してもよいし、ヒットのインパクトを考慮して、キャラクタの動きを実際の人間などの動きと似た形で動作させるシミュレーションの処理を適用してもよい。ヒットの後における処理は、本実施形態に影響されることなく、当業者が適宜にキャラクタの動作処理を適用してよい。
ステップS704で、判断が肯定的であれば、処理は終了する。判断が否定的であれば、処理は、ステップS706に移る。
ステップS706で、アニメーションデータを用いてフレームkにおいて:
【0072】
(k1)透明な基準キャラクタの基準部分から実キャラクタの対応部分へのベクトルAkを計算し、かつ、(k2)透明な相手キャラクタの相手部分から相手キャラクタの相手部分へのベクトルBkを計算する。ここで、透明な基準キャラクタ及び透明な相手キャラクタとは、前記アニメーションデータ以外の外的要因(例えば、重力、風などの環境の力、プレイヤーの動作指示など)による位置の移動を考慮しないキャラクタである。
【0073】
ステップS708で、(10)実キャラクタの対応部分の位置ベクトルからベクトル(Ak-Bk)を引いた位置ベクトルが実キャラクタの対応部分の位置ベクトルとなるよう実キャラクタを移動させる、又は(20)相手キャラクタの相手部分の位置ベクトルにベクトル(Ak-Bk)を足した位置ベクトルが相手キャラクタの相手部分の位置ベクトルとなるよう相手キャラクタを移動させる。
この処理により、上記外的要因が考慮されることとなる。
ステップS710で、追随するキャラクタ(実キャラクタ又は相手キャラクタ)の移動に対応させて仮想カメラを移動させる。
ステップS712で、仮想カメラを用いてシーンのフレームkの画像を生成する。
ステップS714で、kをインクリメントして、ステップS704に戻る。
【0074】
以上の処理を行うことにより、各フレームで、アニメーションデータ以外の外的要因(例えば、重力、風などの環境の力、プレイヤーの動作指示など)による位置の移動を考慮して、実キャラクタ又は相手キャラクタの位置が適宜修正され、自然でかつ適切な画像が生成される。
【0075】
図14は、実施形態1の変形例を示した図である。
図14(a)では、フレーム0での基準キャラクタC0と、相手キャラクタD1が示されている。また、フレームk=0~4までの実キャラクタ(それぞれ実キャラクタC40ないしC44)の外的要因(例えば、重力、風などの環境の力、プレイヤーの動作指示など)による位置の移動の様子を示している。
【0076】
図14(b)では、基準キャラクタC0の基準部分C0Qから実キャラクタの対応部分への各フレームでのベクトルAk(ベクトルA0ないしベクトルA4)が示されている。
【0077】
なお、説明を簡単にするために、相手キャラクタの外的要因(例えば、重力、風などの環境の力、プレイヤーの動作指示など)は無いものとして、透明な相手キャラクタD1の相手部分から相手キャラクタの相手部分へのベクトルBk(B0=B1=B3=B4)=0としている。
【0078】
この場合には、ベクトルAk-Bkは、ベクトルA0ないしベクトルA4となる。これらのベクトルを用いて、各タイミングの相手キャラクタを移動させる。
図14(b)では、透明な相手キャラクタD1の首関節D1Qを起点として、各タイミングの相手キャラクタをベクトル(Ak-Bk)だけ移動させている。
【0079】
図15は、相手キャラクタの両足先(Fa、Fb)及び相手キャラクタの相手部分の位置を固定してIKを適用して相手キャラクタの姿勢を修正して、実施形態1の変形例の各フレームを示した図である。
図15(a)は、実キャラクタの右手のひらである対応部分C4tと相手キャラクタD4の右手のひらである相手部分D4tとがヒットしていることが分かる。
図15(b)は、k=0ないし4の各フレームF0ないしF4における実キャラクタC4と相手キャラクタD4を含む生成された画像の例を示している。
【0080】
図8は、実施形態1の複数のヒットが略同時に発生したときの具体例のフローチャートを示した図である。シーンが同時に複数のヒットを含む場合であって、複数のヒットの各々が、異なる相手キャラクタを持っているときには、シーンのフレームkにおいて、異なる相手キャラクタの各々から求まる移動の方向及び移動の距離に基づいて、複数の相手キャラクタの各々の位置を移動させる。フレームkの画像を生成する。
上記の処理を、フレーム0からヒットのタイミングのフレームMまで繰り返すことで、実行される。
ステップS802とステップS810との間で、1フレームごとに、フレーム0からフレームMまで、以下の処理を繰り返し実行する。
ステップS804で、第1のヒットのシーンにおけるフレームkのアニメーションの実行を行う。
ステップS806で、第2のヒットのシーンにおけるフレームkのアニメーションの実行を行う。
ステップS808で、仮想カメラを用いてシーンのフレームkの画像を生成する。
以上の処理で、略同時に実行されるアニメーションを略同時に実行するシーンに含まれる画像を生成することができる。
【0081】
図9は、キャラクタの姿勢を修正するフローチャートを示した図である。例えば、キャラクタを下方に移動させることにより、キャラクタの足が地面に潜り込まないようにさせる処理が必要な場合がある。このような場合には、一旦キャラクタを移動した後に、キャラクタの足を地面に設置させる。キャラクタの足を固定して、例えばインバース・キネマティクスを適用して、キャラクタのその他の姿勢を修正することで対応できる。
【0082】
なお、キャラクタの移動距離が大きい場合(例えば、キャラクタが空中に飛び上がってしまって、足が地面に設置できない場合など)には、キャラクタを空中に浮遊させておくことで対応する以外に、適切な対処が見つからない場合もあり得る。このような場合には、キャラクタを空中に浮遊させたままとすることで、対処してもよい。
【0083】
ステップS902で、移動させるキャラクタが固定部分を持つかが判断される。判断が否定的であれば、処理は終了する。判断が肯定的であれば、処理はステップS904に移る。
ステップS904で、キャラクタを移動させる。なお、実施形態2においては、キャラクタの部分を移動させる。
ステップS906で、足先など、固定部分を固定位置に戻す処理を行う。
【0084】
ステップS908で、固定部分以外の部分にインバース・キネマティクスを適用して、キャラクタの姿勢を修正する。なお、この場合、ヒットが発生する部分については、移動させないように処理することが望ましい。
以上の処理によって、移動させたキャラクタの姿勢を修正することができる。
【0085】
シーンが略同時に複数のヒットを含む場合であって、複数のヒットの各々が、実キャラクタの異なる対応部分を持っているときには、異なる対応部分の各々から求まる移動の方向及び移動の距離を平均した値に基づいて、実キャラクタ又は相手キャラクタの位置を移動させる。
【0086】
図10は、複数のヒットが連続して発生した時の処理を示す図である。
ステップS1002で、第1のヒットのシーンにおけるアニメーションを実行する。
ステップS1004で、第1のヒットのタイミングの状態を初期状態に設定した後に、第2のヒットのシーンにおけるアニメーションを実行する。
以上の処理によって、連続するヒットに対して、適切な画像生成処理が行える。
以上のように、複数のキャラクタに対して、アニメーションデータを適用する場合において、複数のキャラクタの大きさ、体型又は姿勢などが異なっていても、アニメーションデータを適切に適用して、複数のキャラクタに適切な一連の動作を行わせることが可能となる。
<実施形態2>
【0087】
図16は、実施形態2の処理のフローチャートを示した図である。実施形態2は、ヒットのタイミングにおける所定のキャラクタの所定部分と相手キャラクタの相手部分がヒットすることとなるように制御を行う。この場合、ヒットのタイミングにおける所定部分から相手部分までのベクトルを利用する。そして、このベクトルがヒットのタイミングでゼロとなるように、例えば相手キャラクタの相手部分の位置をタイミングごとに制御する。
【0088】
既に説明した実施形態1では、キャラクタ全体の位置を移動させたが、この実施形態2では、キャラクタの部分を移動させ、その移動にともなってキャラクタの姿勢を、インバース・キネマティクスを用いて修正するようにすることで、なるべく自然な姿勢で、ヒットがなされるシーンの画像が得られるようにするものである。
図16のフローを説明する。
ステップS1602で、ヒットが発生することとなる所定のキャラクタの所定部分と相手キャラクタの相手部分とヒットのタイミングとを特定する。
ステップS1604で、ヒットのタイミングでの所定部分から相手部分までのベクトルZを計算する。
【0089】
ステップS1606で、ヒットのタイミングで、所定部分が、相手部分にヒットするように、シーンに含まれる複数のタイミングの各々に対して、ベクトルを用いて相手部分の位置を移動させることで、シーンの画像を生成する。
【0090】
図17は、実施形態2の画像生成処理の具体例のフローチャートを示した図である。
以下に、実施形態2の画像生成処理の具体的な処理の例を示す。
ステップS1702では、実施形態1と同様のゲーム空間での複数のキャラクタによる対戦における攻撃のヒットのタイミングを含むシーンを想定している。複数のフレームの各々に、開始のフレームからヒットのタイミングのフレームまで、増加する重み係数(P0…PM)を割り当てる。
ステップS1704で、タイミングkを初期化する(k=0)。そして、ヒットのタイミングでの前記所定部分から前記相手部分までのベクトルを計算する
【0091】
ステップS1706で、kがMを超えているか否かをチェックする。フレームMは、ヒットが発生するフレームを意味する。kがMを超えている場合には、処理を終了する。なお、ヒットの後のキャラクタの動きは、更にアニメーションデータを適用してもよいし、ヒットのインパクトを考慮して、キャラクタの動きを実際の人間などの動きと似た形で動作させるシミュレーションの処理を適用してもよい。ヒットの後における処理は、本実施形態に影響されることなく、当業者が適宜にキャラクタの動作処理を適用してよい。
【0092】
ステップS1708でアニメーションデータを相手キャラクタに適用する。ベクトルZは計算済みであるため、フレームkでの相手部分の位置ベクトルをYk、重み係数をPkとして、
Yk ← Yk+Pk・Z
【0093】
を計算して、相手部分を移動させる。
ステップS1710で、少なくとも相手部分を固定してキャラクタにインバース・キネマティクスを適用して、所定のキャラクタの姿勢を補正する。
ステップS1712で、仮想カメラを用いてシーンのフレームkの画像を生成する。
ステップS1714でkをインクリメントする。
以上の処理で、各タイミングでの相手部分の位置が修正されると共に、相手キャラクタの姿勢も、インバース・キネマティクスを用いて修正される。
【0094】
図18は、実施形態2の具体例を示した図である。ヒットのフレームにおいて、本来であれば、所定のキャラクタE1の右手のひらである所定部分E1tと、相手キャラクタD1の右手のひらである相手部分D1tとはヒットすることとなるはずである。しかしながら、所定部分E1tと相手部分D1tとは、ベクトルZだけ離れた状態となっている。
【0095】
そこで、各フレームにおける相手キャラクタの相手部分の位置を、それぞれベクトルZ0、Z1、Z2、Z3及びZだけ移動させる処理を行う。それぞれベクトルZ0、Z1、Z2、Z3及びZは、単調増加関数の重み係数をかけて、徐々に大きくなるベクトルとすることが望ましい。インパクトのフレームでの相手部分の位置ベクトルにベクトルZを加えるため、相手部分D1tは、所定部分E1tにヒットすることとなる。
【0096】
また、最初は、小さい重み係数をかけたZ0によって相手部分が移動するようにすることが望ましい。このようにすることによって、相手部分が初期のタイミングで大きく移動するのを避けることができる。そして、最後のインパクトのタイミングでは、相手部分D1tは、所定部分E1tにヒットすることとなるので、相手キャラクタの動作は滑らかになる。また、これらのベクトルによる相手部分の移動において、相手部分キャラクタにインバース・キネマティクスを適用して姿勢を修正することとすれば、相手キャラクタの姿勢もより自然なものとなる。
【0097】
図19は、実施形態1の変形例の各フレームを示した図である。
図19(a)は、相手部分をそれぞれ移動させたのち、インバース・キネマティクスを適用した場合の相手キャラクタが重ねて描かれている。そして、ヒットのフレームで、所定部分E1tと相手部分D5tとが適切にヒットしている。
図19(b)は、k=1ないし4の各フレームF00ないしF04における所定のキャラクタE1と相手キャラクタD5を含む生成された画像の例を示している。
【0098】
以上のように、複数のキャラクタに対して、アニメーションデータを適用する場合において、複数のキャラクタの大きさ、体型又は姿勢などが異なっていても、アニメーションデータを適切に適用して、複数のキャラクタに適切な一連の動作を行わせることが可能となる。
【符号の説明】
【0099】
100 ゲーム装置
102 オーディオ制御部
104 RAM
106 ROM
【0100】
108 表示制御部
110 ディスプレイ
112 オーディオ制御部
114 マイク
116 スピーカ
120 外部記憶制御部
122 コントローラインタフェース部
124 タッチパネルインタフェース部
126 ネットワークインタフェース部
130 メモリカード
134 タッチセンサ
140 ネットワーク
150 サーバ装置
162 ゲーム装置
200a 骨
200b 関節
200c 体表
【0101】
300 定義表
400 機能ブロック図
402 アニメーションデータテーブル
404 基準キャラクタデータテーブル
406 実キャラクタデータテーブル
408 相手キャラクタデータテーブル
410 特定部
420 画像生成部
422 ベクトル計算部
424 移動部
426 アニメーションデータ適用部
430 操作受取部