JP3976200B2 - データ処理方法、データ処理装置 - Google Patents

データ処理方法、データ処理装置 Download PDF

Info

Publication number
JP3976200B2
JP3976200B2 JP2003407650A JP2003407650A JP3976200B2 JP 3976200 B2 JP3976200 B2 JP 3976200B2 JP 2003407650 A JP2003407650 A JP 2003407650A JP 2003407650 A JP2003407650 A JP 2003407650A JP 3976200 B2 JP3976200 B2 JP 3976200B2
Authority
JP
Japan
Prior art keywords
frame
frames
data
key
length
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2003407650A
Other languages
English (en)
Other versions
JP2005165962A (ja
Inventor
祐輔 西田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Konami Digital Entertainment Co Ltd
Original Assignee
Konami Digital Entertainment Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Konami Digital Entertainment Co Ltd filed Critical Konami Digital Entertainment Co Ltd
Priority to JP2003407650A priority Critical patent/JP3976200B2/ja
Publication of JP2005165962A publication Critical patent/JP2005165962A/ja
Application granted granted Critical
Publication of JP3976200B2 publication Critical patent/JP3976200B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Description

本発明は、キーフレームの姿勢データを特定する為の技術に関するものである。
3次元仮想空間中のオブジェクトがフレーム毎にその姿勢を変化させる場合がある。例えばあるオブジェクトの姿勢が60フレームである規則に従って変化する場合、60フレームの各フレームにおけるこのオブジェクトの姿勢のデータ(姿勢データ)は予め作成されていることが多い。
しかし、オブジェクトの姿勢が60フレームである規則に従って変化する場合、従来では上述のように、60フレームの各フレームにおけるこのオブジェクトの姿勢のデータを予め作成し、メモリに保持しておくので、例えばこの全体フレーム数が60フレームよりも多い場合や、姿勢データを与えるオブジェクトの数が多くなった場合には、管理すべき姿勢データのデータ量は増大し、当然、これを管理するためのメモリの使用量は増大する。従って、このような姿勢データの容量はより少ないことが好ましい。
本発明はこのような点を考慮して成されたものであり、オブジェクトの姿勢データをより少ないデータ量でもって管理することを目的とする。
本発明の目的を達成するために、例えば本発明のデータ処理方法は以下の構成を備える。
即ち、連続した各フレームにおけるオブジェクトの姿勢データを所定フレーム数分メモリ上に記憶している場合に、キーフレームを特定するデータ処理方法であって、
前記メモリ上に存在する所定フレーム数分の前記オブジェクトの姿勢データにおいて、開始フレームと、終了フレームの夫々を、キーフレームとして設定する設定工程と、
前記メモリ上に存在する所定フレーム数分の前記オブジェクトの姿勢データの集合により表現される曲線が存在する座標系において、隣接する夫々のキーフレームの姿勢データが示す位置間を結ぶ線分を求める第1の計算工程と、
前記隣接する夫々のキーフレーム間の各フレームの姿勢データが示す位置から前記線分への垂線の長さを求める第2の計算工程と、
前記第2の計算工程で計算した各フレームにおける垂線の長さを、前記隣接する夫々のキーフレーム間の一端のフレームから他端のフレームまで順に参照した場合の垂線の長さの変化率が、正から負に転じたフレーム近傍のフレームをキーフレームとして特定する特定工程とを備え、
前記第1の計算工程、前記第2の計算工程、及び前記特定工程による処理を隣接するキーフレーム間毎に繰り返し行うことにより、キーフレームとなるフレームを特定することを特徴とする。
本発明の目的を達成するために、例えば本発明のデータ処理装置は以下の構成を備える。
即ち、連続した各フレームにおけるオブジェクトの姿勢データを所定フレーム数分メモリ上に記憶している場合に、キーフレームを特定するデータ処理装置であって、
前記メモリ上に存在する所定フレーム数分の前記オブジェクトの姿勢データにおいて、開始フレームと、終了フレームの夫々を、キーフレームとして設定する設定手段と、
前記メモリ上に存在する所定フレーム数分の前記オブジェクトの姿勢データの集合により表現される曲線が存在する座標系において、隣接する夫々のキーフレームの姿勢データが示す位置間を結ぶ線分を求める第1の計算手段と、
前記隣接する夫々のキーフレーム間の各フレームの姿勢データが示す位置から前記線分への垂線の長さを求める第2の計算手段と、
前記第2の計算手段が計算した各フレームにおける垂線の長さを、前記隣接する夫々のキーフレーム間の一端のフレームから他端のフレームまで順に参照した場合の垂線の長さの変化率が、正から負に転じたフレーム近傍のフレームをキーフレームとして特定する特定手段とを備え、
前記第1の計算手段、前記第2の計算手段、及び前記特定手段による処理を隣接するキーフレーム間毎に繰り返し行うことにより、キーフレームとなるフレームを特定することを特徴とする。
本発明の構成によって、オブジェクトの姿勢データをより少ないデータ量でもって管理することができる。
以下添付図面を参照して、本発明の好適な実施形態について詳細に説明する。
[第1の実施形態]
本実施形態では、3次元仮想空間内に設置するオブジェクトの各フレーム(連続フレーム)の姿勢データを所定フレーム数分予め作成してメモリに保持している場合に、全てのフレームの姿勢データを保存せずに、各フレームのうちのキーフレームを特定し、特定したキーフレームの姿勢データのみを保存し、その他のフレームの姿勢データについては破棄する処理についてより詳細に説明する。
図1は本実施形態に係る「キーフレームを特定する処理」を実行するデータ処理装置として機能するコンピュータの基本構成を示すブロック図である。
101はCPUで、RAM102やROM103に記憶されているプログラムやデータを用いて本装置全体の制御を行うと共に、本実施形態に係る上記「キーフレームを特定する処理」を実行する。
102はRAMで、外部記憶装置107や記憶媒体ドライブ装置108からロードされたプログラムやデータを一時的に記憶するためのエリアを備えると共に、CPU101が各種の処理を実行するために用いるワークエリアを備える。
103はROMで、ブートプログラムや本装置の設定に係るデータなどが格納されている。
104,105は夫々キーボード、マウスで、CPU101に各種の指示を入力するために使用されるものである。なお、CPU101に各種の指示を入力することができるデバイスとしてはこれ以外にも、例えばジョイスティックやゲームパッドなどの他のデバイスを用いることもできる。
106は表示部で、CRTや液晶画面などにより構成されており、CPU101による処理結果を画像や文字などの情報により表示することができる。
107は外部記憶装置で、ハードディスクドライブ装置などの大容量情報記憶装置として機能するものであり、ここにOS(オペレーティングシステム)や、CPU101に後述する本実施形態に係る上記「キーフレームを特定する処理」を実行させるためのプログラムやデータ、姿勢を制御する対象のオブジェクトのデータ(オブジェクトがポリゴンにより表現されるものである場合には、オブジェクトを構成する各ポリゴンの各頂点座標位置、各ポリゴンの法線ベクトルを示すデータ、そしてこのオブジェクトにテクスチャをマッピングする場合には、このテクスチャのデータ等)等が保存されており、これらはCPU101による制御により、必要に応じてRAM102に読み出される。
108は記憶媒体ドライブ装置で、CD−ROMやDVD−ROMなどの記憶媒体に記録されているプログラムやデータを読み出し、RAM102や外部記憶装置107に出力するものである。なおCPU101に後述する本実施形態に係る「キーフレームを特定する処理」を実行させるためのプログラムやデータ、上記オブジェクトのデータをこの記憶媒体に記録させておいても良く、その場合には、これらプログラムやデータは、CPU101による制御の下、記憶媒体ドライブ装置108によって記憶媒体から読み出され、RAM102に出力される。
また、記憶媒体がCD−RやDVD−RAMなどの書き込み可能なものである場合には、記憶媒体ドライブ装置108はCPU101の制御により、この記憶媒体にプログラムやデータを書き込む処理を行う。
109は上記各部を繋ぐバスである。
次に、以上の構成を備えるコンピュータが行う、本実施形態に係る「キーフレームを特定する処理」について説明する。ここで「キーフレーム」についてであるが、本実施形態では、オブジェクトの所定フレーム数の各フレームのうち、主要となるフレーム、即ちキーフレームの姿勢データのみを保存しておき、この所定フレーム数分のモーションを再生する場合には、周知の球形補間を用いてキーフレーム間を補間して再生する。従って、補間することで得られるキーフレーム間のフレームにおける姿勢データと、このフレームの基の姿勢データ(上記所定フレーム数分の姿勢データのうち、このフレームの姿勢データ)との誤差が小さくなるように、キーフレームは選択されるべきである。
以下説明する本実施形態に係る「キーフレームを特定する処理」は、この誤差を極力小さく押さえるために行われるものである。
図2は、3次元仮想空間中に設けられた人の3次元モデルを構成する各パーツを示す図である。
一般にゲームなどで3次元仮想空間中に人の3次元モデルを設置する場合、この人の3次元モデルにおける手や足、顔などの部分は稼働する、即ちその姿勢は変化することが多い。従ってこのように姿勢を変化させる部分を含みうる3次元モデルは、その部分毎にその姿勢を管理することになる。
例えば同図に示すように、人の3次元モデルの場合、顔のモデル201、左腕のモデル205,206、右腕のモデル203,204、胴体のモデル202、左足のモデル210,211,212、右足のモデル207,208,209の各部分モデルにより人の3次元モデルが構成されていることが多く、この人の3次元モデルに例えば60フレームで「走る」モーションを与える場合、このモーションで稼働する手や足といった上記各部分の上記60フレームにおける各フレームでの姿勢のデータは管理されることになる。
また、人の3次元モデルのように、複数の部分モデルにより構成されたものではなく、1つの3次元モデルでもって表現されるものもある。例えばボールの3次元モデル等がこれに該当する。
本実施形態では、このように、複数の部分モデルのうちの1つ、単体での3次元モデルに関わらず、ある1つの3次元モデル、即ちオブジェクトに所定フレーム数分のモーションが与えられた場合について説明する。以下、この1つの3次元モデル(オブジェクト)を「姿勢制御対象3次元モデル」と呼称する。従って、以下の説明は、人の3次元モデルを構成する各部分モデル、単体での3次元モデルに関わらず適用可能である。
また、この姿勢制御対象3次元モデルにはFフレームで一連の動きが完了するモーションデータが与えられているとする。ここで、このモーションデータとは、このFフレームの各フレームにおけるこの姿勢制御対象3次元モデルの姿勢を示すデータである。
なお、Fフレームの各フレームにおける姿勢制御対象3次元モデルの姿勢を表すデータ(即ち、モーションデータ)は以下説明する処理の前段で、予めRAM102にロードされているものとする。
また、姿勢制御対象3次元モデルの姿勢の表現方法として、本実施形態では、クオータニオンを用いるものとする。ここでクオータニオンについては周知であるので簡単に説明すると、クオータニオンとは3次元仮想空間上において任意の軸周りの回転を記述するためのもので、例えば任意の方向ベクトルA=(X、Y、Z)周りに角度θだけ回転することを表現するクオータニオンQは、
Q=(x、y、z、w)
=(sX,sY,sZ,c)
s=sin(θ/2)
c=cos(θ/2)
として表現される。
クオータニオンの典型的な使用法は、姿勢データを行列で表現する場合に、この行列をクオータニオンとして保持することである。そしてこの行列の演算を行う場合に、この行列の演算をクオータニオンの計算に置き換え、クオータニオンの計算を行った後、計算後のクオータニオンを行列の形式に変換するという処理を行う。
従って本実施形態では、元々行列の形式で格納されていた姿勢データをクオータニオンの形式で計算する場合に、キーフレームの姿勢データを特定する処理に係るものである。
このように、クオータニオンを用いれば、所謂ジンバルロックで苦しむことがない。3つの角度(リール、ピッチ、ヨー)でもって姿勢を表現する方法では常に、ある特定の向きにおいて、単純なローカルの回転を3つの値の単純な変更で表すことができなくなってしまう。この種の回転は、ローカルのヨーを左右に動かそうとする際に90度まで「ピッチが上がってしまっている」場合にしばしば見られるものである。
なお、このようなクオータニオンを用いた姿勢制御対象3次元モデルの姿勢の計算については周知の技術であるので、ここでの説明は省略する。
このように、本実施形態ではx、y、z、wの4変数でもって定義されるクオータニオンによって各フレームの姿勢制御対象3次元モデルの姿勢を示す姿勢データを表現するものとする。
図3は、姿勢制御対象3次元モデルの1フレーム目からFフレーム目までの姿勢データをプロットすることで得られるグラフを示す図である。
同図において301は、姿勢制御対象3次元モデルの各フレームの姿勢データをプロットすることで得られる曲線である。なお、同図のグラフが示す座標系は、姿勢制御対象3次元モデルの各フレームの姿勢データの集合を曲線でもって表現することができる座標系である。
以下説明する処理では、この曲線上の各フレームの姿勢データの中から、キーフレームを特定し、特定したキーフレームの姿勢データのみを保存する処理を行う。またこの処理は、CPU101によって実行されるものである。
先ず、図3に示す曲線301の両端の姿勢データ、即ち、開始フレーム(1フレーム目)と、終了フレーム(Fフレーム目)とをキーフレームとして設定し、夫々のキーフレームにおける姿勢データをRAM102の所定のバッファ(キーフレーム姿勢データバッファ)に記憶させる。
図4は、この2つのキーフレームを説明する図である。図3と同じ部分については同じ番号を付けており、その説明は省略する。同図において401は開始フレームの姿勢データが示す位置、402は終了フレームの姿勢データが示す位置を示すものである。
次に、この両端の位置間(キーフレーム間)を結ぶ線分を求める。
図5は、この線分を説明する図である。図3,4と同じ部分については同じ番号を付けており、その説明を省略する。同図において501は開始フレームの姿勢データが示す位置401と、終了フレームの姿勢データが示す位置402とを結ぶ線分である。
そして次に、曲線301を構成する各フレームの姿勢データが示す位置からこの線分501への垂線の長さを求める処理を行う。
図6は、この垂線の長さを求める処理を説明する図である。同図において、図3,4,5と同じ部分については同じ番号を付けており、その説明は省略する。
同図において601はf(1≦f≦F)フレーム目の姿勢データが示す位置(当然、曲線301上の位置)で、この位置601から線分501への垂線の長さlを求める処理を各フレームについて行う。即ち、1フレーム目の姿勢データが示す位置から線分501への垂線の長さlを求め、次に、2フレーム目の姿勢データが示す位置から線分501への垂線の長さlを求め、、、fフレーム目の姿勢データが示す位置から線分501への垂線の長さlを求め、、、Fフレーム目の姿勢データが示す位置から線分501への垂線の長さlを求める、というようにして各フレームの姿勢データが示す位置から線分501への垂線の長さを求める処理を行う。
そして、1フレーム目から、もしくはFフレームからの何れからでも良いが、一方から順に垂線の長さを参照すると、初めのうちは長さの変化率は正となる。例えば1フレーム目から順に垂線の長さを参照すると、l<l<l<l、、、となっている。即ち、垂線の長さの変化率は正の値となっていることが分かる。ここで変化率とは、一方側から垂線の長さを順に参照した場合に、現在参照している垂線の長さに対して、次に参照する垂線の長さがどれだけ長くなっているか(短くなっているか)を示すものであり、現在参照している垂線の長さに対して、次に参照する垂線の長さが長い場合には、変化率は正となり、逆に小さくなっている場合には負となる。
このように、初めのうちは変化率は正であるものの、あるフレーム(例えばfフレーム目)からl>l(f+1)>l(f+2)>l(f+3)>、、、lとなる。即ち、垂線の長さの変化率は負となる。このように、fフレーム目から変化率が正から負に転換するということは、fフレーム目(もしくは(f−1)フレーム目)における曲線301の接線が、線分501とほぼ並行であるということになる。そして、fフレーム目、もしくは(f−1)フレーム目をキーフレームとして特定し、fフレーム目、もしくは(f−1)フレーム目における姿勢データをキーフレームの姿勢データとして上記キーフレーム姿勢データバッファに記録する処理を行う。
なお、垂線の長さを参照する場合に、Fフレーム目から参照して、fフレーム目で変化率が正から負に転じた場合、キーフレームはfフレーム目、もしくは(f+1)フレーム目となる。即ち、何れの側から参照しても、変化率が正から負に転じたフレームの前後1フレームの範囲内の何れかがキーフレームとして特定されることになる。
図7は、図6に示した曲線301上において、上記処理により特定したキーフレーム(同図ではf1フレーム目、f2フレーム目がキーフレームとして特定されている)の姿勢データが示す位置を示す図である。同図において、図3,4,5と同じ部分については同じ番号を付けており、その説明を省略する。701,702は夫々、f1フレーム目における姿勢データが示す位置、f2フレーム目における姿勢データが示す位置を示し、曲線301上で位置701,702における接線の傾きは、線分501にほぼ同じである。
次に、以上説明した処理をキーフレーム間毎に繰り返し適用する。例えば図7に示すような場合、キーフレームは、401,402,701,702で示す4箇所となる。従って、位置401と位置701との間、位置701と位置702の間、位置702と位置402との間について以上説明した処理を適用する。
しかし、夫々のキーフレーム間で上述のように垂線を求め、垂線の長さの最大値が所定値以下のキーフレーム間については新たにキーフレームを求める処理は行わない。例えば位置401のフレームから位置701のフレームまでの各フレームの姿勢データが示す位置から、位置401と位置701とを結ぶ線分への垂線の長さを求め、求めた垂線の長さの最大値が所定値以下であれば、位置401と位置701との間には新たにキーフレームを求める処理は行わない。これは、垂線の長さの最大値が所定値以下のキーフレーム間を結ぶ線分は、このキーフレーム間の曲線に十分近似できていることに起因する。
以下の説明では、位置401と位置701との間、位置701と位置702の間、位置702と位置402との間の何れのキーフレーム間についても、垂線の長さの最大値が所定値以上である場合について説明する。
図8は、位置401と位置701との間、位置701と位置702の間、位置702と位置402との間に対する、以上説明した処理の適用方法について説明する図である。同図において図3,4,7と同じ部分については同じ番号を付けており、その説明を省略する。
同図に示すように、まず、位置401と位置701とを結ぶ線分801,位置701と位置702とを結ぶ線分802,位置702と位置402とを結ぶ線分803とを求める。
そして位置401と位置701との間について、開始フレーム(位置401)からf1フレーム目(位置701)までの各フレームの姿勢データが示す位置から線分801への垂線の長さを求め、開始フレームから、もしくはf1フレーム目からの何れからでも良いが、一方側から順に垂線の長さを参照し、変化率が正から負に転じたフレーム(もしくは参照を開始した側に応じて前後1フレームの何れか)をキーフレームとして特定し、特定したキーフレームの姿勢データをキーフレーム姿勢データバッファに記録する処理を行う。
しかし上述のように、参照した垂線の長さの最大値が所定値以上であれば、位置401と位置701との間については、キーフレームを求める処理は行わないので、キーフレームを特定し、特定したキーフレームの姿勢データをキーフレーム姿勢データバッファに記録する処理は行わない。
位置701と位置702との間についても同様に、f1フレーム目(位置701)からf2フレーム目(位置702)までの各フレームの姿勢データが示す位置から線分802への垂線の長さを求め、f1フレーム目から、もしくはf2フレーム目からの何れからでも良いが、一方側から順に垂線の長さを参照し、変化率が正から負に転じたフレーム(もしくは参照を開始した側に応じて前後1フレームの何れか)をキーフレームとして特定し、特定したキーフレームの姿勢データをキーフレーム姿勢データバッファに記録する処理を行う。
しかし上述のように、参照した垂線の長さの最大値が所定値以上であれば、位置701と位置702との間については、キーフレームを求める処理は行わないので、キーフレームを特定し、特定したキーフレームの姿勢データをキーフレーム姿勢データバッファに記録する処理は行わない。
位置702と位置402との間についても同様に、f2フレーム目(位置702)からFフレーム目(位置402)までの各フレームの姿勢データが示す位置から線分803への垂線の長さを求め、f2フレーム目から、もしくはFフレーム目からの何れからでも良いが、一方側から順に垂線の長さを参照し、変化率が正から負に転じたフレーム(もしくは参照を開始した側に応じて前後1フレームの何れか)をキーフレームとして特定し、特定したキーフレームの姿勢データをキーフレーム姿勢データバッファに記録する処理を行う。
しかし上述のように、参照した垂線の長さの最大値が所定値以上であれば、位置702と位置402との間については、キーフレームを求める処理は行わないので、キーフレームを特定し、特定したキーフレームの姿勢データをキーフレーム姿勢データバッファに記録する処理は行わない。
図9は、開始フレーム(位置401)からf1フレーム目(位置701)までの各フレームから、キーフレームを特定するための処理を説明する図である。同図において、図3,4,7,8と同じ部分については同じ番号を付けており、その説明を省略する。
同図において901はg(1≦g≦f1)フレーム目の姿勢データが示す位置(当然、曲線301上の位置)で、この位置901から線分801への垂線の長さlを求める処理を各フレームについて行う。即ち、1フレーム目の姿勢データが示す位置から線分801への垂線の長さlを求め、次に、2フレーム目の姿勢データが示す位置から線分801への垂線の長さlを求め、、、gフレーム目の姿勢データが示す位置から線分801への垂線の長さlを求め、、、f1フレーム目の姿勢データが示す位置から線分801への垂線の長さlf1を求める、というようにして、開始フレーム(位置401)からf1フレーム目(位置701)までの各フレームの姿勢データが示す位置から線分801への垂線の長さを求める処理を行う。
そして、1フレーム目から、もしくはf1フレーム目からの何れからでも良いが、一方側から順に垂線の長さを参照し、変化率が正から負に転じたフレーム(もしくは参照を開始した側に応じて前後1フレームの何れか)をキーフレームとして特定し、特定したキーフレームの姿勢データをキーフレーム姿勢データバッファに記録する処理を行う。
図13は、f1フレーム目(位置701)からf2フレーム目(位置702)までの各フレームから、キーフレームを特定するための処理を説明する図である。同図において、図3,7,8と同じ部分については同じ番号を付けており、その説明を省略する。
同図において1301はh(f1≦h≦f2)フレーム目の姿勢データが示す位置(当然、曲線301上の位置)で、この位置1301から線分802への垂線の長さlを求める処理を各フレームについて行う。即ち、f1フレーム目の姿勢データが示す位置から線分802への垂線の長さlf1を求め、次に、(f1+1)フレーム目の姿勢データが示す位置から線分802への垂線の長さl(f1+1)を求め、、、hフレーム目の姿勢データが示す位置から線分802への垂線の長さlを求め、、、f2フレーム目の姿勢データが示す位置から線分802への垂線の長さlf2を求める、というようにして、f1フレーム目(位置701)からf2フレーム目(位置702)までの各フレームの姿勢データが示す位置から線分802への垂線の長さを求める処理を行う。
そして、f1フレーム目から、もしくはf2フレーム目からの何れからでも良いが、一方側から順に垂線の長さを参照し、変化率が正から負に転じたフレーム(もしくは参照を開始した側に応じて前後1フレームの何れか)をキーフレームとして特定し、特定したキーフレームの姿勢データをキーフレーム姿勢データバッファに記録する処理を行う。
図10は、f2フレーム目(位置702)から終了フレーム(位置402)までの各フレームから、キーフレームを特定するための処理を説明する図である。同図において、図3,4,7,8と同じ部分については同じ番号を付けており、その説明を省略する。
同図において1001はi(f2≦i≦F)フレーム目の姿勢データが示す位置(当然、曲線301上の位置)で、この位置1001から線分803への垂線の長さlを求める処理を各フレームについて行う。即ち、f2フレーム目の姿勢データが示す位置から線分803への垂線の長さlf2を求め、次に、(f2+1)フレーム目の姿勢データが示す位置から線分803への垂線の長さl(f2+1)を求め、、、iフレーム目の姿勢データが示す位置から線分803への垂線の長さlを求め、、、Fフレーム目の姿勢データが示す位置から線分803への垂線の長さlを求める、というようにして、f2フレーム目(位置702)からFフレーム目(位置402)までの各フレームの姿勢データが示す位置から線分803への垂線の長さを求める処理を行う。
そして、f2フレーム目から、もしくはFフレーム目からの何れからでも良いが、一方側から順に垂線の長さを参照し、変化率が正から負に転じたフレーム(もしくは参照を開始した側に応じて前後1フレームの何れか)をキーフレームとして特定し、特定したキーフレームの姿勢データをキーフレーム姿勢データバッファに記録する処理を行う。
図11は、図8に示した曲線301上において、上記処理により特定したキーフレーム(f3,f4,f5,f6の4つのフレーム)の姿勢データが示す位置を示す図である。同図において、図3,4,7,8と同じ部分については同じ番号を付けており、その説明を省略する。1101,1102,1103,1104は夫々、f3フレーム目における姿勢データが示す位置、f4フレーム目における姿勢データが示す位置、f5フレーム目における姿勢データが示す位置、f6フレーム目における姿勢データが示す位置を示し、曲線301上で位置1101における接線の傾きは線分801にほぼ同じであり、位置1102,1103における接線の傾きは線分802にほぼ同じであり、位置1104における接線の傾きは線分803にほぼ同じである。
このようにして、前回求めた各キーフレーム間について同じ処理を繰り返し行い、従前のキーフレーム間に新たに1つ以上のキーフレームを特定する。なお、上述の通り、垂線の長さの最大値が所定値以下となるキーフレーム間が処理対象となる。
そして、この繰り返し処理は、これからキーフレームを特定しようとする全てのキーフレーム間で、上述の垂線の長さの最大値が所定値以下であれば、処理対象とするキーフレーム間が無くなるので、終了する。
なお、「更にキーフレームの姿勢データを特定する処理を行う」か否かの判定処理の判断基準はこれに限定されるものではなく、様々なものが適用可能であるが例えば他にも以下のようなものが考えられる。
即ち、キーフレームの姿勢データを特定するために求めた垂線の長さを、特定したキーフレームの姿勢データ全てについて加算し、その加算結果が所定値以下でない場合に、「更にキーフレームの姿勢データを特定する処理を行う」と判断する。
例えば図7における状態で、「更にキーフレームの姿勢データを特定する処理を行う」と判断するか否かは、位置701から線分501への垂線の長さと位置702から線分501への垂線の長さの合計値が所定値以下であるか否かに応じて決まる。即ち、合計値が所定値以下でない場合、更に、位置401と位置701との間、位置701と位置702との間、位置702と位置402との間の夫々について、上記キーフレーム特定処理を行う。そして、以降同様の処理を繰り返す。
なお、キーフレームの姿勢データを求めるために計算した垂線の長さは、この判断処理のために一時的にRAM102に記憶させておく必要がある。
また、その他にも例えば、上記合計値を求める毎に前回の合計値との差分、所謂合計値の変化率がある程度の値以下となった場合に、「更にキーフレームの姿勢データを特定する処理」は行わないと判断するようにしても良い。
そして、以上の処理によってキーフレームを特定し、特定したキーフレームにおける姿勢データをキーフレーム姿勢データバッファに順次記録していき、そして「更にキーフレームの姿勢データを特定する処理を行う」という判断がなされなくなった場合には、キーフレーム姿勢データバッファに記録しているキーフレームの姿勢データ群を、「上記姿勢制御対象3次元モデルに対するモーションデータ」として外部記憶装置107に保存する、または、記憶媒体ドライブ108によって記憶媒体に記録する処理を行う。
図12は、以上説明した本実施形態に係る「キーフレームを特定する処理」のフローチャートである。なお、同図のフローチャートに従ったプログラムは外部記憶装置107からRAM102に、もしくは記憶媒体から記憶媒体ドライブ装置108によってRAM102にロードされるものであり、CPU101がこれを実行することにより、本実施形態に係るデータ処理装置は同図のフローチャートに従った処理を実行することになる。尚、同図のフローチャートにおいてあるステップによっては上記説明の通りであるのでそのようなステップについては説明は簡単にする。
先ず、姿勢制御対象3次元モデルの各フレームの姿勢データをプロットすることで得られる曲線の両端に位置する姿勢データ、即ち、開始フレームの姿勢データと、終了フレームの姿勢データとをキーフレームの姿勢データとして特定し、特定したこれらのデータをキーフレーム姿勢データバッファに記録する(ステップS1201)。
そして、キーフレーム間を結ぶ線分を求める(ステップS1202)。本ステップにおける処理が最初に行われる場合、即ち、ステップS1201における処理からステップS1202に進んだ場合には、キーフレームは開始フレームと終了フレームの2つであるので、ステップS1202では、この開始フレームの姿勢データが示す位置と、終了フレームの姿勢データが示す位置とを結ぶ線分を求めることになる。
また、ステップS1202における処理が2回目以降行われる場合、即ち、後述するステップS1207における処理からステップS1202に進んだ場合には、それまでで求まっている各キーフレーム間を結ぶ線分を求める。
次に、キーフレーム間の各フレームの姿勢データが示す位置から、ステップS1202で求めた線分への垂線の長さを計算し、一方側から順に垂線の長さを参照する(ステップS1203)。そして参照した垂線の長さlの最大値lmaxが所定の閾値θ以上であるか否かをチェックする(ステップS1204)。即ち、このキーフレーム間を結ぶ線分が、このキーフレーム間の曲線に十分近似できているか否かをチェックする。
max≧θの場合、即ち、このキーフレーム間を結ぶ線分が、このキーフレーム間の曲線に十分近似できていなく、更にキーフレームを特定する必要がある場合には処理をステップS1205に進め、ステップS1203で参照した垂線の長さlの変化率が正から負に転じたフレーム(もしくは参照を開始した側に応じて前後1フレームの何れか)をキーフレームとして特定し、特定したキーフレームの姿勢データをキーフレーム姿勢データバッファに記録する処理を行う(ステップS1205)。
本ステップにおける処理が最初に行われる場合、即ち、キーフレームとして特定されたフレームが開始フレームと終了フレームの2つである場合、ステップS1205では、開始フレームから終了フレームまでの各フレームの姿勢データが示す位置から、この開始フレームの姿勢データが示す位置と、終了フレームの姿勢データが示す位置とを結ぶ線分への垂線の長さを参照し、変化率が正から負に転じたフレーム(もしくは参照を開始した側に応じて前後1フレームの何れか)をキーフレームとして特定し、特定したキーフレームの姿勢データをキーフレーム姿勢データバッファに記録する処理を行う。
また、ステップS1205における処理が2回目以降行われる場合、即ち、開始フレームから終了フレームまでで、いくつかのキーフレームが特定されている場合、特定した各キーフレーム間の各フレームの姿勢データが示す位置から、キーフレーム間を結ぶ線分への垂線の長さを参照し、lmax≧θのキーフレーム間については、垂線の長さlの変化率が正から負に転じたフレーム(もしくは参照を開始した側に応じて前後1フレームの何れか)をキーフレームとして特定し、特定したキーフレームの姿勢データをキーフレーム姿勢データバッファに記録する処理を行う。
次に、全てのキーフレーム間について(ステップS1202で求めた全ての線分の両端のキーフレーム間について)ステップS1203からステップS1205までの処理を行ったか否かをチェックし、行っていなければ処理をステップS1203に戻して、次のキーフレーム間についてステップS1203以降の処理を行う。
一方、全てのキーフレーム間について(ステップS1202で求めた全ての線分の両端のキーフレーム間について)ステップS1203からステップS1205までの処理を行っている場合には、処理をステップS1207に進め、全てのキーフレーム間についてlmax<θであるか否かをチェックする(ステップS1207)。即ち、全てのキーフレーム間の線分が、曲線に十分近似できているか否かをチェックする。そして全てのキーフレーム間についてlmax<θである場合には処理をステップS1208に進め、これまでに姿勢データバッファに記録したキーフレームの姿勢データ群を外部記憶装置107に保存、もしくは記憶媒体ドライブ装置108に記憶媒体に記録させる処理を行い、本処理を終了する。
一方、全てのキーフレーム間についてlmax<θではない場合、lmax≧θのキーフレーム間についてステップS1202以降の処理を繰り返す。
以上の処理によって得られたキーフレームの姿勢データを用いれば、キーフレーム間のフレームの姿勢データを球形補間により求めても、元のデータとの誤差を極力抑えることができるので、Fフレーム分のモーションの再生を、Fフレーム分の姿勢データを全部を保持しておき、夫々を順次再生するのに比べても、誤差の少ないモーションを再生することができる。
また、Fフレーム分全部の姿勢データを管理するわけではなく、キーフレームの姿勢データのみを管理するので、管理するデータの量をよりより小さくすることができ、管理するためのメモリの使用量も少なく押さえることができる。
なお、以上の説明の本質は、図4から図11、図13に示したFフレーム分の姿勢データの集合による曲線の形状等に適用することに限定されるものではなく、所定フレーム数分の姿勢データの集合による任意の曲線の形状に適用できることは、以上の説明により明白である。
[第2の実施形態]
第1の実施形態で説明したキーフレームの姿勢データを特定して保存するという処理、をコンピュータのCPUに実行させるプログラムを、例えばCG作成用ソフトウェアの一機能としてこのソフトウェアに含めても良い。
その場合、このソフトウェアをコンピュータにインストールし、このソフトウェアを用いてオブジェクトにモーションを付け、そしてこのモーションデータを保存する場合に、このプログラムをこのコンピュータのCPUが実行することで、このモーションデータのうちキーフレームの姿勢データのみを特定して保存するという機能をこのソフトウェアに与えることができる。
これにより、作成したモーションを圧縮して保存するというソフトウェアを実現することができる。
[第3の実施形態]
また、以上の処理(例えば図12に示したフローチャートの一部、もしくは全部に従った処理)をプログラムとしてCD−R、ROMやDVD−ROM、MO、ゲームカートリッジ等の記憶媒体に記憶させ、この記憶媒体に記憶されているプログラムをコンピュータに読み込ませ(インストール、もしくはコピーさせる)、このコンピュータのCPU又はMPUがこれを実行することでこのコンピュータに以上の処理を実現させることができる。従って、このプログラムを記憶した記憶媒体もまた本発明を実施可能なものにするので、この記憶媒体も本発明の範疇にあることは明白である。
また、サーバ装置に以上の処理(例えば図12に示したフローチャートの一部、もしくは全部に従った処理)のプログラムを保持させておき、周知の技術によりネットワークを介してコンピュータにこれらを供給することができる。そしてこれらプログラムやデータを供給されたコンピュータのCPU又はMPUはこれを用いて以上の処理を実現させることができるので、このサーバ装置もまた上記記憶媒体として解釈することができるので、このサーバ装置も本発明の範疇にあることは明白である。
またこの記憶媒体は外部からコンピュータにプログラムやデータを提供するもの以外であっても良く、コンピュータに内蔵されたメモリチップなどであっても良いし、この記憶媒体成る文言の定義はより広く解釈されるべきである。
本発明の第1の実施形態に係る「キーフレームの姿勢データを特定する処理」を実行するデータ処理装置として機能するコンピュータの基本構成を示すブロック図である。 3次元仮想空間中に設けられた人の3次元モデルを構成する各パーツを示す図である。 姿勢制御対象3次元モデルの1フレーム目からFフレーム目までの姿勢データをプロットすることで得られるグラフを示す図である。 図3に示す曲線301の両端の姿勢データ、即ち、開始フレーム(1フレーム目)と、終了フレーム(Fフレーム目)を説明する図である。 図4に示す開始フレームの姿勢データが示す位置と終了フレームの姿勢データが示す位置との間を結ぶ線分を説明する図である。 曲線301を構成する各フレームの姿勢データが示す位置からこの線分501への垂線の長さを求める処理を説明する図である。 図6に示した曲線301上において、上記処理により特定したキーフレームの姿勢データが示す位置を示す図である。 位置401と位置701との間、位置701と位置702の間、位置702と位置402との間に対する、以上説明した処理の適用方法について説明する図である。 開始フレーム(位置401)からf1フレーム目(位置701)までの各フレームから、キーフレームを特定するための処理を説明する図である。 f2フレーム目(位置702)から終了フレーム(位置402)までの各フレームから、キーフレームを特定するための処理を説明する図である。 図8に示した曲線301上において、上記処理により特定したキーフレームの姿勢データが示す位置を示す図である。 本実施形態に係る「キーフレームを特定する処理」のフローチャートである。 f1フレーム目(位置701)からf2フレーム目(位置702)までの各フレームから、キーフレームを特定するための処理を説明する図である。

Claims (7)

  1. 連続した各フレームにおけるオブジェクトの姿勢データを所定フレーム数分メモリ上に記憶している場合に、キーフレームを特定するデータ処理装置のデータ処理方法であって、
    設定手段が、前記メモリ上に存在する所定フレーム数分の前記オブジェクトの姿勢データにおいて、開始フレームと、終了フレームの夫々を、キーフレームとして設定する設定工程と、
    第1の計算手段が、前記メモリ上に存在する所定フレーム数分の前記オブジェクトの姿勢データの集合により表現される曲線が存在する座標系において、隣接する夫々のキーフレームの姿勢データが示す位置間を結ぶ線分を求める第1の計算工程と、
    第2の計算手段が、前記隣接する夫々のキーフレーム間の各フレームの姿勢データが示す位置から前記線分への垂線の長さを求める第2の計算工程と、
    特定手段が、前記第2の計算工程で計算した各フレームにおける垂線の長さを、前記隣接する夫々のキーフレーム間の一端のフレームから他端のフレームまで順に参照した場合の垂線の長さの変化率が、正から負に転じたフレーム近傍のフレームをキーフレームとして特定する特定工程と
    実行制御手段が、前記隣接するキーフレームのいずれかと前記特定工程において特定された前記キーフレームとの間で、前記第1の計算工程、前記第2の計算工程、及び前記特定工程による処理を再帰的に繰り返し実行することにより、キーフレームとなるフレームを順次特定していく実行制御工程と、
    を備え、
    前記実行制御工程においては、
    前記第2の計算工程で計算された各フレームにおける垂線の長さが、前記隣接する夫々のキーフレーム間の一端のフレームから他端のフレームまで順に参照され、前記垂線の長さの最大値が所定値未満になるまで、前記処理が再帰的に繰り返し実行されることを特徴とするデータ処理方法。
  2. 記憶制御手段が、前記設定工程で設定された姿勢データ、及び前記特定工程で特定されたキーフレームにおける姿勢データを、前記オブジェクトの所定フレーム数分の姿勢データを再生するためのデータとしてメモリに記憶させる記憶制御工程を備えることを特徴とする請求項1に記載のデータ処理方法。
  3. 前記キーフレーム間のフレームの姿勢データは、球形補間処理によって得ることを特徴とする請求項1に記載のデータ処理方法。
  4. 前記姿勢データは、前記オブジェクトの姿勢をクオータニオンによって表現した場合の、前記姿勢を示すデータであることを特徴とする請求項1乃至の何れか1項に記載のデータ処理方法。
  5. 前記オブジェクトは、単体として3次元仮想空間に存在するオブジェクト、もしくは、3次元モデルを構成する複数のオブジェクトのうちの1つのオブジェクトであることを特徴とする請求項1に記載のデータ処理方法。
  6. 連続した各フレームにおけるオブジェクトの姿勢データを所定フレーム数分メモリ上に記憶している場合に、キーフレームを特定するデータ処理装置であって、
    前記メモリ上に存在する所定フレーム数分の前記オブジェクトの姿勢データにおいて、開始フレームと、終了フレームの夫々を、キーフレームとして設定する設定手段と、
    前記メモリ上に存在する所定フレーム数分の前記オブジェクトの姿勢データの集合により表現される曲線が存在する座標系において、隣接する夫々のキーフレームの姿勢データが示す位置間を結ぶ線分を求める第1の計算手段と、
    前記隣接する夫々のキーフレーム間の各フレームの姿勢データが示す位置から前記線分への垂線の長さを求める第2の計算手段と、
    前記第2の計算手段が計算した各フレームにおける垂線の長さを、前記隣接する夫々のキーフレーム間の一端のフレームから他端のフレームまで順に参照した場合の垂線の長さの変化率が、正から負に転じたフレーム近傍のフレームをキーフレームとして特定する特定手段と
    前記隣接するキーフレームのいずれかと前記特定手段において特定された前記キーフレームとの間で、前記第1の計算手段、前記第2の計算手段、及び前記特定手段による処理を再帰的に繰り返し実行することにより、キーフレームとなるフレームを順次特定していく実行制御手段と、
    を備え、
    前記実行制御手段は、
    前記第2の計算手段で計算された各フレームにおける垂線の長さを、前記隣接する夫々のキーフレーム間の一端のフレームから他端のフレームまで順に参照し、前記垂線の長さの最大値が所定値未満になるまで、前記処理を再帰的に繰り返し実行することを特徴とするデータ処理装置。
  7. コンピュータを、連続した各フレームにおけるオブジェクトの姿勢データを所定フレーム数分メモリ上に記憶している場合に、キーフレームを特定するデータ処理装置として機能させるためのプログラムであって、
    前記メモリ上に存在する所定フレーム数分の前記オブジェクトの姿勢データにおいて、開始フレームと、終了フレームの夫々を、キーフレームとして設定する設定手段と、
    前記メモリ上に存在する所定フレーム数分の前記オブジェクトの姿勢データの集合により表現される曲線が存在する座標系において、隣接する夫々のキーフレームの姿勢データが示す位置間を結ぶ線分を求める第1の計算手段と、
    前記隣接する夫々のキーフレーム間の各フレームの姿勢データが示す位置から前記線分への垂線の長さを求める第2の計算手段と、
    前記第2の計算手段が計算した各フレームにおける垂線の長さを、前記隣接する夫々のキーフレーム間の一端のフレームから他端のフレームまで順に参照した場合の垂線の長さの変化率が、正から負に転じたフレーム近傍のフレームをキーフレームとして特定する特定手段と、
    前記隣接するキーフレームのいずれかと前記特定手段において特定された前記キーフレームとの間で、前記第1の計算手段、前記第2の計算手段、及び前記特定手段による処理を再帰的に繰り返し実行することにより、キーフレームとなるフレームを順次特定していく実行制御手段と、
    を備え、
    前記実行制御手段は、
    前記第2の計算手段で計算された各フレームにおける垂線の長さを、前記隣接する夫々のキーフレーム間の一端のフレームから他端のフレームまで順に参照し、前記垂線の長さの最大値が所定値未満になるまで、前記処理を再帰的に繰り返し実行することを特徴とするデータ処理装置として機能させるためのプログラム。
JP2003407650A 2003-12-05 2003-12-05 データ処理方法、データ処理装置 Expired - Fee Related JP3976200B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003407650A JP3976200B2 (ja) 2003-12-05 2003-12-05 データ処理方法、データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003407650A JP3976200B2 (ja) 2003-12-05 2003-12-05 データ処理方法、データ処理装置

Publications (2)

Publication Number Publication Date
JP2005165962A JP2005165962A (ja) 2005-06-23
JP3976200B2 true JP3976200B2 (ja) 2007-09-12

Family

ID=34729628

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003407650A Expired - Fee Related JP3976200B2 (ja) 2003-12-05 2003-12-05 データ処理方法、データ処理装置

Country Status (1)

Country Link
JP (1) JP3976200B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4759446B2 (ja) * 2006-06-05 2011-08-31 日本電信電話株式会社 姿勢平滑化方法およびそのプログラム
JP4536095B2 (ja) * 2007-09-04 2010-09-01 株式会社コナミデジタルエンタテインメント 画像処理プログラム、画像処理装置及び画像処理制御方法
JP7459050B2 (ja) * 2018-07-27 2024-04-01 マジック リープ, インコーポレイテッド 仮想キャラクタの姿勢空間変形のための姿勢空間次元低減
CN114222166B (zh) * 2021-09-29 2024-02-13 重庆创通联达智能技术有限公司 多路视频码流实时处理、同屏播放方法及相关系统

Also Published As

Publication number Publication date
JP2005165962A (ja) 2005-06-23

Similar Documents

Publication Publication Date Title
US6426750B1 (en) Run-time geomorphs
EP0531157B1 (en) Three dimensional graphics processing
US7280109B2 (en) Regional progressive meshes
US6396491B2 (en) Method and apparatus for reproducing a shape and a pattern in a three-dimensional scene
US8725466B2 (en) System and method for hybrid solid and surface modeling for computer-aided design environments
US7236170B2 (en) Wrap deformation using subdivision surfaces
US20050017971A1 (en) Ray tracing hierarchy
US6771261B2 (en) Error metric for mesh simplification processing
MX2007014662A (es) Deformacion de engranaje sin limitaciones utilizando grafica volumetrica laplaciana.
US7965294B1 (en) Key frame animation with path-based motion
WO2000041139A1 (fr) Dispositif de compression de donnees squelette a base tridimensionnelle
CN107578467B (zh) 一种医疗器械三维建模方法及装置
JP2000348213A (ja) 三次元画像生成装置、三次元画像生成表示装置、及びその方法並びに記録媒体
JPH07225852A (ja) 動画生成方法および装置
CN110689597B (zh) 动画模型显示方法和装置
KR20160004096A (ko) 밉맵 생성 방법 및 장치
JP3976200B2 (ja) データ処理方法、データ処理装置
WO2011104746A1 (ja) 画像表示装置
US20040186631A1 (en) Storage medium storing a shadow volume generation program, game device, and shadow volume generation method
EP1331607B1 (en) Recording medium which stores 3D image processing programm, 3D image processor, 3D image processing method, and video game machine
US10297036B2 (en) Recording medium, information processing apparatus, and depth definition method
JP2006510078A (ja) ユーザによる修正を可能にした3次元データセットの抽出方法
JP3410079B2 (ja) 3次元スケルトンデータ誤差吸収装置
US7161600B2 (en) Methods and apparatus for transforming three-dimensional objects in video games
JP2007286669A (ja) 画像処理装置および方法、並びにプログラム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20050428

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20060427

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20060530

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061013

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061211

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070518

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070614

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100629

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110629

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110629

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120629

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130629

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130629

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140629

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees