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

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

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

特開2023-62814画像生成プログラム、記録媒体、画像生成方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023062814
(43)【公開日】2023-05-09
(54)【発明の名称】画像生成プログラム、記録媒体、画像生成方法
(51)【国際特許分類】
   G06T 19/00 20110101AFI20230427BHJP
   A63F 13/52 20140101ALI20230427BHJP
【FI】
G06T19/00 A
A63F13/52
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2021172928
(22)【出願日】2021-10-22
(71)【出願人】
【識別番号】595000427
【氏名又は名称】株式会社コーエーテクモゲームス
(74)【代理人】
【識別番号】110003096
【氏名又は名称】弁理士法人第一テクニカル国際特許事務所
(72)【発明者】
【氏名】高松 賢二
【テーマコード(参考)】
5B050
【Fターム(参考)】
5B050BA08
5B050BA09
5B050BA12
5B050BA13
5B050CA07
5B050DA10
5B050EA07
5B050EA12
5B050EA13
5B050EA18
5B050EA19
5B050EA27
5B050FA02
5B050GA08
(57)【要約】
【課題】キャラクタの身体が衣服を突き抜ける現象の発生を抑制する。
【解決手段】ゲームプログラムは、情報処理装置3を、身体オブジェクト35が備える複数の関節を結ぶ芯線51を設定する芯線設定処理部13、身体オブジェクト35を覆う衣服オブジェクト37を変形させるための所定のシミュレーション処理により、衣服オブジェクト37に設定された複数の制御点61の目標位置をそれぞれ計算する目標位置計算処理部19、目標位置を、芯線51を含み且つ制御点61の初期位置と芯線51上の最近接点65とを結ぶ法線63に垂直な平面67よりも初期位置側の領域に拘束する第1目標位置拘束処理部21、複数の制御点61の位置を、拘束された目標位置に近づくようにそれぞれ更新する制御点更新処理部31、制御点61の更新された位置に基づいて、衣服オブジェクト37の画像を生成する画像生成処理部33、として機能させる。
【選択図】図2
【特許請求の範囲】
【請求項1】
情報処理装置を、
第1オブジェクトが備える複数の関節を結ぶ芯線を設定する芯線設定処理部、
前記第1オブジェクトに付随する第2オブジェクトを変形させるための所定のシミュレーション処理により、前記第2オブジェクトに設定された複数の制御点の目標位置をそれぞれ計算する目標位置計算処理部、
前記目標位置を、前記芯線を含み且つ予め設定された前記制御点の初期位置と前記芯線上の最近接点とを結ぶ法線に垂直な平面よりも前記初期位置側の領域に拘束する第1目標位置拘束処理部、
前記複数の制御点の位置を、拘束された前記目標位置に近づくようにそれぞれ更新する制御点更新処理部、
前記制御点の更新された位置に基づいて、前記第2オブジェクトの画像を生成する画像生成処理部、
として機能させるための画像生成プログラム。
【請求項2】
前記情報処理装置を、
前記芯線に対し太さを設定する太さ設定処理部、
前記目標位置を、前記芯線の太さの設定により定まる形状の外側の領域に拘束する第2目標位置拘束処理部、
としてさらに機能させるための請求項1に記載の画像生成プログラム。
【請求項3】
前記太さ設定処理部は、
前記芯線の太さを、前記芯線の一方側の端部、中間部、及び他方側の端部、を含む複数個所で個別に設定する、
請求項2に記載の画像生成プログラム。
【請求項4】
前記情報処理装置を、
前記目標位置と前記芯線との距離が、前記初期位置と前記芯線との距離に基づいて設定された所定の上限値を超えないように、前記目標位置を拘束する第3目標位置拘束処理部、
としてさらに機能させるための請求項1乃至3のいずれか1項に記載の画像生成プログラム。
【請求項5】
前記情報処理装置を、
同一の前記芯線周りの周方向に隣接する2つの前記制御点の前記目標位置間の距離が、前記2つの制御点の前記初期位置間の距離に基づいて設定された所定の上限値を超えないように、前記目標位置を拘束する第4目標位置拘束処理部、
としてさらに機能させるための請求項1乃至4のいずれか1項に記載の画像生成プログラム。
【請求項6】
前記情報処理装置を、
前記目標位置と前記初期位置との前記芯線に沿った方向の距離が所定の上限値を超えないように、前記目標位置を拘束する第5目標位置拘束処理部、
としてさらに機能させるための請求項1乃至5のいずれか1項に記載の画像生成プログラム。
【請求項7】
前記情報処理装置を、
前記関節の位置と前記芯線の端部とのオフセット距離を設定するオフセット設定処理部、
としてさらに機能させ、
前記芯線設定処理部は、
前記関節の位置から前記オフセット距離だけオフセットした位置に基づいて前記芯線を設定する、
請求項1乃至6のいずれか1項に記載の画像生成プログラム。
【請求項8】
情報処理装置を、
第1オブジェクトが備える関節の曲げ角度を算出する角度算出処理部、
前記第1オブジェクトに付随する第2オブジェクトを変形させるための所定のシミュレーション処理により、前記第2オブジェクトに設定された複数の制御点の第1目標位置をそれぞれ計算する第1目標位置計算処理部、
前記複数の制御点の各々に対して設定された、関連付けされた少なくとも1つの基準点及び当該基準点ごとの関連度合いを含むウェイト情報に基づいて、前記複数の制御点の第2目標位置をそれぞれ計算する第2目標位置計算処理部、
前記複数の制御点に対し、前記第2目標位置からの移動の自由度を前記曲げ角度に基づいて可変に設定する自由度設定処理部、
設定された前記自由度に基づいて、前記複数の制御点の位置を前記第1目標位置に近づくようにそれぞれ更新する制御点更新処理部、
前記制御点の更新された位置に基づいて、前記第2オブジェクトの画像を生成する画像生成処理部、
として機能させるための画像生成プログラム。
【請求項9】
前記情報処理装置を、
前記複数の制御点のうち、前記曲げ角度に基づいて前記第2目標位置からの移動の自由度が変更される対象となる前記制御点の領域を、前記関節近傍の所定の領域に設定する領域設定処理部、
としてさらに機能させるための請求項8に記載の画像生成プログラム。
【請求項10】
情報処理装置を、
前記第1オブジェクトが備える複数の前記関節を結ぶ芯線を設定する芯線設定処理部、
としてさらに機能させ、
前記角度算出処理部は、
1つの前記関節を共有する2つの隣接する前記芯線の相対角度に基づいて前記曲げ角度を算出し、
前記自由度設定処理部は、
前記複数の制御点に対し、前記第2目標位置からの移動量の制限値を設定する制限値設定処理部と、
前記複数の制御点の各々に対し、前記移動量の制限値を適用する割合を個別に設定する割合設定処理部と、
前記割合を前記曲げ角度に基づいて変更する割合変更処理部と、を有し、
前記制御点更新処理部は、
前記割合が適用された前記第2目標位置からの移動量の制限値の範囲内で、前記複数の制御点の位置を前記第1目標位置に近づくようにそれぞれ更新する、
請求項9に記載の画像生成プログラム。
【請求項11】
前記割合変更処理部は、
前記割合の変更の度合いを、前記所定の領域における前記関節とは反対側の端部から前記関節側の端部に向けて、徐々に大きくなるように設定する、
請求項10に記載の画像生成プログラム。
【請求項12】
前記画像生成プログラムはゲームプログラムである、
請求項1乃至11のいずれか1項に記載の画像生成プログラム。
【請求項13】
請求項1乃至12のいずれか1項に記載の画像生成プログラムを記録した、情報処理装置が読み取り可能な記録媒体。
【請求項14】
情報処理装置によって実行される画像生成方法であって、
第1オブジェクトが備える複数の関節を結ぶ芯線を設定するステップと、
前記第1オブジェクトに付随する第2オブジェクトを変形させるための所定のシミュレーション処理により、前記第2オブジェクトに設定された複数の制御点の目標位置をそれぞれ計算するステップと、
前記目標位置を、前記芯線を含み且つ予め設定された前記制御点の初期位置と前記芯線上の最近接点とを結ぶ法線に垂直な平面よりも前記初期位置側の領域に拘束するステップと、
前記複数の制御点の位置を、拘束された前記目標位置に近づくようにそれぞれ更新するステップと、
前記制御点の更新された位置に基づいて、前記第2オブジェクトの画像を生成するステップと、
を有する、画像生成方法。
【請求項15】
情報処理装置によって実行される画像生成方法であって、
第1オブジェクトが備える関節の曲げ角度を算出するステップと、
前記第1オブジェクトに付随する第2オブジェクトを変形させるための所定のシミュレーション処理により、前記第2オブジェクトに設定された複数の制御点の第1目標位置をそれぞれ計算するステップと、
前記複数の制御点の各々に対して設定された、関連付けされた少なくとも1つの基準点及び当該基準点ごとの関連度合いを含むウェイト情報に基づいて、前記複数の制御点の第2目標位置をそれぞれ計算するステップと、
前記複数の制御点に対し、前記第2目標位置からの移動の自由度を前記曲げ角度に基づいて可変に設定するステップと、
設定された前記自由度に基づいて、前記複数の制御点の位置を前記第1目標位置に近づくようにそれぞれ更新するステップと、
前記制御点の更新された位置に基づいて、前記第2オブジェクトの画像を生成するステップと、
を有する、画像生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像生成プログラム、記録媒体、及び画像生成方法に関する。
【背景技術】
【0002】
従来、バネモデルを使用して変形可能な物体をシミュレートする方法が知られている。例えば特許文献1には、布、衣服、毛髪等の柔軟な物体を複数の四角形ポリゴンで構成し、その頂点を仮想的な質点として、隣り合う質点の間を仮想的なバネで連結したモデルにより、その形状を求める布シミュレーション技術が記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005-99952号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記布シミュレーション技術等を用いて、例えばキャラクタの身体が纏っている衣服を表現する場合、身体と衣服との間で衝突判定処理(いわゆるコリジョン)を実行することが考えられる。その場合、計算負荷の時間的制約から衝突判定処理に十分な時間がかけられず、身体が衣服を突き抜ける現象が発生する場合がある、という課題があった。
【0005】
本発明はこのような問題点に鑑みてなされたものであり、キャラクタの身体が衣服を突き抜ける現象の発生を抑制することが可能な画像生成プログラム、記録媒体、及び画像生成方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明の画像生成プログラムは、情報処理装置を、第1オブジェクトが備える複数の関節を結ぶ芯線を設定する芯線設定処理部、前記第1オブジェクトに付随する第2オブジェクトを変形させるための所定のシミュレーション処理により、前記第2オブジェクトに設定された複数の制御点の目標位置をそれぞれ計算する目標位置計算処理部、前記目標位置を、前記芯線を含み且つ予め設定された前記制御点の初期位置と前記芯線上の最近接点とを結ぶ法線に垂直な平面よりも前記初期位置側の領域に拘束する第1目標位置拘束処理部、前記複数の制御点の位置を、拘束された前記目標位置に近づくようにそれぞれ更新する制御点更新処理部、前記制御点の更新された位置に基づいて、前記第2オブジェクトの画像を生成する画像生成処理部、として機能させる。
【0007】
上記目的を達成するために、本発明の画像生成プログラムは、情報処理装置を、第1オブジェクトが備える関節の曲げ角度を算出する角度算出処理部、前記第1オブジェクトに付随する第2オブジェクトを変形させるための所定のシミュレーション処理により、前記第2オブジェクトに設定された複数の制御点の第1目標位置をそれぞれ計算する第1目標位置計算処理部、前記複数の制御点の各々に対して設定された、関連付けされた少なくとも1つの基準点及び当該基準点ごとの関連度合いを含むウェイト情報に基づいて、前記複数の制御点の第2目標位置をそれぞれ計算する第2目標位置計算処理部、前記複数の制御点に対し、前記第2目標位置からの移動の自由度を前記曲げ角度に基づいて可変に設定する自由度設定処理部、設定された前記自由度に基づいて、前記複数の制御点の位置を前記第1目標位置に近づくようにそれぞれ更新する制御点更新処理部、前記制御点の更新された位置に基づいて、前記第2オブジェクトの画像を生成する画像生成処理部、として機能させる。
【0008】
上記目的を達成するために、本発明の記録媒体は、上記画像生成プログラムを記録した、情報処理装置が読み取り可能な記録媒体である。
【0009】
上記目的を達成するために、本発明の画像生成方法は、情報処理装置によって実行される画像生成方法であって、第1オブジェクトが備える複数の関節を結ぶ芯線を設定するステップと、前記第1オブジェクトに付随する第2オブジェクトを変形させるための所定のシミュレーション処理により、前記第2オブジェクトに設定された複数の制御点の目標位置をそれぞれ計算するステップと、前記目標位置を、前記芯線を含み且つ予め設定された前記制御点の初期位置と前記芯線上の最近接点とを結ぶ法線に垂直な平面よりも前記初期位置側の領域に拘束するステップと、前記複数の制御点の位置を、拘束された前記目標位置に近づくようにそれぞれ更新するステップと、前記制御点の更新された位置に基づいて、前記第2オブジェクトの画像を生成するステップと、を有する。
【0010】
上記目的を達成するために、本発明の画像生成方法は、情報処理装置によって実行される画像生成方法であって、第1オブジェクトが備える関節の曲げ角度を算出するステップと、前記第1オブジェクトに付随する第2オブジェクトを変形させるための所定のシミュレーション処理により、前記第2オブジェクトに設定された複数の制御点の第1目標位置をそれぞれ計算するステップと、前記複数の制御点の各々に対して設定された、関連付けされた少なくとも1つの基準点及び当該基準点ごとの関連度合いを含むウェイト情報に基づいて、前記複数の制御点の第2目標位置をそれぞれ計算するステップと、前記複数の制御点に対し、前記第2目標位置からの移動の自由度を前記曲げ角度に基づいて可変に設定するステップと、設定された前記自由度に基づいて、前記複数の制御点の位置を前記第1目標位置に近づくようにそれぞれ更新するステップと、前記制御点の更新された位置に基づいて、前記第2オブジェクトの画像を生成するステップと、を有する。
【発明の効果】
【0011】
本発明の画像生成プログラム等によれば、キャラクタの身体が衣服を突き抜ける現象の発生を抑制することができる。
【図面の簡単な説明】
【0012】
図1】第1実施形態及び第2実施形態に共通するゲームシステムの全体構成の一例を表すシステム構成図である。
図2】第1実施形態に係る情報処理装置の機能的構成の一例を表すブロック図である。
図3】芯線設定処理部により設定される芯線の一例を表す図である。
図4】太さ設定処理部により設定される芯線の太さの一例を表す図である。
図5】オフセット設定処理部により設定されるオフセットの一例を表す図である。
図6】正方形の布を模した三次元対象物を形成する複数の四角形の一例を表す図、及び、三次元対象物の描画に必要な計算を行う場合に想定される力学モデルの一例を表す図である。
図7】第1目標位置拘束処理部により実行される拘束処理の一例を説明するための図である。
図8】第1目標位置拘束処理部により実行される拘束処理の一例を説明するための図である。
図9】第2目標位置拘束処理部により実行される拘束処理の一例を説明するための図である。
図10】第2目標位置拘束処理部により実行される拘束処理の一例を説明するための図である。
図11】第3目標位置拘束処理部により実行される拘束処理の一例を説明するための図である。
図12】第4目標位置拘束処理部により実行される拘束処理の一例を説明するための図である。
図13】第5目標位置拘束処理部により実行される拘束処理の一例を説明するための図である。
図14】第1実施形態に係る情報処理装置によって実行される処理手順の一例を表すフローチャートである。
図15】第2実施形態に係る情報処理装置の機能的構成の一例を表すブロック図である。
図16】角度算出処理部による曲げ角度の算出処理の一例を説明するための図である。
図17】衣服オブジェクト設定された制御点、及び、身体オブジェクトに設定された基準点の一例を表す図である。
図18】第2目標位置計算処理部により計算されたスキニング位置の一例を説明するための図である。
図19】領域設定処理部により設定される制御点の変更領域の一例を表す図である。
図20】制限値の適用割合の分布形状の一例を表す図である。
図21】割合変更処理部により実行される制限値の適用割合の変更内容の具体例を表す図である。
図22】割合変更処理部により変更された制限値の適用割合の分布形状の一例を表す図である。
図23】第2実施形態に係る情報処理装置によって実行される処理手順の一例を表すフローチャートである。
図24】情報処理装置のハードウェア構成の一例を表すブロック図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施の形態について図面を参照しつつ説明する。なお、以下に説明する各実施形態では、本発明をゲームに適用する場合、すなわち本発明の画像生成プログラム及び画像生成方法が情報処理装置によって実行されることによりゲームが提供される場合について説明するが、適用対象をゲームに限定するものではない。
【0014】
<0.ゲームシステムの全体構成>
図1を用いて、各実施形態に共通するゲームシステム1の全体構成の一例について説明する。図1に示すように、ゲームシステム1は、情報処理装置3と、ゲームコントローラ5と、表示装置7とを有する。ゲームコントローラ5及び表示装置7は、情報処理装置3と有線又は無線により通信可能に接続されている。
【0015】
情報処理装置3は、例えば据え置き型のゲーム機である。但しこれに限定されるものではなく、例えば入力部や表示部等を一体に備えた携帯型のゲーム機でもよい。また、ゲーム機以外にも、例えば、サーバコンピュータ、デスクトップ型コンピュータ、ノート型コンピュータ、タブレット型コンピュータ等のように、コンピュータとして製造、販売等されているものや、スマートフォン、携帯電話、ファブレット等のように、電話機として製造、販売等されているものでもよい。
【0016】
プレイヤは、ゲームコントローラ5を用いて各種の操作入力を行う。図1に示す例では、ゲームコントローラ5は、例えば十字キー9、複数のボタン10、ジョイスティック11、タッチパッド12等を有する。
【0017】
<1.第1実施形態>
まず、本発明の第1実施形態について説明する。第1実施形態は、キャラクタの身体オブジェクトが着用する衣服オブジェクトの制御点に対し、各種の拘束処理を行うことによって、身体オブジェクトが衣服オブジェクトを突き抜ける現象の発生を抑制するものである。
【0018】
(1-1.情報処理装置の機能的構成)
図2及び図3図13を用いて、第1実施形態に係る情報処理装置3の機能的構成の一例について説明する。
【0019】
図2に示すように、情報処理装置3は、芯線設定処理部13と、太さ設定処理部15と、オフセット設定処理部17と、目標位置計算処理部19と、第1目標位置拘束処理部21と、第2目標位置拘束処理部23と、第3目標位置拘束処理部25と、第4目標位置拘束処理部27と、第5目標位置拘束処理部29と、制御点更新処理部31と、画像生成処理部33とを有する。
【0020】
芯線設定処理部13は、身体オブジェクト(第1オブジェクトの一例)が備える複数の関節を結ぶ芯線を設定する。また芯線設定処理部13は、各芯線に例えば3次元直交座標系であるローカル座標系を設定する。
【0021】
図3に、芯線設定処理部13により設定される芯線の一例を示す。図3に示すように、キャラクタの身体オブジェクト35が衣服オブジェクト37を着用している。キャラクタは、プレイヤによるゲームコントローラ5の操作に応じて各種の動作を行う。身体オブジェクト35は、肩関節39L,39Rと、肘関節41L,41Rと、手首関節43L,43Rと、股関節45L,45Rと、膝関節47L,47Rと、足首関節49L,49Rとを有する。図3に示す例では、肩関節39Lと肘関節41Lとを結ぶ芯線51Aと、肘関節41Lと手首関節43Lとを結ぶ芯線51Bと、肩関節39Rと肘関節41Rとを結ぶ芯線51Cと、肘関節41Rと手首関節43Rとを結ぶ芯線51Dと、股関節45Lと膝関節47Lとを結ぶ芯線51Eと、膝関節47Lと足首関節49Lとを結ぶ芯線51Fと、股関節45Rと膝関節47Rとを結ぶ芯線51Gと、膝関節47Rと足首関節49Rとを結ぶ芯線51Hとが、身体オブジェクト35の内側に設定されている。なお、後述するオフセット距離が設定された場合には、芯線51が身体オブジェクト35の外側に設定される場合もある。また、図3に示す例では各芯線51A~51Hが両端の関節を直線状に結ぶように設定されているが、例えば身体オブジェクト35の形状に合わせた形状に設定されてもよい。
【0022】
芯線51A~51Hの各々には、例えば芯線の始端から終端に向かう方向(図3中矢印方向)をX軸方向とし、X軸方向に垂直且つ互いに直交する2つの方向をY軸方向及びZ軸方向とする、3次元直交座標系であるローカル座標系が設定される(後述の図7図9等参照)。
【0023】
芯線51Aと芯線51Bは肘関節41Lを共有しており、芯線ライン53を構成する。例えば芯線51Aを親、芯線51Bを子というように、芯線51Aと芯線51Bとの間で親子関係を設定してもよい。芯線ライン53は、衣服オブジェクト37が有する筒状の袖部37aの内側を貫通する。袖部37aは、芯線ライン53の周囲(芯線周りの周方向の周囲)を覆う。
【0024】
芯線51Cと芯線51Dは肘関節41Rを共有しており、芯線ライン55を構成する。例えば芯線51Cを親、芯線51Dを子というように、芯線51Cと芯線51Dとの間で親子関係を設定してもよい。芯線ライン55は、衣服オブジェクト37が有する筒状の袖部37bの内側を貫通する。袖部37bは、芯線ライン55の周囲(芯線周りの周方向の周囲)を覆う。
【0025】
芯線51Eと芯線51Fは膝関節47Lを共有しており、芯線ライン57を構成する。例えば芯線51Eを親、芯線51Fを子というように、芯線51Eと芯線51Fとの間で親子関係を設定してもよい。また芯線51Gと芯線51Hは膝関節47Rを共有しており、芯線ライン59を構成する。例えば芯線51Gを親、芯線51Hを子というように、芯線51Gと芯線51Hとの間で親子関係を設定してもよい。2本の芯線ライン57,59は、衣服オブジェクト37が有する筒状の裾部37cの内側を貫通する。裾部37cは、芯線ライン57,59の周囲(芯線周りの周方向の周囲)を覆う。
【0026】
なお、本明細書では説明の便宜上、芯線51A~51Hの各々を区別しない場合には単に「芯線51」と記載する。
【0027】
図2に戻り、太さ設定処理部15は、芯線51に対し太さを設定する。具体的には、太さ設定処理部15は、芯線51の太さを芯線51の一方側の端部、中間部、及び他方側の端部を含む複数個所で個別に設定する。
【0028】
図4に、太さ設定処理部15により設定される芯線51の太さの一例を示す。図4に示す例では、芯線51の太さは、始端位置51s、中間位置51m、終端位置51eの3か所において任意の値に設定される。例えば、始端位置51sの半径をradiusSt、中間位置51mの半径をradiusMd、終端位置51eの半径をradiusEdとして、各パラメータが設定される。また、中間位置51mの芯線方向の位置は、芯線51の全長の範囲で任意の位置(例えば芯線51の全長を1とした場合に0~1の割合値)に設定される。例えば、始端位置51sからの距離をradiusTとしてパラメータが設定される。上記太さの設定により、芯線51を中心とするシリンダ状の形状69が仮想的に設定される。なお、上記では中間位置を1箇所のみ設定可能としたが、中間位置を複数個所で設定可能としてもよい。
【0029】
図2に戻り、オフセット設定処理部17は、関節の位置と芯線51の端部とのオフセット距離を設定する。オフセット設定処理部17によりオフセット距離が設定された場合、前述の芯線設定処理部13は、関節の位置からオフセット距離だけオフセットした位置に基づいて芯線51を設定する。なお、オフセット距離は必ずしも設定されなくてもよい。
【0030】
図5に、オフセット設定処理部17により設定されるオフセットの一例を示す。なお、図5では説明の便宜上、衣服オブジェクト37の裾部37cの下部を破断させて内部を示している。また、衣服オブジェクト37に設定された複数の制御点61を併せて示す。制御点61は、衣服オブジェクト37の動きや変形を表現するために制御上使用される点である。図5に示す例では、キャラクタの左足に設定される芯線51Fの始端位置(上端部)が左足の膝関節47Lから後方向に所定のオフセット距離(図5ではoffsetDと表記)だけオフセットされている。オフセット距離はパラメータとして任意の値に設定可能である。これにより、衣服オブジェクト37の裾部37cの形状を、例えば身体オブジェクト35の脹脛35aの膨らみを十分に覆う形状に調節することができる。
【0031】
なお、図示は省略するが、キャラクタの右足の芯線51Hについても上記と同様に右足の膝関節47Rから後方向に所定のオフセット距離が設定されてもよい。また、膝関節47L,47R以外の関節において芯線51の端部をオフセットさせてもよい。これにより、衣服オブジェクト37の形状をキャラクタの身体形状に合致した形状に調節することが可能となる。
【0032】
図2に戻り、目標位置計算処理部19は、身体オブジェクト35を覆う衣服オブジェクト37(第1オブジェクトに付随する第2オブジェクトの一例)を変形させるための所定のシミュレーション処理により、衣服オブジェクト37に設定された複数の制御点の目標位置をそれぞれ計算する。
【0033】
「所定のシミュレーション処理」とは、衣服オブジェクト37の変形をシミュレート可能な処理であれば特に限定されるものではないが、例えば布のオブジェクトの変形をシミュレート可能ないわゆる布(クロス)シミュレーション処理が好適である。具体的には、例えば弾性バネモデルにより力学的な計算を行うシミュレーション処理を用いてもよい。図6(a)は、例えば正方形の布を模した三次元対象物を形成する複数の四角形の一例を表す説明図であり、図6(b)は、図6(a)に示した三次元対象物の描画に必要な計算を行う場合に想定される力学モデルの一例を表す説明図である。
【0034】
図6(a)に示す三次元対象物の描画に要する計算を行う場合には、図6(b)に示すように各四角形の頂点を質点とし、隣接する質点間をバネで接続し、これらのバネにより各質点が隣接する質点(布の端部の質点では隣接する2又は3の質点)から力を受けるバネモデルを想定する。このバネモデルにより、例えば布の端部を引っ張るという動きを描画する場合に、布の端部に相当する質点にかかる力、またその質点に隣接する質点にかかる力、さらにその質点に隣接する質点にかかる力を計算することが可能となり、布を模した三次元対象物の形状の変化を計算により求めることが可能となる。
【0035】
また、布シミュレーション処理として例えば位置ベースの物理シミュレーション処理(PBD:Position Based Dynamics。論文「Position Based Dynamics」、http://matthias-mueller-fischer.ch/publications/posBasedDyn.pdf)を用いてもよい。PBDは、速度情報を持たずに現在位置、前状態の位置、そしてフレーム更新時間Δt(例えば60fpsの場合には16.67ms)で物理計算をしていく手法である。
【0036】
なお、上記のシミュレーション処理以外にも、布のような動きをシミュレート可能な手法であれば、様々なシミュレーション処理を採用することができる。なお、本明細書では説明の便宜上、目標位置計算処理部19により実行される所定のシミュレーション処理を「布シミュレーション」と、目標位置計算処理部19により計算される目標位置を「布シミュレーションによる目標位置」ともいう。
【0037】
図2に戻り、第1目標位置拘束処理部21は、上述の目標位置計算処理部19により計算された制御点61の目標位置を、芯線51を含み且つ予め設定された制御点61の初期位置と芯線上の最近接点とを結ぶ法線に垂直な平面よりも初期位置側の領域に拘束する。「制御点61の初期位置」は、例えば衣服オブジェクト37を身に纏ったキャラクタが所定の姿勢(初期ポーズ)をとった状態で設定された、衣服オブジェクト37の各制御点61のローカル座標系における位置である。各制御点61の初期位置は、衣服オブジェクト37が身体オブジェクト35に対して干渉しないように設定されている。各制御点61は、上記初期位置の情報と、どの芯線51に属するか(2以上の芯線に属してもよい)を表す情報とを有する。1つの制御点61が2以上の芯線に属する場合には、各芯線ごとの関連度合いを表す重み量(ウェイト情報)が含まれてもよい。また「最近接点」とは、芯線51上において処理対象となる制御点61の初期位置に最も近い位置に存在する点である。
【0038】
図7及び図8に、第1目標位置拘束処理部21により実行される拘束処理の一例を示す。なお、図8図7をX軸正の方向側から見た図である。図7及び図8に示すように、処理対象の制御点61の初期位置を通り芯線51に垂直な法線63が設定される。当該法線63と芯線51との交点が最近接点65となる。次に、法線63に垂直な平面であって芯線51を含む平面67が設定される。そして、処理対象の制御点61の目標位置は、平面67よりも初期位置とは反対側の領域に到達しないように、平面67よりも初期位置側の領域に位置するように拘束(制限)される。言い換えると、制御点61の目標位置は、最近接点65に対する初期位置の向きと反対方向に行かないように(初期位置の向きから90°を超えないように)拘束される。仮に、制御点61が平面67に対する初期位置側の領域とは反対側の領域に進入すると、身体オブジェクト35が衣服オブジェクト37を突き抜ける現象が発生する可能性が高くなる。したがって、上記拘束処理を行うことにより、身体オブジェクト35が衣服オブジェクト37を突き抜ける現象の発生を抑制できる。
【0039】
図2に戻り、第2目標位置拘束処理部23は、前述の目標位置計算処理部19により計算された制御点61の目標位置を、前述の太さ設定処理部15により設定された芯線51の太さにより定まる形状69の外側の領域に拘束する。
【0040】
図9及び図10に、第2目標位置拘束処理部23により実行される拘束処理の一例を示す。なお、図10図9をX軸正の方向側から見た図である。図9及び図10に示すように、処理対象の制御点61の目標位置は、前述の太さ設定処理部15により設定された芯線51の太さにより定まる形状69の外側の領域に拘束(制限)される。その結果、制御点61は太さ設定により定まる形状69の内側の領域に入らないように移動を制限される。つまり、形状69は衝突判定オブジェクト(いわゆるコリジョン)として機能する。これにより、芯線51の太さを身体オブジェクト35の形状に応じて設定することで、身体オブジェクト35が衣服オブジェクト37を突き抜ける現象の発生をさらに抑制できる。
【0041】
図2に戻り、第3目標位置拘束処理部25は、前述の目標位置計算処理部19により計算された制御点61の目標位置と芯線51との距離が、初期位置と芯線51との距離に基づいて設定された所定の上限値を超えないように、目標位置を拘束する。
【0042】
図11に、第3目標位置拘束処理部25により実行される拘束処理の一例を示す。図11に示すように、処理対象の制御点61の目標位置は、当該目標位置と芯線51との距離が、制御点61の初期位置と芯線51との距離d1に基づいて設定された所定の上限値Limd1を超えないように、拘束(制限)される。上限値Limd1は、例えば初期位置と芯線51との距離d1に所定の係数を乗じた値として設定されてもよい。上記拘束処理により、制御点61は芯線51を中心とする半径Limd1の円筒状の形状71の外側の領域に行かないように移動を制限される。これにより、衣服オブジェクト37の制御点61が芯線51から遠くに行き過ぎないように移動を制限することができる。その結果、衣服オブジェクト37の身体方向(芯線51の方向)と直交する方向の変形量が大きくなり過ぎることを防止でき、衣服オブジェクト37の動きをより自然に表現することができる。
【0043】
図2に戻り、第4目標位置拘束処理部27は、同一の芯線51周りの周方向に隣接する2つの制御点61の目標位置間の距離が、当該2つの制御点61の初期位置間の距離に基づいて設定された所定の上限値を超えないように、目標位置を拘束する。「芯線51周りの周方向」とは、芯線51に沿ったX軸を中心とする周方向である。
【0044】
図12に、第4目標位置拘束処理部27により実行される拘束処理の一例を示す。図12に示すように、処理対象の制御点61の目標位置は、周方向に隣接する制御点61の目標位置との距離が、処理対象の制御点61の初期位置と隣接する制御点61の初期位置との距離d2に基づいて設定された所定の上限値Limd2を超えないように、拘束(制限)される。上限値Limd2は、例えば距離d2に所定の係数を乗じた値として設定されてもよい。仮に、同一の芯線51周りの周方向に隣接する2つの制御点61間の距離が大きくなり過ぎると、当該部位において身体オブジェクト35が衣服オブジェクト37を突き抜ける現象が発生し易くなる。このため、上記拘束処理により制御点61が隣の制御点61と離れ過ぎないように移動を制限されることで、突き抜け現象の発生を抑制できる。また、衣服オブジェクト37の身体周りの周囲長の変形量が大きくなり過ぎることを防止でき、衣服オブジェクト37の動きをより自然に表現することができる。
【0045】
図2に戻り、第5目標位置拘束処理部29は、前述の目標位置計算処理部19により計算された目標位置と初期位置との芯線51に沿った方向の距離が所定の上限値を超えないように、目標位置を拘束する。「芯線51に沿った方向」とは、芯線51に沿ったX軸方向である。
【0046】
図13に、第5目標位置拘束処理部29により実行される拘束処理の一例を示す。図13に示すように、処理対象の制御点61の目標位置は、初期位置との芯線51に沿った方向の距離d3が所定の上限値Limd3を超えないように、拘束(制限)される。上限値Limd3は、例えばゲームの仕様、場面、演出等を考慮して好適な値に設定される。上記拘束処理により、制御点61は芯線51に沿った方向に初期位置から離れ過ぎないように移動を制限される。これにより、衣服オブジェクト37の身体方向(芯線51の方向)の変形量が大きくなり過ぎることを防止でき、衣服オブジェクト37の動きをより自然に表現することができる。
【0047】
図2に戻り、制御点更新処理部31は、複数の制御点61の位置を、前述の目標位置計算処理部19により計算された布シミュレーションによる目標位置であって上述した各拘束処理により拘束された目標位置に近づくようにそれぞれ更新する。すなわち、制御点61の布シミュレーションによる動きが各拘束処理により拘束された範囲内に制限される。
【0048】
画像生成処理部33は、上記制御点更新処理部31により更新された制御点61の位置に基づいて衣服オブジェクト37の画像を生成する。また画像生成処理部33は、身体オブジェクト35の画像も生成する。詳細な説明は省略するが、身体オブジェクト35の画像は、所定のモーション処理により身体オブジェクト35に設定された複数の制御点の目標位置を計算し、各制御点の位置を計算された目標位置に近づくように更新することによって生成される。
【0049】
なお、以上説明した各処理部における処理等は、これらの処理の分担の例に限定されるものではなく、例えば、更に少ない数の処理部(例えば1つの処理部)で処理されてもよく、また、更に細分化された処理部により処理されてもよい。また、上述した各処理部の機能は、後述するCPU101(後述の図24参照)が実行するゲームプログラムにより実装されるものであるが、例えばその一部がASICやFPGA等の専用集積回路、その他の電気回路等の実際の装置により実装されてもよい。
【0050】
(1-2.情報処理装置が実行する処理手順)
次に、図14を用いて、第1実施形態に係る情報処理装置3によって実行される処理手順の一例について説明する。
【0051】
ステップS5では、情報処理装置3は、芯線設定処理部13により、身体オブジェクト35に複数の関節を直線状に結ぶ芯線51を設定する。なお、オフセット距離が設定されている場合には、芯線51は関節の位置からオフセット距離だけオフセットした位置に基づいて設定される。
【0052】
ステップS10では、情報処理装置3は、太さ設定処理部15により、上記ステップS5で設定された芯線51に対し太さを設定する。芯線51の太さは、両端と中間部を含む複数個所(例えば始端位置、中間位置、及び終端位置の3個所)で個別に設定される。
【0053】
ステップS15では、情報処理装置3は、目標位置計算処理部19により布シミュレーションを実行し、衣服オブジェクト37に設定された複数の制御点61の布シミュレーションによる目標位置をそれぞれ計算する。
【0054】
ステップS20では、情報処理装置3は、第1目標位置拘束処理部21により、上記ステップS15で計算された制御点61の目標位置を、芯線51を含む平面67であって予め設定された制御点61の初期位置と芯線51上の最近接点65とを結ぶ法線63に垂直な平面67よりも、初期位置側の領域に拘束する。
【0055】
ステップS25では、情報処理装置3は、第2目標位置拘束処理部23により、上記ステップS15で計算された制御点61の目標位置を、上記ステップS10で設定された芯線51の太さにより定まる形状69の外側の領域に拘束する。
【0056】
ステップS30では、情報処理装置3は、第3目標位置拘束処理部25により、上記ステップS15で計算された制御点61の目標位置と芯線51との距離が、当該制御点61の初期位置と芯線51との距離d1に基づいて設定された所定の上限値Limd1を超えないように、目標位置を拘束する。
【0057】
ステップS35では、情報処理装置3は、第4目標位置拘束処理部27により、同一の芯線51周りの周方向に隣接する2つの制御点61の上記ステップS15で計算された目標位置間の距離が、初期位置における2つの制御点61間の距離d2に基づいて設定された所定の上限値Limd2を超えないように、目標位置を拘束する。
【0058】
ステップS40では、情報処理装置3は、第5目標位置拘束処理部29により、上記ステップS15で計算された目標位置と初期位置との芯線51に沿った方向の距離d3が所定の上限値Limd3を超えないように、目標位置を拘束する。
【0059】
ステップS45では、情報処理装置3は、制御点更新処理部31により、複数の制御点61の位置を、上記ステップS15で計算された布シミュレーションによる目標位置であって、上述したステップS20~ステップS40の各拘束処理により拘束された目標位置に近づくようにそれぞれ更新する。
【0060】
ステップS50では、情報処理装置3は、画像生成処理部33により、上記ステップS45で更新された制御点61の位置に基づいて衣服オブジェクト37の画像を生成する。また画像生成処理部33は、身体オブジェクト35の画像も生成する。以上により、本フローチャートを終了する。
【0061】
なお、上述した処理手順は一例であって、上記手順の少なくとも一部を削除又は変更してもよいし、上記以外の手順を追加してもよい。また、上記手順の少なくとも一部の順番を変更してもよいし、複数の手順が単一の手順にまとめられてもよい。
【0062】
(1-3.第1実施形態の効果)
以上説明したように、第1実施形態のゲームプログラムは、情報処理装置3を、身体オブジェクト35が備える複数の関節を結ぶ芯線51を設定する芯線設定処理部13、身体オブジェクト35を覆う衣服オブジェクト37を変形させるための所定のシミュレーション処理により、衣服オブジェクト37に設定された複数の制御点61の目標位置をそれぞれ計算する目標位置計算処理部19、目標位置を、芯線51を含み且つ予め設定された制御点61の初期位置と芯線51上の最近接点65とを結ぶ法線63に垂直な平面67よりも初期位置側の領域に拘束する第1目標位置拘束処理部21、複数の制御点61の位置を、拘束された目標位置に近づくようにそれぞれ更新する制御点更新処理部31、制御点61の更新された位置に基づいて、衣服オブジェクト37の画像を生成する画像生成処理部33、として機能させる。
【0063】
本実施形態では、身体オブジェクト35が備える複数の関節を結ぶ芯線51を設定し、所定のシミュレーション処理により計算された衣服オブジェクト37の制御点61の目標位置を、芯線51を含み且つ予め設定された制御点61の初期位置と芯線51上の最近接点65とを結ぶ法線63に垂直な平面67よりも初期位置側の領域に拘束する。これにより、制御点61が芯線51に対する初期位置側の領域とは反対側の領域(制御点61が当該領域に到達すると身体が衣服を突き抜ける現象が発生する可能性が高い)に到達できないように、制御点61の移動を制限することができる。すなわち、衣服オブジェクト37の制御点61が芯線51に対して存在すべき領域(初期位置側の領域)を予め設定することができる。そして、衣服オブジェクト37の制御点61の初期位置は、例えばキャラクタが所定の姿勢をとった状態で身体オブジェクト35に対して干渉しないように設定されている。以上により、キャラクタの身体が衣服を突き抜ける現象の発生を抑制することができる。
【0064】
また本実施形態において、ゲームプログラムは、情報処理装置3を、芯線51に対し太さを設定する太さ設定処理部15、目標位置を、芯線51の太さの設定により定まる形状69の外側の領域に拘束する第2目標位置拘束処理部23、としてさらに機能させてもよい。
【0065】
この場合、衣服オブジェクト37の制御点61が芯線51の太さの設定により定まる形状69の内側に入らないように移動を制限することができる。これにより、芯線51の太さを身体オブジェクト35の形状に応じて適宜の値に設定することで、キャラクタの身体が衣服を突き抜ける現象の発生をさらに抑制することができる。
【0066】
また本実施形態において、太さ設定処理部15は、芯線51の太さを、芯線51の一方側の端部、中間部、及び他方側の端部、を含む複数個所で個別に設定してもよい。
【0067】
この場合、芯線51の太さを例えば身体オブジェクト35の形状に応じてきめ細かに設定することができる。これにより、例えばカプセル、球体、立方体、円柱等の単純な形状で衝突判定を行う場合に比べて、突き抜け現象の発生の抑制効果をさらに高めることができる。
【0068】
また本実施形態において、ゲームプログラムは、情報処理装置3を、目標位置と芯線51との距離が、初期位置と芯線51との距離d1に基づいて設定された所定の上限値Limd1を超えないように、目標位置を拘束する第3目標位置拘束処理部25、としてさらに機能させてもよい。
【0069】
この場合、衣服オブジェクト37の制御点61が芯線51から遠くに行き過ぎないように移動を制限することができる。これにより、衣服オブジェクト37の身体方向と直交する方向の変形量が大きくなり過ぎることを防止でき、衣服オブジェクト37の動きをより自然に表現することができる。例えば衣服オブジェクト37が身体オブジェクト35の腕が挿入される袖部37a,37bや足が挿入される裾部37cを有する場合に、それら袖部37a,37bや裾部37cが身体から離れる方向に伸び過ぎないようにすること等が可能となる。
【0070】
また本実施形態において、ゲームプログラムは、情報処理装置3を、同一の芯線51周りの周方向に隣接する2つの制御点61の目標位置間の距離が、当該2つの制御点61の初期位置間の距離d2に基づいて設定された所定の上限値Limd2を超えないように、目標位置を拘束する第4目標位置拘束処理部27、としてさらに機能させてもよい。
【0071】
衣服オブジェクト37の制御点61において、仮に同一の芯線51周りの周方向に隣接する2つの制御点61間の距離が大きくなり過ぎると、当該部位において身体が衣服を突き抜ける現象が発生する可能性が高くなる。
【0072】
本実施形態では、衣服オブジェクト37の制御点61が同一の芯線51に属する隣の制御点61と離れ過ぎないように移動を制限することができる。これにより、突き抜け現象の発生の抑制効果をさらに高めることができる。また、衣服オブジェクト37の身体周りの周囲長の変形量が大きくなり過ぎることを防止でき、衣服オブジェクト37の動きをより自然に表現することができる。
【0073】
また本実施形態において、ゲームプログラムは、情報処理装置3を、目標位置と初期位置との芯線51に沿った方向の距離d3が所定の上限値Limd3を超えないように、目標位置を拘束する第5目標位置拘束処理部29、としてさらに機能させてもよい。
【0074】
この場合、衣服オブジェクト37の制御点61が芯線51に沿った方向に初期位置から離れ過ぎないように移動を制限することができる。これにより、衣服オブジェクト37の身体方向の変形量が大きくなり過ぎることを防止でき、衣服オブジェクト37の動きをより自然に表現することができる。例えば袖部37a,37bを有する衣服オブジェクト37を着用したキャラクタが腕を上方に向けて上げた際に、袖が滑る量を調節して滑り落ち過ぎないようにすること等が可能となる。
【0075】
また本実施形態において、ゲームプログラムは、情報処理装置3を、関節の位置と芯線51の端部とのオフセット距離を設定するオフセット設定処理部17、としてさらに機能させてもよく、その場合には、芯線設定処理部13は、関節の位置からオフセット距離だけオフセットした位置に基づいて芯線51を設定してもよい。
【0076】
この場合、芯線51の両端又はいずれか一方の端部を、関節位置からオフセットした位置に設定することができる。これにより、衣服オブジェクト37の形状をキャラクタの身体形状に応じた形状に調節することができる。例えば、膝関節47L,47Rと足首関節49L,49Rとを結ぶ芯線51F,51Hの膝関節側の端部を、膝関節47L,47Rから後側にオフセットさせることで、衣服オブジェクト37の形状をキャラクタの脹脛の膨らみを十分に覆う形状に調節でき、脹脛が衣服を突き抜ける現象の発生の抑制効果をさらに高めることができる。
【0077】
<2.第2実施形態>
次に、本発明の第2実施形態について説明する。第2実施形態は、キャラクタの身体オブジェクトが着用する衣服オブジェクトの制御点に対してスキニング位置の情報を持たせておき、関節の曲がり具合に応じて各制御点のスキニング位置からの移動の自由度を変更することによって、特に関節部位において身体オブジェクトが衣服オブジェクトを突き抜ける現象が発生することを抑制するものである。
【0078】
(2-1.情報処理装置の機能的構成)
図15及び図16図22を用いて、第2実施形態に係る情報処理装置3の機能的構成の一例について説明する。なお、図15において前述の図2と同様の構成には同符号を付し、適宜説明を省略する。
【0079】
図15に示すように、情報処理装置3は、前述の芯線設定処理部13と、角度算出処理部73と、第1目標位置計算処理部75と、第2目標位置計算処理部77と、領域設定処理部79と、自由度設定処理部81と、前述の制御点更新処理部31と、前述の画像生成処理部33とを有する。
【0080】
芯線設定処理部13による処理内容は、前述の第1実施形態と同様であるため説明を省略する。
【0081】
角度算出処理部73は、身体オブジェクト35が備える関節の曲げ角度を算出する。具体的には、角度算出処理部73は、1つの関節を共有する2つの隣接する芯線51の相対角度に基づいて曲げ角度を算出する。
【0082】
図16に、角度算出処理部73による曲げ角度の算出処理の一例を示す。図16に示すように、1つの関節を共有する2つの隣接する芯線51,51(図16では芯線A、芯線Bと表記)が設定されている。芯線A,Bは、例えば肘関節41Lを共有する芯線51A,51B、肘関節41Rを共有する芯線51C,51D、膝関節47Lを共有する芯線51E,51F、又は膝関節47Rを共有する芯線51G,51H等である。この場合において、角度算出処理部73は、芯線A及び芯線Bの各々に設定されたローカル座標系のX軸の向き(ベクトル情報)に基づいて、芯線Aと芯線Bとの相対角度である曲げ角度θを算出する。
【0083】
図15に戻り、第1目標位置計算処理部75は、前述の目標位置計算処理部19と同様の処理を行う。すなわち、第1目標位置計算処理部75は、身体オブジェクト35を覆う衣服オブジェクト37を変形させるための所定のシミュレーション処理により、衣服オブジェクト37に設定された複数の制御点61の第1目標位置をそれぞれ計算する。なお、本明細書では説明の便宜上、第1目標位置計算処理部75により実行される所定のシミュレーション処理を「布シミュレーション」と、第1目標位置計算処理部75により計算される第1目標位置を「布シミュレーションによる目標位置」ともいう。
【0084】
第2目標位置計算処理部77は、複数の制御点61の各々に対して設定されたウェイト情報に基づいて、複数の制御点61の第2目標位置をそれぞれ計算する。ウェイト情報は、各制御点61が身体オブジェクト35に設定された基準点(例えば関節の位置)に対してどのように追従するかを設定するための情報であり、関連付けされた少なくとも1つの基準点と、当該基準点ごとの関連度合いである重み量が含まれる。本明細書では説明の便宜上、第2目標位置計算処理部77により計算される第2目標位置を「スキニング位置」ともいう。
【0085】
次に、第2目標位置計算処理部77による処理の具体例について説明する。図17に、基準点及び制御点の設定の一例を示す。図17に示すように、身体オブジェクト35は衣服オブジェクト37を着用している。衣服オブジェクト37は、身体に固定された部分である固定部83と、自由に動くことが可能な部分である可動部85とを備えている。図17に示す例では、固定部83は衣服オブジェクト37の裾部37cのうち境界87より上方の部分であり、可動部85は裾部37cのうち境界87より下方の部分である。
【0086】
身体オブジェクト35には、身体を動かすための複数の基準点89(いわゆるボーン)が設定されている。なお、図17では基準点89を制御点61と区別するためにハッチングで示している。図17に示す例では、例えば身体オブジェクト35の股関節45L,45R、膝関節47L,47R、足首関節49L,49Rに対応する位置に基準点89がそれぞれ設定されている。各基準点89は身体オブジェクト35の動作システム(モーション計算等)により移動する。股関節45L,45R、膝関節47L,47R、足首関節49L,49Rに対応する基準点89のいずれかが、衣服オブジェクト37の可動部85を変形させるための基準点として設定されている。
【0087】
図17に示すように、衣服オブジェクト37には複数の制御点61が設定されている。制御点61は、衣服オブジェクト37の動きや変形を表現するために制御上使用される点である。複数の制御点61は衣服オブジェクト37の表面を覆うように格子状に配列されている。固定部83の制御点61は、後述する移動量の制限値を適用する割合が0(又は0に近い値でもよい)に設定される。一方、可動部85の制御点61は移動量の制限値を適用する割合が0よりも大きな値(0~1の範囲)に設定される。
【0088】
上述のように、各制御点61にはウェイト情報がそれぞれ設定されており、当該ウェイト情報には制御点61がどの基準点89と関連付けられているか、及び、当該基準点89ごとの関連度合い(重み量)が含まれる。例えば、衣服オブジェクト37の可動部85の右足側の領域の各制御点61に対しては、股関節45R、右足の膝関節47R、及び右足の足首関節49Rに対応する3つの基準点89が関連付けられており、各基準点89ごとに重み量が設定されている。また、衣服オブジェクト37の可動部85の左足側の領域の各制御点61に対しては、股関節45L、左足の膝関節47L、左足の足首関節49Lに対応する3つの基準点89が関連付けられており、各基準点89ごとに重み量が設定されている。なお、1つの制御点61に設定される各基準点89に対する重み量(割合)の合計は1である。ウェイト情報は、衣服オブジェクト37の可動部85が身体オブジェクト35に干渉(例えばめり込み、突き抜け等)しないように、上記関連付ける基準点と重み量が調整されている。
【0089】
第2目標位置計算処理部77は、上記ウェイト情報に基づいて、各制御点61のスキニング位置(第2目標位置)をそれぞれ計算する。具体的には、第2目標位置計算処理部77は下記の計算式(1)にしたがって各制御点61のスキニング位置を計算する。
【0090】
【数1】
【0091】
なお、goal[i]∈Rはi番目の制御点61のスキニング位置、BoneNum[i]∈Nはi番目の制御点61に関連付けられた基準点89の数、BoneWeightArray[i][j]∈Rはi番目の制御点61に関連付けられたj番目の基準点89の重み量、BonePosition[k]∈Rはk番目の基準点89の現在位置、BoneArray[i][j]∈Zはi番目の制御点61に関連付けられたj番目の基準点89のインデックス(配列の添字)である。
【0092】
図18に、計算されたスキニング位置の一例を示す。なお、図18では説明を簡単にするために制御点61の数を減らして簡易的な二次元オブジェクトとして図示している。図18(a)に示す初期状態から、身体オブジェクト35が動作することにより、例えば図18(b)に示すように各基準点89が移動したとする。前述のように、各制御点61にはウェイト情報として関連付けられた基準点89ごとに重み量が設定されており、各基準点89の移動後の現在位置と上記重み量に応じて、各制御点61のスキニング位置がそれぞれ計算される。図18(c)にはこの計算されたスキニング位置に各制御点61が移動した状態が示されている。このようにして、身体オブジェクト35の動きに応じて基準点89が移動すると、各制御点61のスキニング位置もそれに追従するように所定の方向に所定の量だけ移動する。
【0093】
図15に戻り、領域設定処理部79は、複数の制御点61のうち、後述する自由度設定処理部81により第2目標位置からの移動の自由度が関節の曲げ角度に基づいて変更される対象となる制御点61の領域(以下適宜「変更領域」という)を、関節近傍の所定の領域に設定する。
【0094】
図19に、領域設定処理部79により設定される制御点61の変更領域の一例を示す。図19に示すように、1つの関節を共有する2つの隣接する芯線51,51(図19では芯線A、芯線Bと表記)が設定されている。芯線Aの全長をL1とした場合に、芯線Aに属する複数の制御点61のうち、例えば関節側のL1/3の長さに対応する制御点61の領域が、変更領域に設定される。同様に、芯線Bの全長をL2とした場合に、芯線Bに属する複数の制御点61のうち、例えば関節側のL2/3の長さに対応する制御点61の領域が、変更領域に設定される。なお、芯線の全長に対する割合は1/3以外(例えば50%、15%等)としてもよい。
【0095】
図15に戻り、自由度設定処理部81は、複数の制御点61に対し、上記第2目標位置計算処理部77により算出されたスキニング位置からの移動の自由度を、上記角度算出処理部73により算出された曲げ角度に基づいて可変に設定する。自由度設定処理部81は、制限値設定処理部91と、割合設定処理部93と、割合変更処理部95とを有する。
【0096】
制限値設定処理部91は、複数の制御点61に対し、第2目標位置計算処理部77により計算されたスキニング位置からの移動量の制限値を設定する。「移動量の制限値」は、前述した制御点61の布シミュレーションによる目標位置をスキニング位置から所定の範囲内に制限するための当該所定の範囲を規定する値である。制限値設定処理部91は、移動量の制限値を複数の制御点61の各々に対して個別に設定するのではなく、複数の制御点61に対して共通の値として設定する。移動量の制限値は、ゲームプログラムの設計者等により適切な値に調整されており、制限値設定処理部91は当該調整結果に応じて制限値を可変に設定する。
【0097】
割合設定処理部93は、複数の制御点61の各々に対し、上記制限値設定処理部91により設定された移動量の制限値を適用する割合(以下適宜「制限値の適用割合」という)を個別に設定する。制限値の適用割合は0~1の範囲の数値で設定されてもよいし、0~100の範囲の数値(%)で設定されてもよい。例えば、制限値の適用割合が0とされた制御点61の位置は、移動量の制限値の大小に関わらずスキニング位置に制限(固定)される。また、制限値の適用割合が0より大きな値に設定された制御点61は、スキニング位置から移動量の制限値に割合を乗じた値の範囲内で、前述の布シミュレーションによる目標位置に応じて自由に動くことができる。すなわち、制限値の適用割合が小さくなるほど制御点61のスキニング位置からの移動の自由度は小さくなり、制限値の適用割合が大きくなるほど制御点61のスキニング位置からの移動の自由度は大きくなる。
【0098】
制限値の適用割合は複数の制御点61の各々に対して個別に設定されるので、衣服オブジェクト37の部位に応じて変化をつけることが可能である。例えば、衣服オブジェクト37の固定された部分(例えば固定部83)から自由に動くことが可能な部分(例えば可動部85の下端)に向けて、制限値の適用割合が徐々に大きくなるように設定されてもよい。
【0099】
図20に、この場合の制限値の適用割合の分布形状の一例を示す。図20は、縦軸に制限値の適用割合(0~1)をとり、横軸に例えば芯線方向(例えば芯線ライン57,59のX軸方向)の位置をとったグラフである。図20に示す例では、衣服オブジェクト37の固定端(例えば固定部83)から自由端(例えば可動部85の下端)に向けて、制限値の適用割合が徐々に大きくなるように設定されている。
【0100】
このような割合分布の編集は、例えばゲームプログラムの設計者等により行われる。この際、例えば複数種類のカーブの中から特定のカーブを選択することで割合分布を編集可能としてもよいし、例えば図20に示すようにカーブの両端や途中に複数の編集ポイント97を設けておき、当該編集ポイント97の値を変更することでカーブの形状を編集できるようにしてもよい。
【0101】
割合変更処理部95は、上記割合設定処理部93により設定された制限値の適用割合を、前述の角度算出処理部73により算出された曲げ角度θに基づいて変更する。また割合変更処理部95は、上記制限値の適用割合の変更の度合いを、前述の領域設定処理部79により設定された変更領域における関節とは反対側の端部から関節側の端部に向けて、徐々に大きくなるように設定する。
【0102】
図21に、割合変更処理部95により実行される制限値の適用割合の変更内容の具体例を示す。図21に示すように、関節の曲げ角度θが180°から小さくなるほど、制限値の適用割合も小さくなるように変更される。すなわち、関節の曲がり具合が大きくなるほど制御点61のスキニング位置からの移動の自由度が小さくなる。図21に示す例では、例えば曲げ角度θが180°の場合には適用割合は100%となり、曲げ角度θが150°以上180°未満の場合には適用割合は80%となり、曲げ角度θが120°以上150°未満の場合には適用割合は70%となり、曲げ角度θが90°以上120°未満の場合には適用割合は50%となり、曲げ角度θが45°以上90°未満の場合には適用割合は30%となり、曲げ角度θが45°未満の場合には適用割合は0%となる。なお、上記の制限値の適用割合の変更内容は一例であり、上記以外の変更内容としてもよい。
【0103】
図22に、割合変更処理部95により変更された制限値の適用割合の分布形状の一例を示す。なお、図22の分布形状は前述の図20に対応している。図22に示す例では、制限値の適用割合は、芯線A及び芯線Bが共有する関節近傍に設定された変更領域において、例えば関節の曲げ角度θが90°であることにより変更前の値(図22の破線99で示す)の50%に変更されている(図22の破線102)。このとき、制限値の適用割合が急激に変化すると衣服オブジェクト37の動き(硬さ)が急激に変化することとなり、衣服オブジェクト37の動きが不自然となる。このため、割合変更処理部95により、制限値の適用割合の変更の度合いは、変更領域における関節とは反対側の端部から関節側の端部に向けて、徐々に大きくなるように設定される。図22に示す例では、芯線A側の変更領域において、制限値の適用割合は関節とは反対側の端部から関節側の端部に向けて変更前の値の50%に漸減している(図22の実線104)。また、芯線B側の変更領域において、制限値の適用割合は関節とは反対側の端部から関節側の端部に向けて変更前の値の50%に漸減している(図22の実線104)。これにより、衣服オブジェクト37の動き(硬さ)を緩やかに変化させることができ、衣服オブジェクト37の動きをより自然に表現することができる。
【0104】
図15に戻り、制御点更新処理部31は、前述の自由度設定処理部81により設定された自由度に基づいて、複数の制御点61の位置を、前述の第1目標位置計算処理部75により計算された布シミュレーションによる目標位置に近づくようにそれぞれ更新する。具体的には、制御点更新処理部31は、制限値の適用割合が適用されたスキニング位置からの移動量の制限値の範囲内で、複数の制御点61の位置を布シミュレーションによる目標位置に近づくようにそれぞれ更新する。すなわち、制御点61の布シミュレーションによる動きがスキニング位置から制限値の範囲内に制限される。
【0105】
画像生成処理部33は、上記制御点更新処理部31により更新された制御点61の位置に基づいて衣服オブジェクト37の画像を生成する。また画像生成処理部33は、身体オブジェクト35の画像も生成する。
【0106】
なお、以上説明した各処理部における処理等は、これらの処理の分担の例に限定されるものではなく、例えば、更に少ない数の処理部(例えば1つの処理部)で処理されてもよく、また、更に細分化された処理部により処理されてもよい。また、上述した各処理部の機能は、後述するCPU101(後述の図24参照)が実行するゲームプログラムにより実装されるものであるが、例えばその一部がASICやFPGA等の専用集積回路、その他の電気回路等の実際の装置により実装されてもよい。
【0107】
(2-2.情報処理装置が実行する処理手順)
次に、図23を用いて、第2実施形態に係る情報処理装置3によって実行される処理手順の一例について説明する。
【0108】
ステップS105では、情報処理装置3は、芯線設定処理部13により、身体オブジェクト35に複数の関節を結ぶ芯線51を設定する。なお、前述の第1実施形態のようにオフセット距離が設定される場合には、芯線51は関節の位置からオフセット距離だけオフセットした位置に設定されてもよい。
【0109】
ステップS110では、情報処理装置3は、角度算出処理部73により、1つの関節を共有する2つの隣接する芯線51の相対角度に基づいて曲げ角度θを算出する。
【0110】
ステップS115では、情報処理装置3は、領域設定処理部79により、複数の制御点61のうち、上記ステップS110で算出した曲げ角度に基づいて第2目標位置からの移動の自由度を変更する対象となる制御点61の変更領域を設定する。
【0111】
ステップS120では、情報処理装置3は、第1目標位置計算処理部75により布シミュレーションを実行し、衣服オブジェクト37に設定された複数の制御点61の布シミュレーションによる目標位置(第1目標位置)をそれぞれ計算する。
【0112】
ステップS125では、情報処理装置3は、第2目標位置計算処理部77により、複数の制御点61の各々に対して設定されたウェイト情報に基づいて、複数の制御点61のスキニング位置(第2目標位置)をそれぞれ計算する。
【0113】
ステップS130では、情報処理装置3は、制限値設定処理部91により、複数の制御点61に対し、上記ステップS125で計算したスキニング位置からの移動量の制限値を設定する。
【0114】
ステップS135では、情報処理装置3は、割合設定処理部93により、複数の制御点61の各々に対し、上記ステップS130で設定した移動量の制限値を適用する割合を個別に設定する。
【0115】
ステップS140では、情報処理装置3は、割合変更処理部95により、上記ステップS115で設定した変更領域内の各制御点61に対し、上記ステップS135で設定した制限値の適用割合を、前述のステップS110で算出した曲げ角度に基づいて変更する。
【0116】
ステップS145では、情報処理装置3は、制御点更新処理部31により、上記ステップS135で設定され上記ステップS140で変更された制限値の適用割合が適用されたスキニング位置からの移動量の制限値の範囲内で、複数の制御点61の位置を上記ステップS120で計算した布シミュレーションによる目標位置に近づくようにそれぞれ更新する。
【0117】
ステップS150では、情報処理装置3は、画像生成処理部33により、上記ステップS145で更新された制御点61の位置に基づいて衣服オブジェクト37の画像を生成する。また画像生成処理部33は、身体オブジェクト35の画像も生成する。以上により、本フローチャートを終了する。
【0118】
なお、上述した処理手順は一例であって、上記手順の少なくとも一部を削除又は変更してもよいし、上記以外の手順を追加してもよい。また、上記手順の少なくとも一部の順番を変更してもよいし、複数の手順が単一の手順にまとめられてもよい。
【0119】
(2-3.第2実施形態の効果)
以上説明したように、第2実施形態のゲームプログラムは、情報処理装置3を、身体オブジェクト35が備える関節の曲げ角度を算出する角度算出処理部73、身体オブジェクト35を覆う衣服オブジェクト37を変形させるための所定のシミュレーション処理(布シミュレーション処理)により、衣服オブジェクト37に設定された複数の制御点61の第1目標位置(布シミュレーションによる目標位置)をそれぞれ計算する第1目標位置計算処理部75、複数の制御点61の各々に対して設定された、関連付けされた少なくとも1つの基準点89及び当該基準点89ごとの関連度合いを含むウェイト情報に基づいて、複数の制御点61の第2目標位置(スキニング位置)をそれぞれ計算する第2目標位置計算処理部77、複数の制御点61に対し、第2目標位置からの移動の自由度を曲げ角度に基づいて可変に設定する自由度設定処理部81、設定された自由度に基づいて、複数の制御点61の位置を第1目標位置に近づくようにそれぞれ更新する制御点更新処理部31、制御点61の更新された位置に基づいて、衣服オブジェクト37の画像を生成する画像生成処理部33、として機能させる。
【0120】
例えば、キャラクタの肘や膝等の関節付近では身体の動きの変化が大きいため、衣服の中にある身体が衣服を突き抜けて飛び出してしまう現象が発生し易い。特に、キャラクタの肘や膝は関節を曲げたときの形状が突き出した形状となるため、形状的にも上記現象が顕著となり易い。
【0121】
本実施形態では、衣服オブジェクト37の複数の制御点61の各々に対し、関連付けされた少なくとも1つの基準点89及び当該基準点89ごとの関連度合いを含むウェイト情報を設定しておく。そして、当該ウェイト情報に基づいて複数の制御点61の第2目標位置をそれぞれ計算する。基準点89は身体オブジェクト35の動きに応じて移動し、各制御点61の第2目標位置もそれに追従するように所定の方向に所定の量だけ移動する。
【0122】
このとき、ウェイト情報は各制御点61の第2目標位置が身体オブジェクト35に干渉しないように設定される。その上で、本実施形態では身体オブジェクト35が備える関節の曲げ角度を算出し、衣服オブジェクト37の複数の制御点61に対し、第2目標位置からの移動の自由度を角度に基づいて可変に設定する。例えば、自由度を高く設定した場合には制御点61の第2目標位置からの移動量が大きくなり(突き抜け現象が発生し易くなる)、自由度を低く設定した場合には制御点61の第2目標位置からの移動量が小さくなる(突き抜け現象が発生し難くなる)。したがって、例えば関節の曲げ角度が大きい場合には、自由度を低くするように変更することで、肘や膝などの関節付近においてキャラクタの身体が衣服を突き抜ける現象の発生を抑制することができる。
【0123】
また本実施形態において、ゲームプログラムは、情報処理装置3を、複数の制御点61のうち、曲げ角度に基づいて第2目標位置からの移動の自由度が変更される対象となる制御点61の領域を、関節近傍の所定の領域に設定する領域設定処理部79、としてさらに機能させてもよい。
【0124】
この場合、衣服オブジェクト37の全体ではなく、関節の近傍の領域のみ、関節の曲げ角度に応じて自由度を変更することができる。これにより、例えば関節の曲げ角度が大きい場合に衣服の関節部分のみ自由度を低くする(動きが少なくなり硬くなる)ことが可能となり、関節から離れた部分では自由度を高い状態に保持する(動きが大きく柔らかい)ことが可能となるので、衣服オブジェクト37の動きをより自然に表現することができる。
【0125】
また本実施形態において、ゲームプログラムは、情報処理装置3を、身体オブジェクト35が備える複数の関節を結ぶ芯線51を設定する芯線設定処理部13、としてさらに機能させてもよく、その場合には、角度算出処理部73は、1つの関節を共有する2つの隣接する芯線51の相対角度に基づいて曲げ角度θを算出し、自由度設定処理部81は、複数の制御点61に対し、第2目標位置からの移動量の制限値を設定する制限値設定処理部91と、複数の制御点61の各々に対し、移動量の制限値を適用する割合を個別に設定する割合設定処理部93と、割合を曲げ角度に基づいて変更する割合変更処理部95と、を有し、制御点更新処理部31は、割合が適用された第2目標位置からの移動量の制限値の範囲内で、複数の制御点61の位置を第1目標位置に近づくようにそれぞれ更新してもよい。
【0126】
この場合、制限値の適用割合の設定により、複数の制御点61の各々に対して適用する移動量の制限値を異ならせることができる。これにより、例えば関節の曲げ角度が大きい場合に、衣服オブジェクト37の各制御点61に対し、関節に近い部位は動きにくく、関節から遠い部位は自由に動きやすくする等が可能となる。その結果、肘や膝などの関節付近において身体が衣服を突き抜ける現象の発生を抑制できると共に、衣服オブジェクト37の自然な動きを表現することができる。
【0127】
また本実施形態において、割合変更処理部95は、制限値の適用割合の変更の度合いを、所定の領域における関節とは反対側の端部から関節側の端部に向けて、徐々に大きくなるように設定してもよい。
【0128】
移動量の制限値を適用する割合が急激に変化すると、衣服オブジェクト37の動き(硬さ)が急激に変化することとなり、衣服オブジェクト37の動きが不自然となる。本実施形態の場合、設定された所定の領域において、制限値の適用割合の変更の度合いを関節とは反対側から関節側に向けて漸増できるので、衣服オブジェクト37の動き(硬さ)を緩やかに変化させることができ、衣服オブジェクト37の動きをより自然に表現することができる。
【0129】
<3.変形例等>
なお、本発明は、上記の実施形態に限られるものではなく、その趣旨及び技術的思想を逸脱しない範囲内で種々の変形が可能である。
【0130】
以上では、第1オブジェクトがキャラクタの身体である場合について説明したが、第1オブジェクトは身体オブジェクトに限定されるものではない。第1オブジェクトは、「関節」に相当する「相対的に動作する要素を連結する連結部」を備えるオブジェクトであればよく、そのようなオブジェクトに対して以上説明した処理を適用してもよい。
【0131】
また以上では、キャラクタが身にまとう衣服オブジェクトのシミュレーションを例にとって説明したが、第2オブジェクトは衣服に限定されるものではない。例えば、布製の装備品(鉢巻、バンダナ等)や布製又は紙製の所持アイテム(布切れ、巻物、旗等)等、キャラクタに付随する柔軟なオブジェクトや、毛髪等の身体の一部である柔軟なオブジェクトに対して以上説明した処理を適用してもよい。毛髪等のオブジェクトである場合には、「所定のシミュレーション処理」は紐やロープ等のオブジェクトの変形をシミュレート可能ないわゆる紐シミュレーション処理が好適である。
【0132】
また、以上では、画像生成プログラムがゲームプログラムである場合について説明したが、画像生成プログラムは、ゲーム以外の技術分野、例えばCGアニメーション、コンピュータ・シミュレーション、CAD等にも適用可能である。
【0133】
また、以上既に述べた以外にも、上記各実施形態や各変形例による手法を適宜組み合わせて利用しても良い。その他、一々例示はしないが、上記実施形態や各変形例は、その趣旨を逸脱しない範囲内において、種々の変更が加えられて実施されるものである。
【0134】
<4.情報処理装置のハードウェア構成>
次に、図24を用いて、上記で説明したCPU101等が実行するプログラムにより実装された各処理部を実現する情報処理装置3のハードウェア構成の一例について説明する。
【0135】
図24に示すように、情報処理装置3は、例えば、CPU101と、ROM103と、RAM105と、GPU106と、例えばASIC又はFPGA等の特定の用途向けに構築された専用集積回路107と、入力装置113と、出力装置115と、記録装置117と、ドライブ119と、接続ポート121と、通信装置123を有する。これらの構成は、バス109や入出力インターフェース111等を介し相互に信号を伝達可能に接続されている。
【0136】
ゲームプログラムは、例えば、ROM103やRAM105、ハードディスク等の記録装置117等に記録しておくことができる。
【0137】
また、ゲームプログラムは、例えば、フレキシブルディスクなどの磁気ディスク、各種のCD、MOディスク、DVD等の光ディスク、半導体メモリ等のリムーバブルな記録媒体125に、一時的又は永続的(非一時的)に記録しておくこともできる。このような記録媒体125は、いわゆるパッケージソフトウエアとして提供することもできる。この場合、これらの記録媒体125に記録されたゲームプログラムは、ドライブ119により読み出されて、入出力インターフェース111やバス109等を介し上記記録装置117に記録されてもよい。
【0138】
また、ゲームプログラムは、例えば、ダウンロードサイト、他のコンピュータ、他の記録装置等(図示せず)に記録しておくこともできる。この場合、ゲームプログラムは、LANやインターネット等のネットワークNWを介し転送され、通信装置123がこのプログラムを受信する。そして、通信装置123が受信したプログラムは、入出力インターフェース111やバス109等を介し上記記録装置117に記録されてもよい。
【0139】
また、ゲームプログラムは、例えば、適宜の外部接続機器127に記録しておくこともできる。この場合、ゲームプログラムは、適宜の接続ポート121を介し転送され、入出力インターフェース111やバス109等を介し上記記録装置117に記録されてもよい。
【0140】
そして、CPU101が、上記記録装置117に記録されたプログラムに従い各種の処理を実行することにより、前述の芯線設定処理部13、太さ設定処理部15、オフセット設定処理部17、目標位置計算処理部19、第1目標位置拘束処理部21、第2目標位置拘束処理部23、第3目標位置拘束処理部25、第4目標位置拘束処理部27、第5目標位置拘束処理部29、制御点更新処理部31、画像生成処理部33、角度算出処理部73、第1目標位置計算処理部75、第2目標位置計算処理部77、領域設定処理部79、自由度設定処理部81等による処理が実現される。この際、CPU101は、例えば、上記記録装置117からプログラムを、直接読み出して実行してもよく、RAM105に一旦ロードした上で実行してもよい。更にCPU101は、例えば、プログラムを通信装置123やドライブ119、接続ポート121を介し受信する場合、受信したプログラムを記録装置117に記録せずに直接実行してもよい。
【0141】
また、CPU101は、必要に応じて、前述のゲームコントローラ5を含む、例えばマイク、マウス、キーボード等(図示せず)の入力装置113から入力する信号や情報に基づいて各種の処理を行ってもよい。
【0142】
GPU106は、CPU101からの指示に応じて例えばレンダリング処理などの画像表示のための処理を行う。
【0143】
そして、CPU101及びGPU106は、上記の処理を実行した結果を、例えば前述の表示装置7を含む、出力装置115から出力する。さらにCPU101及びGPU106は、必要に応じてこの処理結果を通信装置123や接続ポート121を介し送信してもよく、上記記録装置117や記録媒体125に記録させてもよい。
【符号の説明】
【0144】
1 ゲームシステム
3 情報処理装置
5 ゲームコントローラ
7 表示装置
13 芯線設定処理部
15 太さ設定処理部
17 オフセット設定処理部
19 目標位置計算処理部
21 第1目標位置拘束処理部
23 第2目標位置拘束処理部
25 第3目標位置拘束処理部
27 第4目標位置拘束処理部
29 第5目標位置拘束処理部
31 制御点更新処理部
33 画像生成処理部
35 身体オブジェクト(第1オブジェクト)
37 衣服オブジェクト(第2オブジェクト)
39L,39R 肩関節
41L,41R 肘関節
43L,43R 手首関節
45L,45R 股関節
47L,47R 膝関節
49L,49R 足首関節
51s 始端位置(一方側の端部)
51m 中間位置(中間部)
51e 終端位置(他方側の端部)
51A~51H 芯線
61 制御点
63 法線
65 最近接点
69 太さにより定まる形状
73 角度算出処理部
75 第1目標位置計算処理部
77 第2目標位置計算処理部
79 領域設定処理部
81 自由度設定処理部
89 基準点
91 制限値設定処理部
93 割合設定処理部
95 割合変更処理部
125 記録媒体
d1~d3 距離
Limd1 上限値
Limd2 上限値
Limd3 上限値
OffsetD オフセット距離
θ 曲げ角度
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24