説明

画像生成装置、画像生成方法、ならびに、プログラム

【課題】キャラクターの肘や膝でジンバルロック等による不自然な現象が生じるのを簡易に防止する画像生成装置等を提供する。
【解決手段】基礎ボーン281、282は、高自由度の関節により連結され、皮膚ボーン201、202は、基礎ボーン281、282と同じ位置であり、基礎ボーン281、282の端点の移動先の位置が指定されると、基礎ボーン281、282の位置をインバースキネマティクスにより計算し、基礎ボーン281、282の端点のそれぞれの関節に対する位置ベクトルに直交する回転軸261の方向を表す軸ベクトルを計算し、皮膚ボーン201、202の長手方向軸周りの向きが軸ベクトルに対して所定の角度となるように計算し、皮膚ボーン201、202の位置および向きと、これらに対するスキン制御点271の相対的な位置と、から、スキンの形状を表す画像を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャラクターの肘・膝などの動きを補間する際に、ジンバルロックやフリップ等の好ましくない現象が生じるのを簡易に防止するのに好適な画像生成装置、画像生成方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【0002】
従来から、人間の動作を仮想世界のキャラクターの動作に取り込むモーションキャプチャの技術が提案されている。
【0003】
モーションキャプチャの分野では、たとえば、人間の手足の端点などの代表的な場所に発光体などを取り付けて各種の動作をさせ、その様子を撮影することにより、キャラクターの姿勢を定める制御点の座標の変化を求め、この変化に基づいて、キャラクターの姿勢を定義するボーン(人間や動物の「骨」に相当する。)の位置や向きを定める。
【0004】
ボーンの位置や向きが定まれば、そのボーンに対して相対的な位置に配置された制御点によってスキン(人間や動物の「皮膚」や「服」に相当する。)の形状が定められ、当該スキンにテクスチャ画像を貼り込むことによって、キャラクターが動作する動画像が得られる。
【0005】
このようなモーションキャプチャの分野において、計測した人間の動きのデータやデサイナーが修正したデータからキャラクターの動きのデータを生成する技術は、インバースキネマティクス(inverse kinematics;IK;逆運動学)と呼ばれる。IK技術では、関節の角度や移動量などの具体的な値は気にせずに、キャラクターの動きをモーションキャプチャしたデータから補間したり、デサイナーによる修正を行ったりすることができる。
【0006】
たとえば、キャラクターの腕について考えた場合、「手先をある場所に置く」ということを指定するだけで、IKでは、下腕から上腕に至るまでの関節の角度や移動量などの具体的な値を、拘束条件や重みパラメータ等に基づいて、自動的に計算する。たとえば、上腕と下腕はつながっているので、手(下腕の端)の位置が、肘関節(上腕と下腕の接続点)の位置を決めてしまい、手が動けば下腕はそれに従わなければならず、それにともなって上腕も動かなければならない、等の制約条件を利用する。IKを用いたモデルでは、動きを制御する計算の流れは、階層モデルの一番下のレベルである手(下腕の端)から上腕の方へ進む。
【0007】
このようなIKに関連する技術は、以下の文献に開示されている。
【特許文献1】特開2004−062692
【特許文献2】特開2007−322392
【非特許文献1】Ray Ogamio, CINEMA 4D R8 BRUSH UP, 6.ボーンを極める C4DのボーンシステムとMOCCAの解説, http://www.gashow.jp/cinemail/cinemail_book/brush8.html よりダウンロードできる http://www.gashow.jp/cinemail/docs/C4D_BrushUp.R8.zip 内の C4D_BrushUp.R8/C4D_BrushUp.R8.pdf, p.92-93, Cinemail-4D 8Book Group編集, 2004年
【非特許文献2】拝御礼, IKのためのボーン基礎知識, http://www.gashow.jp/cinemail/tips/ik-bone/index.html, 2002年11月以前に公表
【非特許文献3】Autodesk MOTIONBUILDER Support Center, Q & A,S146,オイラー角回転方式で作業する, http://alias.co.jp/support/motionbuilder/knowledgebase/S0146/index.shtml, Autodesk,2007年
【0008】
ここで、[特許文献1]では、仮想人間のコンピュータグラフィックス映像を生成するため、仮想人間の初期姿勢と終端効果器の位置を決定し、終端効果器の位置および副骨格の構成を用いて逆運動学により関節角度の変化量を計算し、算出された関節角度の変化量を用いて仮想人間の動作データを生成し描画処理を行う技術が開示されており、主骨格の構成とは独立して柔軟に構成することができる副骨格を用いて動作を生成することで、仮想人間の動作を人間の自然な動作に近づけることとしている。
【0009】
一方、[特許文献2]では、関節周りの回転を考慮するためにクォータニオンを用いることとしている。すなわち、ブレを含むオリジナル姿勢情報の時系列を、姿勢を表現するクォータニオンの時系列と捉え、それに対して個々に異なる補正回転を施し、補正回転の量に基づいてオリジナル姿勢情報の時系列からの逸脱度を求め、補正回転が施された姿勢の時系列を通過する曲線に基づいて屈曲度を求め、それら逸脱度および屈曲度で定義した評価値が最小となるブレを取り除くこととしている。
【0010】
一方でボーンの姿勢を定める手法としては、クォータニオンによるデザインよりも、オイラー角によるデザインの方が伝統的で直観的であるため、オイラー角に基づいたデザイン手法によってモーションを設計したい、という要望は強い。オイラー角表現では、3つの数値からなる三つ組で方向を表現するが、2つの軸が平行になると、ある向きに対するオイラー角が複数の種類の三つ組で表現できてしまい、一意でない、という特性がある。
【発明の開示】
【発明が解決しようとする課題】
【0011】
しかしながら、オイラー角に基づいたデザイン手法では、ジンバルロックやフリップ現象が生じやすい、という問題がある。たとえば、肩を固定したまま手先の位置を動かす動作をデサイナーが指定して、上腕と下腕との相対的な角度(肘の開き。これは本来1自由度である。)にオイラー角に基づく補間計算で求めると、上腕や下腕が不自然に捻れたり、肘が波打つように動いたりすることがある。
【0012】
これはオイラー角の非一意性によるものであり、上記の例では、肘の開きが90度のときに生じることが多い。これを防止するため、上腕ボーンと下腕ボーンの間にダミーボーンを配置して、ボーン同士の開きの角度が90度付近とならないようにして、ジンバルロックやフリップを回避しようとする技術がある([非特許文献1][非特許文献2][非特許文献3])。
【0013】
しかしながら、ボーンの親子関係の構成が複雑になるため、デサイナーの負担が増す、という問題がある。そこで、オイラー角に基づいたデザイン手法を利用したとしても、肘や膝などの自由度の低い関節において、ジンバルロックやフリップ現象を生じにくくするための簡易な技術が求められている。
【0014】
本発明は、上記のような課題を解決するもので、キャラクターの肘・膝などの動きを補間する際に、ジンバルロックやフリップ等の好ましくない現象が生じるのを簡易に防止するのに好適な画像生成装置、画像生成方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【0015】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0016】
本願の第1の観点に係る画像生成装置は、記憶部、入力受付部、位置計算部、軸計算部、向き計算部、画像生成部を備え、以下のように構成する。
【0017】
すなわち、記憶部には、3自由度もしくは2自由度の関節により連結される2つの基礎ボーンの位置と、当該基礎ボーンのそれぞれと同じ位置に配置される2つの皮膚ボーンの向きと、当該皮膚ボーンのそれぞれに対するスキン制御点の相対的な位置と、が記憶される。
【0018】
通常、肘や膝の関節をボーンの連結点とする場合、回転は1自由度として、開閉のみができるようにすることが多いが、本発明においては、インバースキネマティクスによる計算においては、この関節の自由度を2または3と高くした基礎ボーンを考え、この基礎ボーンでは、任意の(物理的にはありえない)捻りが生じても良いものとする。一方、皮膚ボーンは、基礎ボーンと端点・関節が同じ位置に配置されるボーンで、端点と関節を結ぶ長手方向の軸周りにどれだけ回転するか、の自由度のみを持つ。スキン制御点は、スキンの形状を定め、その投影先にテクスチャを貼り込むことで、肘や膝の画像を生成するためのものである。
【0019】
一方、入力受付部は、当該基礎ボーンのいずれかの端点の移動先の位置を指定する入力を受け付ける。
【0020】
たとえば肘を関節とする上腕・下腕を考える場合、基礎ボーンの端点は、肩もしくは手先に相当する。デサイナーがキャラクターにモーションをつけたり、キャラクターが何かを掴もうとする動作をとろうとする例では、この入力によって、手先を移動する移動先を指定することになる。なお、肩を移動する移動先を指定することとしても良いし、2つある基礎ボーンの両方の移動先の位置を指定することとしても良い。
【0021】
さらに、位置計算部は、入力を受け付けられた端点の移動先の位置に基づいて、基礎ボーンの位置をインバースキネマティクスにより計算して、その結果で記憶部を更新する。
【0022】
従来の発明においては、肘や膝の関節を1自由度としてインバースキネマティクスによりボーン位置の計算を行っていたため、ジンバルロックが生じやすい角度のときに、計算誤差の影響に敏感に反応しすぎて、不自然な捻れやがたつきなどが生じていた。本発明においては、肘や膝の関節の自由度を2または3とすることにより、このような現象を生じにくくする。
【0023】
さらに、軸計算部は、当該基礎ボーンの端点のそれぞれの当該関節に対する位置ベクトルに直交する軸ベクトルを計算する。
【0024】
軸ベクトルは、基礎ボーンおよび皮膚ボーンが張る平面に垂直なベクトルであり、基礎ボーンと端点および関節の位置を同じくする皮膚ボーンは、当該軸ベクトルの周りで開閉するものと考えるのである。
【0025】
そして、向き計算部は、当該皮膚ボーンのそれぞれについて、当該関節から当該皮膚ボーンの端点に向かう回転軸周りの回転量が、軸ベクトルに対して所定の角度となるように、当該皮膚ボーンの向きを計算して、その結果で記憶部を更新する。
【0026】
軸ベクトルは膝や肘の開閉の回転軸であるから、その回転軸から垂直に伸びる皮膚ボーンの長手方向周りの回転、すなわち、捻りに相当する量を、所定の角度、すなわち、捻りが生じないものとして、皮膚ボーンの向きを決めるのである。これによって、不自然な捻りが生じることが抑制できる。
【0027】
一方、画像生成部は、当該皮膚ボーンの位置および向きと、当該皮膚ボーンのそれぞれに対するスキン制御点の相対的な位置と、から、スキンの形状を表す画像を生成する。
【0028】
不自然な捻りが生じうる基礎ボーンを基準としてスキン形状を定めるのではなく、捻りが生じない皮膚ボーンを基準としてスキン形状を定めることで、関節付近の自然な画像を得ることができる。
【0029】
したがって、本発明によれば、キャラクターの肘・膝などの動きを補間する際に、ジンバルロックやフリップ等の好ましくない現象が生じるのを簡易に防止することができるようになる。
【0030】
また、本発明の画像生成装置において、位置計算部は、当該基礎ボーンの端点のそれぞれの当該関節に対する位置ベクトル同士のなす角が、0度を超え180度未満であるという拘束条件を課して、当該基礎ボーンの位置をインバースキネマティクスにより計算するように構成することができる。
【0031】
本発明は上記発明の好適実施形態に係るものである。関節から2つの端点に向かう位置ベクトルの外積を軸ベクトルとすれば、当該軸ベクトルは、基礎ボーンが張る平面に垂直になるが、両者の角度が0度もしくは180度となる場合には、基礎ボーンが張る平面が不定になる。
【0032】
そこで、インバースキネマティクスにより計算を進める際に、両者の角度が0度より大きく180度より小さい、という拘束条件を付加するのである。なお、計算誤差等を考慮して、この角度の範囲をさらに小さくすることも可能であり、キャラクターの肘や膝の開閉角度に適宜合わせて、可動範囲を定めるのが典型的である。
【0033】
もちろん、インバースキネマティクスに係る具体的な数値データの種類や移動先目標点の位置によっては、このような拘束条件を課さずとも良い場合も存在する。
【0034】
本発明によれば、軸ベクトルが不定となることを確実に防止することができるようになる。
【0035】
また、本発明の画像生成装置において、記憶部は、当該軸ベクトルの方向をさらに記憶し、位置計算部、軸計算部、向き計算部は、当該皮膚ボーンのそれぞれの端点の位置は当該基礎ボーンのそれぞれの端点の位置に一致し、当該軸ベクトルは、当該基礎ボーンの端点のそれぞれの当該関節に対する位置ベクトルに直交し、当該皮膚ボーンのそれぞれについて、当該関節から当該皮膚ボーンの端点に向かう回転軸周りの回転量は当該軸ベクトルに対して所定の角度となる、という拘束条件を課して、入力を受け付けられた端点の移動先の位置に基づいて、基礎ボーンの位置、軸ベクトル、皮膚ボーンの向きを、インバースキネマティクスにより計算するように構成することができる。
【0036】
上記発明においては、基礎ボーンの関節および端点の位置(すなわち、皮膚ボーンの関節および端点の位置)を行う位置計算にはインバースキネマティクスを適用し、その後に、軸ベクトルや皮膚ボーンの長手方向軸周りの回転量を求めることとしていたが、本発明においては、インバースキネマティクスにおける拘束条件を利用して、これらをまとめて計算するものである。
【0037】
本発明によれば、各種のインバースキネマティクス用ソフトウェアを利用して、容易に膝や肘の自然な形状を計算することができるようになる。
【0038】
本発明のその他の観点に係る画像生成方法は、記憶部、入力受付部、位置計算部、軸計算部、向き計算部、画像生成部を有する画像生成装置が実行し、入力受付工程、位置計算工程、軸計算工程、向き計算工程、画像生成工程を備え、以下のように構成する。
【0039】
すなわち、記憶部には、3自由度もしくは2自由度の関節により連結される2つの基礎ボーンの位置と、当該基礎ボーンのそれぞれと同じ位置に配置される2つの皮膚ボーンの向きと、当該皮膚ボーンのそれぞれに対するスキン制御点の相対的な位置と、が記憶される。
【0040】
一方、入力受付工程では、入力受付部が、当該基礎ボーンのいずれかの端点の移動先の位置を指定する入力を受け付ける。
【0041】
さらに、位置計算工程では、位置計算部が、入力を受け付けられた端点の移動先の位置に基づいて、基礎ボーンの位置をインバースキネマティクスにより計算して、その結果で記憶部を更新する。
【0042】
そして、軸計算工程では、軸計算部が、当該基礎ボーンの端点のそれぞれの当該関節に対する位置ベクトルに直交する軸ベクトルを計算する。
【0043】
一方、向き計算工程では、向き計算部が、当該皮膚ボーンのそれぞれについて、当該関節から当該皮膚ボーンの端点に向かう回転軸周りの回転量が、軸ベクトルに対して所定の角度となるように、当該皮膚ボーンの向きを計算して、その結果で記憶部を更新する。
【0044】
さらに、画像生成工程では、画像生成部が、当該皮膚ボーンの位置および向きと、当該皮膚ボーンのそれぞれに対するスキン制御点の相対的な位置と、から、スキンの形状を表す画像を生成する。
【0045】
本発明のその他の観点に係るプログラムは、コンピュータを上記の画像生成装置の各部として機能させるように構成する。
【0046】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【0047】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0048】
本発明によれば、キャラクターの肘・膝などの動きを補間する際に、ジンバルロックやフリップ等の好ましくない現象が生じるのを簡易に防止するのに好適な画像生成装置、画像生成方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【0049】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明する。以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例1】
【0050】
図1は、プログラムを実行することにより、本実施形態の画像生成装置として機能しうる典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【0051】
情報処理装置100は、CPU(Central Processing Unit)101と、ROM 102と、RAM(Random Access Memory)103と、インターフェイス104と、コントローラ105と、外部メモリ106と、画像処理部107と、DVD−ROM(Digital Versatile Disc ROM)ドライブ108と、NIC(Network Interface Card)109と、音声処理部110と、マイク111と、を備えるように構成することができる。各種の入出力装置は、適宜省略することができる。
【0052】
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態の画像生成装置が実現される。
【0053】
また、携帯ゲーム装置においては、携帯可能とするために、DVD−ROMドライブ108を利用するのではなく、ROMカセット用スロットを利用することも可能である。この場合、プログラムが記録されたROMカセットを挿入して、当該プログラムを実行することで、本実施形態の画像生成装置が実現される。
【0054】
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
【0055】
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【0056】
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【0057】
インターフェイス104を介して接続されたコントローラ105は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
【0058】
インターフェイス104を介して着脱自在に接続された外部メモリ106には、ゲーム等のプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
【0059】
DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ108は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
【0060】
画像処理部107は、DVD−ROMから読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部107が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部107に接続されるモニタ(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
【0061】
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【0062】
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【0063】
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【0064】
NIC 109は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LANを構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
【0065】
音声処理部110は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカや、ヘッドホン(図示せず)、イヤフォン(図示せず)から出力させる。
【0066】
音声処理部110では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。
【0067】
さらに、情報処理装置100には、インターフェイス104を介してマイク111を接続することができる。この場合、マイク111からのアナログ信号に対しては、適当なサンプリング周波数でA/D変換を行い、PCM形式のディジタル信号として、音声処理部110でのミキシング等の処理ができるようにする。
【0068】
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ108に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
【0069】
また、ユーザからの文字列の編集入力を受け付けるためのキーボードや、各種の位置の指定および選択入力を受け付けるためのマウスなどを接続する形態も採用することができる。また、本実施形態の情報処理装置100にかえて、汎用のパーソナルコンピュータを利用することもできる。
【0070】
以上で説明した情報処理装置100は、いわゆるコンシューマ向けゲーム装置に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明を実現することが可能である。
【0071】
たとえば、一般的なコンピュータは、上記情報処理装置100と同様に、CPU、RAM、ROM、DVD−ROMドライブ、および、NICを備え、情報処理装置100よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ105ではなく、キーボードやマウスなどを入力装置として利用する。
【0072】
図2は、本実施形態に係る各種ボーンと関節の位置関係を説明する説明図である。以下、本図を参照して説明する。
【0073】
本実施形態で処理の対象となるボーンと関節は、キャラクターの全体形状を定める関節のうち、肘や膝など、折り曲げの自由度が1である関節と、その関節により連結されているボーンである。
【0074】
本図に示すように、2本の皮膚ボーン201、202が関節203で連結されており、皮膚ボーン201、202には、そのそれぞれに固定された座標系211、212が配置されている。
【0075】
皮膚ボーン201は、他のボーン251に自由度が3の関節で連結されており、皮膚ボーン202は、他のボーン252へ自由度が3の関節で連結されている。ボーン同士の連結関係を表す際には、キャラクターの中心側を「親ボーン」、末端側を「子ボーン」と呼ぶことが多い。
【0076】
本図の例では、ボーン251が肩の骨、皮膚ボーン201が上腕の骨、皮膚ボーン202が下腕の骨、ボーン252が手の平の骨にそれぞれ相当し、ボーン251が皮膚ボーン201の親、皮膚ボーン201が皮膚ボーン202の親、皮膚ボーン202がボーン252の親、のような親子関係を有している。
【0077】
親ボーンに対する子ボーンの位置(向き)は、親ボーンに固定された座標系における関節の位置と、当該座標系における子ボーンの他方の端点の位置と、で表現できるが、親ボーンに固定された座標系における関節の位置は、当該座標系において定点であり、子ボーンの長さは一定であることから、子ボーンの端点の位置をそのまま処理するのではなく、当該関節の位置周りの回転によって表現することが多い。このようなデータの表現手法としては、近年利用されるようになったクォータニオンのほか、従来から利用されているオイラー角が利用されている。本発明は、いずれの表現を採用している際にも利用することができる。
【0078】
本実施形態では、皮膚ボーン201に固定された座標系211は、皮膚ボーン201のボーン251側関節が原点であり、皮膚ボーン201の長手方向にZ軸が固定されている。
【0079】
また、皮膚ボーン202に固定された座標系212は、皮膚ボーン201側関節が原点であり、皮膚ボーン202の長手方向にZ軸が固定されている。
【0080】
また、座標系211と座標系212のY軸は常に平行とし、皮膚ボーン201に固定された座標系211のX−Z平面と、皮膚ボーン202に固定された座標系212のX−Z平面と、が、常に重なるように、折り曲げられるものとする。
【0081】
すると、折り曲げの回転軸261は、両者の関節を通り、皮膚ボーン201に固定された座標系211のY軸、皮膚ボーン202に固定された座標系212のY軸に平行となる。
【0082】
このように設定すると、皮膚ボーン201と皮膚ボーン202の間の関節が、自由度1で折り曲げ可能な関節となる。
【0083】
すなわち、折り曲げの回転軸261は、皮膚ボーン201の長手方向(座標系211のZ軸)と、皮膚ボーン202の長手方向(座標系212のZ軸)と、の両者に直交する。逆に言えば、皮膚ボーン201の長手方向(座標系211のZ軸)と皮膚ボーン202の長手方向(座標系212のZ軸)とが平行でない限り、両者の向きから、回転軸261の向きを一意に定めることができる。
【0084】
なお、座標系211、212の位置関係は、本実施形態の表現に対して適宜回転を施したものに、適宜変更が可能である。
【0085】
そして、皮膚ボーン201、202に対しては、スキン形状を定めるためのスキン制御点271が付与されている。スキン制御点271は、皮膚ボーン201に固定された座標系211において定点となるものと、皮膚ボーン202に固定された座標系212において定点となるものの2種類があり、前者は皮膚ボーン201の位置や向きに連動し、後者は皮膚ボーン202の位置や向きに連動して位置が変化する。
【0086】
スキン制御点271から実際の肘や膝の外観を定める場合には、スキン制御点271をポリゴンの頂点であると考える手法や、制御点に適当な重みを与えて曲面を構成するNURBS(Non-Uniform Rational B-Spline)による手法などによって、テクスチャを描画する領域を求めて、画像を生成する。この際には、各種の公知の技術が適用できる。
【0087】
このように、ボーン251、252、皮膚ボーン201、202およびスキン制御点271の関係は、従来から利用されているボーンを用いたキャラクターのモデリングとほぼ同じと考えることができる。本実施形態における特徴は、皮膚ボーン201、202の関節の回転軸261の向き、すなわち、皮膚ボーン201、202に固定された座標軸211、212のZ軸周りの向きを、基礎ボーン281、282によって定める点にある。
【0088】
基礎ボーン281、282は、皮膚ボーン201、202の位置と向きを定めるためのボーンであり、両者の端点および関節は、互いに重なり合う位置に配置されるものと想定する。本図では、理解を容易にするため、基礎ボーン281、282の位置を皮膚ボーン201、202に対して平行にずらして図示している。
【0089】
IKによりボーン形状を変化させる際には、基礎ボーン281、282によって計算を行う。これによって、基礎ボーン281、282の関節や端点の位置が定まれば、これと同じ位置に皮膚ボーン201、202も移動する。したがって、IKを適用する際には、ボーンの親子関係は、ボーン251が基礎ボーン281の親、基礎ボーン281が基礎ボーン282の親、基礎ボーン282がボーン252の親、のようになる。
【0090】
上記のように、皮膚ボーン201、202に固定された座標系211、212のY軸と、皮膚ボーン201、202の関節における折り曲げの回転軸261と、は、互いに平行になる、という制約が課されている。これは、連結の自由度が1だからである。
【0091】
一方、基礎ボーン281と基礎ボーン282とは、自由度3の関節で連結されていて、基礎ボーン281に固定されている座標系291と、基礎ボーン282に固定されている座標系292と、は、自由な向きを向いている。すなわち、皮膚ボーン201、202同士の連結に比べて、自由度を高くしているため、IKの際に、基礎ボーン281、282の動きは、より滑らかになると考えられる。このため、ジンバルロックを原因とする肘や膝の波打ち現象が、より発生しにくくなる。
【0092】
なお、用途によっては、基礎ボーン281、282の間の自由度を2としても良い。皮膚ボーン201、202の間の自由度よりは高いため、IKの際の波打ち現象は生じにくいと考えられるからである。
【0093】
本実施形態におけるキャラクターアニメーションの進め方は、以下のようになる。
(1)まず、キャラクターの骨格形状の変化を計算するIKの際には、基礎ボーン281、282により関節の自由度を高くして計算を進める。
(2)そして、基礎ボーン281、282の端点位置および関節位置と一致するように、皮膚ボーン201、202の位置を定める。
(3)すると、皮膚ボーン201、202の長手方向(両者に固定される座標系211、212のそれぞれのZ軸)が定まるから、回転軸261の向きも定まる。
(4)回転軸261の向きが定まれば、皮膚ボーン201、202に固定される座標系211、212のそれぞれのY軸が定まる。これによって、座標系211、212の向きを一意に定めることができる。
(5)座標系211、212の向きが定まれば、スキン制御点271の位置も定まるので、キャラクターの外観を得ることができる。
【0094】
上記のように、基礎ボーン281、282では関節周りの自由な運動を許しているため、ジンバルロックを原因とする捻れ(基礎ボーン281、282の長手方向周りの回転)が生じる可能性がある。
【0095】
しかし、皮膚ボーン201、202に固定された座標系211、212の向きを定める際には、基礎ボーン281、282の長手方向周りの回転、すなわち、捻れは無視する。座標系211、212の向きは、皮膚ボーン201、202の相対的な位置関係のみによって定められるから、不自然な捻れが生じることはない。
【0096】
このように、本実施形態では、IKの際には積極的に高い自由度で関節周りの運動をシミュレーションし、そのシミュレーションによって定まったボーンの相対的な位置に合わせて、ボーンの長手方向周りの向きを定めることで、自由度が低い関節により連結されたボーンが、ジンバルロック等に起因する不自然な動きを見せることを防止できるのである。
【0097】
また、IKのシミュレーションを行うソフトウェアによっては、上記の(1)〜(4)における基礎ボーン281、282、皮膚ボーン201、202、回転軸261の位置関係をまとめて(場合によっては、上記(5)のスキン制御点271の位置もまとめて)、一体の拘束条件としてとりあつかって、シミュレーション計算を行うことができるものもある。この場合、基礎ボーン281、282や回転軸261は、スキン描画の対象とならないオブジェクト(「ロケータ」「ヌルオブジェクト」と呼ばれることもある。)により、表現することができる。
【0098】
なお、回転軸261の方向を一意に定めるためには、基礎ボーン281、282の長手方向が平行になってはならない。したがって、IKの際には、両者に固定された座標系291、292のZ軸方向のなす角が、0度より大きく180度より小さい、という条件を課すことになる。この条件は、きわめて広い範囲で成立するため、キャラクターの形状を定めるIKの計算上障害となる状況は、事実上生じないと考えられる。
【0099】
図3は、本実施形態に係る画像生成装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【0100】
本実施形態に係る画像生成装置301は、記憶部302、入力受付部303、位置計算部304、軸計算部305、向き計算部306、画像生成部307を備える。
【0101】
記憶部302には、以下の情報が記憶される。
(a)3自由度もしくは2自由度の関節により連結される2つの基礎ボーン281、282の位置。この情報は、両者に固定された座標系291、292が、その親ボーン(ボーン251および基礎ボーン281)に対してどのような位置、向きにあるのか、によって、表現する。
(b)当該基礎ボーン281、282のそれぞれと同じ位置に配置される2つの皮膚ボーン201、202の向き。この情報も、両者に固定された座標系211、212が、その親ボーン(ボーン251および皮膚ボーン202)に対して、どのような位置、向きにあるのか、によって、表現する。
(c)当該皮膚ボーン201、202のそれぞれに対するスキン制御点271の相対的な位置。両者に固定された座標系211、212における座標値によって表現する。
【0102】
上記のように、肘や膝の関節をボーンの連結点とする場合、回転は1自由度として、開閉のみができるようにすることが多いが、本実施形態では、インバースキネマティクスによる計算においては、この関節の自由度を2または3と高くした基礎ボーン281、282を考え、この基礎ボーン281、282では、任意の(物理的にはありえない)捻りが生じても良いものとする。
【0103】
一方、皮膚ボーン201、202は、基礎ボーン281、282と端点・関節が同じ位置に配置されるボーンで、端点と関節を結ぶ長手方向の軸周りにどれだけ回転するか、の自由度のみを持つ。スキン制御点271は、スキンの形状を定め、その投影先にテクスチャを貼り込むことで、肘や膝の画像を生成するためのものである。
【0104】
これらの情報は、所定のIKエンジンによって、後述する手順により、適宜更新される。図4は、本実施形態に係る画像生成装置301にて実行される画像処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【0105】
本処理が開始されると、CPU 101は、記憶部302を構成するRAM 103を初期化する(ステップS401)。この際には、ボーン同士の親子関係や、IKに必要な各種のデータ、ボーン同士が満たさなければならない制約条件などもあわせて初期化される。
【0106】
ついで、入力受付部303は、当該基礎ボーン281、282のいずれかの端点の移動先の位置を指定する入力を受け付ける(ステップS402)。移動先の位置の指定は、コントローラ105やキーボード、マウスなどによって入力されるのが典型的である。
【0107】
たとえば肘を関節とする上腕・下腕を考える場合、基礎ボーン281、282の端点は、肩もしくは手先に相当する。デサイナーがキャラクターにモーションをつけたり、キャラクターが何かを掴もうとする動作をとろうとする例では、この入力によって、手先を移動する移動先を指定することになる。なお、肩を移動する移動先を指定することとしても良いし、2つある基礎ボーン281、282の両方の移動先の位置を指定することとしても良い。
【0108】
すると、位置計算部304は、入力を受け付けられた端点の移動先の位置に基づいて、基礎ボーン281、282の関節および端点の位置をインバースキネマティクスにより計算して、その結果で記憶部302を更新する(ステップS403)。本ステップにおける計算は、CPU 101がRAM 103に格納された情報を元に行う。
【0109】
また、ここで更新される関節および端点の位置は、皮膚ボーン201、202の関節および端点の位置と一致させる必要がある。そこで、ステップS403においては、あわせて、皮膚ボーン201、202の関節および端点の位置も更新するのが典型的である。
【0110】
従来の発明においては、肘や膝の関節を1自由度としてインバースキネマティクスによりボーン位置の計算を行っていたため、ジンバルロックが生じやすい角度のときに、計算誤差の影響に敏感に反応しすぎて、不自然な捻れやがたつきなどが生じていた。本発明においては、肘や膝の関節の自由度を2または3とすることにより、このような現象を生じにくくする。
【0111】
なお、IKは、一種の時間差分方程式を解く過程と考えることができるため、基礎ボーン281、282の位置は、移動先の位置に近付くように、微小に移動させるのが典型的である。また、IKの際には、記憶部302に記憶される各種の制約条件を満たすように、シミュレーションが行われる。
【0112】
さらに、軸計算部305は、当該基礎ボーン281、282の端点のそれぞれの当該関節に対する位置ベクトルに直交する軸ベクトルを計算する(ステップS404)。この計算も、CPU 101がRAM 103に記憶された情報を元に行う。
【0113】
この軸ベクトルは、回転軸261の方向を表すものであり、基礎ボーン281、282および皮膚ボーン201、202が張る平面に垂直なベクトルである。基礎ボーン281、282と端点および関節の位置を同じくする皮膚ボーン201、202は、当該軸ベクトルの周りで開閉するものと考えるのである。
【0114】
最も簡単には、基礎ボーン281、282に固定された座標軸291、292のZ軸の方向を表すベクトルの外積を、軸ベクトルとすれば良い。上記のように、基礎ボーン281、282の長手方向は、平行にならない、という制約条件を課しておけば、軸ベクトルは一意に定まる。
【0115】
そして、向き計算部306は、当該皮膚ボーン201、202のそれぞれについて、当該関節から当該皮膚ボーン201、202の端点に向かう回転軸周りの回転量が、軸ベクトルに対して所定の角度となるように、当該皮膚ボーン201、202の向きを計算して、その結果で記憶部302を更新する(ステップS405)。この計算も、CPU 101がRAM 103に記憶された情報を元に行う。
【0116】
軸ベクトルは膝や肘の開閉の回転軸であるから、その回転軸から垂直に伸びる皮膚ボーン201、202の長手方向周りの回転、すなわち、捻りに相当する量を、所定の角度、すなわち、捻りが生じないものとして、皮膚ボーン201、202の向きを決めるのである。これによって、不自然な捻りが生じることが抑制できる。
【0117】
一方、画像生成部307は、当該皮膚ボーン201、202の位置および向きと、当該皮膚ボーン201、202のそれぞれに対するスキン制御点271の相対的な位置と、から、スキンの形状を表す画像を生成する(ステップS406)。この計算は、CPU 101がRAM 103に記憶された情報を元に、画像処理部107と共働して行う。
【0118】
不自然な捻りが生じうる基礎ボーン281、282を基準としてスキン形状を定めるのではなく、捻りが生じない皮膚ボーン201、202を基準としてスキン形状を定めることで、関節付近の自然な画像を得ることができる。
【0119】
そして、指定された移動先の位置にボーンの端点が移動する等、所定の終了条件が満たされるまで(ステップS407)ステップS403〜ステップS406の処理を繰り返す。繰り返しが終了したら、ステップS406において生成された画像を順次出力して、動画像とし(ステップS408)、キャラクターの動きのシミュレーションを出力して、本処理を終了する。
【0120】
また、ステップS403〜S405の処理は、インバースキネマティクス用ソフトウェアの種類によっては、ロケータ、ヌルオブジェクト等を利用してボーン同士の制約条件を適切に設定することで、まとめて計算を行うことができる。
【0121】
このほか、以上の説明では、デサイナーがキャラクターのモーションを設計する際を想定して説明したが、たとえば、画像が生成されるごとに垂直同期を待ち、垂直同期が生じたら当該画像を転送してモニタに表示し、IKのシミュレーション計算の時間間隔を垂直同期周期として繰り返し計算をすることで、ユーザの指示にしたがってリアルタイムでキャラクターを動作させるゲーム等に応用することもできる。
【0122】
図5、図6は、従来の技術によって生成されたキャラクターの画像を表す説明図であり、図7、図8は、本実施形態の技術によって生成されたキャラクターの画像を表す説明図である。以下、これらの図を参照して説明する。
【0123】
これらの図に示すキャラクターは、背中側に右肘501を振り上げることで、上腕502と下腕503がL字型になった姿勢をとっている。ここで、図5、図6に示す画像では、上腕502に不自然な捻れ504が生じている(本図においては、理解を容易にするため、捻れ504を示すためにその外形を強調する太線を付している。)のに対して、図7、図8に示す画像では、そのような現象は生じていない。
【0124】
本実施形態においては、肘の曲がる角度を定めてから、肘の「捻れ」を計算するからである。
【0125】
このように、本実施形態によれば、各種のインバースキネマティクス用ソフトウェアを利用して、容易に膝や肘の自然な形状を計算することができるようになる。
【産業上の利用可能性】
【0126】
以上説明したように、本発明によれば、キャラクターの肘・膝などの動きを補間する際に、ジンバルロックやフリップ等の好ましくない現象が生じるのを簡易に防止するのに好適な画像生成装置、画像生成方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【図面の簡単な説明】
【0127】
【図1】典型的な情報処理装置の概要構成を示す模式図である。
【図2】本実施形態に係る各種ボーンと関節の位置関係を説明する説明図である。
【図3】本実施形態に係る画像生成装置の概要構成を示す模式図である。
【図4】本実施形態に係る画像生成装置にて実行される画像処理の制御の流れを示すフローチャートである。
【図5】従来の技術によって生成されたキャラクターの画像を表す説明図である。
【図6】従来の技術によって生成されたキャラクターの画像を表す説明図である。
【図7】本実施形態の技術によって生成されたキャラクターの画像を表す説明図である。
【図8】本実施形態の技術によって生成されたキャラクターの画像を表す説明図である。
【符号の説明】
【0128】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェイス
105 コントローラ
106 外部メモリ
107 画像処理部
108 DVD−ROMドライブ
109 NIC
110 音声処理部
111 マイク
201 皮膚ボーン(上腕)
202 皮膚ボーン(下腕)
203 関節
211 皮膚ボーン(上腕)に固定される座標系
212 皮膚ボーン(下腕)に固定される座標系
251 ボーン(肩)
252 ボーン(手の平)
261 肘関節の回転軸
271 スキン制御点
281 基礎ボーン(上腕)
282 基礎ボーン(下腕)
291 基礎ボーン(上腕)に固定される座標系
292 基礎ボーン(下腕)に固定される座標系
301 画像生成装置
302 記憶部
303 入力受付部
304 位置計算部
305 軸計算部
306 向き計算部
307 画像生成部
501 右肘
502 上腕
503 下腕
504 捻れ

【特許請求の範囲】
【請求項1】
3自由度もしくは2自由度の関節により連結される2つの基礎ボーンの位置と、当該基礎ボーンのそれぞれと同じ位置に配置される2つの皮膚ボーンの向きと、当該皮膚ボーンのそれぞれに対するスキン制御点の相対的な位置と、を記憶する記憶部、
当該基礎ボーンのいずれかの端点の移動先の位置を指定する入力を受け付ける入力受付部、
前記入力を受け付けられた端点の移動先の位置に基づいて、前記基礎ボーンの位置をインバースキネマティクスにより計算して、その結果で前記記憶部を更新する位置計算部、
当該基礎ボーンの端点のそれぞれの当該関節に対する位置ベクトルに直交する軸ベクトルを計算する軸計算部、
当該皮膚ボーンのそれぞれについて、当該関節から当該皮膚ボーンの端点に向かう回転軸周りの回転量が、前記軸ベクトルに対して所定の角度となるように、当該皮膚ボーンの向きを計算して、その結果で前記記憶部を更新する向き計算部、
当該皮膚ボーンの位置および向きと、当該皮膚ボーンのそれぞれに対するスキン制御点の相対的な位置と、から、スキンの形状を表す画像を生成する画像生成部
を備えることを特徴とする画像生成装置。
【請求項2】
請求項1に記載の画像生成装置であって、
前記位置計算部は、当該基礎ボーンの端点のそれぞれの当該関節に対する位置ベクトル同士のなす角が、0度を超え180度未満であるという拘束条件を課して、当該基礎ボーンの位置をインバースキネマティクスにより計算する
ことを特徴とする画像生成装置。
【請求項3】
請求項2に記載の画像生成装置であって、
前記記憶部は、当該軸ベクトルの方向をさらに記憶し、
前記位置計算部、前記軸計算部、前記向き計算部は、当該皮膚ボーンのそれぞれの端点の位置は当該基礎ボーンのそれぞれの端点の位置に一致し、当該軸ベクトルは、当該基礎ボーンの端点のそれぞれの当該関節に対する位置ベクトルに直交し、当該皮膚ボーンのそれぞれについて、当該関節から当該皮膚ボーンの端点に向かう回転軸周りの回転量は当該軸ベクトルに対して所定の角度となる、という拘束条件を課して、前記入力を受け付けられた端点の移動先の位置に基づいて、前記基礎ボーンの位置、前記軸ベクトル、前記皮膚ボーンの向きを、インバースキネマティクスにより計算する
ことを特徴とする画像生成装置。
【請求項4】
記憶部、入力受付部、位置計算部、軸計算部、向き計算部、画像生成部を有する画像生成装置が実行する画像生成方法であって、前記記憶部には、3自由度もしくは2自由度の関節により連結される2つの基礎ボーンの位置と、当該基礎ボーンのそれぞれと同じ位置に配置される2つの皮膚ボーンの向きと、当該皮膚ボーンのそれぞれに対するスキン制御点の相対的な位置と、が記憶され、
前記入力受付部が、当該基礎ボーンのいずれかの端点の移動先の位置を指定する入力を受け付ける入力受付工程、
前記位置計算部が、前記入力を受け付けられた端点の移動先の位置に基づいて、前記基礎ボーンの位置をインバースキネマティクスにより計算して、その結果で前記記憶部を更新する位置計算工程、
前記軸計算部が、当該基礎ボーンの端点のそれぞれの当該関節に対する位置ベクトルに直交する軸ベクトルを計算する軸計算工程、
前記向き計算部が、当該皮膚ボーンのそれぞれについて、当該関節から当該皮膚ボーンの端点に向かう回転軸周りの回転量が、前記軸ベクトルに対して所定の角度となるように、当該皮膚ボーンの向きを計算して、その結果で前記記憶部を更新する向き計算工程、
前記画像生成部が、当該皮膚ボーンの位置および向きと、当該皮膚ボーンのそれぞれに対するスキン制御点の相対的な位置と、から、スキンの形状を表す画像を生成する画像生成工程
を備えることを特徴とする画像生成方法。
【請求項5】
コンピュータを、
3自由度もしくは2自由度の関節により連結される2つの基礎ボーンの位置と、当該基礎ボーンのそれぞれと同じ位置に配置される2つの皮膚ボーンの向きと、当該皮膚ボーンのそれぞれに対するスキン制御点の相対的な位置と、を記憶する記憶部、
当該基礎ボーンのいずれかの端点の移動先の位置を指定する入力を受け付ける入力受付部、
前記入力を受け付けられた端点の移動先の位置に基づいて、前記基礎ボーンの位置をインバースキネマティクスにより計算して、その結果で前記記憶部を更新する位置計算部、
当該基礎ボーンの端点のそれぞれの当該関節に対する位置ベクトルに直交する軸ベクトルを計算する軸計算部、
当該皮膚ボーンのそれぞれについて、当該関節から当該皮膚ボーンの端点に向かう回転軸周りの回転量が、前記軸ベクトルに対して所定の角度となるように、当該皮膚ボーンの向きを計算して、その結果で前記記憶部を更新する向き計算部、
当該皮膚ボーンの位置および向きと、当該皮膚ボーンのそれぞれに対するスキン制御点の相対的な位置と、から、スキンの形状を表す画像を生成する画像生成部
として機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2009−187472(P2009−187472A)
【公開日】平成21年8月20日(2009.8.20)
【国際特許分類】
【出願番号】特願2008−29315(P2008−29315)
【出願日】平成20年2月8日(2008.2.8)
【出願人】(506113602)株式会社コナミデジタルエンタテインメント (1,441)
【Fターム(参考)】