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

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

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

特開2023-67654画像生成プログラム、記録媒体、画像生成方法
<>
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図1
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図2
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図3
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図4
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図5
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図6
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図7
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図8
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図9
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図10
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図11
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図12
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図13
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図14
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図15
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図16
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図17
  • 特開-画像生成プログラム、記録媒体、画像生成方法 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023067654
(43)【公開日】2023-05-16
(54)【発明の名称】画像生成プログラム、記録媒体、画像生成方法
(51)【国際特許分類】
   G06T 13/20 20110101AFI20230509BHJP
   A63F 13/577 20140101ALI20230509BHJP
【FI】
G06T13/20
A63F13/577
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2021179087
(22)【出願日】2021-11-01
(71)【出願人】
【識別番号】595000427
【氏名又は名称】株式会社コーエーテクモゲームス
(74)【代理人】
【識別番号】110003096
【氏名又は名称】弁理士法人第一テクニカル国際特許事務所
(72)【発明者】
【氏名】高松 賢二
【テーマコード(参考)】
5B050
【Fターム(参考)】
5B050AA10
5B050BA08
5B050BA09
5B050CA01
5B050EA24
5B050EA26
5B050FA02
(57)【要約】
【課題】計算負荷の増大を抑制しつつ布同士の突き抜け現象の発生を抑制する。
【解決手段】ゲームプログラムは、情報処理装置3を、少なくとも一部が重なった第1布オブジェクト35及び第2布オブジェクト37を変形させるための布シミュレーション処理により、第1制御点39a及び第2制御点39bの目標位置を計算する目標位置計算処理部13、処理対象の第1制御点39aに対応する一部の第2制御点39bの目標位置に基づいて平面45を設定する平面設定処理部23、第1制御点39aの目標位置を、平面45を超えないように拘束する第1目標位置拘束処理部25、第1制御点39a及び第2制御点39bの位置を、目標位置に近づくようにそれぞれ更新する制御点更新処理部27、第1制御点39a及び第2制御点39bの更新された位置に基づいて、第1布オブジェクト35及び第2布オブジェクト37の画像を生成する画像生成処理部29、として機能させる。
【選択図】図2
【特許請求の範囲】
【請求項1】
情報処理装置を、
視点方向に少なくとも一部が重なった第1オブジェクト及び第2オブジェクトのそれぞれを変形させるための所定のシミュレーション処理により、前記第1オブジェクトに設定された第1制御点及び前記第2オブジェクトに設定された複数の第2制御点の目標位置をそれぞれ計算する目標位置計算処理部、
前記複数の第2制御点のうち、処理対象となる前記第1制御点に対応する一部の前記第2制御点の前記目標位置に基づいて平面を設定する平面設定処理部、
前記第1制御点の前記目標位置を、前記平面を超えないように拘束する第1目標位置拘束処理部、
前記第1制御点及び前記第2制御点の位置を、前記目標位置に近づくようにそれぞれ更新する制御点更新処理部、
前記第1制御点及び前記第2制御点の更新された位置に基づいて、前記第1オブジェクト及び前記第2オブジェクトの画像を生成する画像生成処理部、
として機能させるための画像生成プログラム。
【請求項2】
前記情報処理装置を、
前記第1オブジェクトと前記第2オブジェクトとが連結する部位に対称軸を設定する対称軸設定処理部、
処理対象となる前記第1制御点と、当該第1制御点に対して前記対称軸を介して線対称となる領域に位置する前記第2制御点とをペアとして設定するペア設定処理部、
としてさらに機能させ、
前記平面設定処理部は、
前記ペアを構成する前記第2制御点の前記目標位置に基づいて前記平面を設定し、
前記第1目標位置拘束処理部は、
前記ペアを構成する前記第1制御点の前記目標位置を、前記平面を超えないように拘束する、
請求項1に記載の画像生成プログラム。
【請求項3】
前記情報処理装置を、
前記ペアを構成する前記第2制御点の前記目標位置における法線を、隣接する前記第2制御点との位置関係に基づいて計算する第1法線計算処理部、
としてさらに機能させ、
前記平面設定処理部は、
前記法線に垂直となるように前記平面を設定する、
請求項2に記載の画像生成プログラム。
【請求項4】
前記情報処理装置を、
前記ペアを構成する前記第2制御点の前記目標位置と前記平面との前記法線方向の距離である第1オフセット距離を設定する第1オフセット設定処理部、
としてさらに機能させ、
前記平面設定処理部は、
前記第2制御点の前記目標位置から前記第1オフセット距離だけオフセットした位置に前記平面を設定する、
請求項3に記載の画像生成プログラム。
【請求項5】
前記ペア設定処理部は、
処理対象となる1つの前記第1制御点と、当該第1制御点に対して前記対称軸を介して線対称となる位置に存在する1つの前記第2制御点とを前記ペアとして設定すると共に、前記1つの第1制御点と、前記1つの第2制御点の周囲に存在する複数の前記第2制御点の各々とについても前記ペアとして設定し、
前記平面設定処理部は、
前記ペアを構成する複数の前記第2制御点の各々の前記目標位置に基づいて複数の前記平面を設定し、
前記第1目標位置拘束処理部は、
前記ペアを構成する前記第1制御点の前記目標位置を、前記複数の平面をそれぞれ超えないように拘束する、
請求項2乃至4のいずれか1項に記載の画像生成プログラム。
【請求項6】
前記第1オブジェクトと前記第2オブジェクトは、
キャラクタが着用する和服オブジェクトの袖部の前側の布オブジェクトと後側の布オブジェクトであり、
前記対称軸設定処理部は、
前記袖部の下端の折り返し部分に前記対称軸を設定する、
請求項2乃至5のいずれか1項に記載の画像生成プログラム。
【請求項7】
前記情報処理装置を、
前記第1オブジェクトと前記第2オブジェクトとが重なる方向に略垂直な方向から見た断面上に位置する前記第1制御点及び前記第2制御点を含む制御点群を設定する制御点群設定処理部、
としてさらに機能させ、
前記平面設定処理部は、
前記制御点群に含まれる前記第2制御点の前記目標位置に基づいて平面を設定し、
前記第1目標位置拘束処理部は、
前記制御点群に含まれる前記第1制御点の前記目標位置を、前記平面を超えないように拘束する、
請求項1に記載の画像生成プログラム。
【請求項8】
前記第1オブジェクトは前記第2オブジェクトよりも前記視点側に位置しており、
前記情報処理装置を、
前記制御点群に含まれる前記第2制御点を結ぶ曲線を設定する曲線設定処理部、
としてさらに機能させ、
前記平面設定処理部は、
前記曲線の接線と平行となるように前記平面を設定する、
請求項7に記載の画像生成プログラム。
【請求項9】
前記情報処理装置を、
処理対象となる前記第1制御点と最も近接する前記曲線上の最近接点を計算する近接点計算処理部、
前記最近接点の法線を前記曲線の形状に基づいて計算する第2法線計算処理部、
としてさらに機能させ、
前記平面設定処理部は、
前記法線に垂直となるように前記平面を設定する、
請求項8に記載の画像生成プログラム。
【請求項10】
前記情報処理装置を、
前記最近接点と前記平面との前記法線方向の距離である第2オフセット距離を設定する第2オフセット設定処理部、
としてさらに機能させ、
前記平面設定処理部は、
前記最近接点の位置から前記第2オフセット距離だけオフセットした位置に前記平面を設定する、
請求項9に記載の画像生成プログラム。
【請求項11】
前記情報処理装置を、
前記制御点群に含まれる複数の前記第1制御点のうちの前記第1オブジェクトと前記第2オブジェクトとの重なり部分とは反対側の端部の前記第1制御点と、前記制御点群に含まれる複数の前記第2制御点のうちの前記重なり部分とは反対側の端部の前記第2制御点と、を結ぶ基準線を設定する基準線設定処理部、
前記基準線に垂直な方向における前記基準線からの離間距離を、前記基準線に沿った方向における前記基準線の端部からの長さ距離に基づいて所定の形状となるように設定する距離設定処理部、
前記基準線に垂直な方向における前記第2制御点の前記目標位置と前記基準線との離間距離が、前記所定の形状を超えないように、前記制御点群に含まれる前記第2制御点の前記目標位置を拘束する第2目標位置拘束処理部、
としてさらに機能させる、
請求項8乃至10のいずれか1項に記載の画像生成プログラム。
【請求項12】
前記第1オブジェクトと前記第2オブジェクトは、
キャラクタが着用する和服オブジェクトの裾部の衽部において重なる外側の布オブジェクトと内側の布オブジェクトである、
請求項7乃至11のいずれか1項に記載の画像生成プログラム。
【請求項13】
前記画像生成プログラムはゲームプログラムである、
請求項1乃至12のいずれか1項に記載の画像生成プログラム。
【請求項14】
請求項1乃至13のいずれか1項に記載の画像生成プログラムを記録した、情報処理装置が読み取り可能な記録媒体。
【請求項15】
情報処理装置によって実行される画像生成方法であって、
視点方向に少なくとも一部が重なった第1オブジェクト及び第2オブジェクトのそれぞれを変形させるための所定のシミュレーション処理により、前記第1オブジェクトに設定された第1制御点及び前記第2オブジェクトに設定された複数の第2制御点の目標位置をそれぞれ計算するステップと、
前記複数の第2制御点のうち、処理対象となる前記第1制御点に対応する一部の前記第2制御点の前記目標位置に基づいて平面を設定するステップと、
前記第1制御点の前記目標位置を、前記平面を超えないように拘束するステップと、
前記第1制御点及び前記第2制御点の位置を、前記目標位置に近づくようにそれぞれ更新するステップと、
前記第1制御点及び前記第2制御点の更新された位置に基づいて、前記第1オブジェクト及び前記第2オブジェクトの画像を生成するステップと、
を有する、画像生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像生成プログラム、記録媒体、及び画像生成方法に関する。
【背景技術】
【0002】
従来、バネモデルを使用して変形可能な物体をシミュレートする方法が知られている。例えば特許文献1には、布、衣服、毛髪等の柔軟な物体を複数の四角形ポリゴンで構成し、その頂点を仮想的な質点として、隣り合う質点の間を仮想的なバネで連結したモデルにより、その形状を求める布シミュレーション技術が記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005-99952号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記布シミュレーション技術等を用いて、例えばキャラクタの身体が纏っている衣服を表現する場合、近年のキャラクタデザインの高精度化により、布同士の干渉が生じる可能性がある。布が貫通して突き抜ける現象を防止するために、布同士で衝突判定処理(いわゆるコリジョン)を実行することが考えられるが、その場合には計算負荷が非常に高くなる、という課題があった。
【0005】
本発明はこのような問題点に鑑みてなされたものであり、計算負荷の増大を抑制しつつ、布同士の突き抜け現象の発生を抑制することが可能な画像生成プログラム、記録媒体、及び画像生成方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明の画像生成プログラムは、情報処理装置を、視点方向に少なくとも一部が重なった第1オブジェクト及び第2オブジェクトのそれぞれを変形させるための所定のシミュレーション処理により、前記第1オブジェクトに設定された第1制御点及び前記第2オブジェクトに設定された複数の第2制御点の目標位置をそれぞれ計算する目標位置計算処理部、前記複数の第2制御点のうち、処理対象となる前記第1制御点に対応する一部の前記第2制御点の前記目標位置に基づいて平面を設定する平面設定処理部、前記第1制御点の前記目標位置を、前記平面を超えないように拘束する第1目標位置拘束処理部、前記第1制御点及び前記第2制御点の位置を、前記目標位置に近づくようにそれぞれ更新する制御点更新処理部、前記第1制御点及び前記第2制御点の更新された位置に基づいて、前記第1オブジェクト及び前記第2オブジェクトの画像を生成する画像生成処理部、として機能させる。
【0007】
上記目的を達成するために、本発明の記録媒体は、上記画像生成プログラムを記録した、情報処理装置が読み取り可能な記録媒体である。
【0008】
上記目的を達成するために、本発明の画像生成方法は、情報処理装置によって実行される画像生成方法であって、視点方向に少なくとも一部が重なった第1オブジェクト及び第2オブジェクトのそれぞれを変形させるための所定のシミュレーション処理により、前記第1オブジェクトに設定された第1制御点及び前記第2オブジェクトに設定された複数の第2制御点の目標位置をそれぞれ計算するステップと、前記複数の第2制御点のうち、処理対象となる前記第1制御点に対応する一部の前記第2制御点の前記目標位置に基づいて平面を設定するステップと、前記第1制御点の前記目標位置を、前記平面を超えないように拘束するステップと、前記第1制御点及び前記第2制御点の位置を、前記目標位置に近づくようにそれぞれ更新するステップと、前記第1制御点及び前記第2制御点の更新された位置に基づいて、前記第1オブジェクト及び前記第2オブジェクトの画像を生成するステップと、を有する。
【発明の効果】
【0009】
本発明の画像生成プログラム等によれば、計算負荷の増大を抑制しつつ、布同士の突き抜け現象の発生を抑制することができる。
【図面の簡単な説明】
【0010】
図1】第1実施形態及び第2実施形態に共通するゲームシステムの全体構成の一例を表すシステム構成図である。
図2】第1実施形態に係る情報処理装置の機能的構成の一例を表すブロック図である。
図3】キャラクタが着用する和服オブジェクトの一例を表す正面図である。
図4】正方形の布を模した三次元対象物を形成する複数の四角形の一例を表す図、及び、三次元対象物の描画に必要な計算を行う場合に想定される力学モデルの一例を表す図である。
図5】和服オブジェクトの袖部の制御点構成の一例を表す図である。
図6】ペア設定処理部により設定されるペアを説明するための、袖部の対称軸に垂直な断面における制御点構成の一例を表す概念図である。
図7】ペア設定処理部により設定されるペアを説明するための、袖部の下端側の一部を抽出して制御点構成の一例を表す概念図である。
図8】第1目標位置拘束処理部による拘束処理の一例を説明するための図である。
図9】第1実施形態に係る情報処理装置によって実行される処理手順の一例を表すフローチャートである。
図10】第2実施形態に係る情報処理装置の機能的構成の一例を表すブロック図である。
図11】和服オブジェクトの裾部の制御点構成の一例を表す図である。
図12】制御点群設定処理部により設定される、水平断面上に位置する制御点群の一例を表す図である。
図13】基準線設定処理部により設定された基準線の一例を表す図である。
図14】距離設定処理部により設定される離間距離及び長さ距離の一例を表す図である。
図15】距離設定処理部により設定される所定の形状の一例を表す図である。
図16】第1目標位置拘束処理部による拘束処理の一例を説明するための図である。
図17】第2実施形態に係る情報処理装置によって実行される処理手順の一例を表すフローチャートである。
図18】情報処理装置のハードウェア構成の一例を表すブロック図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態について図面を参照しつつ説明する。なお、以下に説明する各実施形態では、本発明をゲームに適用する場合、すなわち本発明の画像生成プログラム及び画像生成方法が情報処理装置によって実行されることによりゲームが提供される場合について説明するが、適用対象をゲームに限定するものではない。
【0012】
<0.ゲームシステムの全体構成>
図1を用いて、各実施形態に共通するゲームシステム1の全体構成の一例について説明する。図1に示すように、ゲームシステム1は、情報処理装置3と、ゲームコントローラ5と、表示装置7とを有する。ゲームコントローラ5及び表示装置7は、情報処理装置3と有線又は無線により通信可能に接続されている。
【0013】
情報処理装置3は、例えば据え置き型のゲーム機である。但しこれに限定されるものではなく、例えば入力部や表示部等を一体に備えた携帯型のゲーム機でもよい。また、ゲーム機以外にも、例えば、サーバコンピュータ、デスクトップ型コンピュータ、ノート型コンピュータ、タブレット型コンピュータ等のように、コンピュータとして製造、販売等されているものや、スマートフォン、携帯電話、ファブレット等のように、電話機として製造、販売等されているものでもよい。
【0014】
プレイヤは、ゲームコントローラ5を用いて各種の操作入力を行う。図1に示す例では、ゲームコントローラ5は、例えば十字キー9、複数のボタン10、ジョイスティック11、タッチパッド12等を有する。
【0015】
<1.第1実施形態>
まず、本発明の第1実施形態について説明する。第1実施形態は、キャラクタが着用する衣服オブジェクトにおいて重なる2つの布オブジェクトの各制御点に対してペアを設定し、各ペアに対して拘束処理を行うことによって、布オブジェクト同士が突き抜ける現象の発生を抑制するものである。
【0016】
(1-1.情報処理装置の機能的構成)
図2及び図3図8を用いて、第1実施形態に係る情報処理装置3の機能的構成の一例について説明する。
【0017】
図2に示すように、情報処理装置3は、目標位置計算処理部13と、対称軸設定処理部15と、ペア設定処理部17と、第1法線計算処理部19と、第1オフセット設定処理部21と、平面設定処理部23と、第1目標位置拘束処理部25と、制御点更新処理部27と、画像生成処理部29とを有する。
【0018】
目標位置計算処理部13は、視点方向に少なくとも一部が重なった第1布オブジェクト(第1オブジェクトの一例)及び第2布オブジェクト(第2オブジェクトの一例)のそれぞれを変形させるための所定のシミュレーション処理により、第1布オブジェクトに設定された複数の第1制御点及び第2布オブジェクトに設定された複数の第2制御点の目標位置をそれぞれ計算する。
【0019】
「視点方向」とは、ゲーム画像において視点が向く方向、すなわち画像を生成するための仮想カメラが向く方向である。「視点方向に少なくとも一部が重なった第1布オブジェクト及び第2布オブジェクト」とは、ゲーム画像において少なくとも一部が重なって描画されている2つの布オブジェクトである。例えば図3に示すように、キャラクタ31が和服オブジェクト33を着用している場合、袖部33aの垂れ下がり部分33bにおいて重なって描画される、前側の布オブジェクトと後側の布オブジェクトや、和服オブジェクト33の帯より下方の部分である裾部33cの衽部33dにおいて重なって描画される、外側の布オブジェクトと内側の布オブジェクト等、少なくとも一部が重なって描画されると共に近接して配置された2つの布オブジェクトである。
【0020】
「所定のシミュレーション処理」とは、布オブジェクトの変形をシミュレート可能な処理であれば特に限定されるものではないが、例えば布オブジェクトの変形をシミュレート可能ないわゆる布(クロス)シミュレーション処理が好適である。具体的には、例えば弾性バネモデルにより力学的な計算を行うシミュレーション処理を用いてもよい。図4(a)は、例えば正方形の布を模した三次元対象物を形成する複数の四角形の一例を表す説明図であり、図4(b)は、図4(a)に示した三次元対象物の描画に必要な計算を行う場合に想定される力学モデルの一例を表す説明図である。
【0021】
図4(a)に示す三次元対象物の描画に要する計算を行う場合には、図4(b)に示すように各四角形の頂点を質点とし、隣接する質点間をバネで接続し、これらのバネにより各質点が隣接する質点(布の端部の質点では隣接する2又は3の質点)から力を受けるバネモデルを想定する。このバネモデルにより、例えば布の端部を引っ張るという動きを描画する場合に、布の端部に相当する質点にかかる力、またその質点に隣接する質点にかかる力、さらにその質点に隣接する質点にかかる力を計算することが可能となり、布を模した三次元対象物の形状の変化を計算により求めることが可能となる。
【0022】
また、布シミュレーション処理として例えば位置ベースの物理シミュレーション処理(PBD:Position Based Dynamics。論文「Position Based Dynamics」、http://matthias-mueller-fischer.ch/publications/posBasedDyn.pdf)を用いてもよい。PBDは、速度情報を持たずに現在位置、前状態の位置、そしてフレーム更新時間Δt(例えば60fpsの場合には16.67ms)で物理計算をしていく手法である。
【0023】
なお、上記のシミュレーション処理以外にも、布のような動きをシミュレート可能な手法であれば、様々なシミュレーション処理を採用することができる。なお、本明細書では説明の便宜上、目標位置計算処理部13により実行される所定のシミュレーション処理を「布シミュレーション」と、目標位置計算処理部13により計算される目標位置を「布シミュレーションによる目標位置」ともいう。
【0024】
図2に戻り、対称軸設定処理部15は、第1布オブジェクトと第2布オブジェクトとが連結する部位に対称軸を設定する。「連結する部位」とは、例えば第1布オブジェクトと第2布オブジェクトが、和服オブジェクト33の袖部33aの垂れ下がり部分33bにおける前側と後側の布オブジェクトである場合、垂れ下がり部分33bの下端の折り目部分であり、「対称軸」とは当該折り目に相当する軸線である。なお、対称軸は必ずしも直線である必要はなく、折れ線や曲線状でもよい。
【0025】
図5に、対称軸設定処理部15により設定される対称軸の一例を示す。図5に示す例では、和服オブジェクト33の袖部33aに対して複数の制御点39が設定されている。制御点39は、例えば格子状に配列されている。対称軸41は、袖部33aの垂れ下がり部分33bにおいて、前側の布オブジェクトである第1布オブジェクト35と、後側の布オブジェクトである第2布オブジェクト37とが連結される部位である、下端の折り目に位置する複数の制御点39を結ぶように設定されている。なお、本明細書では説明の便宜上、和服オブジェクト33に設定される複数の制御点39のうち、第1布オブジェクト35に設定された制御点39を「第1制御点39a」と、第2布オブジェクト37に設定された制御点39を「第2制御点39b」と記載する。また、これらを区別しない場合には単に「制御点39」と記載する。
【0026】
図2に戻り、ペア設定処理部17は、処理対象となる第1制御点39aと、当該第1制御点39aに対して対称軸41を介して線対称となる領域に位置する第2制御点39bとをペアとして設定する。「線対称」とは、第1布オブジェクト35と第2布オブジェクト37を平面状に広げた場合に、対称軸41を挟んで制御点単位(制御点の個数)で位置が線対称となることをいう。「線対称となる領域」とは、線対称となる位置をピンポイントで指すのではなく、線対称となる位置を含む所定の広さを有する領域である。したがって、線対称となる領域に位置する第2制御点39bは、1つに限らず、複数であってもよい。例えばペア設定処理部17は、処理対象となる1つの第1制御点39aと、当該第1制御点39aに対して対称軸41を介して線対称となる位置に存在する1つの第2制御点39bとをペアとして設定すると共に、上記線対称の位置にある1つの第2制御点39bの周囲に存在する複数の第2制御点39bの各々についても、ペアとして設定してもよい。
【0027】
図6及び図7に、ペア設定処理部17により設定されるペアの一例を示す。なお、図6は袖部33aの対称軸41に垂直な断面における制御点構成の一例を表す断面図、図7は袖部33aの下端側の一部を抽出して制御点構成の一例を表す斜視図である。図6及び図7に示す例では、処理対象となる1つの第1制御点39a(ドットハッチングで図示)に対し、対称軸41を介して線対称となる位置に存在する1つの第2制御点39b(横縞ハッチングで図示)と、当該線対称位置に存在する1つの第2制御点39bの上下左右に存在する4つの第2制御点39b(縦縞ハッチングで図示)の各々とが、ペアとして設定されている。つまり、処理対象となる1つの第1制御点39aに対して計5組のペアが設定されている。なお、図6及び図7ではペアを明確にするために、各ペアを構成する2つの制御点をそれぞれ結合線43により結んで図示している。
【0028】
このようにしてペアを組んだ第1制御点39aと第2制御点39bは概ね対向する位置に存在することから、各ペアに対して後述する拘束処理を行うことにより、効率的に布同士の突き抜けの発生を抑制できる。なお、処理対象となる1つの第1制御点39aとペアを設定する第2制御点39bの数は、1つでもよいし、上記5つよりもさらに多数(例えば13個、25個等)としてもよい。数を増やすほど計算負荷が大きくなるが、拘束処理を行う範囲が広がるので、突き抜け現象の抑制効果を高めることができる。本実施形態では上記5つとすることにより、計算負荷の増大の抑制と突き抜け現象の発生の抑制とを両立することが可能である。
【0029】
図2に戻り、第1法線計算処理部19は、処理対象のペアを構成する第2制御点39bの布シミュレーションによる目標位置における法線を、隣接する第2制御点39bとの位置関係に基づいて計算する。第1法線計算処理部19は、1つの第1制御点39aに対して複数(例えば5組)のペアが設定されている場合には、各ペアの第2制御点39bに対してそれぞれ法線を計算する。法線の計算手法は特に限定されるものではないが、例えば、処理対象の第2制御点39bの目標位置と、当該第2制御点39bに隣接する2つの第2制御点39bの目標位置の各々とを結ぶ2つのベクトルの外積を計算することで、処理対象の第2制御点39bの法線を計算してもよい。図8に、第1法線計算処理部19により設定された法線N1の一例を示す。
【0030】
図2に戻り、第1オフセット設定処理部21は、処理対象のペアを構成する第2制御点39bの布シミュレーションによる目標位置と、後述する平面との法線N1方向の距離である第1オフセット距離を設定する。第1オフセット設定処理部21は、1つの第1制御点39aに対して複数組(例えば5組)のペアが設定されている場合には、各ペアの第2制御点39bに対してそれぞれ第1オフセット距離を設定する。図8に、第1オフセット設定処理部21により設定された第1オフセット距離Offset1の一例を示す。なお、オフセット距離は必ずしも設定されなくてもよい。
【0031】
図2に戻り、平面設定処理部23は、複数の第2制御点39bのうち、処理対象となる第1制御点39aに対応する一部の第2制御点39bの目標位置に基づいて平面を設定する。「一部の第2制御点39b」とは、例えば処理対象の第1制御点39aとペアを構成する第2制御点39bである。平面設定処理部23は、1つの第1制御点39aに対して複数組(例えば5組)のペアが設定されている場合には、各ペアの第2制御点39bに対してそれぞれ平面を設定する。具体的には、平面設定処理部23は、処理対象のペアを構成する第2制御点39bの目標位置における法線N1に垂直となるように平面を設定する。また、平面設定処理部23は、上記第1オフセット設定処理部21により第1オフセット距離が設定されている場合には、第2制御点39bの目標位置から法線N1方向に第1オフセット距離だけオフセットした位置に平面を設定する。
【0032】
図8に、平面設定処理部23により設定された平面の一例を示す。図8に示すように、第2制御点39bの目標位置から法線N1方向に第1オフセット距離Offset1だけオフセットした位置に、法線N1に垂直となるように平面45が設定されている。
【0033】
図2に戻り、第1目標位置拘束処理部25は、処理対象の第1制御点39aの目標位置を、ペアを構成する第2制御点39bの目標位置に基づいて設定された平面45を超えないように拘束する。また第1目標位置拘束処理部25は、処理対象の1つの第1制御点39aに対して複数組(例えば5組)のペアが設定されている場合には、各ペアについて上記拘束処理を実行し、処理対象の第1制御点39aの目標位置を、各ペアを構成する第2制御点39bの目標位置に基づいて設定された複数の平面45をそれぞれ超えないように拘束する。
【0034】
図8に、第1目標位置拘束処理部25による拘束処理の一例を示す。図8に示すように、第1制御点39aの目標位置は、平面45よりも第2制御点39b側の領域に到達しないように、平面45よりも第1制御点39a側の領域に位置するように拘束(制限)される。
【0035】
なお、以上においては第1制御点39aを拘束処理の対象とし、第1制御点39aの目標位置を第2制御点39bに基づいて設定した平面45により拘束(制限)するようにしたが、反対に、第2制御点39bを拘束処理の対象とし、第2制御点39bの目標位置を第1制御点39aに基づいて設定した平面45により拘束(制限)してもよい。
【0036】
図2に戻り、制御点更新処理部27は、複数の第1制御点39aの位置を、前述の目標位置計算処理部13により計算された布シミュレーションによる目標位置であって上述した拘束処理により拘束された目標位置に近づくようにそれぞれ更新する。すなわち、第1制御点39aの布シミュレーションによる動きが上記拘束処理により拘束された範囲内に制限される。また制御点更新処理部27は、複数の第2制御点39bの位置を、前述の目標位置計算処理部13により計算された布シミュレーションによる目標位置に近づくようにそれぞれ更新する。
【0037】
画像生成処理部29は、上記制御点更新処理部27により更新された第1制御点39a及び第2制御点39bの位置に基づいて、第1布オブジェクト35及び第2布オブジェクト37の画像を生成する。
【0038】
なお、以上説明した各処理部における処理等は、これらの処理の分担の例に限定されるものではなく、例えば、更に少ない数の処理部(例えば1つの処理部)で処理されてもよく、また、更に細分化された処理部により処理されてもよい。また、上述した各処理部の機能は、後述するCPU101(後述の図18参照)が実行するゲームプログラムにより実装されるものであるが、例えばその一部がASICやFPGA等の専用集積回路、その他の電気回路等の実際の装置により実装されてもよい。
【0039】
(1-2.情報処理装置が実行する処理手順)
次に、図9を用いて、第1実施形態に係る情報処理装置3によって実行される処理手順の一例について説明する。
【0040】
ステップS5では、情報処理装置3は、対称軸設定処理部15により、第1布オブジェクト35と第2布オブジェクト37とが連結する部位に対称軸41を設定する。
【0041】
ステップS10では、情報処理装置3は、ペア設定処理部17により、和服オブジェクト33の袖部33aに対して設定された複数の制御点39に対し、上記ステップS5で設定した対称軸41を介して線対称となる第1制御点39aと第2制御点39bとをペアとしてそれぞれ設定する。このとき、1つの第1制御点39aと1つの第2制御点39bとを1対1でペアを設定してもよいし、前述のように、1つの第1制御点39aと複数(例えば5個)の第2制御点39bに対してそれぞれペアを設定してもよい。
【0042】
ステップS15では、情報処理装置3は、上記ステップS10で設定した複数のペアのうち、処理対象とするペアを特定する。
【0043】
ステップS20では、情報処理装置3は、目標位置計算処理部13により布シミュレーションを実行し、上記ステップS15で特定したペアを構成する第1制御点39a及び第2制御点39bの各々に対し、布シミュレーションによる目標位置をそれぞれ計算する。
【0044】
ステップS25では、情報処理装置3は、第1法線計算処理部19により、ペアを構成する第2制御点39bの目標位置における法線N1を、隣接する第2制御点39bとの位置関係に基づいて計算する。
【0045】
ステップS30では、情報処理装置3は、第1オフセット設定処理部21により、ペアを構成する第2制御点39bの目標位置に対する法線N1方向の第1オフセット距離を設定する。
【0046】
ステップS35では、情報処理装置3は、平面設定処理部23により、ペアを構成する第2制御点39bの目標位置から法線N1方向に上記ステップS30で設定した第1オフセット距離だけオフセットした位置に、法線N1に垂直となるように平面45を設定する。
【0047】
ステップS40では、情報処理装置3は、第1目標位置拘束処理部25により、上記ステップS20で計算した第1制御点39aの目標位置を、上記ステップS35で設定した平面45を超えないように拘束する。
【0048】
ステップS45では、情報処理装置3は、袖部33aの各制御点39に対して設定された全てのペアに対し、上記ステップS20~ステップS40の処理を終了したか否かを判定する。「全てのペア」とは、袖部33aの第1布オブジェクト35に設定された全ての第1制御点39aに対して設定されたペアであり、1つの制御点39aに対して複数のペアが設定されている場合にはそれらのペアを含むものである。全てのペアに対して処理を終了していない場合には(ステップS45:NO)、先のステップS15に戻り、次の処理対象のペアを特定した上で、上記ステップS20~ステップS40の処理を繰り返す。一方、全てのペアに対して処理を終了した場合には(ステップS45:YES)、ステップS50に移る。
【0049】
ステップS50では、情報処理装置3は、制御点更新処理部27により、第1制御点39aの位置及び第2制御点39bの位置を、上記ステップS20で計算された布シミュレーションによる目標位置であって、上述したステップS40の拘束処理により拘束された目標位置に近づくようにそれぞれ更新する。
【0050】
ステップS55では、情報処理装置3は、画像生成処理部29により、上記ステップS50で更新された第1制御点39a及び第2制御点39bの位置に基づいて第1布オブジェクト35及び第2布オブジェクト37の画像を生成する。以上により、本フローチャートを終了する。
【0051】
なお、上述した処理手順は一例であって、上記手順の少なくとも一部を削除又は変更してもよいし、上記以外の手順を追加してもよい。また、上記手順の少なくとも一部の順番を変更してもよいし、複数の手順が単一の手順にまとめられてもよい。
【0052】
(1-3.第1実施形態の効果)
以上説明したように、第1実施形態のゲームプログラムは、情報処理装置3を、視点方向に少なくとも一部が重なった第1布オブジェクト35及び第2布オブジェクト37のそれぞれを変形させるための布シミュレーション処理により、第1布オブジェクト35に設定された複数の第1制御点39a及び第2布オブジェクト37に設定された複数の第2制御点39bの目標位置をそれぞれ計算する目標位置計算処理部13、複数の第2制御点39bのうち、処理対象となる第1制御点39aに対応する一部の第2制御点39bの布シミュレーションによる目標位置に基づいて平面45を設定する平面設定処理部23、第1制御点39aの布シミュレーションによる目標位置を、平面45を超えないように拘束する第1目標位置拘束処理部25、第1制御点39a及び第2制御点39bの位置を、布シミュレーションによる目標位置に近づくようにそれぞれ更新する制御点更新処理部27、第1制御点39a及び第2制御点39bの更新された位置に基づいて、第1布オブジェクト35及び第2布オブジェクト37の画像を生成する画像生成処理部29、として機能させる。
【0053】
本実施形態では、少なくとも一部が重なった第1布オブジェクト35及び第2布オブジェクト37に対し、布シミュレーション処理により第1布オブジェクト35に設定された複数の第1制御点39a及び第2布オブジェクト37に設定された複数の第2制御点39bの目標位置をそれぞれ計算する。このとき、複数の第2制御点39bのうち、処理対象となる第1制御点39aに対応する一部の第2制御点39bの布シミュレーションによる目標位置に基づいて平面45を設定し、第1制御点39aの目標位置を平面45を超えないように拘束する。この拘束処理を布オブジェクト35,37の全体に対して実行することにより、布オブジェクト35,37同士が貫通して突き抜ける現象の発生を抑制できる。そして、各第1制御点39aの移動を、当該第1制御点39aに対応する一部の第2制御点39bに基づいて設定された平面45によって拘束(制限)するので、各第1制御点39aの移動を、第2布オブジェクト37全体の第2制御点39bとの衝突判定によって制限する場合に比べて、計算負荷を軽減できる。したがって、計算負荷の増大を抑制しつつ、布同士の突き抜け現象の発生を抑制することができる。
【0054】
また本実施形態において、ゲームプログラムは、情報処理装置3を、第1布オブジェクト35と第2布オブジェクト37とが連結する部位に対称軸41を設定する対称軸設定処理部15、処理対象となる1つの第1制御点39aと、当該第1制御点39aに対して対称軸41を介して線対称となる領域に位置する第2制御点39bとをペアとして設定するペア設定処理部17、としてさらに機能させてもよく、その場合には、平面設定処理部23は、ペアを構成する第2制御点39bの目標位置に基づいて平面45を設定し、第1目標位置拘束処理部25は、ペアを構成する第1制御点39aの目標位置を、平面45を超えないように拘束してもよい。
【0055】
本実施形態では、処理対象となる1つの第1制御点39aと、当該第1制御点39aに対して対称軸41を介して線対称となる領域に位置する第2制御点39bとをペアとして設定する。そして、ペアを構成する第1制御点39aの目標位置を、ペアを構成する第2制御点39bの目標位置に基づいて設定した平面45を超えないように拘束する。このペアに対する拘束処理を、布オブジェクト35,37の全体に対して実行することにより、布オブジェクト35,37同士が貫通して突き抜ける現象の発生を抑制できる。ペアを設定された第1制御点39aと第2制御点39bは概ね対向する位置に存在するため、これらの制御点間に上記拘束処理を行うことにより、効率的に布同士の突き抜けの発生を抑制できる。
【0056】
また本実施形態では、各第1制御点39aの移動を、当該第1制御点39aとの間でペアを組んだ第2制御点39bに基づいて設定された平面45によって拘束(制限)するので、各第1制御点39aの移動を、第2布オブジェクト37全体の第2制御点39bとの衝突判定によって制限する場合に比べて、計算負荷を大幅に軽減できる。本実施形態は、例えば和服オブジェクト33の袖部33aのように、対称軸41で折り返されることで2つの布オブジェクト35,37が重なるような場合に特に有効である。
【0057】
また本実施形態において、ゲームプログラムは、情報処理装置3を、ペアを構成する第2制御点39bの目標位置における法線N1を、隣接する第2制御点39bとの位置関係に基づいて計算する第1法線計算処理部19、としてさらに機能させてもよく、その場合には、平面設定処理部23は、法線N1に垂直となるように平面45を設定してもよい。
【0058】
この場合、布オブジェクト35,37が布シミュレーションによりどのような形状となっても、布オブジェクト35,37同士が貫通して突き抜ける現象の発生を抑制できる。
【0059】
また本実施形態において、ゲームプログラムは、情報処理装置3を、ペアを構成する第2制御点39bの目標位置と平面45との法線N1方向の距離である第1オフセット距離を設定する第1オフセット設定処理部21、としてさらに機能させてもよく、その場合には、平面設定処理部23は、第2制御点39bの目標位置から第1オフセット距離だけオフセットした位置に平面45を設定してもよい。
【0060】
一般に、布オブジェクトに設定された制御点の位置と、実際に布オブジェクトが表示される位置(例えばメッシュの位置等)とは、一致しない場合がある。本実施形態では、第1オフセット距離を上記位置の相違量に応じた適宜の値に設定することにより、布同士の突き抜け現象の発生の抑制効果をさらに高めることができる。また、第1オフセット距離により第1布オブジェクト35と第2布オブジェクト37との間の隙間を調整できるので、例えばキャラクタが着用する和服オブジェクト33の袖部33aの垂れ下がり部分33bに適用する場合には、当該垂れ下がり部分33bの厚みを調整することが可能となる。
【0061】
また本実施形態において、ペア設定処理部17は、処理対象となる1つの第1制御点39aと、当該第1制御点39aに対して対称軸41を介して線対称となる位置に存在する1つの第2制御点39bとをペアとして設定すると共に、1つの第1制御点39aと、1つの第2制御点39bの周囲に存在する複数の第2制御点39bの各々とについてもペアとして設定し、平面設定処理部23は、ペアを構成する複数の第2制御点39bの各々の目標位置に基づいて複数の平面45を設定し、第1目標位置拘束処理部25は、ペアを構成する第1制御点39aの目標位置を、複数の平面45をそれぞれ超えないように拘束してもよい。
【0062】
仮に、処理対象となる1つの第1制御点39aと、対称軸41を挟んで線対称となる位置に存在する1つの第2制御点39bとを1対1でペアとして設定し、当該ペアに対して拘束処理を行う場合には、例えば布オブジェクト35,37の動きが大きい場合には布オブジェクト35,37同士の突き抜け現象が発生する可能性がある。本実施形態では、線対称となる位置に存在する1つの第2制御点39bだけでなく、その第2制御点39bの周囲に存在する第2制御点39b(例えば上下左右の4つの第2制御点39b)についてもペアを設定して拘束処理を行うことにより、布同士の突き抜け現象の発生の抑制効果をさらに高めることができる。
【0063】
また本実施形態において、第1布オブジェクト35と第2布オブジェクト37は、キャラクタ31が着用する和服オブジェクト33の袖部33aの垂れ下がり部分33bにおける前側の布オブジェクトと後側の布オブジェクトであり、対称軸設定処理部15は、袖部33aの下端の折り返し部分に対称軸41を設定してもよい。
【0064】
キャラクタ31が和服オブジェクト33を着用する場合、例えばキャラクタ31の動きが大きい場合には、袖部33aの腕からの垂れ下がり部分33bにおいて、後側の布が前側の布を貫通して飛び出す突き抜け現象が発生する可能性がある。本実施形態では、そのような突き抜け現象の発生を抑制できるので、和服オブジェクト33の動きをより自然に表現することができる。
【0065】
<2.第2実施形態>
次に、本発明の第2実施形態について説明する。第2実施形態は、キャラクタが着用する衣服オブジェクトにおいて重なる2つの布オブジェクトに対し、重なり方向に略垂直な方向から見た断面による制御点群ごとに各布オブジェクトに対して拘束処理を行うことによって、布オブジェクト同士が突き抜ける現象の発生を抑制するものである。
【0066】
(2-1.情報処理装置の機能的構成)
図10及び図11図16を用いて、第2実施形態に係る情報処理装置3の機能的構成の一例について説明する。なお、図10において前述の図2と同様の構成には同符号を付し、適宜説明を省略する。
【0067】
図10に示すように、情報処理装置3は、前述の目標位置計算処理部13と、制御点群設定処理部47と、基準線設定処理部49と、距離設定処理部51と、第2目標位置拘束処理部53と、曲線設定処理部55と、近接点計算処理部57と、第2法線計算処理部59と、第2オフセット設定処理部61と、前述の平面設定処理部23と、前述の第1目標位置拘束処理部25と、前述の制御点更新処理部27と、前述の画像生成処理部29とを有する。
【0068】
目標位置計算処理部13による処理内容は、前述の第1実施形態と同様であるため説明を省略する。
【0069】
制御点群設定処理部47は、第1布オブジェクト(第1オブジェクトの一例)と第2布オブジェクト(第2オブジェクトの一例)とが重なる方向に略垂直な方向から見た断面上に位置する第1制御点39a及び第2制御点39bを含む制御点群を設定する。「重なる方向に略垂直な方向から見た断面」とは、例えば第1布オブジェクトと第2布オブジェクトが、和服オブジェクト33の帯より下方の部分である裾部33cの衽部33dにおいて重なって描画される、外側の布オブジェクトと内側の布オブジェクトである場合、重なる方向がキャラクタの身体の前後方向となるため、前後方向に略垂直な上下方向から見た断面、すなわち水平断面のことをいう。
【0070】
図11及び図12に、制御点群設定処理部47により設定される、断面上に位置する制御点群の一例を示す。図11に示すように、和服オブジェクト33の裾部33cに対して複数の制御点39が設定されている。制御点39は、例えば格子状に配列されている。裾部33cの前側の衽部33dでは、外側の布オブジェクトである第1布オブジェクト62と、内側の布オブジェクトである第2布オブジェクト64との少なくとも一部が重なっている。
【0071】
図12に、図11の水平断面XII-XII上に位置する制御点群の一例を示す。なお、図12では説明を簡単にするために制御点39の数を減らして簡略化して図示している。図12に示すように、制御点群39Gには、外側の布オブジェクトである第1布オブジェクト62に設定された複数の第1制御点39a(ドットハッチングで図示)と、内側の布オブジェクトである第2布オブジェクト64に設定された複数の第2制御点39b(横縞ハッチングで図示)と、裾部33cのうち布シミュレーション処理の対象でない固定側(キャラクタの後側)の布オブジェクト63に設定された複数の第3制御点39c(格子ハッチングで図示)とが含まれる。制御点群設定処理部47は、水平断面の高さを上下方向に1段ずつ変更しつつ、裾部33cの全体について処理対象となる制御点群Gを順次設定する。
【0072】
図10に戻り、基準線設定処理部49は、上記制御点群設定処理部47により設定された制御点群Gに含まれる複数の第1制御点39aのうち、第1布オブジェクト62と第2布オブジェクト64との重なり部分65とは反対側の端部の第1制御点39aと、同じ制御点群Gに含まれる複数の第2制御点39bのうちの上記重なり部分65とは反対側の端部の第2制御点39bと、を結ぶ基準線を設定する。基準線は直線状に設定される。図13に、基準線設定処理部49により設定された基準線67の一例を示す。
【0073】
図10に戻り、距離設定処理部51は、上記基準線設定処理部49により設定された基準線67に垂直な方向における基準線67からの離間距離を、基準線67に沿った方向における基準線67の端部からの長さ距離に基づいて所定の形状となるように設定する。「所定の形状」は特に限定されるものではないが、例えば第2布オブジェクト64の初期形状における第2制御点39bの配置を再現するような形状が好ましい。当該所定の形状は、例えば入力される長さ距離の値に応じて離間距離を出力する関数によって規定されてもよい。
【0074】
第2目標位置拘束処理部53は、基準線67に垂直な方向における第2制御点39bの目標位置と基準線67との離間距離が、上記距離設定処理部51によって設定された所定の形状を超えないように、制御点群Gに含まれる第2制御点39bの目標位置を拘束する。また第2目標位置拘束処理部53は、基準線67に沿った方向における第2制御点39bの目標位置と基準線67の端部との長さ距離が、所定のしきい値(例えば基準線67の全長)を超えないように、制御点群Gに含まれる第2制御点39bの目標位置を拘束する。
【0075】
図14に、距離設定処理部51により設定される離間距離及び長さ距離の一例を示す。また図15に、距離設定処理部51により設定される所定の形状の一例を示す。なお、図14は前述の図13における第2布オブジェクト64及び基準線67を抽出して示した図である。図14に示すように、処理対象となる第2制御点39bの目標位置(図中太線で示す)の基準線67との離間距離を離間距離Hi、基準線67の端部との長さ距離を長さ距離Di、基準線67の全長をDmaxとする。また、図15に示すように、所定の形状がHi=f(Di)の関数で規定されているものとする。この場合、第2目標位置拘束処理部53により、離間距離HiがHi=f(Di)の関数で規定される所定の形状を超えないように、且つ、長さ距離Diがしきい値Dmaxを超えないように、処理対象となる第2制御点39bの目標位置が拘束される。この拘束処理が、制御点群Gに含まれる全ての第2制御点39bに対して実行される。
【0076】
図10に戻り、曲線設定処理部55は、制御点群Gに含まれる複数の第2制御点39bの目標位置を結ぶ曲線を設定する。曲線の種類は特に限定されるものではないが、例えば計算負荷が軽いスプライン曲線等が好適である。図16に、曲線設定処理部55により設定される曲線69の一例を示す。
【0077】
図10に戻り、近接点計算処理部57は、処理対象となる1つの第1制御点39aの目標位置と最も近接する曲線69上の最近接点を計算する。最近接点は、処理対象の第1制御点39aの目標位置と曲線69を表す式(例えばスプライン曲線の式)に基づいて算出される。図16に、近接点計算処理部57により計算される最近接点71の一例を示す。なお、図16では処理対象となる第1制御点39aの目標位置を太線で示している。
【0078】
図10に戻り、第2法線計算処理部59は、上記近接点計算処理部57により計算された最近接点71の法線を曲線69の形状に基づいて計算する。法線は、最近接点71の位置と曲線69を表す式(例えばスプライン曲線の式)に基づいて算出される。図16に、第2法線計算処理部59により計算される法線N2の一例を示す。
【0079】
図10に戻り、第2オフセット設定処理部61は、最近接点71と後述する平面との法線N2方向の距離である第2オフセット距離を設定する。図16に、第2オフセット設定処理部61により設定される第2オフセット距離Offset2の一例を示す。なお、オフセット距離は必ずしも設定されなくてもよい。
【0080】
図10に戻り、平面設定処理部23は、複数の第2制御点39bのうち、処理対象となる第1制御点39aに対応する一部の第2制御点39bの目標位置に基づいて平面を設定する。「一部の第2制御点39b」とは、例えば処理対象の第1制御点39aを含む制御点群Gに含まれる第2制御点39bである。具体的には、平面設定処理部23は、曲線設定処理部55により設定された曲線69の接線と平行となるように平面を設定する。「接線」とは、曲線69に対し近接点計算処理部57により計算された最近接点71で接する直線である。つまり、平面設定処理部23は、第2法線計算処理部59により計算された法線N2に垂直となるように平面を設定する。また、平面設定処理部23は、上記第2オフセット設定処理部61により第2オフセット距離が設定されている場合には、最近接点71の位置から法線N2方向に第2オフセット距離だけオフセットした位置に平面を設定する。
【0081】
図16に、平面設定処理部23により設定された平面の一例を示す。図16に示すように、最近接点71の位置から法線N2方向に第2オフセット距離Offset2だけオフセットした位置に、法線N2に垂直となるように平面73が設定されている。
【0082】
図10に戻り、第1目標位置拘束処理部25は、制御点群Gに含まれる処理対象の第1制御点39aの目標位置を、平面設定処理部23により設定された平面73を超えないように拘束する。
【0083】
図16に、第1目標位置拘束処理部25による拘束処理の一例を示す。図16に示すように、第1制御点39aの目標位置は、平面73よりも第2制御点39b側の領域に到達しないように、平面73よりも第1制御点39a側の領域に位置するように拘束(制限)される。この拘束処理が、制御点群Gに含まれる全ての第1制御点39aに対して実行される。
【0084】
以上説明した各制御点39の目標位置の計算及び拘束処理が、裾部33cに対して上下方向に多段に配置された制御点群Gに対して順次実行されることで、裾部33cの全体について各制御点39の目標位置が決定される。
【0085】
図10に戻り、制御点更新処理部27は、第1制御点39a及び第2制御点39bの位置を、前述の目標位置計算処理部13により計算された布シミュレーションによる目標位置であって上述した拘束処理により拘束された目標位置に近づくようにそれぞれ更新する。すなわち、第1制御点39a及び第2制御点39bの布シミュレーションによる動きが上記拘束処理により拘束された範囲内に制限される。
【0086】
画像生成処理部29は、上記制御点更新処理部27により更新された第1制御点39a及び第2制御点39bの位置に基づいて、和服オブジェクト33における裾部33cの第1布オブジェクト62及び第2布オブジェクト64の画像を生成する。
【0087】
なお、以上説明した各処理部における処理等は、これらの処理の分担の例に限定されるものではなく、例えば、更に少ない数の処理部(例えば1つの処理部)で処理されてもよく、また、更に細分化された処理部により処理されてもよい。また、上述した各処理部の機能は、後述するCPU101(後述の図18参照)が実行するゲームプログラムにより実装されるものであるが、例えばその一部がASICやFPGA等の専用集積回路、その他の電気回路等の実際の装置により実装されてもよい。
【0088】
(2-2.情報処理装置が実行する処理手順)
次に、図17を用いて、第2実施形態に係る情報処理装置3によって実行される処理手順の一例について説明する。
【0089】
ステップS105では、情報処理装置3は、制御点群設定処理部47により、処理対象の制御点群Gを特定する。
【0090】
ステップS110では、情報処理装置3は、目標位置計算処理部13により布シミュレーションを実行し、上記ステップS105で特定した制御点群Gに含まれる第1制御点39a及び第2制御点39bに対し、布シミュレーションによる目標位置をそれぞれ計算する。
【0091】
ステップS115では、情報処理装置3は、基準線設定処理部49により、制御点群Gに含まれる複数の第1制御点39aのうちの重なり部分65とは反対側の端部の第1制御点39aの目標位置と、同じ制御点群Gに含まれる複数の第2制御点39bのうちの上記重なり部分65とは反対側の端部の第2制御点39bの目標位置と、を結ぶ基準線67を設定する。
【0092】
ステップS120では、情報処理装置3は、距離設定処理部51により、上記ステップS115で設定した基準線67からの離間距離を、基準線67の端部からの長さ距離に基づいて所定の形状となるように設定する。
【0093】
ステップS125では、情報処理装置3は、第2目標位置拘束処理部53により、制御点群Gに含まれる第2制御点39bの目標位置と基準線67との離間距離Hiが、上記ステップS120で設定した所定の形状を超えないように、第2制御点39bの目標位置を拘束する。
【0094】
ステップS130では、情報処理装置3は、第2目標位置拘束処理部53により、制御点群Gに含まれる第2制御点39bの目標位置と基準線67の端部との長さ距離Diが、所定のしきい値Dmaxを超えないように、第2制御点39bの目標位置を拘束する。
【0095】
なお、情報処理装置3は、上記ステップS125及びステップS130の処理を、上記ステップS105で特定した制御点群Gに含まれる全ての第2制御点39bに対して順次実行する。これにより、制御点群Gに含まれる全ての第2制御点39bの目標位置が確定する。
【0096】
ステップS135では、情報処理装置3は、曲線設定処理部55により、制御点群Gに含まれる複数の第2制御点39bの目標位置を結ぶ曲線69を設定する。
【0097】
ステップS140では、情報処理装置3は、近接点計算処理部57により、上記ステップS135で計算した曲線69において、制御点群Gに含まれる複数の第1制御点39aのうちの処理対象の第1制御点39aの目標位置と最も近接する最近接点71を計算する。
【0098】
ステップS145では、情報処理装置3は、第2法線計算処理部59により、上記ステップS140で計算した最近接点71の法線N2を曲線69の形状に基づいて計算する。
【0099】
ステップS150では、情報処理装置3は、第2オフセット設定処理部61により、上記ステップS140で計算した最近接点71と後で設定する平面73との法線N2方向の距離である第2オフセット距離を設定する。
【0100】
ステップS155では、情報処理装置3は、平面設定処理部23により、最近接点71の位置から法線N2方向に上記ステップS150で設定した第2オフセット距離だけオフセットした位置に、法線N2に垂直となるように平面73を設定する。
【0101】
ステップS160では、情報処理装置3は、第1目標位置拘束処理部25により、処理対象の第1制御点39aの目標位置を、上記ステップS155で設定した平面73を超えないように拘束する。
【0102】
なお、情報処理装置3は、上記ステップS140~ステップS160の処理を、上記ステップS105で特定した制御点群Gに含まれる全ての第1制御点39aに対して順次実行する。これにより、制御点群Gに含まれる全ての第1制御点39aの目標位置が確定する。
【0103】
ステップS165では、情報処理装置3は、和服オブジェクト33の裾部33cに設定された全ての制御点群Gに対して上述の処理を終了したか否かを判定する。処理を終了していない場合には(ステップS165:NO)、先のステップS105に戻り、次の処理対象の制御点群Gを特定した上で、上記ステップS110~ステップS160の処理を繰り返す。一方、処理を終了している場合には(ステップS165:YES)、ステップS170に移る。
【0104】
ステップS170では、情報処理装置3は、制御点更新処理部27により、第1制御点39aの位置及び第2制御点39bの位置を、上記ステップS110で計算された布シミュレーションによる目標位置であって、上述したステップS125、ステップS130、及び、ステップS160の拘束処理により拘束された目標位置に近づくようにそれぞれ更新する。
【0105】
ステップS175では、情報処理装置3は、画像生成処理部29により、上記ステップS170で更新された第1制御点39a及び第2制御点39bの位置に基づいて第1布オブジェクト62及び第2布オブジェクト64の画像を生成する。以上により、本フローチャートを終了する。
【0106】
なお、上述した処理手順は一例であって、上記手順の少なくとも一部を削除又は変更してもよいし、上記以外の手順を追加してもよい。また、上記手順の少なくとも一部の順番を変更してもよいし、複数の手順が単一の手順にまとめられてもよい。
【0107】
(2-3.第2実施形態の効果)
以上説明したように、第2実施形態のゲームプログラムは、情報処理装置3を、第1布オブジェクト62と第2布オブジェクト64とが重なる方向に略垂直な方向から見た断面上に位置する第1制御点39a及び第2制御点39bを含む制御点群Gを設定する制御点群設定処理部47、としてさらに機能させてもよく、その場合には、平面設定処理部23は、制御点群Gに含まれる第2制御点39bの目標位置に基づいて平面73を設定し、第1目標位置拘束処理部25は、制御点群Gに含まれる第1制御点39aの目標位置を、平面73を超えないように拘束してもよい。
【0108】
本実施形態では、第1布オブジェクト62と第2布オブジェクト64とが重なる方向に略垂直な方向から見た断面上に位置する第1制御点39a及び第2制御点39bを含む制御点群Gを設定し、当該制御点群Gに含まれる第2制御点39bの目標位置に基づいて平面73を設定する。そして、制御点群Gに含まれる第1制御点39aの目標位置を平面73を超えないように拘束する。この拘束処理を、布オブジェクト62,64全体に対して実行することにより、布オブジェクト62,64同士が貫通して突き抜ける現象の発生を抑制できる。
【0109】
また本実施形態では、裾部33cの水平断面上に配置される制御点群Gに含まれる制御点39a,39bを処理対象として拘束処理を実行する。このため、第1布オブジェクト62全体の第1制御点39aと第2布オブジェクト64全体の第2制御点39bとの間で衝突判定処理を行う場合に比べて、計算負荷を大幅に軽減できる。
【0110】
また本実施形態において、第1布オブジェクト62は第2布オブジェクト64よりも視点側に位置してもよく、ゲームプログラムは、情報処理装置3を、制御点群Gに含まれる第2制御点39bを結ぶ曲線69を設定する曲線設定処理部55、としてさらに機能させてもよく、その場合には、平面設定処理部23は、曲線69の接線と平行となるように平面73を設定してもよい。
【0111】
本実施形態では、視点とは反対側(下側、内側、又は裏側)に位置する第2布オブジェクト64に設定された複数の第2制御点39bのうち、制御点群Gに含まれる第2制御点39bを結ぶ曲線69を設定し、当該曲線69の接線と平行となるように平面73を設定する。そして、視点側(上側、外側、又は表側)に位置する第1布オブジェクト62に設定された第1制御点39aのうちの制御点群Gに含まれる第1制御点39aの目標位置を平面73を超えないように拘束する。この拘束処理を、布オブジェクト62,64全体に対して実行することにより、布オブジェクト62,64同士が貫通して突き抜ける現象の発生を抑制できる。
【0112】
また本実施形態では、第2制御点39bを結ぶ曲線69を設定し、当該曲線69に基づいて拘束処理を実行するので、単に制御点同士による判定で拘束処理を実行する場合に比べて、布オブジェクト62,64の滑らかな動きを実現できる。
【0113】
本実施形態は、和服オブジェクト33の裾部33cのように、筒状に巻いた態様の布オブジェクトの両端(2つの布オブジェクト62,64)が衽部33dにおいて重なるような場合に特に有効である。
【0114】
また本実施形態において、ゲームプログラムは、情報処理装置3を、処理対象となる第1制御点と最も近接する曲線69上の最近接点71を計算する近接点計算処理部57、最近接点71の法線N2を曲線69の形状に基づいて計算する第2法線計算処理部59、としてさらに機能させてもよく、その場合には、平面設定処理部23は、法線N2に垂直となるように平面73を設定してもよい。
【0115】
この場合、布オブジェクト62,64が布シミュレーションによりどのような形状となっても、布オブジェクト62,64同士が貫通して突き抜ける現象の発生を抑制できる。
【0116】
また本実施形態において、ゲームプログラムは、情報処理装置3を、最近接点71と平面73との法線N2方向の距離である第2オフセット距離を設定する第2オフセット設定処理部61、としてさらに機能させてもよく、その場合には、平面設定処理部23は、最近接点71の位置から第2オフセット距離だけオフセットした位置に平面73を設定してもよい。
【0117】
前述のように、布オブジェクトに設定された制御点の位置と、実際に布オブジェクトが表示される位置(例えばメッシュの位置等)とは、一致しない場合がある。本実施形態では、第2オフセット距離を上記位置の相違量に応じた適宜の値に設定することにより、布同士の突き抜け現象の発生をより一層抑制できる。また、第2オフセット距離により第1布オブジェクト62と第2布オブジェクト64との間の隙間を調整できるので、例えばキャラクタが身にまとう和服オブジェクト33の裾部33cの衽部33d等に適用する場合には、当該衽部33dの隙間を調整することが可能となる。
【0118】
また本実施形態において、ゲームプログラムは、情報処理装置3を、制御点群Gに含まれる複数の第1制御点39aのうちの第1布オブジェクト62と第2布オブジェクト64との重なり部分65とは反対側の端部の第1制御点39aと、制御点群Gに含まれる複数の第2制御点39bのうちの重なり部分65とは反対側の端部の第2制御点39bと、を結ぶ基準線67を設定する基準線設定処理部49、基準線67に垂直な方向における基準線67からの離間距離Hiを、基準線67に沿った方向における基準線67の端部からの長さ距離Diに基づいて所定の形状となるように設定する距離設定処理部51、基準線67に垂直な方向における第2制御点39bの目標位置と基準線67との離間距離Hiが、所定の形状を超えないように、制御点群Gに含まれる第2制御点39bの目標位置を拘束する第2目標位置拘束処理部53、としてさらに機能させてもよい。
【0119】
この場合、第2制御点39bの移動を所定の形状の内側の領域に制限することができ、第2布オブジェクト64の変形を所定の形状内に制限して安定させることができる。これにより、第2布オブジェクト64が第1布オブジェクト62を突き抜ける現象の発生をより確実に抑制できる。また、所定の形状の設定内容に応じて第2布オブジェクト64の形状を調節できる。
【0120】
また本実施形態において、第1布オブジェクト62と第2布オブジェクト64は、キャラクタが着用する和服オブジェクト33の裾部33cの衽部33dにおいて重なる外側の布オブジェクトと内側の布オブジェクトでもよい。
【0121】
キャラクタが和服オブジェクト33を着用する場合、例えばキャラクタの動きが大きい場合には、布が重なる裾部33cの衽部33dにおいて内側の布が外側の布を貫通して飛び出す突き抜け現象が発生する可能性がある。本実施形態では、そのような突き抜け現象の発生を抑制できるので、和服オブジェクト33の動きをより自然に表現することができる。
【0122】
<3.変形例等>
なお、本発明は、上記の実施形態に限られるものではなく、その趣旨及び技術的思想を逸脱しない範囲内で種々の変形が可能である。
【0123】
例えば、以上では、キャラクタが着用する衣服が和服である場合を例にとって説明したが、洋服やその他の衣装において2つの布が干渉する場合に本発明を適用してもよい。また、第1オブジェクトや第2オブジェクトは衣服を構成する布に限定されるのではない。例えば、布製の装備品(鉢巻、バンダナ等)や布製又は紙製の所持アイテム(布切れ、巻物、旗等)等、キャラクタに付随する柔軟なオブジェクトや、毛髪等の身体の一部である柔軟なオブジェクトに対して以上説明した処理を適用してもよい。例えば、衣服と布製又は紙製の所持アイテムとの干渉、衣服と毛髪との干渉、その他キャラクタに付随する柔軟なオブジェクト同士の干渉等に、本発明を適用してもよい。なお、毛髪等のオブジェクトである場合には、「所定のシミュレーション処理」は紐やロープ等のオブジェクトの変形をシミュレート可能ないわゆる紐シミュレーション処理が好適である。
【0124】
また、以上では、第1オブジェクトに対して複数の第1制御点39aが設定される場合を例にとって説明したが、第1制御点39aは必ずしも複数設定される必要はなく、第1オブジェクトの種類(例えばボール等)によっては単数としてもよい。
【0125】
また、以上では、画像生成プログラムがゲームプログラムである場合について説明したが、画像生成プログラムは、ゲーム以外の技術分野、例えばCGアニメーション、コンピュータ・シミュレーション、CAD等にも適用可能である。
【0126】
また、以上既に述べた以外にも、上記各実施形態や各変形例による手法を適宜組み合わせて利用しても良い。その他、一々例示はしないが、上記実施形態や各変形例は、その趣旨を逸脱しない範囲内において、種々の変更が加えられて実施されるものである。
【0127】
<4.情報処理装置のハードウェア構成>
次に、図18を用いて、上記で説明したCPU101等が実行するプログラムにより実装された各処理部を実現する情報処理装置3のハードウェア構成の一例について説明する。
【0128】
図18に示すように、情報処理装置3は、例えば、CPU101と、ROM103と、RAM105と、GPU106と、例えばASIC又はFPGA等の特定の用途向けに構築された専用集積回路107と、入力装置113と、出力装置115と、記録装置117と、ドライブ119と、接続ポート121と、通信装置123を有する。これらの構成は、バス109や入出力インターフェース111等を介し相互に信号を伝達可能に接続されている。
【0129】
ゲームプログラムは、例えば、ROM103やRAM105、ハードディスク等の記録装置117等に記録しておくことができる。
【0130】
また、ゲームプログラムは、例えば、フレキシブルディスクなどの磁気ディスク、各種のCD、MOディスク、DVD等の光ディスク、半導体メモリ等のリムーバブルな記録媒体125に、一時的又は永続的(非一時的)に記録しておくこともできる。このような記録媒体125は、いわゆるパッケージソフトウエアとして提供することもできる。この場合、これらの記録媒体125に記録されたゲームプログラムは、ドライブ119により読み出されて、入出力インターフェース111やバス109等を介し上記記録装置117に記録されてもよい。
【0131】
また、ゲームプログラムは、例えば、ダウンロードサイト、他のコンピュータ、他の記録装置等(図示せず)に記録しておくこともできる。この場合、ゲームプログラムは、LANやインターネット等のネットワークNWを介し転送され、通信装置123がこのプログラムを受信する。そして、通信装置123が受信したプログラムは、入出力インターフェース111やバス109等を介し上記記録装置117に記録されてもよい。
【0132】
また、ゲームプログラムは、例えば、適宜の外部接続機器127に記録しておくこともできる。この場合、ゲームプログラムは、適宜の接続ポート121を介し転送され、入出力インターフェース111やバス109等を介し上記記録装置117に記録されてもよい。
【0133】
そして、CPU101が、上記記録装置117に記録されたプログラムに従い各種の処理を実行することにより、前述の目標位置計算処理部13、対称軸設定処理部15、ペア設定処理部17、第1法線計算処理部19、第1オフセット設定処理部21、平面設定処理部23、第1目標位置拘束処理部25、制御点更新処理部27、画像生成処理部29、制御点群設定処理部47、基準線設定処理部49、距離設定処理部51、第2目標位置拘束処理部53、曲線設定処理部55、近接点計算処理部57、第2法線計算処理部59、第2オフセット設定処理部61等による処理が実現される。この際、CPU101は、例えば、上記記録装置117からプログラムを、直接読み出して実行してもよく、RAM105に一旦ロードした上で実行してもよい。更にCPU101は、例えば、プログラムを通信装置123やドライブ119、接続ポート121を介し受信する場合、受信したプログラムを記録装置117に記録せずに直接実行してもよい。
【0134】
また、CPU101は、必要に応じて、前述のゲームコントローラ5を含む、例えばマイク、マウス、キーボード等(図示せず)の入力装置113から入力する信号や情報に基づいて各種の処理を行ってもよい。
【0135】
GPU106は、CPU101からの指示に応じて例えばレンダリング処理などの画像表示のための処理を行う。
【0136】
そして、CPU101及びGPU106は、上記の処理を実行した結果を、例えば前述の表示装置7を含む、出力装置115から出力する。さらにCPU101及びGPU106は、必要に応じてこの処理結果を通信装置123や接続ポート121を介し送信してもよく、上記記録装置117や記録媒体125に記録させてもよい。
【符号の説明】
【0137】
1 ゲームシステム
3 情報処理装置
5 ゲームコントローラ
7 表示装置
13 目標位置計算処理部
15 対称軸設定処理部
17 ペア設定処理部
19 第1法線計算処理部
21 第1オフセット設定処理部
23 平面設定処理部
25 第1目標位置拘束処理部
27 制御点更新処理部
29 画像生成処理部
31 キャラクタ
33 和服オブジェクト
33a 袖部
33b 垂れ下がり部分
33c 裾部
33d 衽部
35 第1布オブジェクト(第1オブジェクト)
37 第2布オブジェクト(第2オブジェクト)
39a 第1制御点
39b 第2制御点
41 対称軸
45 平面
47 制御点群設定処理部
49 基準線設定処理部
51 距離設定処理部
53 第2目標位置拘束処理部
55 曲線設定処理部
57 近接点計算処理部
59 第2法線計算処理部
61 第2オフセット設定処理部
62 第1布オブジェクト(第1オブジェクト)
64 第2布オブジェクト(第2オブジェクト)
65 重なり部分
67 基準線
69 曲線
71 最近接点
73 平面
125 記録媒体
Di 長さ距離
G 制御点群
Hi 離間距離
N1 法線
N2 法線
Offset1 第1オフセット距離
Offset2 第2オフセット距離
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18