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

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

▶ 株式会社コーエーテクモゲームスの特許一覧

特開2023-69831画像生成プログラム、記録媒体、画像生成方法
<>
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図1
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図2
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図3
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図4
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図5
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図6
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図7
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図8
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図9
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図10
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023069831
(43)【公開日】2023-05-18
(54)【発明の名称】画像生成プログラム、記録媒体、画像生成方法
(51)【国際特許分類】
   G06T 13/40 20110101AFI20230511BHJP
   A63F 13/60 20140101ALI20230511BHJP
   G16Z 99/00 20190101ALI20230511BHJP
【FI】
G06T13/40
A63F13/60
G16Z99/00
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2021181982
(22)【出願日】2021-11-08
(71)【出願人】
【識別番号】595000427
【氏名又は名称】株式会社コーエーテクモゲームス
(74)【代理人】
【識別番号】110003096
【氏名又は名称】弁理士法人第一テクニカル国際特許事務所
(72)【発明者】
【氏名】高松 賢二
【テーマコード(参考)】
5B050
5L049
【Fターム(参考)】
5B050AA10
5B050BA08
5B050BA09
5B050CA07
5B050EA24
5B050EA26
5B050FA02
5L049DD02
(57)【要約】
【課題】情報処理装置の計算負荷を軽減しつつオブジェクトが変形する画像を生成する。
【解決手段】ゲームプログラムは、情報処理装置3を、布オブジェクトに対し、互いに個数の異なる制御点35,39を配列した複数の制御点群33,37を設定する制御点群設定処理部13、複数の制御点群33,37のいずれかに布オブジェクトを変形させるための布シミュレーション処理を実行することにより、制御点群33,37を構成する各制御点35,39の布シミュレーションによる目標位置をそれぞれ計算する第1目標位置計算処理部17、所定の切替条件が満たされた場合に、布シミュレーション処理を実行する対象を、複数の制御点群33,37のいずれかに切り替える制御点群切替処理部19、制御点35,39の布シミュレーションによる目標位置に基づいて、布オブジェクトの画像を生成する画像生成処理部27、として機能させる。
【選択図】図2
【特許請求の範囲】
【請求項1】
情報処理装置を、
オブジェクトに対し、互いに個数の異なる制御点を配列した複数の制御点群を設定する制御点群設定処理部、
前記複数の制御点群のいずれかに前記オブジェクトを変形させるための所定のシミュレーション処理を実行することにより、前記制御点群を構成する各制御点の第1目標位置をそれぞれ計算する第1目標位置計算処理部、
所定の切替条件が満たされた場合に、前記所定のシミュレーション処理を実行する対象を、前記複数の制御点群のいずれかに切り替える制御点群切替処理部、
前記制御点の前記第1目標位置に基づいて、前記オブジェクトの画像を生成する画像生成処理部、
として機能させるための画像生成プログラム。
【請求項2】
前記複数の制御点群は、
第1の個数の第1制御点を配列した第1制御点群と、前記第1の個数よりも少ない第2の個数の第2制御点を配列した第2制御点群と、を含み、
前記情報処理装置を、
前記所定のシミュレーション処理を実行する対象が前記第2制御点群に切り替えられた場合に、前記第2制御点群の各第2制御点の前記第1目標位置に基づいて前記第1制御点群の各第1制御点の第2目標位置をそれぞれ計算する第2目標位置計算処理部、
としてさらに機能させ、
前記画像生成処理部は、
前記所定のシミュレーション処理を実行する対象が前記第1制御点群に切り替えられた場合は前記各第1制御点の前記第1目標位置に基づいて、前記第2制御点群に切り替えられた場合は前記各第1制御点の前記第2目標位置に基づいて、前記オブジェクトの画像を生成する、
請求項1に記載の画像生成プログラム。
【請求項3】
前記第2目標位置計算処理部は、
前記第1制御点に関連付けされた複数の前記第2制御点の関連度合いを表す情報と、関連付けされた各第2制御点の前記第1目標位置とに基づいて、前記各第1制御点の前記第2目標位置をそれぞれ計算する、
請求項2に記載の画像生成プログラム。
【請求項4】
前記情報処理装置を、
前記所定のシミュレーション処理を実行する対象を前記第1制御点群と前記第2制御点群との間で切り替える際に、前記第1目標位置と前記第2目標位置との差分を補間する目標位置補間処理部、
としてさらに機能させるための請求項2又は3に記載の画像生成プログラム。
【請求項5】
前記目標位置補間処理部は、
前記所定のシミュレーション処理を実行する対象を前記第1制御点群又は前記第2制御点群に切り替えた時点から所定の時間の間に、切替前の目標位置を切替後の目標位置に向けて徐々に変化させるように、前記差分を補間する、
請求項4に記載の画像生成プログラム。
【請求項6】
前記第1制御点群は前記第1の個数の前記第1制御点を格子状に配列して構成され、前記第2制御点群は前記第2の個数の前記第2制御点を格子状に配列して構成されており、
前記情報処理装置を、
前記第1制御点群における前記第1制御点の配列を所定の間隔で間引くことにより、前記第2制御点群における前記第2制御点の配列を生成する制御点配列生成処理部、
としてさらに機能させるための請求項2乃至5のいずれか1項に記載の画像生成プログラム。
【請求項7】
前記画像生成プログラムはゲームプログラムである、
請求項1乃至6のいずれか1項に記載の画像生成プログラム。
【請求項8】
請求項1乃至7のいずれか1項に記載の画像生成プログラムを記録した、情報処理装置が読み取り可能な記録媒体。
【請求項9】
情報処理装置によって実行される画像生成方法であって、
オブジェクトに対し、互いに個数の異なる制御点を配列した複数の制御点群を設定するステップと、
前記複数の制御点群のいずれかに前記オブジェクトを変形させるための所定のシミュレーション処理を実行することにより、前記制御点群を構成する各制御点の第1目標位置をそれぞれ計算するステップと、
所定の切替条件が満たされた場合に、前記所定のシミュレーション処理を実行する対象を、前記複数の制御点群のいずれかに切り替えるステップと、
前記制御点の前記第1目標位置に基づいて、前記オブジェクトの画像を生成するステップと、
を有する、画像生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像生成プログラム、記録媒体、及び画像生成方法に関する。
【背景技術】
【0002】
従来、仮想空間内のキャラクタオブジェクトを変形させた画像を生成する技術が知られている。この技術によれば、主ボーンに固定された座標系における副ボーンの位置を変化させ、仮想空間に固定された座標系における制御点の位置を副ボーンの位置の変化量に基づいて計算し、計算された制御点の位置に基づいてスキンの形状を決めた画像を生成することで、仮想空間内のキャラクタオブジェクトを変形させる(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第4579964号
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記従来技術では、オブジェクトが変形する画像を生成するために複雑な演算を行う必要があり、計算負荷が大きいという課題があった。
【0005】
本発明はこのような問題点に鑑みてなされたものであり、情報処理装置の計算負荷を軽減しつつ、オブジェクトが変形する画像を生成することが可能な画像生成プログラム、記録媒体、及び画像生成方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明の画像生成プログラムは、情報処理装置を、オブジェクトに対し、互いに個数の異なる制御点を配列した複数の制御点群を設定する制御点群設定処理部、前記複数の制御点群のいずれかに前記オブジェクトを変形させるための所定のシミュレーション処理を実行することにより、前記制御点群を構成する各制御点の第1目標位置をそれぞれ計算する第1目標位置計算処理部、所定の切替条件が満たされた場合に、前記所定のシミュレーション処理を実行する対象を、前記複数の制御点群のいずれかに切り替える制御点群切替処理部、前記制御点の前記第1目標位置に基づいて、前記オブジェクトの画像を生成する画像生成処理部、として機能させる。
【0007】
上記目的を達成するために、本発明の記録媒体は、上記画像生成プログラムを記録した、情報処理装置が読み取り可能な記録媒体である。
【0008】
上記目的を達成するために、本発明の画像生成方法は、情報処理装置によって実行される画像生成方法であって、情報処理装置によって実行される画像生成方法であって、オブジェクトに対し、互いに個数の異なる制御点を配列した複数の制御点群を設定するステップと、前記複数の制御点群のいずれかに前記オブジェクトを変形させるための所定のシミュレーション処理を実行することにより、前記制御点群を構成する各制御点の第1目標位置をそれぞれ計算するステップと、所定の切替条件が満たされた場合に、前記所定のシミュレーション処理を実行する対象を、前記複数の制御点群のいずれかに切り替えるステップと、前記制御点の前記第1目標位置に基づいて、前記オブジェクトの画像を生成するステップと、を有する。
【発明の効果】
【0009】
本発明の画像生成プログラム等によれば、計算負荷を軽減しつつ、オブジェクトが変形する画像を生成することができる。
【図面の簡単な説明】
【0010】
図1】実施形態に係るゲームシステムの全体構成の一例を表すシステム構成図である。
図2】情報処理装置の機能的構成の一例を表すブロック図である。
図3】制御点群設定処理部により設定された第1制御点群の一例を表すキャラクタの正面図である。
図4】制御点群設定処理部により設定された第2制御点群の一例を表すキャラクタの正面図である。
図5】制御点配列生成処理部による配列生成の一例を表す説明図である。
図6】正方形の布を模した三次元対象物を形成する複数の四角形の一例を表す図、及び、三次元対象物の描画に必要な計算を行う場合に想定される力学モデルの一例を表す図である。
図7】第2目標位置計算処理部による第2目標位置の計算手法の一例を表す説明図である。
図8】目標位置補間処理部による目標位置の補間の一例を表す図である。
図9】情報処理装置によって実行される処理手順の一例を表すフローチャートである。
図10】3種類以上の制御点群を設定する変形例における、制御点配列生成処理部による配列生成の一例を表す説明図である。
図11】情報処理装置のハードウェア構成の一例を表すブロック図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態について図面を参照しつつ説明する。なお、以下に説明する実施形態では、本発明をゲームに適用する場合、すなわち本発明の画像生成プログラム及び画像生成方法が情報処理装置によって実行されることによりゲームが提供される場合について説明するが、適用対象をゲームに限定するものではない。
【0012】
<1.ゲームシステムの全体構成>
図1を用いて、実施形態に係るゲームシステム1の全体構成の一例について説明する。図1に示すように、ゲームシステム1は、情報処理装置3と、ゲームコントローラ5と、表示装置7とを有する。ゲームコントローラ5及び表示装置7は、情報処理装置3と有線又は無線により通信可能に接続されている。
【0013】
情報処理装置3は、例えば据え置き型のゲーム機である。但しこれに限定されるものではなく、例えば入力部や表示部等を一体に備えた携帯型のゲーム機でもよい。また、ゲーム機以外にも、例えば、サーバコンピュータ、デスクトップ型コンピュータ、ノート型コンピュータ、タブレット型コンピュータ等のように、コンピュータとして製造、販売等されているものや、スマートフォン、携帯電話、ファブレット等のように、電話機として製造、販売等されているものでもよい。
【0014】
プレイヤは、ゲームコントローラ5を用いて各種の操作入力を行う。図1に示す例では、ゲームコントローラ5は、例えば十字キー9、複数のボタン10、ジョイスティック11、タッチパッド12等を有する。
【0015】
<2.情報処理装置の機能的構成>
図2及び図3図8を用いて、情報処理装置3の機能的構成の一例について説明する。
【0016】
図2に示すように、情報処理装置3は、制御点群設定処理部13と、制御点配列生成処理部15と、第1目標位置計算処理部17と、制御点群切替処理部19と、第2目標位置計算処理部21と、目標位置補間処理部23と、制御点更新処理部25と、画像生成処理部27とを有する。
【0017】
制御点群設定処理部13は、オブジェクトに対し、互いに個数の異なる制御点を配列した複数の制御点群を設定する。「オブジェクト」は、変形するように描写される柔軟なオブジェクトであれば、その種類は特に限定されるものではない。本実施形態では布オブジェクトを例にとって説明する。例えば図3に示すように、キャラクタ29が着用する和服オブジェクト31において、袖部31a(オブジェクトの一例)や、帯より下方の部分である裾部31b(オブジェクトの一例)等を構成する布オブジェクトである。これらの部位の布オブジェクトは、キャラクタ29の身体動作等に応じて布のように変形するように処理される。
【0018】
「互いに個数の異なる制御点を配列した複数の制御点群」とは、例えば制御点の個数を2段階に設定した場合、個数が多い制御点群と個数が少ない制御点群の2種類の制御点群である。なお、制御点の個数を3段階以上に設定し、3種類以上の制御点群としてもよい。複数の制御点群は、各々が独立した制御点群として処理される。複数の制御点群は、オブジェクトの表面に対して同一の高さ(オブジェクト表面の法線方向の高さ)に配置されてもよいし、各制御点群が異なる高さとなるように配置されてもよい。
【0019】
図3及び図4に、制御点群設定処理部13により設定された制御点群の一例を示す。図3に示す例では、和服オブジェクト31の袖部31aと裾部31bに第1制御点群33が設定されている。第1制御点群33では、例えばN個(第1の個数の一例)の第1制御点35が格子状に配列されている。図4に示す例では、和服オブジェクト31の袖部31aと裾部31bに第2制御点群37が設定されている。第2制御点群37では、N個より少ない個数(例えばN/4個。第2の個数の一例)の第2制御点39が格子状に配列されている。第2制御点群37の配列は、例えば第1制御点群33の配列を1つおきの配列となるように間引くことにより生成されている。
【0020】
図2に戻り、制御点配列生成処理部15は、第1制御点群33における第1制御点35の配列を所定の間隔で間引くことにより、第2制御点群37における第2制御点39の配列を生成する。
【0021】
図5に、制御点配列生成処理部15による配列生成の一例を示す。図5に示す例では、第1制御点群33における第1制御点35の格子状の配列を1つおきの配列となるように間引くことにより、第2制御点群37における第2制御点39の配列が生成されている。この場合、第2制御点39の個数(例えば16個)は第1制御点35の個数(例えば64個)の1/4となる。
【0022】
図2に戻り、第1目標位置計算処理部17は、複数の制御点群33,37のいずれかにオブジェクトを変形させるための所定のシミュレーション処理を実行することにより、制御点群33,37を構成する各制御点35,39の第1目標位置をそれぞれ計算する。
【0023】
「所定のシミュレーション処理」とは、オブジェクトの変形をシミュレート可能な処理であれば特に限定されるものではないが、例えば布オブジェクトの変形をシミュレート可能ないわゆる布(クロス)シミュレーション処理が好適である。具体的には、例えば弾性バネモデルにより力学的な計算を行うシミュレーション処理を用いてもよい。図6(a)は、例えば正方形の布を模した三次元対象物を形成する複数の四角形の一例を表す説明図であり、図6(b)は、図6(a)に示した三次元対象物の描画に必要な計算を行う場合に想定される力学モデルの一例を表す説明図である。
【0024】
図6(a)に示す三次元対象物の描画に要する計算を行う場合には、図6(b)に示すように各四角形の頂点を質点とし、隣接する質点間をバネで接続し、これらのバネにより各質点が隣接する質点(布の端部の質点では隣接する2又は3の質点)から力を受けるバネモデルを想定する。このバネモデルにより、例えば布の端部を引っ張るという動きを描画する場合に、布の端部に相当する質点にかかる力、またその質点に隣接する質点にかかる力、さらにその質点に隣接する質点にかかる力を計算することが可能となり、布を模した三次元対象物の形状の変化を計算により求めることが可能となる。
【0025】
また、布シミュレーション処理として例えば位置ベースの物理シミュレーション処理(PBD:Position Based Dynamics。論文「Position Based Dynamics」、http://matthias-mueller-fischer.ch/publications/posBasedDyn.pdf)を用いてもよい。PBDは、速度情報を持たずに現在位置、前状態の位置、そしてフレーム更新時間Δt(例えば60fpsの場合には16.67ms)で物理計算をしていく手法である。
【0026】
なお、上記のシミュレーション処理以外にも、布のような動きをシミュレート可能な手法であれば、様々なシミュレーション処理を採用することができる。なお、本明細書では説明の便宜上、第1目標位置計算処理部17により実行される所定のシミュレーション処理を「布シミュレーション」と、第1目標位置計算処理部17により計算される制御点35,39の第1目標位置を「布シミュレーションによる目標位置」ともいう。
【0027】
図2に戻り、制御点群切替処理部19は、所定の切替条件が満たされた場合に、布シミュレーション処理を実行する対象を、複数の制御点群33,37のいずれかに切り替える。「所定の切替条件」は、典型的には視点(仮想カメラ)と布オブジェクトとの距離である。例えば視点とキャラクタ29との距離が所定のしきい値よりも近い場合には、制御点群切替処理部19は、布シミュレーション処理を実行する対象を、相対的に制御点数が多い第1制御点群33に切り替える。一方、視点とキャラクタ29との距離が所定のしきい値よりも遠い場合には、制御点群切替処理部19は、布シミュレーション処理を実行する対象を、相対的に制御点数が少ない第2制御点群37に切り替える。
【0028】
なお、制御点群33,37の切り替えにおいて、オブジェクトの重要度を考慮してもよい。例えばキャラクタ29がプレイヤが操作するプレイヤキャラクタである場合等、キャラクタ29の重要度が高い場合には、視点とキャラクタ29との距離に関わらず、常に第1制御点群33に設定してもよい。一方、例えばキャラクタ29がゲームプログラムにより自動的に操作されるノンプレイヤキャラクタである場合等、キャラクタ29の重要度が低い場合には、上述のようにして視点とキャラクタ29との距離に応じて制御点群33,37が切り替えられてもよい。
【0029】
また、上記の他にも、例えばキャラクタ29が攻撃を仕掛けたり、スキルを発動したり、プレイヤ又は他のキャラクタとの間でコミュニケーションをとる場合等、演出上細かな動きが必要な場合に相対的に制御点数が多い第1制御点群33に切り替え、演出上細かな動きが不要な場合に相対的に制御点数が少ない第2制御点群37に切り替えてもよい。その他、「所定の切替条件」にはゲームの仕様等に応じて様々な内容を設定することができる。
【0030】
なお、制御点群切替処理部19による制御点群33,37の切り替えは、あくまで布シミュレーション処理を実行する対象の切り替えである。オブジェクトの画像自体は、後述する画像生成処理部27により、制御点数が最も多い第1制御点群33(各第1制御点35の位置)に基づいて生成される。
【0031】
第2目標位置計算処理部21は、布シミュレーション処理を実行する対象が第1制御点群33から第2制御点群37に切り替えられた場合に、第2制御点群37の各第2制御点39の布シミュレーションによる目標位置に基づいて、第1制御点群33の各第1制御点35の第2目標位置をそれぞれ計算する。具体的には、第2目標位置計算処理部21は、第1制御点35に関連付けされた複数の第2制御点39の関連度合いを表す情報と、関連付けされた各第2制御点39の布シミュレーションによる目標位置とに基づいて、各第1制御点35の第2目標位置をそれぞれ計算(推定)する。なお、本明細書では説明の便宜上、第2目標位置計算処理部21により計算される第1制御点35の第2目標位置を「推定目標位置」ともいう。
【0032】
図7に、第2目標位置計算処理部21による第2目標位置の計算手法の一例を示す。なお、図7では第1制御点群33を構成する各第1制御点35を実線で、第2制御点群37を構成する各第2制御点39を破線で示している。各第1制御点35にはウェイト情報がそれぞれ設定されている。ウェイト情報には、関連付けされた3つの第2制御点39を表す情報と、当該3つの第2制御点39の各々の関連度合いを表す情報(ウェイト値)が含まれている。図7に示す例では、処理対象である第1制御点35(図中太線で示す)に対し、当該第1制御点35から距離が近い3つの第2制御点39(図中太線で示す)が関連付けられており、且つ、各第2制御点39に対するウェイト値が設定されている。ウェイト値は、第1制御点35の初期位置が3つの第2制御点39の初期位置を結ぶ三角形41内のどの位置に存在するかを表しており、例えば3つの第2制御点39のウェイト値が同じ値(1/3)であれば、第1制御点35は三角形41の重心位置に存在することになる。第2目標位置計算処理部21は、3つの第2制御点39の布シミュレーションによる目標位置と、上記ウェイト値とに基づいて、処理対象の第1制御点35の推定目標位置を計算する。
【0033】
なお、上記は第1制御点群33と第2制御点群37とが同じ高さに配置されている場合の例であるが、高さが異なる場合には、ウェイト情報にその高さの補正値を含めてもよい。また、上記の計算手法は一例であり、複数(3個以外でもよい)の第2制御点39の位置に基づいて1個の第1制御点35の位置を特定可能であれば、上記以外の手法を用いてもよい。なお、各制御点の位置は、キャラクタ29の身体オブジェクトの基準となる部位(例えば関節、骨等)に対して設定されたローカル座標系における座標で規定される。
【0034】
図2に戻り、目標位置補間処理部23は、布シミュレーション処理を実行する対象を第1制御点群33と第2制御点群37との間で切り替える際に、布シミュレーションによる目標位置と推定目標位置との差分を補間する。具体的には、目標位置補間処理部23は、布シミュレーション処理を実行する対象を第1制御点群33又は第2制御点群37に切り替えた時点から所定の時間の間に、切替前の目標位置を切替後の目標位置に向けて徐々に変化させるように差分を補間する。「所定の時間」は、ユーザに違和感を生じさせないように適宜の値(例えば1秒程度)に設定される。
【0035】
図8に、目標位置補間処理部23による目標位置の補間の一例を示す。例えば、布シミュレーション処理を実行する対象が第1制御点群33から第2制御点群37に切り替えられた場合、実際に布オブジェクトの表示に使用される第1制御点35の目標位置は、布シミュレーションによる目標位置から推定目標位置に切り替わることになる。反対に、布シミュレーション処理を実行する対象が第2制御点群37から第1制御点群33に切り替えられた場合、実際に布オブジェクトの表示に使用される第1制御点35の目標位置は、推定目標位置から布シミュレーションによる目標位置に切り替わることになる。このときに切替前の目標位置と切替後の目標位置に差分が生じた場合、布オブジェクトの動きが不連続となり不自然な表現となる可能性がある。
【0036】
図8に示す例では、目標位置補間処理部23により、制御点群が切り替えられたタイミング(時間0)から例えば1秒の間に、切替前の目標位置を切替後の目標位置に向けて時間に比例して変化(増減)するように、例えば0.1秒ごとに目標位置が補間されている。これにより、布オブジェクトの動きを自然に表現することができる。
【0037】
図2に戻り、制御点更新処理部25は、複数の第1制御点35の位置を目標位置に近づくようにそれぞれ更新する。具体的には、布シミュレーション処理を実行する対象が第1制御点群33に切り替えられた場合には、前述の第1目標位置計算処理部17により計算された布シミュレーションによる目標位置に近づくように、各第1制御点35の位置を更新する。また、布シミュレーション処理を実行する対象が第2制御点群37に切り替えられた場合には、前述の第2目標位置計算処理部21により計算された推定目標位置に近づくように、各第1制御点35の位置を更新する。なお、目標位置補間処理部23により目標位置の補間がなされた場合には、補間された目標位置に近づくように、各第1制御点35の位置を更新する。
【0038】
画像生成処理部27は、上記制御点更新処理部25により更新された第1制御点35の位置に基づいて、布オブジェクトの画像を生成する。具体的には、画像生成処理部27は、布シミュレーション処理を実行する対象が第1制御点群33に切り替えられた場合には、上記制御点更新処理部25により布シミュレーションによる目標位置に近づくように更新された各第1制御点35の位置に基づいて、布オブジェクトの画像を生成する。また、布シミュレーション処理を実行する対象が第2制御点群37に切り替えられた場合には、上記制御点更新処理部25により推定目標位置に近づくように更新された各第1制御点35の位置に基づいて、布オブジェクトの画像を生成する。
【0039】
なお、以上説明した各処理部における処理等は、これらの処理の分担の例に限定されるものではなく、例えば、更に少ない数の処理部(例えば1つの処理部)で処理されてもよく、また、更に細分化された処理部により処理されてもよい。また、上述した各処理部の機能は、後述するCPU101(後述の図11参照)が実行するゲームプログラムにより実装されるものであるが、例えばその一部がASICやFPGA等の専用集積回路、その他の電気回路等の実際の装置により実装されてもよい。
【0040】
<3.情報処理装置が実行する処理手順>
次に、図9を用いて、情報処理装置3によって実行される処理手順の一例について説明する。なお、本フローチャートを開始するにあたり、前述の制御点配列生成処理部15により第1制御点群33の配列に基づいて第2制御点群37の配列が生成され、前述の制御点群設定処理部13により布オブジェクトに対して第1制御点群33及び第2制御点群37が設定されているものとする。
【0041】
ステップS5では、情報処理装置3は、制御点群切替処理部19により、制御点群の切替条件を判定するための情報を取得する。例えば視点とキャラクタ29との距離で判定する場合には、当該距離に関する情報を取得する。
【0042】
ステップS10では、情報処理装置3は、制御点群切替処理部19により、上記ステップS5で取得した情報に基づいて第1制御点群33の切替条件を満たすか否かを判定する。例えば、視点とキャラクタ29との距離が所定のしきい値よりも近い場合には、切替条件を満たすと判定し(ステップS10:YES)、次のステップS15へ移る。一方、視点とキャラクタ29との距離が所定のしきい値よりも遠い場合には、切替条件を満たさないと判定し(ステップS10:NO)、後述のステップS35へ移る。
【0043】
ステップS15では、情報処理装置3は、制御点群切替処理部19により、布シミュレーション処理を実行する対象を、第1制御点群33に設定する(切り替える)。
【0044】
ステップS20では、情報処理装置3は、第1目標位置計算処理部17により、第1制御点群33に布シミュレーション処理を実行することにより、第1制御点群33を構成する各第1制御点35の布シミュレーションによる目標位置をそれぞれ計算する。
【0045】
ステップS25では、情報処理装置3は、第1制御点群33への切り替えがあったか否かを判定する。すなわち、上記ステップS10において、第1制御点群33が設定された状態が維持されたのではなく、第2制御点群37が設定された状態から第1制御点群33に切り替えられたか否かを判定する。第1制御点群33への切り替えがあった場合には(ステップS25:YES)、次のステップS30に移る。一方、第1制御点群33への切り替えがなかった場合には(ステップS25:NO)、後述のステップS60に移る。
【0046】
ステップS30では、情報処理装置3は、目標位置補間処理部23により、第1制御点群33に切り替えられる前(第2制御点群37が設定された状態)に前述の第2目標位置計算処理部21により計算された第1制御点35の推定目標位置と、第1制御点群33に切り替えられた後に上記ステップS20で計算された第1制御点35の布シミュレーションによる目標位置と、の差分を補間する。その後、後述のステップS60に移る。
【0047】
一方、ステップS35では、情報処理装置3は、制御点群切替処理部19により、布シミュレーション処理を実行する対象を、第2制御点群37に設定する(切り替える)。
【0048】
ステップS40では、情報処理装置3は、第1目標位置計算処理部17により、第2制御点群37に布シミュレーション処理を実行することにより、第2制御点群37を構成する各第2制御点39の布シミュレーションによる目標位置をそれぞれ計算する。
【0049】
ステップS45では、情報処理装置3は、第2目標位置計算処理部21により、上記ステップS40で計算した、第2制御点群37の各第2制御点39の布シミュレーションによる目標位置と、各第1制御点35に設定されたウェイト情報とに基づいて、第1制御点群33の各第1制御点35の推定目標位置をそれぞれ計算する。
【0050】
ステップS50では、情報処理装置3は、第2制御点群37への切り替えがあったか否かを判定する。すなわち、上記ステップS10において、第2制御点群37が設定された状態が維持されたのではなく、第1制御点群33が設定された状態から第2制御点群37に切り替えられたか否かを判定する。第2制御点群37への切り替えがあった場合には(ステップS50:YES)、次のステップS55に移る。一方、第2制御点群37への切り替えがなかった場合には(ステップS50:NO)、後述のステップS60に移る。
【0051】
ステップS55では、情報処理装置3は、目標位置補間処理部23により、第2制御点群37に切り替えられる前(第1制御点群33が設定された状態)に前述の第1目標位置計算処理部17により計算された第1制御点35の布シミュレーションによる目標位置と、第2制御点群37に切り替えられた後に上記ステップS45で計算された第1制御点35の推定目標位置と、の差分を補間する。その後、後述のステップS60に移る。
【0052】
ステップS60では、情報処理装置3は、制御点更新処理部25により、第1制御点群33を構成する各第1制御点35の位置を、上記ステップS20で計算した布シミュレーションによる目標位置、又は、上記ステップS45で計算した推定目標位置に近づくように、それぞれ更新する。なお、上記ステップS30又はステップS55において目標位置の補間がなされた場合には、補間された目標位置に近づくように各第1制御点35の位置を更新する。
【0053】
ステップS65では、情報処理装置3は、画像生成処理部27により、上記ステップS60で更新された第1制御点35の位置に基づいて、布オブジェクトの画像を生成する。
【0054】
ステップS70では、情報処理装置3は、布オブジェクトの画像生成を終了するか否かを判定する。画像生成を継続する場合には(ステップS70:NO)、最初のステップS5に戻り、同様の手順を繰り返す。一方、画像生成を終了する場合には(ステップS70:YES)、本フローチャートを終了する。
【0055】
なお、上述した処理手順は一例であって、上記手順の少なくとも一部を削除又は変更してもよいし、上記以外の手順を追加してもよい。また、上記手順の少なくとも一部の順番を変更してもよいし、複数の手順が単一の手順にまとめられてもよい。
【0056】
<4.実施形態の効果>
以上説明したように、本実施形態のゲームプログラムは、情報処理装置3を、布オブジェクトに対し、互いに個数の異なる制御点35,39を配列した複数の制御点群33,37を設定する制御点群設定処理部13、複数の制御点群33,37のいずれかに布オブジェクトを変形させるための布シミュレーション処理を実行することにより、制御点群33,37を構成する各制御点35,39の布シミュレーションによる目標位置をそれぞれ計算する第1目標位置計算処理部17、所定の切替条件が満たされた場合に、布シミュレーション処理を実行する対象を、複数の制御点群33,37のいずれかに切り替える制御点群切替処理部19、制御点35,39の布シミュレーションによる目標位置に基づいて、布オブジェクトの画像を生成する画像生成処理部27、として機能させる。
【0057】
本実施形態では、布オブジェクトに対して互いに個数の異なる制御点35,39を配列した複数の制御点群33,37を設定し、所定の切替条件が満たされた場合に、布オブジェクトを変形させるための布シミュレーション処理を実行する対象を複数の制御点群33,37のいずれかに切り替え、切り替えられた制御点群33又は制御点群37に対して布シミュレーション処理を実行することにより、制御点群33又は制御点群37を構成する各制御点35又は各制御点39の布シミュレーションによる目標位置をそれぞれ計算する。
【0058】
これにより、例えば布オブジェクトの視点(仮想カメラ)からの距離が近かったり、重要度が高い布オブジェクトである場合等には、制御点の個数が多い制御点群33に切り替え、布オブジェクトの視点からの距離が遠かったり、重要度が低い布オブジェクトである場合等には、制御点の個数が少ない制御点群37に切り替えることが可能となる。このようにして、要求の程度に応じてオブジェクト画像の解像度を増減させる手法である、いわゆるLOD(Level Of Detail)を、布シミュレーション処理に適用することができる。
【0059】
以上により、一律の個数の制御点に対してシミュレーション処理を実行する場合に比べて、シミュレーション処理に要する計算負荷を軽減しつつ、オブジェクトが変形する画像を生成することができる。また切替条件として、例えば視点から布オブジェクトまでの距離が遠い場合や布オブジェクトの重要度が低い場合等に、制御点の個数が少ない制御点群37に切り替えることが可能となる。これにより、ユーザに違和感を感じさせることなく計算負荷を削減できる。
【0060】
また本実施形態において、複数の制御点群33,37は、個数Nの第1制御点35を配列した第1制御点群33と、個数Nよりも少ない個数(例えばN/4)の第2制御点39を配列した第2制御点群37と、を含んでもよく、ゲームプログラムは、情報処理装置3を、布シミュレーション処理を実行する対象が第2制御点群37に切り替えられた場合に、第2制御点群37の各第2制御点39の布シミュレーションによる目標位置に基づいて第1制御点群33の各第1制御点35の推定目標位置をそれぞれ計算する第2目標位置計算処理部21、としてさらに機能させてもよく、その場合には、画像生成処理部27は、布シミュレーション処理を実行する対象が第1制御点群33に切り替えられた場合は各第1制御点35の布シミュレーションによる目標位置に基づいて、第2制御点群37に切り替えられた場合は各第1制御点35の推定目標位置に基づいて、布オブジェクトの画像を生成してもよい。
【0061】
通常、シミュレーション処理に使用される要素は、実際に画面表示されるオブジェクトの画像情報(例えばメッシュ情報)を更新するための何かしらの要素に結びつける仕様が必要である。本実施形態では、制御点数の少ない第2制御点群37に対して布シミュレーション処理を実行する場合には、第2制御点群37のシミュレーション結果(第2制御点39の布シミュレーションによる目標位置)から第1制御点群33の各第1制御点35の目標位置を推定することで、LODを適用しない場合の制御点群と同等である第1制御点群33の位置を更新することができる。これにより、計算負荷を軽減しつつ布オブジェクトの動きを自然に表現することができる。
【0062】
また本実施形態において、第2目標位置計算処理部21は、第1制御点35に関連付けされた複数の第2制御点39の関連度合いを表すウェイト情報と、関連付けされた各第2制御点39の布シミュレーションによる目標位置とに基づいて、各第1制御点35の推定目標位置をそれぞれ計算してもよい。
【0063】
この場合、処理対象の第1制御点35に設定されたウェイト情報と関連付けされた各第2制御点39の布シミュレーションによる目標位置とに基づいて、簡単な計算で第1制御点35の目標位置を推定できる。これにより、第2制御点群37の布シミュレーション結果に基づいて最低限の計算コストで第1制御点群33の各第1制御点35の位置を更新できる。
【0064】
また本実施形態において、ゲームプログラムは、情報処理装置3を、布シミュレーション処理を実行する対象を第1制御点群33と第2制御点群37との間で切り替える際に、布シミュレーションによる目標位置と推定目標位置との差分を補間する目標位置補間処理部23、としてさらに機能させてもよい。
【0065】
布シミュレーション処理の実行対象を第1制御点群33と第2制御点群37の間で切り替える場合、布シミュレーションによる目標位置と推定目標位置との差分により、布オブジェクトの動きが不連続となり不自然な表現となる可能性がある。本実施形態では、制御点群33,37の切り替えの際に布シミュレーションによる目標位置と推定目標位置との差分を補間するので、布オブジェクトの動きを自然に表現することができる。
【0066】
また本実施形態において、目標位置補間処理部23は、布シミュレーション処理を実行する対象を第1制御点群33又は第2制御点群37に切り替えた時点から所定の時間の間に、切替前の目標位置を切替後の目標位置に向けて徐々に変化させるように、差分を補間してもよい。
【0067】
この場合、布オブジェクトの動きが不連続となることを防止でき、布オブジェクトの動きをより自然に表現することができる。
【0068】
また本実施形態において、第1制御点群33はN個の第1制御点35を格子状に配列して構成され、第2制御点群37はN個よりも少ない個数の第2制御点39を格子状に配列して構成されてもよく、その場合には、ゲームプログラムは、情報処理装置3を、第1制御点群33における第1制御点35の配列を所定の間隔で間引くことにより、第2制御点群37における第2制御点39の配列を生成する制御点配列生成処理部15、としてさらに機能させてもよい。
【0069】
この場合、第1制御点群33よりも制御点数の少ない第2制御点群37の配列を、第1制御点群33の配列に基づいて自動的に簡易に生成することができる。例えば格子状の制御点を1つおきの配列となるように間引くことにより、1/4の個数の配列を自動的に生成できる。
【0070】
<5.変形例等>
なお、本発明は、上記の実施形態に限られるものではなく、その趣旨及び技術的思想を逸脱しない範囲内で種々の変形が可能である。
【0071】
(5-1.3種類以上の制御点群を設定する場合)
以上の実施形態では、制御点数が多い第1制御点群33と制御点数が少ない第2制御点群37の2種類の制御点群を設定した場合について説明したが、設定する制御点群の数を3種類以上としてもよい。例えば、前述の第1制御点群33及び第2制御点群37に加えて、第2制御点群37よりもさらに制御点の個数が少ない第3制御点群43を設定してもよい。
【0072】
図10に、第3制御点群43の一例を示す。図10に示す例では、制御点配列生成処理部15により、第1制御点群33における第1制御点35の格子状の配列を2つおきの配列となるように間引くことにより、第3制御点群43における第3制御点45の配列が生成されている。この場合、第3制御点45の個数(例えば9個)は第1制御点35の個数(例えば81個)の1/9となる。
【0073】
本変形例の場合、例えば視点とキャラクタ29との距離を2種類のしきい値により遠距離、中距離、近距離の3つの区分に分けてもよい。そして、前述の制御点群切替処理部19は、布シミュレーション処理を実行する対象を、距離が近距離の場合には第1制御点群33に切り替え、距離が中距離の場合には第2制御点群37に切り替え、距離が遠距離の場合には第3制御点群43に切り替えてもよい。
【0074】
本変形例では、第2制御点群37を構成する各第2制御点39には、ウェイト情報がそれぞれ設定されている。ウェイト情報には、例えば関連付けされた3つの第3制御点45を表す情報と、当該3つの第3制御点45の各々の関連度合いを表す情報(ウェイト値)が含まれている。布シミュレーション処理を実行する対象が第3制御点群43に切り替えられた場合、前述の第2目標位置計算処理部21は、3つの第3制御点45の布シミュレーションによる目標位置と、上記ウェイト値とに基づいて、第2制御点39の推定目標位置を計算する。この処理を第2制御点39の全部に対して実行することで、全ての第2制御点39の推定目標位置が計算される。
【0075】
さらに、前述の実施形態と同様にして、第2目標位置計算処理部21は、処理対象の第1制御点35に関連付けられた3つの第2制御点39の上記推定目標位置と、各第2制御点39に対するウェイト値とに基づいて、処理対象の第1制御点35の推定目標位置を計算する。このようにして、第3制御点群43に対する布シミュレーション結果から第1制御点群33を構成する各第1制御点35の目標位置を推定することができる。その他の処理については、前述の実施形態と同様である。このように3種類以上の制御点群を設定することにより、よりきめ細かな制御点群の切替処理が可能となる。
【0076】
なお、4種類以上の制御点群を設定する場合も、上述と同様にして第1制御点35の目標位置を推定することが可能である。また、多数の制御点群を設定する場合には、制御点数が最も少ない制御点群に加えて又は代えて、布シミュレーション処理を実行しない制御点群(制御点の個数が0の制御点群)を設けてもよい。この制御点群に切り替えられた場合には、布オブジェクトは変形せずに固定された形状で描画される。
【0077】
(5-2.その他)
以上では、キャラクタが着用する衣服が和服である場合を例にとって説明したが、洋服やその他の衣装を構成する布オブジェクトに本発明を適用してもよい。また、オブジェクトは衣服を構成する布に限定されるのではない。例えば、布製の装備品(鉢巻、バンダナ等)や布製又は紙製の所持アイテム(布切れ、巻物、旗等)等、キャラクタに付随する柔軟なオブジェクトや、毛髪等の身体の一部である柔軟なオブジェクトに対して以上説明した処理を適用してもよい。なお、毛髪等のオブジェクトである場合には、「所定のシミュレーション処理」は紐やロープ等のオブジェクトの変形をシミュレート可能ないわゆる紐シミュレーション処理が好適である。
【0078】
また、以上では、画像生成プログラムがゲームプログラムである場合について説明したが、画像生成プログラムは、ゲーム以外の技術分野、例えばCGアニメーション、コンピュータ・シミュレーション、CAD等にも適用可能である。
【0079】
また、以上既に述べた以外にも、上記実施形態や各変形例による手法を適宜組み合わせて利用しても良い。その他、一々例示はしないが、上記実施形態や各変形例は、その趣旨を逸脱しない範囲内において、種々の変更が加えられて実施されるものである。
【0080】
<6.情報処理装置のハードウェア構成>
次に、図11を用いて、上記で説明したCPU101等が実行するプログラムにより実装された各処理部を実現する情報処理装置3のハードウェア構成の一例について説明する。
【0081】
図11に示すように、情報処理装置3は、例えば、CPU101と、ROM103と、RAM105と、GPU106と、例えばASIC又はFPGA等の特定の用途向けに構築された専用集積回路107と、入力装置113と、出力装置115と、記録装置117と、ドライブ119と、接続ポート121と、通信装置123を有する。これらの構成は、バス109や入出力インターフェース111等を介し相互に信号を伝達可能に接続されている。
【0082】
ゲームプログラムは、例えば、ROM103やRAM105、ハードディスク等の記録装置117等に記録しておくことができる。
【0083】
また、ゲームプログラムは、例えば、フレキシブルディスクなどの磁気ディスク、各種のCD、MOディスク、DVD等の光ディスク、半導体メモリ等のリムーバブルな記録媒体125に、一時的又は永続的(非一時的)に記録しておくこともできる。このような記録媒体125は、いわゆるパッケージソフトウエアとして提供することもできる。この場合、これらの記録媒体125に記録されたゲームプログラムは、ドライブ119により読み出されて、入出力インターフェース111やバス109等を介し上記記録装置117に記録されてもよい。
【0084】
また、ゲームプログラムは、例えば、ダウンロードサイト、他のコンピュータ、他の記録装置等(図示せず)に記録しておくこともできる。この場合、ゲームプログラムは、LANやインターネット等のネットワークNWを介し転送され、通信装置123がこのプログラムを受信する。そして、通信装置123が受信したプログラムは、入出力インターフェース111やバス109等を介し上記記録装置117に記録されてもよい。
【0085】
また、ゲームプログラムは、例えば、適宜の外部接続機器127に記録しておくこともできる。この場合、ゲームプログラムは、適宜の接続ポート121を介し転送され、入出力インターフェース111やバス109等を介し上記記録装置117に記録されてもよい。
【0086】
そして、CPU101が、上記記録装置117に記録されたプログラムに従い各種の処理を実行することにより、前述の制御点群設定処理部13、制御点配列生成処理部15、第1目標位置計算処理部17、制御点群切替処理部19、第2目標位置計算処理部21、目標位置補間処理部23、制御点更新処理部25、画像生成処理部27等による処理が実現される。この際、CPU101は、例えば、上記記録装置117からプログラムを、直接読み出して実行してもよく、RAM105に一旦ロードした上で実行してもよい。更にCPU101は、例えば、プログラムを通信装置123やドライブ119、接続ポート121を介し受信する場合、受信したプログラムを記録装置117に記録せずに直接実行してもよい。
【0087】
また、CPU101は、必要に応じて、前述のゲームコントローラ5を含む、例えばマイク、マウス、キーボード等(図示せず)の入力装置113から入力する信号や情報に基づいて各種の処理を行ってもよい。
【0088】
GPU106は、CPU101からの指示に応じて例えばレンダリング処理などの画像表示のための処理を行う。
【0089】
そして、CPU101及びGPU106は、上記の処理を実行した結果を、例えば前述の表示装置7を含む、出力装置115から出力する。さらにCPU101及びGPU106は、必要に応じてこの処理結果を通信装置123や接続ポート121を介し送信してもよく、上記記録装置117や記録媒体125に記録させてもよい。
【符号の説明】
【0090】
1 ゲームシステム
3 情報処理装置
5 ゲームコントローラ
7 表示装置
13 制御点群設定処理部
15 制御点配列生成処理部
17 第1目標位置計算処理部
19 制御点群切替処理部
21 第2目標位置計算処理部
23 目標位置補間処理部
25 制御点更新処理部
27 画像生成処理部
29 キャラクタ
31 和服オブジェクト
31a 袖部(オブジェクト)
31b 裾部(オブジェクト)
33 第1制御点群
35 第1制御点
37 第2制御点群
39 第2制御点
43 第3制御点群
45 第3制御点
125 記録媒体
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11