説明

骨格動作制御システム、プログラムおよび情報記憶媒体

【課題】自由度の高い関節の可動範囲を十分に確保して滑らかなキャラクタの動作表現を可能とする骨格動作制御システム、プログラムおよび情報記憶媒体を提供する。
【解決手段】親骨と子骨とが関節によって連結された骨格モデルの動作を制御する骨格動作制御システムである。可動範囲設定部112Aは、関節を中心点とする球面上の所与の点を焦点とし、関節に対応する中心点と焦点とを結ぶ軸に直交する平面を射影面とし、関節の可動範囲を、射影面上において設定する。座標変換部112Bは、球面上において子骨の向きを表す点を焦点に基づいて射影面上に射影する。骨格動作演算部112Cは、射影面上に射影された点の位置に基づいて、可動範囲設定部112Aにより設定された可動範囲の制限下で、親骨に対する子骨の向きを演算する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、骨格動作制御システム、プログラムおよび情報記憶媒体に関する。
【背景技術】
【0002】
従来より、仮想3次元空間(オブジェクト空間)におけるキャラクタ(例えば、人、動物)、ロープ、布などの動作を、骨格モデル(スケルトンモデル)を用いて演算する手法が知られている。骨格モデルは、複数の骨を関節で連結することにより構成されており、一般的に骨同士に親子関係が設定され、親骨の動作に追従するように子骨の動作を決定する演算を行っている。
【0003】
そして、このような骨格モデルでは、関節毎に自由度が異なっていたり、関節毎に可動範囲が異なっていたりする。例えば、人体モデルにおける肘や膝に相当する関節では自由度が低く、可動範囲が狭くなりやすい傾向にあり、肩などに相当する関節では自由度が高く、可動範囲が広くなりやすい傾向にある。
【0004】
また親骨の動作に対応する子骨の動作を演算する際には、関節における親骨に対する子骨の曲げ状態や親骨に対する子骨の捻り状態といった回転情報を演算する処理が行われており、従来の手法では、親骨に対する子骨の向きを親骨の座標系を基準とした3軸(x,y,z)の各軸周りの回転角度で表現するようにしていた。
【特許文献1】特開2000−306116号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、従来の手法を単純に適用して骨格モデルの動作を設計した場合、関節の可動範囲を広い範囲で設定しようとすると、動作設計者の意図とはかけ離れたいびつな範囲で関節の可動範囲が設定されてしまうという現状があり、滑らかなキャラクタの動作を表現することが難しいという課題があった。
【0006】
本発明は上記事情に鑑みてなされたものであり、その目的は、関節の可動範囲を十分に確保して滑らかなキャラクタの動作表現を可能とする骨格動作制御システム、プログラムおよび情報記憶媒体を提供することにある。
【課題を解決するための手段】
【0007】
(1)本発明は、親骨と子骨とが関節によって連結された骨格モデルの動作を制御するためのプログラムであって、関節を中心点とする球面上の所与の点を焦点とし、該中心点と該焦点とを結ぶ軸に直交する平面を射影面とし、前記関節の可動範囲を、前記射影面上において設定する可動範囲設定部と、前記球面上において前記子骨の向きを表す点を前記焦点に基づいて前記射影面上に射影する座標変換部と、前記射影面上に射影された点の位置に基づいて、前記可動範囲の制限下で、前記親骨に対する前記子骨の向きを演算する骨格動作演算部と、を含む骨格動作制御システムに関するものである。また本発明は、上記各部としてコンピュータを機能させるプログラム及びそのようなプログラムを記憶するコンピュータに読み取り可能な情報記憶媒体に関するものである。
【0008】
本発明における「球面上において子骨の向きを表す点」は、例えば、子骨あるいは子骨の延長線と球面の交点とすることができる。
【0009】
本発明によれば、射影を用いて球面上の点を射影面上に座標変換して可動範囲を設定することによって、従来における関節の可動範囲を設定する手法に比べて、関節の可動範囲を広範囲かつ整然とした範囲で設定することができ、滑らかに骨格モデルを動作させる演算を実現することができるようになる。例えば、可動範囲の狭い関節については、従来から慣用されてきた方式と同等の制限によって骨格モデルを動作させることができ、可動範囲の広い関節については、従来から慣用されてきた方式よりも自然で滑らかな骨格モデルの動作を表現できる。
【0010】
(2)本発明の骨格動作制御システム、プログラムおよび情報記憶媒体では、前記可動範囲設定部が、前記射影面上で矩形を成すように前記可動範囲を設定するようにしてもよい。
【0011】
このようにすれば、関節の可動範囲が把握しやすく、かつ従来から慣用されてきた方式と同等の感覚で骨格モデルの動作設計をすることができるため、骨格モデルの動作設計の環境を向上させることができる。
【0012】
(3)本発明の骨格動作制御システム、プログラムおよび情報記憶媒体では、前記可動範囲設定部が、前記射影面上で楕円形を成すように前記可動範囲を設定するようにしてもよい。
【0013】
このようにすれば、関節の可動範囲が把握しやすく、かつ従来から慣用されてきた方式と同等の感覚で骨格モデルの動作設計をすることができるため、骨格モデルの動作設計の環境を向上させることができる。
【0014】
(4)本発明の骨格動作制御システム、プログラムおよび情報記憶媒体では、前記可動範囲設定部が、前記射影面上で小判形を成すように前記可動範囲を設定するようにしてもよい。
【0015】
このようにすれば、関節の可動範囲が把握しやすく、かつ従来から慣用されてきた方式と同等の感覚で骨格モデルの動作設計をすることができるため、骨格モデルの動作設計の環境を向上させることができる。
【0016】
(5)本発明の骨格動作制御システム、プログラムおよび情報記憶媒体では、前記親骨に沿った軸が、x軸として設定され、前記親骨に直交し、かつ互いに直交する2つの軸が、それぞれy軸およびz軸として設定されており、前記射影面上に、互いに直交する座標軸が、それぞれs軸およびt軸として設定されており、前記座標変換部が、前記焦点を基準として、s=−z/(x+1)およびt=y/(x+1){ただし、x+y+z=1}による射影を行うことによって、前記球面上の点(x,y,z)を、前記射影面上の点(s,t)へ変換するようにしてもよい。
【0017】
このようにすれば、射影による変換が、四則演算のみで構成されるので、計算負荷が小さい。
【0018】
(6)本発明の骨格動作制御システム、プログラムおよび情報記憶媒体では、前記骨格モデルの関節に関して、前記射影面上で成す可動範囲の形状として矩形、楕円形、または小判形のいずれかが予め設定されているとともに、該関節におけるy軸回りの子骨の回転角およびz軸回りの子骨の回転角の許容範囲が予め設定されており、前記可動範囲設定部が、前記射影面上で成す前記可動範囲の形状と、前記関節におけるy軸回りの子骨の回転角およびz軸回りの子骨の回転角の許容範囲とに基づいて、前記関節の可動範囲を前記射影面上において設定するようにしてもよい。
【0019】
このようにすれば、従来方式を適用した骨格モデルの動作設計の資産を有効に活用して、簡便に関節の可動範囲を設定することができるようになる。
【0020】
(7)本発明の骨格動作制御システム、プログラムおよび情報記憶媒体では、前記骨格動作演算部が、前記親骨の動作に対応する前記子骨の動作を演算して得られた前記親骨に対する前記子骨の向きが前記可動範囲内に収まっているか否かを判定し、前記親骨に対する前記子骨の向きが前記可動範囲内に収まっていない場合には、前記射影面上における前記可動範囲の形状に応じた条件を満たすように、前記親骨に対する前記子骨の向きを補正するようにしてもよい。
【0021】
このようにすれば、演算負荷を抑えつつ、自然な動きを表現できる骨の向きを求めることができる。
【発明を実施するための最良の形態】
【0022】
以下、本発明の実施の形態について説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下において説明する実施の形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0023】
1.構成
図1に本実施形態のゲームシステム(骨格動作制御システムの一例)の機能ブロック図の例を示す。なお本実施形態のゲームシステムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0024】
操作部160は、プレーヤがキャラクタ(人、動物、ロボットなどの多関節モデル)の操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM、VRAMなどにより実現できる。
【0025】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0026】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0027】
携帯型情報記憶装置194は、プレーヤの個人データやゲームのセーブデータなどが記憶されるものであり、この携帯型情報記憶装置194としては、メモリカードや携帯型ゲーム装置などがある。通信部196は外部(例えばホスト装置や他の画像生成システム)との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ASICなどのハードウェアや、プログラムなどにより実現できる。
【0028】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、ホスト装置(サーバー)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180や記憶部170に配信してもよい。このようなホスト装置(サーバー)の情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0029】
処理部100は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。この処理部100は記憶部170をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、GPU、DSP等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0030】
処理部100は、オブジェクト空間設定部110、移動・動作処理部112、仮想カメラ制御部114、描画部120、音生成部130を含む。なおこれらの一部を省略する構成としてもよい。
【0031】
オブジェクト空間設定部110は、メインメモリ172のオブジェクト情報記憶部172Aに記憶されているオブジェクト情報に基づいて、車、キャラクタ、建物、球場、樹木、柱、壁、コース(道路)、マップ(地形)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。具体的には、後述する移動・動作処理部112の処理結果に基づいて、ワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、決定された位置(X,Y,Z)に決定された回転角度(X軸回り、Y軸回り、およびZ軸回りでの回転角度)でオブジェクトを配置する。
【0032】
移動・動作処理部112は、オブジェクト(キャラクタ等)の移動・動作演算(移動・動作シミュレーション)を行う。すなわち操作部160によりプレーヤが入力した操作データや、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作(モーション、アニメーション)させたりする処理を行う。具体的には、オブジェクトの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(オブジェクトを構成する各パーツの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、オブジェクトの移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0033】
特に本実施の形態では、図2に示すように、複数の骨が関節によって連結されており、関節で連結されている一の骨を親骨とし、親骨と同一の関節で連結されている他の骨を子骨として、親骨の動きに子骨が追従するように各骨の動きが決定される骨格モデルを用いてオブジェクトの動作を決定する処理を行っている。図2に示す骨格モデルの例では、関節Aにおいて骨Aが親骨に相当するとともに、骨Bが子骨に相当する。そして、移動・動作処理部112は、可動範囲設定部112Aと、座標変換部112Bと、骨格動作演算部112Cとを含む。
【0034】
可動範囲設定部112Aは、関節を中心点とする球面上の所与の点を焦点とし、該中心点と該焦点とを結ぶ軸に直交する平面を射影面とし、関節の可動範囲を、射影面上において設定する。このとき可動範囲は、射影面上で矩形、楕円形、あるいは小判形を成すように設定することができる。
【0035】
また本実施形態では、骨格モデルの関節に関して、射影面上で成す可動範囲の形状として矩形、楕円形、または小判形のいずれかが予め設定されているとともに、関節におけるy軸回りの子骨の回転角(y軸回転角)およびz軸回りの子骨の回転角(z軸回転角)の許容範囲が予め設定されている。具体的には、関節毎の可動範囲の形状を示す形状パターン情報と、関節毎のy軸回転角の許容範囲およびz軸回転角の許容範囲を示す許容範囲情報とがメインメモリ172のモーション制御情報記憶部172Bに記憶されている。そして可動範囲設定部112Aは、形状パターン情報により得られる射影面上で成す演算対象の関節の可動範囲の形状と、許容範囲情報により得られる演算対象の関節のy軸回転角およびz軸回転角の許容範囲とに基づいて、関節の可動範囲を射影面上において設定する。
【0036】
座標変換部112Bは、関節を中心点とする球面上において子骨の向きを表す点を焦点に基づいて射影面上に射影する。本実施形態では、親骨に沿った軸が、x軸として設定され、親骨に直交し、かつ互いに直交する2つの軸が、それぞれy軸およびz軸として設定されており、射影面上に、互いに直交する座標軸が、それぞれs軸およびt軸として設定されており、座標変換部112Bは、焦点を基準として、s=−z/(x+1)およびt=y/(x+1){ただし、x+y+z=1}による射影を行うことによって、球面上の点(x,y,z)を、射影面上の点(s,t)へ変換する。
【0037】
骨格動作演算部112Cは、射影面上に射影された点の位置に基づいて、可動範囲設定部112Aにより設定された可動範囲の制限下で、親骨に対する子骨の向きを演算する。このとき骨格動作演算部112Cは、プレーヤの入力情報、オブジェクト同士の衝突(ヒット)による外力情報や、その他の動作影響情報(例えば、重力情報、風力情報等)などに基づいて、親骨の動作に対応する子骨の動作を演算して得られた親骨に対する子骨の向きが可動範囲内に収まっているか否かを判定する。そして、親骨に対する子骨の向きが可動範囲内に収まっていない場合には、射影面上における可動範囲の形状に応じた条件を満たすように親骨に対する子骨の向きを補正して、演算対象の関節の可動範囲に収まるように子骨の向きを決定する。移動・動作処理部112では、骨格動作演算部112Cの演算結果に基づいて、オブジェクトの表面を構成するポリゴン等(表面形状)を変形させることによってオブジェクトを動作させる演算を行う。
【0038】
仮想カメラ制御部114は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、仮想カメラの位置(X,Y,Z)又は回転角度(X軸回り、Y軸回り、およびZ軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。
【0039】
例えば仮想カメラによりオブジェクト(例えば車、キャラクタ、ボール)を後方から撮影する場合には、オブジェクトの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、移動・動作処理部112で得られたオブジェクトの位置、回転角度又は速度などの情報(所定の制御情報の一例)に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させたりする制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータ(所定の制御情報の一例)に基づいて仮想カメラを制御する。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【0040】
描画部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずオブジェクト(モデル)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むオブジェクト情報(モデル情報)がメインメモリ172のオブジェクト情報記憶部172Aから入力され、入力されたオブジェクト情報に含まれる頂点情報に基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。頂点処理では、頂点処理プログラム(頂点シェーダプログラム、第1のシェーダプログラム)に従って、頂点の移動処理や、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、あるいは透視変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点情報を変更(更新、調整)する。そして、頂点処理後の頂点情報に基づいてラスタライズ(走査変換)が行われ、ポリゴン(プリミティブ)の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル(表示画面を構成するフラグメント)を描画するピクセル処理(ピクセルシェーダによるシェーディング、フラグメント処理)が行われる。ピクセル処理では、ピクセル処理プログラム(ピクセルシェーダプログラム、第2のシェーダプログラム)に従って、テクスチャの読出し(テクスチャマッピング)、色情報の設定/変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色をレンダリングターゲットであるビデオメモリ174のフレームバッファ174C(ピクセル単位で画像情報を記憶できるバッファ。)に出力(描画)する。すなわち、ピクセル処理では、画像情報(色、法線、輝度、α値等)をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお、仮想カメラ(視点)が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として1画面に表示できるように画像を生成することができる。
【0041】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン(プリミティブ)の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ(頂点シェーダやピクセルシェーダ)により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【0042】
そして描画部120は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【0043】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後(透視投影変換後)のオブジェクト情報(オブジェクトの頂点の位置座標、テクスチャ座標、色データ(輝度データ)、法線ベクトル、或いはα値等)は、メインメモリ172のオブジェクト情報記憶部172Aに保存される。
【0044】
テクスチャマッピングは、ビデオメモリ174のテクスチャ記憶部174Aに記憶されるテクスチャ(テクセル値)をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定(付与)されるテクスチャ座標等を用いてテクスチャ記憶部174Aからテクスチャ(色(RGB)、α値などの表面プロパティ)を読み出す。そして、2次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間、トライリニア補間などを行う。
【0045】
隠面消去処理としては、描画ピクセルのZ値(奥行き情報)が格納されるZバッファ174B(奥行きバッファ)を用いたZバッファ法(奥行き比較法、Zテスト)による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Zバッファ174Bに格納されるZ値を参照する。そして参照されたZバッファのZ値と、プリミティブの描画ピクセルでのZ値とを比較し、描画ピクセルでのZ値が、仮想カメラから見て手前側となるZ値(例えば小さなZ値)である場合には、その描画ピクセルの描画処理を行うとともにZバッファ174BのZ値を新たなZ値に更新する。
【0046】
αブレンディングとしては、α値(A値)に基づく半透明合成処理(通常αブレンディング、加算αブレンディング又は減算αブレンディング等)を行う。例えば通常αブレンディングの場合には下式(α1)〜(α3)の処理を行う。
=(1−α)×R+α×R (α1)
=(1−α)×G+α×G (α2)
=(1−α)×B+α×B (α3)
【0047】
また、加算αブレンディングの場合には下式(α4)〜(α6)の処理を行う。なお単純加算の場合はα=1として下式(α4)〜(α6)の処理を行う。
=R+α×R (α4)
=G+α×G (α5)
=B+α×B (α6)
【0048】
また、減算αブレンディングの場合には下式(α7)〜(α9)の処理を行う。なお単純減算の場合はα=1として下式(α7)〜(α9)の処理を行う。
=R−α×R (α7)
=G−α×G (α8)
=B−α×B (α9)
【0049】
ここで、R、G、Bは、ビデオメモリ174のフレームバッファ174Cに既に描画されている画像(原画像)のRGB成分であり、R、G、Bは、フレームバッファ174Cに描画すべき画像のRGB成分である。また、R、G、Bは、αブレンディングにより得られる画像のRGB成分である。なお、α値は、各ピクセル(テクセル、ドット)に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度(透明度、不透明度と等価)、バンプ情報などとして使用できる。
【0050】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理(サウンド処理)を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192(スピーカ)に出力する。
【0051】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
【0052】
2.本実施形態の手法
以下では、従来の手法と対比しながら、本実施形態の手法を説明する。
【0053】
2−1.従来の手法(3軸回転角方式)
2−1−1.座標系
所与の関節の両側の骨のうち一方を親骨、他方を子骨と呼ぶことにする。関節の回転(曲げ、捻り)の状態は、親骨を基準とした子骨の向きで表すことができる。骨の向きを表すために、各骨に対して図3のように座標系を定める。
【0054】
2−1−2.3軸回転角度による表現
従来の手法では、親骨に対する子骨の向きをxyz座標系の3軸の回転角度(それぞれr、r、rとする)で表し、各軸の回転角度の取り得る範囲によって可動範囲を設定する。子骨を回転させる順序は種々考えられるが、以下の例では、親骨の座標系を基準としてx軸回転、z軸回転、y軸回転の順序とする。
【0055】
ここで、関節を中心点とする半径1の球面Sを作り、子骨のx軸と球面Sとの交点をPとすると、関節の曲げ状態は、点Pの位置で表すことができる。3軸に関する回転角度と点Pの位置との関係を図示すると、図4のように地球儀の緯度、経度と同様の形態となる。なお、図4では、回転角度を10°間隔で表しており、rが経度、rが緯度に相当し、rはその位置での捻りに相当することになる。
【0056】
2−1−3.可動範囲の設定
従来の手法において、関節の曲げ角度に関する可動範囲を設定することは、球面S上に可動範囲に相当する領域(以下、単に可動領域という)を設定することに相当する。例えば、y軸回転が−40°〜20°、z軸回転が−10°〜30°の場合、球面S上に設定される可動領域は図5のようになる。球面Sの中心と可動領域の境界とを結んで、可動領域らしく表示すると図6のようになる。
【0057】
この例のように関節の曲げ角度に関する可動範囲が比較的狭い場合は問題ないが、z軸回転の可動範囲が±90°を超える設定をしようとすると、問題が生じる。一般的に、経度の値は−180°〜180°の範囲で取り得るのに対して、緯度の値は−90°〜90°の範囲を超えられないからである。敢えて工夫をすれば可動領域の設定自体は可能であり、例えば、rが−40°〜20°、rが−10°〜110°の場合、図7〜図9に示すような可動領域が設定される。しかし、図7〜図9に示す各設定例において、いずれも可動領域の形状がいびつになったり、可動領域の設定作業が繁雑になったりするという実使用上の問題が残り採用しがたい。
【0058】
2−2.射影方式による本実施形態の手法
2−2−1.球面Sから平面λへの射影
本実施形態の手法では、図10に示すように、座標(−1,0,0)の点を点Pとし、x=0の平面を平面λ(射影面)としたとき、球面S上の任意の点Pについて、点Pを焦点(光源)として平面λに射影することによって、点Qを得る。本実施形態では、前述の射影をfとし、球面S上の点Pから平面λ上の点Qへの変換をQ=f(P)と表す。また本実施形態では、平面λ上の点Qから球面S上の点Pへの射影をf−1とし、平面λ上の点Qから球面S上の点Pへの変換をP=f−1(Q)と表す。また本実施形態では、点Pを球面Sの極と呼ぶこととする。
【0059】
上記のような前提では、射影fにより、球面S上の点(ただし点Pを除く)と平面λ上の点は、1対1の対応関係(1対1写像)となり、f(P)は平面λ上の無限遠点となる。そして本実施形態の手法では、平面λ上において点Qの可動領域を設定することによって、球面S上の点Pの取り得る位置を制限して、関節の曲げ角度を制限する可動範囲を設定する。
【0060】
まず、平面λ上に互いに直交するs軸とt軸とからなるst座標系をとり、点Qの位置をst座標系で表す。このとき球面S上の座標(1,0,0)となる点Pを変換したf(P)をst座標系の原点とすると、f(P)は球面Sを定義するxyz座標系の原点に一致する。
【0061】
なお、本実施形態では、s軸の正方向(+s)は、z軸の負方向(−z)とし、t軸の正方向(+t)は、y軸の正方向(+y)とする。このような設定により、zx平面内で点Pにy軸回転を掛けたときの点Qの移動方向がs方向になり、xy平面内で点Pにz軸回転を掛けたときの点Qの移動方向がt方向になる。
【0062】
そして射影fによる点P(x,y,z)から点Q(s,t)への変換は式(1)のようになる。ただし、x+y+z=1である。
【数1】

【0063】
また射影f−1による点Qから点Pへの変換は式(2)のようになる。このとき、射影f−1による変換によって得られる結果はx+y+z=1を満たすので、座標値の正規化のための処理は不要となる。
【数2】

【0064】
2−2−2.関節の曲げ角度との対応関係
まず、図10に示したように角φおよび角θをとると、点Qの座標(s,t)と、角φおよび角θとの対応関係は、式(3)によって表すことができる。なお、角φおよび角θの範囲は、それぞれ−90°<φ<90°、−90°<θ<90°である。
【数3】

【0065】
ここで、角φおよび角θを−85°から85°まで5°間隔で変えて平面λ上にグリッド(格子線)を作り、これをf−1で球面Sに射影すると、図11に示すような直交グリッドが得られる。
【0066】
次に、従来の3軸回転角方式と本実施形態の射影方式との対応関係について説明する。z軸回転角r=0の場合におけるy軸回転角rと角φとの対応関係は図12に示すようになり、式(4)で表すことができる。
【数4】

【0067】
同様に、y軸回転角r=0の場合におけるz軸回転角rと角θとの対応関係は、θ=r/2となる。そこで、可動範囲を設定する際に式(5)のようにs、tとr、rとを対応させれば、図4および図11に示すように、y軸回転角rおよびz軸回転角rの絶対値が小さい領域では、従来の3軸回転角方式による可動領域と本実施形態の射影方式による可動領域は概ね同形状になる。
【数5】

【0068】
次に、図13に示すように、球面S上の点Pの位置を角度座標αで表す場合を考える。角度座標αが球面S上の緯度に対応する場合、即ち角度座標αが従来の3軸回転角方式におけるz軸回転角rに対応する場合には、点Pの座標はαとなる。また角度座標αが球面S上の経度に対応する場合、即ち角度座標αが従来の3軸回転角方式におけるy軸回転角rに対応する場合には、点Pの座標はαとなる。これに対して、本実施形態の射影方式では、点Pの座標はαとなる。このように、射影方式による関節角度表現は、従来の3軸回転角方式による緯度表現と経度表現との中間の値をとる。そのため本実施形態の射影方式では、従来の3軸回転角方式による関節角度表現から大きく乖離することがなく方式の移行がスムーズに行えるという利点がある。
【0069】
2−2−3.従来の3軸回転角方式と本実施形態の射影方式との比較
本実施形態の射影方式でsの範囲をtan−20°〜tan10°とし、tの範囲をtan−5°〜tan15°として、可動領域を矩形制限した場合を図14に示す(図6と比較されたい)。矩形制限の詳細については、「2−3−1.矩形制限による領域設定手法」で後述する。
【0070】
次に、z軸回転角rが±90°を超える場合に相当する例を挙げる。本実施形態の射影方式でsの範囲をtan−20°〜tan10°とし、tの範囲をtan−5°〜tan55°とし、可動領域を矩形制限した場合を図15に示す(図7および図8と比較されたい)。
【0071】
また上記と同様の範囲で、可動領域を楕円制限した場合は図16に示すようになり、可動領域を小判形制限した場合は図17に示すようになる(図9と比較されたい)。楕円制限、および小判形制限の詳細については、それぞれ「2−3−2.楕円制限による領域設定手法」、および「2−3−3.小判形制限による領域設定手法」で後述する。
【0072】
以上のように、本実施形態の射影方式を使えば、図15〜図17に示すように、従来の3軸回転角方式では扱えなかった±90°を超える広い可動領域を設定しても、関節を滑らかに動かす表現が可能となる。また、図6および図14に示すように、y軸回転角rや、z軸回転角rが0°〜±50°程度の比較的狭い可動領域を設定する場合には、従来の3軸回転角方式とほぼ同形状の可動領域が得られるので、従来方式からの方式移行が容易であり、式(5)を使って両者の対応関係を容易に設定することができる。
【0073】
2−3.可動領域の形状に応じた設定手法
本実施形態の射影方式による可動領域の設定手法は、平面λ上のs、tの範囲を制限することにより、関節の曲げ角度に関する可動領域を設定する。以下、特に断りのない限りs、tの取り得る範囲は式(6)のように設定されているものとして説明する。
【数6】

【0074】
2−3−1.矩形制限による領域設定手法
矩形制限とは、平面λ上で図18に示すように矩形の可動領域を設定する手法である。すなわち、s、tがともに式(6)を満たす領域が可動領域となる。実際の関節の可動領域は、図14や、図15に示すように設定される。
【0075】
2−3−2.楕円制限による領域設定手法
楕円制限とは、平面λ上で図19に示すように楕円形(ellipse)の可動領域を設定する手法である。すなわち、式(6)で設定されたs、tの領域に内接する楕円(楕円の軸はs軸、t軸に平行)の内部が可動領域となる。実際の関節の可動領域は図16や、図20に示すようになる。
【0076】
ここで楕円制限を数式で表すと式(7)のようになる。
【数7】

ただし、s、s、t、tは式(8)のとおりである。
【数8】

【0077】
なお、楕円制限は、領域の内外判定が容易であるが、可動領域を超えた場合の補正に関して矩形制限を採用した場合とは異なる工夫が必要となり、後述にて詳細に説明する。
【0078】
2−3−3.小判形制限による領域設定手法
小判形制限とは、平面λ上で図21に示すように小判形(oval)の可動領域を設定する手法である。可動領域の境界は半円と直線とで構成される。図21はs>tの場合で、t=t、t=tの直線部を持つ横長の形状となっている(s、tは式(8)のとおり)。s<tの場合は、図21に示す可動領域を90°回転させた縦長の形状になり、s=tの場合は、直線部の長さが0になるため、可動領域の形状は円となる。
【0079】
なお実際の関節の可動領域は、図17や、図22に示すような形状になり、その境界は4つの小円から構成される(詳しくは後述の「2−4−2.射影fの特徴」参照)。なお小円とは、球面上の円を分類した呼称で、球面と、その球の中心を通らない平面とが交差してできる円のことであり、地球に例えれば赤道以外の緯線は小円に相当する。
【0080】
2−3−4.超楕円制限による領域設定手法
本実施形態の手法によれば、上述の楕円制限を一般化し、超楕円制限とすることも可能である。楕円制限が2乗和で表されるのに対し、超楕円制限はm乗n乗和で表され、式(9)のようになる。
【数9】

式(9)において、例えば、m=n=4(4乗和)の場合、可動領域は図23に示すようになる(図20や、図22と比較されたい)。なお、上述した楕円制限は式(9)においてm=n=2の場合に相当し、上述した矩形制限は式(9)においてm=n=∞の場合に相当する。
【0081】
2−3−5.円弧と直線の組合せによる領域設定手法
上述した超楕円制限や更に複雑な形状の代わりに、円弧と直線を組み合わせて平面λに可動領域を設定することも可能である。可動領域外の値が得られた場合に値を補正する際に、超楕円制限では、最適解を代数的に求めることができないが、円弧と直線の組合せによる領域形状ならば最適解を代数的に求めることが可能である。
【0082】
2−4.可動領域を超えた場合の補正手法
関節の曲げ状態が、設定された可動領域を超えた場合には、これを可動領域内に戻すための補正が必要となるため、その補正手法について説明する。
【0083】
2−4−1.球面垂線と最適解
球面S上に可動領域Aが設定され、領域A外の点Pが与えられたとき、点Pの位置を領域A内(境界を含む)に補正した点を点Pとする。領域A内の点のうち、点Pからの距離(球面S上での距離)が最小となる点を点Pとするのが最良であると考えられ、この条件を満たす点Pを最適解と呼ぶことにする。
【0084】
ここで、説明の便宜上「球面垂線」という用語を次のように定義する。球面S上において点Pと曲線Lが与えられたとき、点Pを通り曲線Lに直交する大円を、点Pから曲線Lに下ろした球面垂線と呼び、曲線Lと球面垂線との交点を球面垂線の足とする。なお大円とは、球面上の円を分類した呼称で、球面と、その球の中心を通る平面とが交差してできる円のことをいい、地球に例えれば赤道や経線が大円に相当する。
【0085】
図24に示すように、点Pの最適解は、点Pから可動領域の境界に下ろした球面垂線の足となる。ただし、矩形制限のように領域形状が頂点を持つ場合には、この頂点が点Pの最適解になることがある。
【0086】
2−4−2.射影fの特徴
球面Sから平面λへの射影fには、次の(A1)および(A2)ような特徴がある。
【0087】
(A1)2本の線が交わる角度は、射影fによって変わらない(fは等角写像)。
【0088】
(A2)球面S上の円は、平面λ上の円または直線に射影され、その逆も成り立つ。互いに射影関係にある、球面S上の円と、平面λの円または直線との間の詳細な対応関係は下表のようになる。表1中の条件C1とは、図25に示すように円の半径をr、原点(0,0)から円の中心までの距離をdとするとき、式(10)が成立することである。
【表1】

【数10】

【0089】
したがって、球面S上で点Pから可動領域の境界に下ろした球面垂線は、平面λ上では次の(B1)および(B2)のいずれかになる。
(B1)可動領域境界に直交する円(条件C1を満たす。)
(B2)可動領域境界に直交する直線(原点(0,0)を通る。)
この性質を利用すれば、可動領域の形状によっては、Pの最適解を求めることが可能となる。
【0090】
2−4−3.矩形制限に対する最適解
矩形制限では、平面λ上に図18に示すような長方形の可動領域が設定される。まず、球面S上で、可動領域の1辺(例としてs=sに相当する辺)に点Pから球面垂線PPを下ろすことを考える。f(P)の座標を(s,t)とする(f(P)は点Pを平面λ上に射影した点である)。
【0091】
ここでt≠0の場合には、球面垂線PPを求めることは、平面λ上で次の3条件(D1)〜(D3)を満たす円を求めることに相当する。
(D1)点f(P)を通る。
(D2)直線s=sに直交する。
(D3)式(10)を満たす。
【0092】
そして図26に示すように、求める円の中心座標を(s,t)、半径をrとすると、これらは式(11)で得られる。
【数11】

【0093】
図26において、点f(P)は、式(11)により得られた円と直線s=sとの交点であって、点f(P)の座標を(s,t)とする(必然的にs=sである)。このとき、t≦t≦tであれば、矩形に設定された可動領域の境界となる辺に対して球面垂線を下ろせたことになる。ただし、図27に示すように球面垂線は必ずしも可動領域の境界となる辺への最短距離とはならない。図27に示す例では、点Pから辺Bに下ろした球面垂線Pは、点Pから辺Bへの最短距離である。しかし、点Pから辺Bへの最短距離は、球面垂線Pではなく大円Pである。
【0094】
ここで、辺B(小円B)の球面上の中心を点Pとする。球面上の点Pから辺Bに下ろした球面垂線が辺Bへの最短距離となるのは、点Pが領域Pの内部に位置する場合のみである。また、点Pが領域Pの内部にあれば、必ず点Pから辺Bに球面垂線を下ろすことができる。本実施形態では、領域Pを辺Bの最近点領域と呼ぶことにする。平面λ上での、可動領域の4辺に対する最近点領域の例を図28に示す。
【0095】
ここで図26において、点f(P)のt座標はt=t±rとなるが、複号±のうち有効となるのはtの正負と同じものだけである。そうでなければf(P)は最近点領域外となるからである。この有効なtがt≦t≦tであれば、Pを最適解としてよいことになる。
【0096】
またt=0の場合は、球面垂線PPの平面λへの射影(の延長)は、f(P)と原点(0,0)を結ぶ直線になる。したがって、t≦0≦tであれば、球面垂線を下ろせたことになる。さらにs−(s+1)1/2≦s≦sの場合に限り、点Pが最近点領域に含まれ、この球面垂線の足(s=s,t=0)が最適解となる。この判定式は式(12)のように書き換えることができる。
【数12】

【0097】
またs=sの辺を対象とする場合には、上記判定式(式(12))の替わりに式(13)を用いる。
【数13】

【0098】
点f(P)が矩形に設定された可動領域の4辺のそれぞれに対応する最近点領域のいずれにも含まれない場合は、点Pから可動領域の境界に対して球面垂線を下ろせないことを意味する。この場合、最適解Pは可動領域の4頂点のいずれかになるため、球面S上で点Pと可動領域の4頂点との距離を求め、求めた距離が最小となる頂点が最適解Pである。
【0099】
2−4−4.矩形制限に対する簡易解
矩形制限における補正手法には、以下に述べるような簡易解が考えられる。これは、平面λ上で、点f(P)からの距離が最小となるような可動領域内の点を解とする手法である。点f(P)のs座標をsとし、補正後のs座標をsとすると、式(14)のようになる。t座標についても同様である。
【数14】

【0100】
ただし、この簡易解が最適解に対する近似解として使えるのは、可動領域が狭い(s、s、t、tの絶対値が小さい)場合または補正量が小さい場合に限られる。この条件に該当しない場合には、図29に示す例のように不具合を生じる。図29に示す例では、点Pに対する最適解が点Pmaであるのに対して、簡易解は点Pma´となる。また、点Pに対する最適解がPmbであるのに対して、簡易解は球面Sの反対側から回って点Pmb´となってしまう。
【0101】
2−4−5.楕円制限
楕円制限の場合、最適解を求めることは、平面λ上で楕円形の可動領域の境界に直交する円を求めることに相当する。しかし、その解を求める式は高次方程式となり、代数的に解くことができない。
【0102】
最適解の近似解として、平面λ上で楕円形の可動領域の境界に下ろした垂線の足を解とする方法が考えられる。この場合、解くべき式は4次方程式となり代数的に解を得ることが可能となる。数式処理ソフトウェア等を用いれば、実際に解の式が得られるが、非常に繁雑な式となり実用的でない。なお、類似の問題として、楕円体への垂線を求める方法が「John C. Hart, Distance to an Ellipsoid. Graphics Gems IV,pp113-119,Academic Press Inc.,1994」に記されている。
【0103】
そこで本実施形態では、解としては全く不正確であるが、図30に示すように、f(P)を楕円の中心に向かって補正し簡易解f(P)を得る手法を採用している。
【0104】
点f(P)の座標(s,t)は次式(15)のように容易に求められる。ただし、s、s、t、tは式(8)のとおりである。
【数15】

【0105】
式(15)により得られる本実施形態の楕円制限における簡易解は一般的には全く不正確であるが、s=−s=t=−tの場合には、可動領域が、x軸を中心とする円になるので最適解に一致する。そのため、可動領域がこの条件に合う場合、あるいはこの条件に近い場合には、簡易解を用いても問題はない。
【0106】
逆に、簡易解が明確に不具合を生じるのは、次のような場合である。3次元空間での関節の可動領域を模式的に図31に示すように表し、関節は図の下方向に外力(重力等)を受けているものとする。この場合関節はAの位置(最も低い位置)に落ち着くべきであるが、簡易解を用いて補正を行うとAの位置になる。例えば、一旦Aの位置にあったとしても、外力によりA´に移動、簡易解Aに補正、外力によりA´に移動、簡易解Aに補正、という段階を経て、最終的にAの位置に落ち着く。
【0107】
2−4−6.小判形制限
小判形制限では、平面λ上に図21に示すような小判形の可動領域が設定される。可動領域境界の直線部を「辺」、半円部を「弧」と呼ぶこととする。また、これらを球面Sに射影したものも同様の呼び方とする。弧の中心座標を(s,t)、半径をrとする。このときs≦t(可動領域の形状が平面λ上で縦長)の場合には、式(16)のようになる。なお、式(16)において、tに関する2つの値は、順に下側の弧および上側の弧に対するものである。
【数16】

【0108】
次に、s≧t(可動領域の形状が平面λ上で横長)の場合には、式(17)のようになる。なお、式(17)において、sに関する2つの値は、順に左側の弧および右側の弧に対するものである。
【数17】

【0109】
続いて、s≦tの場合における補正方法を説明する。まず、球面S上で、可動領域の境界の辺に点Pから球面垂線PPを下ろすことを考える。これは、矩形制限における可動領域の境界の1辺に球面垂線を下ろす場合と全く同じである。したがって、球面垂線が下ろせるかどうか、下ろした球面垂線が可動領域への最短距離になるかどうかは、矩形制限の場合と同様の手法で判定できる。可動領域の2辺の上に最適解が存在しない場合は、可動領域の弧に下ろした球面垂線の足Pが最適解となる。2本の弧に対して点Pを求め、球面S上での点Pとの距離が最小となるものを最適解とする。
【0110】
以下では、小判形制限の可動領域(s≦tの場合)の2本の弧のうち下側の弧を例にとって、球面垂線の足を求める方法を述べる。前述のように、球面S上の大円は平面λ上では円または直線になる。
【0111】
まず、球面垂線PPが平面λ上で円になる場合を考える。この球面垂線を求めることは、平面λ上で次の3条件(E1)〜(E3)を満たす円を求めることに相当する。
(E1)点f(P)を通る。
(E2)可動領域の弧に直交する。
(E3)式(10)を満たす。
【0112】
ここで、求める円の中心座標を(s,t)、半径をrとすると、点f(P)の座標(s,t)は以下の手順で求めることができる。
【0113】
まず、式(18)によりs、tを求める。なお、式(18)でk=0となるのは、点f(P)、弧の中心点(s,t)、原点(0,0)の3点が一直線上に存在する場合で、これは球面垂線PPが平面λ上で直線になる場合である。したがって、ここではk≠0としてよい。
【数18】

【0114】
続いて、式(19)によりrを求める。
【数19】

【0115】
続いて、式(20)によりkを求める。
【数20】

【数21】

ここで式(20)で求めたkが式(21)を満たす場合のみ、式(22)によって得られるs、tが有効となる。k>0の場合は、弧ではなくその延長(可動領域の内部)に球面垂線を下ろすことを意味するので、解として無効なものだからである。
【数22】

【0116】
ただし、式(20)、式(22)は複号同順である。また、条件k≦0は、式(20)の複号の両方に対して同時に成り立つ場合があるので注意が必要である。これは、可動領域の一方の弧に対して点Pから2本の球面垂線が下ろせることを意味する。なぜなら平面λ上では可動領域の弧は半円(中心角180°)であるが、球面S上では中心角が180°を超えることがあるので、2本の球面垂線が存在し得るからである。
【0117】
以上の説明は、可動領域の下側の弧に球面垂線を下ろす場合である。上側の弧の場合には、式(21)がk≧0となる。
【0118】
次に、球面垂線PPが平面λ上で直線になる場合を考える。これは、式(18)でk=0となる場合である。この球面垂線を求めることは、平面λ上で次の3条件(F1)〜(F3)を満たす直線を求めることに相当する。
(F1)点f(P)を通る。
(F2)可動領域の弧に直交する(これは点(s,t)を通ることと同値である)。
(F3)原点(0,0)を通る。
【0119】
このとき最適解Pの座標(s,t)は式(23)により得られる。ただし、複号±のうち有効となるのは、上側の弧の場合はtの正負と同じもの、下側の弧の場合はtの正負と反対のものだけである。そうでなければ、弧ではなくその延長(可動領域の内部)に球面垂線を下ろすことを意味するので、解として無効である。
【数23】

【0120】
2−4−7.超楕円制限
超楕円制限の場合は、楕円制限の場合と同様に、最適解を求めるには高次方程式を解くことが必要となり、現実的でない。楕円制限における簡易解と同様に、平面λ上で超楕円形の可動領域の中心に向かって補正をすれば、簡易解を得ることができる。ただし、楕円制限の場合とは異なり、s=−s=t=−tの場合でも、簡易解は最適解に一致しないので注意を要する。
【0121】
2−4−8.円弧と直線の組合せによる制限
超楕円制限の替わりに、図32に示すように円弧と直線の組合せで可動領域を設定すれば、小判形制限の場合とほぼ同様の補正手法により最適解を求めることができる。
【0122】
2−5.捻り角の扱い
2−5−1.捻り角の定義
既に述べたように、関節の曲げ状態は、球面S上の点Pの位置で表すことができる。これに対して捻りは、軸OP回りの回転として表される(Oは球面Sの中心)。捻り角を扱うには、曲げ状態が与えられたとき、その曲げ状態における捻り角0°の向きを予め定義する必要がある。
【0123】
まず、親骨と子骨の座標軸の向きが一致(3軸とも一致)している状態を基準状態とし、この状態の捻り角を0°と定義する。これは、図10に示す球面S上において曲げ状態を示す点が点P(座標(1,0,0)の点)に存在する場合おける捻り角0°の状態である。
【0124】
また本実施形態では、以下のように「単純回転」を定義する。
【0125】
具体的には、始点を共有する任意の単位ベクトルv、vに対して、次の条件(G1)、(G2)を満たす回転を、vからvへの単純回転と定める。なおv=vの場合は無回転とし(回転マトリクスで表すと単位行列)、v=−vの場合は定義不能とする。
(G1)v、vのなす平面に垂直な軸の回りの回転。
(G2)回転によりvはvに一致する。
【0126】
基準状態に対してOPからOPへの単純回転を施した状態を、曲げ状態Pにおける捻り角0°状態と定義する。捻り角0°状態の子骨のy軸、z軸の向きは、図11のグリッドと同じ向きになる。なおP=Pの場合は、捻り角0°の向きは定義不能である。
【0127】
以上のように関節の捻り角を定義すると、式(24)に示す関節の回転マトリクスMは、式(25)〜式(27)に示すように曲げマトリクスMと捻りマトリクスMとに分解できる。ただし、マトリクスのタイプ(掛ける順序、要素の並び等)は、列ベクトルを掛けるタイプとする。
【数24】

【数25】

【数26】

【数27】

【0128】
ただし、式(26)および式(27)におけるdは式(28)に示すとおりである。なお、式(28)はd=1/(m00+1)としても等価であるが、m00≒−1(P≒Pに相当)の場合の桁落ちを避けるためには式(28)を用いるほうが良い。
【数28】

【0129】
2−5−2.捻り角の0°固定
関節の曲げを可動範囲内に補正しつつ、関節の捻り角は常に0°とする場合について説明する。与えられた関節の回転状態を表すマトリクスを式(24)のMとし、これを可動範囲内に補正することによって得られるマトリクスをMとする。
【0130】
このとき、与えられた曲げ状態を表す球面S上の点を点Pとすると、点Pの座標(x,y,z)は式(29)で得られる。
【数29】

【0131】
この点Pを前述の方法により可動領域内に補正する。この補正結果に対応する球面S上の点を点Pとし、その座標を(x,y,z)とすると、Mは式(30)、式(31)により得られる。
【数30】

【数31】

【0132】
また点f(P)のst座標(s,t)を使ってMを表すと式(32)、式(33)のようになる。
【数32】

【数33】

【0133】
式(32)、式(33)を使えば、平面λ上で曲げ状態を補正した後、点Pに対応する座標(x,y,z)を求める計算を介することなく直接Mを求められるので、計算量を減らすことができる。
【0134】
2−5−3.捻り角の可動範囲の設定手法
関節の曲げ・捻りともに、設定された可動範囲内に補正する場合について説明する。与えられた回転状態を表すマトリクスを式(24)のMとし、これを可動範囲内に補正することによって得られるマトリクスをMとする。
【0135】
ここで、Mは、式(25)、式(26)、式(27)、式(28)のように曲げと捻りに分解できる。曲げについては、式(29)、式(30)、式(31)を使って補正される。
【0136】
補正前の捻り角をψとすると、ψは式(34)から求めることができる。
【数34】

この捻り角ψが可動範囲外の場合は、これを補正しψとする。ψによる捻りマトリクスMt2は式(35)のようになり、Mは式(36)により得られる。
【数35】

【数36】

【0137】
2−6.四元数による表現
2−6−1.曲げ・捻りの分解
関節の回転を表すのに四元数を用いる場合について考える。前述のマトリクスを使う場合と同様に、四元数も曲げと捻りに分解することができる。関節の回転を表す四元数qは、次のように曲げ四元数qと捻り四元数qとに分解される。
【数37】

【0138】
qの要素を(q,q,q,q)とすると、曲げ四元数qの要素(qbx,qby,qbz,qbw)は次のようになる。
【数38】

【0139】
また捻り四元数qの要素(qtx,qty,qtz,qtw)は次のようになる。
【数39】

【0140】
2−6−2.曲げと捻りの補正手法
与えられた曲げ状態を表す球面S上の点を点Pとすると、点Pの座標(x,y,z)は式(40)で得られる。
【数40】

この点Pを前述の方法により可動領域内に補正する。この補正結果に対応する球面S上の点を点Pとし、その座標を(x,y,z)とすると、補正後の曲げ四元数q=(q1x,q1y,q1z,q1w)は式(41)により得られる。
【数41】

【0141】
なお点Pの座標(x,y,z)を使わず、点f(P)の座標(s,t)を使って表すと式(42)、式(43)のようになる。
【数42】

【数43】

【0142】
また補正前の捻り角をψとすると、ψは式(44)から求めることができる。
【数44】

このψが可動範囲外の場合は、これを補正しψとする。ψによる捻り四元数q=(q2x,q2y,q2z,q2w)は式(45)のようになる。
【数45】

【0143】
こうして、曲げ・捻りとも補正された四元数qは式(46)により得られる。
【数46】

【0144】
2−6−3.四元数を使った曲げ角度制限
上述した式(38)の四元数は関節の曲げを表すので、その要素qby、qbzに関して可動範囲を設定することによって、曲げ角度を制限する手法が考えられる。しかし、以下に述べるように、この手法には射影を使う手法に比べて劣る点がある。
【0145】
by=sin(η/2)、qbz=sin(ζ/2)とし、η、ζの値を−180°から180°まで10°間隔で変えて球面S上にグリッド(格子線)を作ると、図33に示すようになる。ただしqby、qbzの範囲は、qby+qbz≦1である。
【0146】
ここで、図33に示す四元数を採用した場合と図11に示す射影方式を採用した場合とを比較すると、曲げ角が小さい領域では、両者は似た形状となっている。しかし、射影方式では、グリッドが直交しているのに対して、qby、qbzによる角度制限ではグリッドが直交しない。特に極側の半球では、図34に示すように、四元数(qby,qbz)による角度制限ではグリッドの交角が直角から大きく離れた状態になり、可動領域の設定には適さない。ただし、x軸に関して軸対象な円形の可動領域を設定する場合には、qby、qbzを2乗和制限とすることで、可動領域を正確に設定することができる。
【0147】
2−7.本実施形態の手法による効果
本実施形態の射影方式によれば、射影による変換およびその逆変換は、四則演算のみで構成されるので、計算負荷が小さい。
【0148】
また本実施形態の射影方式の補正処理(矩形制限、小判形制限)によれば、最適解を実用的な計算量で求めることができる。
【0149】
また本実施形態の射影方式の補正処理(矩形制限、小判形制限)は、ごく一部の平方根計算を除けば、四則演算のみで構成されるので、計算負荷が小さく、ベクトル演算器(あるいはSIMD)を用いた計算の高速化が可能である。
【0150】
3.本実施形態の処理
次に、本実施形態の手法を実現する処理例について図35のフローチャートを用いて説明する。
【0151】
まず初期設定として、関節毎に予め与えられている可動範囲の形状と曲げ角度の許容範囲とに基づいて、骨格モデルを構成する各関節の可動範囲を、平面λ上に設定する(ステップS10)。
【0152】
そして、フレーム更新タイミング(例えば、前フレームから1/60秒が経過した時点)が到来すると(ステップS11でY)、プレーヤの入力情報を検出する(ステップS12)。
【0153】
次に、プレーヤの操作対象のキャラクタに関する骨格モデルに含まれる複数の関節のなかから、計算対象の関節を選択し(ステップS13)、プレーヤの入力情報、オブジェクト同士のヒットによる外力情報や、その他の動作影響情報に基づいて、計算対象の関節の曲げ・捻りを演算する(ステップS14)。
【0154】
次に、計算対象の関節において連結されている親骨と子骨とに関して、親骨に対する子骨の向きを示す、関節を中心点とする球面S上の点Pを、射影fによって平面λに射影して点f(P)を求め(ステップS15)、平面λ上の点f(P)が可動範囲内に収まっているか否かを判定する(ステップS16)。
【0155】
そして、点f(P)が可動範囲外に存在する場合には(ステップS16でN)、計算対象の関節の可動範囲の形状に応じた補正式によって最適解f(P)を求め(ステップS17)、点f(P)を射影f−1によって球面S上に逆変換して球面S上の点Pを求めることによって補正後の子骨の向きを演算する(ステップS18)。
【0156】
そして、骨格モデルを構成する全ての関節に関する計算が完了すると(ステップS19でY)、骨格モデルの各骨の動き(向きの変化)に応じてプレーヤの操作対象のキャラクタを動作させる(ステップS20)。
【0157】
4.ハードウェア構成例
本実施形態のゲームシステムを実現するハードウェアの構成の一例について図36を用いて説明する。なお図36では、主要な構成のみを図示しており、図36に示されていないハードウェア(メモリコントローラやスピーカなど)を必要に応じて設けることができる。
【0158】
メインプロセッサ10は、光ディスク72(CD、DVD、ブルーレイディスク等の情報記憶媒体)に格納されたプログラム、通信インターフェース80を介して転送されたプログラム、或いはハードディスク60に格納されたプログラムなどに基づき動作し、内部バスb4を介してアクセス可能なメインメモリ40を作業領域(ワーク領域)としてゲーム処理、画像処理、音処理などの種々の処理を実行する。
【0159】
メインプロセッサ10は、1基のプロセッサ12と複数のベクトルプロセッサ14で構成される。プロセッサ12は、OSの実行、ハードウェアリソースの管理、ゲーム処理、ベクトルプロセッサ14の動作管理などの種々の処理を実行する。またベクトルプロセッサ14は、ベクトル演算に特化したプロセッサであり、主にジオメトリ処理、画像データや音データのコーデック処理などの処理を実行する。
【0160】
描画プロセッサ20は、内部バスb1を介してビデオメモリ30にアクセス可能に形成されている。また描画プロセッサ20は、描画プロセッサ20とメインプロセッサ10を接続する内部バスb2と、メインプロセッサ10内部のバスb3と、メインプロセッサ10とメインメモリ40を接続する内部バスb4を介してメインメモリ40にもアクセス可能に形成されている。すなわち本実施形態のゲームシステムでは、描画プロセッサ20がビデオメモリ30を原則的なレンダリングターゲットとして利用しつつ、必要に応じてメインメモリ40とを例外的なレンダリングターゲットとして利用することもできるようになっている。
【0161】
描画プロセッサ20は、座標変換、透視変換、光源計算、曲面生成などのジオメトリ処理を行うものであり、高速並列演算が可能な積和算器や除算器を有し、マトリクス演算(ベクトル演算)を高速に実行する。例えば、座標変換、透視変換、光源計算などの処理を行う場合には、メインプロセッサ10で動作するプログラムが、その処理を描画プロセッサ20に指示する。
【0162】
また描画プロセッサ20は、ジオメトリ処理後のオブジェクト(ポリゴンや曲面などのプリミティブ面で構成されるオブジェクト)の画像のレンダリング処理を高速に実行するものである。マルチパスレンダリング処理の際には、描画プロセッサ20は、描画情報(頂点情報や他のパラメータ)等に基づいて、Zバッファ34を利用した陰面消去やテクスチャ記憶部36を利用したテクスチャマッピングを行いながら、画像をビデオメモリ30のフレームバッファ32にレンダリングする。このとき描画プロセッサ20は、マルチパスレンダリング処理として、グレアフィルタ処理、モーションブラー処理、被写界深度処理、フォグ処理等のフィルタ処理を行うことができる。そして、最後のレンダリングパスで画像がビデオメモリ30に設けられたフレームバッファ32にレンダリングされると、その画像をディスプレイ50に出力する。
【0163】
ハードディスク60にはシステムプログラム、セーブデータ、個人データなどが格納される。
【0164】
光学ドライブ70は、プログラム、画像データ、或いは音データなどが格納される光ディスク72(情報記憶媒体)を駆動し、これらのプログラム、データへのアクセスを可能にする。
【0165】
通信インターフェース80は、ネットワークを介して外部との間でデータ転送を行うためのインターフェースである。この場合に、通信インターフェース80に接続されるネットワークとしては、通信回線(アナログ電話回線、ISDN)、高速シリアルバスなどを考えることができる。そして、通信回線を利用することでインターネットを介したデータ転送が可能になる。また、高速シリアルバスを利用することで、他の画像生成システムとの間でのデータ転送が可能になる。
【0166】
上述したように本実施形態のゲームシステム(コンピュータ)は、メインプロセッサ10に座標変換、可動範囲設定、骨格動作演算を行わせるプログラムが光ディスク72(情報記憶媒体の一例)あるいはハードディスク60(情報記憶媒体の一例)に格納されている。
【0167】
なお、本実施形態の各部(各手段)は、その全てを、ハードウェアのみにより実現してもよいし、情報記憶媒体に格納されるプログラムや通信インターフェースを介して配信されるプログラムのみにより実現してもよい。或いは、ハードウェアとプログラムの両方により実現してもよい。
【0168】
そして、本実施形態の各部をハードウェアとプログラムの両方により実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納されることになる。より具体的には、上記プログラムが、ハードウェアである各プロセッサ10、20等に処理を指示すると共に、必要であればデータを渡す。そして、各プロセッサ10、20等は、その指示と渡されたデータとに基づいて、本発明の各部を実現することになる。
【0169】
なお本発明は、上記実施形態で説明したものに限らず、種々の変形実施が可能である。例えば、明細書又は図面中の記載において広義や同義な用語として引用された用語は、明細書又は図面中の他の記載においても広義や同義な用語に置き換えることができる。また骨格モデルを動作させる手法は、本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。
【0170】
また本発明は種々のゲーム(格闘ゲーム、シューティングゲーム、ロボット対戦ゲーム、スポーツゲーム、競争ゲーム、ロールプレイングゲーム、音楽演奏ゲーム、ダンスゲーム等)に適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々のゲームシステムに適用できる。
【図面の簡単な説明】
【0171】
【図1】本実施形態のゲームシステムの機能ブロック図。
【図2】骨格モデルの構成を模式的に示す図。
【図3】親骨および子骨に設定される座標系を示す図。
【図4】3軸回転角方式によるr、rと球面S上の位置との関係を示す図。
【図5】3軸回転角方式により設定された関節の可動領域を示す図。
【図6】3軸回転角方式により設定された関節の可動領域を示す図。
【図7】3軸回転角方式により設定された関節の可動領域を示す図。
【図8】3軸回転角方式により設定された関節の可動領域を示す図。
【図9】3軸回転角方式により設定された関節の可動領域を示す図。
【図10】球面S上の点Pから平面λ上の点Qへの射影を説明するための図。
【図11】平面λ上のグリッドを球面Sに射影した結果を説明するための図。
【図12】y軸回転角rと角度φとの関係を示す図。
【図13】射影方式と緯度・経度表現との比較図。
【図14】射影方式により設定された関節の可動領域を示す図。
【図15】射影方式により設定された関節の可動領域を示す図。
【図16】射影方式により設定された関節の可動領域を示す図。
【図17】射影方式により設定された関節の可動領域を示す図。
【図18】平面λ上において矩形制限された可動領域を示す図。
【図19】平面λ上において楕円形制限された可動領域を示す図。
【図20】射影方式により設定された関節の可動領域を示す図。
【図21】平面λ上において小判形制限された可動領域を示す図。
【図22】射影方式により設定された関節の可動領域を示す図。
【図23】射影方式により設定された関節の可動領域を示す図。
【図24】点Pから可動領域の境界に下ろした球面垂線の足Pを示す図。
【図25】平面λ上の円が球面S上で大円となる条件を示す図。
【図26】球面垂線を平面λに射影して得られる円を示す図。
【図27】矩形領域の辺に下ろした球面垂線を示す図。
【図28】矩形領域の各辺に対する最近点領域を示す図。
【図29】矩形制限における簡易解による補正手法で発生する不具合を示す図。
【図30】楕円形制限に対する簡易解を示す図。
【図31】楕円形制限における簡易解による補正手法で発生する不具合を示す図。
【図32】円弧と直線の組合せによる可動領域の設定例を示す図。
【図33】qby、qbzの値を変えて球面S上に作ったグリッドを示す図。
【図34】射影方式(左)と四元数方式(右)の極側の様子を比較する図。
【図35】本実施形態の具体的な処理例を示すフローチャート。
【図36】ハードウェア構成例。
【符号の説明】
【0172】
100 処理部、
110 オブジェクト空間設定部、112 移動・動作処理部、
112A 可動範囲設定部、112B 座標変換部、112C 骨格動作演算部、
114 仮想カメラ制御部、
120 描画部、130 音生成部、
160 操作部、170 記憶部、
172 メインメモリ、
172A オブジェクト情報記憶部、172B モーション制御情報記憶部、
174 ビデオメモリ、
174A テクスチャ記憶部、174B Zバッファ、174C フレームバッファ、
180 情報記憶媒体、190 表示部、192 音出力部、
194 携帯型情報記憶装置、196 通信部

【特許請求の範囲】
【請求項1】
親骨と子骨とが関節によって連結された骨格モデルの動作を制御するためのプログラムであって、
関節を中心点とする球面上の所与の点を焦点とし、該中心点と該焦点とを結ぶ軸に直交する平面を射影面とし、前記関節の可動範囲を、前記射影面上において設定する可動範囲設定部と、
前記球面上において前記子骨の向きを表す点を前記焦点に基づいて前記射影面上に射影する座標変換部と、
前記射影面上に射影された点の位置に基づいて、前記可動範囲の制限下で、前記親骨に対する前記子骨の向きを演算する骨格動作演算部として、
コンピュータを機能させることを特徴とするプログラム。
【請求項2】
請求項1において、
前記可動範囲設定部が、
前記射影面上で矩形を成すように前記可動範囲を設定することを特徴とするプログラム。
【請求項3】
請求項1において、
前記可動範囲設定部が、
前記射影面上で楕円形を成すように前記可動範囲を設定することを特徴とするプログラム。
【請求項4】
請求項1において、
前記可動範囲設定部が、
前記射影面上で小判形を成すように前記可動範囲を設定することを特徴とするプログラム。
【請求項5】
請求項1〜4のいずれかにおいて、
前記親骨に沿った軸が、x軸として設定され、前記親骨に直交し、かつ互いに直交する2つの軸が、それぞれy軸およびz軸として設定されており、
前記射影面上に、互いに直交する座標軸が、それぞれs軸およびt軸として設定されており、
前記座標変換部が、
前記焦点を基準として、
s=−z/(x+1)およびt=y/(x+1){ただし、x+y+z=1}
による射影を行うことによって、前記球面上の点(x,y,z)を、前記射影面上の点(s,t)へ変換することを特徴とするプログラム。
【請求項6】
請求項5において、
前記骨格モデルの関節に関して、前記射影面上で成す可動範囲の形状として矩形、楕円形、または小判形のいずれかが予め設定されているとともに、該関節におけるy軸回りの子骨の回転角およびz軸回りの子骨の回転角の許容範囲が予め設定されており、
前記可動範囲設定部が、
前記射影面上で成す前記可動範囲の形状と、前記関節におけるy軸回りの子骨の回転角およびz軸回りの子骨の回転角の許容範囲とに基づいて、前記関節の可動範囲を前記射影面上において設定することを特徴とするプログラム。
【請求項7】
請求項1〜6のいずれかにおいて、
前記骨格動作演算部が、
前記親骨の動作に対応する前記子骨の動作を演算して得られた前記親骨に対する前記子骨の向きが前記可動範囲内に収まっているか否かを判定し、前記親骨に対する前記子骨の向きが前記可動範囲内に収まっていない場合には、前記射影面上における前記可動範囲の形状に応じた条件を満たすように、前記親骨に対する前記子骨の向きを補正することを特徴とするプログラム。
【請求項8】
コンピュータにより読み取り可能な情報記憶媒体であって、請求項1〜7のいずれかに記載のプログラムを記憶していることを特徴とする情報記憶媒体。
【請求項9】
親骨と子骨とが関節によって連結された骨格モデルの動作を制御する骨格動作制御システムであって、
関節を中心点とする球面上の所与の点を焦点とし、該中心点と該焦点とを結ぶ軸に直交する平面を射影面とし、前記関節の可動範囲を、前記射影面上において設定する可動範囲設定部と、
前記球面上において前記子骨の向きを表す点を前記焦点に基づいて前記射影面上に射影する座標変換部と、
前記射影面上に射影された点の位置に基づいて、前記可動範囲の制限下で、前記親骨に対する前記子骨の向きを演算する骨格動作演算部と、
を含むことを特徴とする骨格動作制御システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図10】
image rotate

【図12】
image rotate

【図13】
image rotate

【図18】
image rotate

【図19】
image rotate

【図21】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図35】
image rotate

【図36】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図11】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図20】
image rotate

【図22】
image rotate

【図23】
image rotate

【図28】
image rotate

【図29】
image rotate

【図33】
image rotate

【図34】
image rotate


【公開番号】特開2009−70340(P2009−70340A)
【公開日】平成21年4月2日(2009.4.2)
【国際特許分類】
【出願番号】特願2007−241030(P2007−241030)
【出願日】平成19年9月18日(2007.9.18)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】