(57)【要約】【課題】ユーザーが直観的に操作して、オブジェクトの変形経路を制御することが可能なオブジェクト形状変形装置を提供する。【解決手段】オブジェクト形状変形装置１０では、まず、ユーザーインタフェース部１００において、ユーザーから変形前及び変形後の時刻におけるオブジェクトの形状、及び形状変形に影響する仮想の力を制御するパラメータの設定を受け付ける。そして、成長力算出部１１０において、形状変形に要する仮想の力を算出し、成長経路算出部１２０では、算出された成長力を用いて変形の経路を決定する。次に、オブジェクト形状決定部１３０において、算出された変形の経路及び時間的なパラメータを用いてオブジェクトの形状を決定し、オブジェクト表示部１４０は、そのオブジェクトの表示を行なう。【選択図】　図１
2004021866.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータグラフィックスにおけるオブジェクト形状の変形を制御するオブジェクト形状変形装置であって、
変形前の時刻及び変形後の時刻におけるオブジェクトの形状情報、及びオブジェクトの形状の変形に影響する仮想の力である成長力を制御するためのパラメータの設定を受け付けるユーザーインタフェース手段と、
前記設定されたパラメータに基づいて、前記仮想の力を算出する成長力算出手段と、
前記算出された成長力を用いて、オブジェクトの変形の経路を決定する成長経路算出手段と、
前記算出された変形の経路、及び前記変形前の時刻と前記変形後の間の時間を表すパラメータを用いて所定の時刻における前記オブジェクトの形状を決定するオブジェクト形状決定手段と、
形状が決定された前記オブジェクトを表示するオブジェクト表示手段と
を備えることを特徴とするオブジェクト形状変形装置。
【請求項２】
前記成長力算出手段は、
オブジェクトを構成する各頂点の位置に定義された仮想の質点に作用する力により生じる物理運動を考慮して前記形状の変形に影響する仮想の力を算出する
ことを特徴とする請求項１記載のオブジェクト形状変形装置。
【請求項３】
前記成長経路算出手段は、
前記パラメータが前記ユーザーインタフェース手段により変更されて設定された場合に、前記変形の経路を変更する
ことを特徴とする請求項１記載のオブジェクト形状変形装置。
【請求項４】
前記ユーザーインタフェース手段は、１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトの変形前の時刻及び変形後の時刻における形状情報を設定し、
前記成長経路算出手段は、前記設定された個々のセグメントについての変形の経路を決定し、
前記オブジェクト形状決定手段は、所定の時刻における前記個々のセグメントの形状を決定し、
前記オブジェクト形状変形装置は、さらに、
前記所定の時刻における前記セグメント間の相対位置関係を決定する変換行列決定手段を備える
ことを特徴とする請求項１記載のオブジェクト形状変形装置。
【請求項５】
前記変換行列決定手段は、
親子の関係にあるセグメントが接続する点を取得し、親であるセグメントを構成する頂点の集合のうち、前記接続する点との距離が最も近い頂点を代表点として選び、所定の時刻における前記代表点の座標より変形前の時刻における前記代表点の位置からの変化の割合を求め、前記親子の関係にあるセグメントの相対位置関係を決定する
ことを特徴とする請求項４記載のオブジェクト形状変形装置。
【請求項６】
前記変換行列決定手段は、
親子の関係にあるセグメント同士が接続する点を取得し、親であるセグメントに設定された座標系の原点、及び前記接続された点を通る直線を算出し、前記直線と前記親であるセグメントを構成するポリゴンとの交点を代表点として選び、所定の時刻における前記代表点の座標より変形前の時刻における前記代表点の位置からの変化の割合を求め、前記親子の関係にあるセグメントの相対位置関係を決定する
ことを特徴とする請求項４記載のオブジェクト形状変形装置。
【請求項７】
前記オブジェクト形状変形装置は、さらに、
親子の関係にあるセグメントが接続する点を算出する関節点算出手段を備え、
前記変換行列決定手段は、
前記関節点算出手段により算出された前記接続された点の所定の時刻における座標から、変形前の時刻における前記接続された点の座標における変化の割合を求め、前記親子の関係にあるセグメントの相対位置関係を決定する
ことを特徴とする請求項４記載のオブジェクト形状変形装置。
【請求項８】
前記変換行列決定手段は、
前記関節点算出手段により算出された、変形前の時刻及び変更後の時刻における前記接続された点の位置に仮想の質点を定義し、前記ユーザーインタフェース手段において設定されたパラメータに基づいて前記仮想の質点に作用する仮想の力を算出し、前記算出された仮想の力を用いて前記接続された点の移動の経路を決定し、前記決定された移動の経路を用いて所定の時刻における前記接続された点の座標を算出し、前記算出された接続された点の座標に基づいて、前記親子の関係にあるセグメントの相対位置関係を決定する
ことを特徴とする請求項７記載のオブジェクト形状変形装置。
【請求項９】
前記関節点算出手段は、
親子の関係にあるセグメントを包含する図形をそれぞれのセグメントに関して算出し、前記セグメントを包含する図形が重なり合う領域を決定し、前記親子の関係にあるセグメントを構成する頂点のうち、前記重なり合う領域内に存在する頂点を取得し、取得された前記重なり合う領域内に存在する頂点の集合を用いて前記親子の関係にあるセグメントが接続する点を算出する
ことを特徴とする請求項７記載のオブジェクト形状変形装置。
【請求項１０】
前記関節点算出手段は、
親子の関係にあるセグメントを構成する頂点のうち、親子の関係にあるセグメント間の距離が最小となる点に位置する頂点を取得し、前記取得された頂点を用いて前記親子の関係にあるセグメントが接続する点を算出する
ことを特徴とする請求項８記載のオブジェクト形状変形装置。
【請求項１１】
前記ユーザーインタフェース手段は、さらに、
１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトの変形前の時刻における形状情報と、前記１個以上のセグメントの集合を構成する個々のセグメントの変形後の時刻における形状情報の設定を受け付ける設定部を備え、
前記変換行列決定手段は、
前記オブジェクト形状決定手段により算出された前記個々のセグメントの形状に基づき、前記変形前の時刻における前記セグメント間の相対位置関係を変更することを特徴とする請求項４記載のオブジェクト形状変形装置。
【請求項１２】
前記ユーザーインタフェース手段は、さらに、
変形後の時刻における形状情報を、オブジェクトを構成する個々のセグメントに対して複数個存在する前記変形後の時刻における形状情報の中から選択する
ことを特徴とする請求項１１記載のオブジェクト形状変形装置。
【請求項１３】
前記変換行列決定手段は、
親子の関係にあるセグメントが接続する点を取得し、前記接続する点の座標を親であるセグメントを構成する頂点を用いて表現し、所定の時刻における前記接続する点の座標を算出し、変形前の時刻における前記接続する点の座標からの変化量に基づき、前記親子の関係にあるセグメントの相対位置関係を変更する
ことを特徴とする請求項１１記載のオブジェクト形状変形装置。
【請求項１４】
前記オブジェクト形状変形装置は、さらに、
変形前の時刻における、１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトに関して、親子の関係にあるセグメントが接続する点を算出する関節点算出手段を備え、
前記変換行列決定手段は、前記関節点算出手段により算出された前記接続する点の所定の時刻における座標から前記変形前の時刻における前記接続する点の座標における変化の割合を求め、前記親子の関係にあるセグメントの相対位置関係を決定する
ことを特徴とする請求項１１記載のオブジェクト形状変形装置。
【請求項１５】
前記関節点算出手段は、
変形前の時刻における、１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトに関して、親子の関係にあるセグメントを包含する図形をそれぞれのセグメントについて算出し、前記セグメントを包含する図形が重なり合う領域を決定し、前記親子の関係にあるセグメントを構成する頂点のうち、前記重なり合う領域内に存在する頂点を取得し、取得された前記重なり合う領域内に存在する頂点の集合を用いて前記親子の関係にあるセグメントが接続する点を算出する
ことを特徴とする請求項１４記載のオブジェクト形状変形装置。
【請求項１６】
前記形状の変形に影響する仮想の力は、線形関数及び定数関数を組み合わせた関数により表現される
ことを特徴とする請求項１〜１５のいずれか１項に記載のオブジェクト形状変形装置。
【請求項１７】
前記形状の変形に影響する仮想の力を制御するためのパラメータは、前記形状の変形を加速して行なう期間、減速して行なう期間及び一定の速度で行なう期間のそれぞれの比率を制御する
ことを特徴とする請求項１〜１６のいずれか１項に記載のオブジェクト形状変形装置。
【請求項１８】
コンピュータグラフィックスにおけるオブジェクト形状の変形を制御するためのオブジェクト形状変形方法であって、
変形前の時刻及び変形後の時刻におけるオブジェクトの形状情報、及びオブジェクトの形状の変形に影響する仮想の力を制御するためのパラメータの設定を受け付けるユーザーインタフェースステップと、
前記設定されたパラメータに基づいて、前記仮想の力を算出する成長力算出ステップと、
前記算出された成長力を用いて、オブジェクトの変形の経路を決定する成長経路算出ステップと、
前記算出された変形の経路、及び前記変形前の時刻と前記変形後の間の時間を表すパラメータを用いて所定の時刻における前記オブジェクトの形状を決定するオブジェクト形状決定ステップと、
形状が決定された前記オブジェクトを表示するオブジェクト表示ステップと
を含むことを特徴とするオブジェクト形状変形方法。
【請求項１９】
前記ユーザーインタフェースステップは、さらに、
１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトの変形前の時刻及び変形後の時刻における形状情報の設定を受け付ける設定サブステップを含み、
前記成長経路算出ステップは、設定された個々のセグメントの変形の経路を決定し、
前記オブジェクト形状決定ステップは、所定の時刻における前記個々のセグメントの形状を決定し、
さらに、
前記所定の時刻における前記セグメント間の相対位置関係を決定する変換行列決定ステップとを含む
ことを特徴とする請求項１８記載のオブジェクト形状変形方法。
【請求項２０】
前記ユーザーインタフェースステップは、さらに、
１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトの変形前の時刻における形状情報と、前記１個以上のセグメントの集合を構成する個々のセグメントの、変形後の時刻における形状情報の設定を受け付ける設定サブステップを含み、
前記変換行列決定ステップは、
オブジェクト形状決定ステップにより算出された前記個々のセグメントの形状に基づき、前記変更前の時刻における前記セグメント間の相対位置関係を変更することを特徴とする請求項１９記載のオブジェクト形状変形方法。
【請求項２１】
コンピュータグラフィックスにおけるオブジェクト形状の変形を制御するオブジェクト形状変形装置に用いられるプログラムであって、
請求項１８〜２０のいずれか１項に記載の全てのステップをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータグラフィックスにおいて利用されるオブジェクトの形状を変形するオブジェクト形状変形装置に関し、特に、あるオブジェクトから別のオブジェクトへ変形する場合の経路を制御するオブジェクト形状変形装置に関する。
【０００２】
【従来の技術】
コンピュータグラフィックス（以降、「ＣＧ」と称する。）は広く普及しており、ＣＧを利用することによって実現される特殊効果は映像制作において不可欠なものとなっている。あるＣＧオブジェクトから別のＣＧオブジェクトへと形状を滑らかに変形させる技術であるモーフィングは、その代表的な例である。このようなオブジェクトの形状変形に関する従来技術として、特開平８−５５２３３に開示されたコンピュータグラフィックスにおける動作表示生成方法がある。
【０００３】
開示されたコンピュータグラフィックスにおける動作表示生成方法ではまず、オブジェクトを構成する点の第１の時刻及び第２の時刻での変位ベクトルを求める。次に、前記点の第１の時刻での変位ベクトルと第２の時刻での変位ベクトルとの混合の割合を示す混合関数に基づいて、第１の時刻及び第２の時刻間の所定の時刻での変位ベクトルを求め、前記点の所定の時刻における位置ベクトルを求めて表示する。ユーザーはパラメータを制御することにより、混合の割合を変更することができる。
【０００４】
【発明が解決しようとする課題】
しかしながら、上記の従来技術では、混合関数が直流サーボモータシステムや、バネ定数、減衰係数などを用いた複雑な運動方程式で与えられており、ユーザーが関数の意味を理解して、パラメータを直観的に操作することは困難である。更に、例えば人間のようなキャラクタでは、腕や脚などを独立したセグメントとして作成し、それらに階層構造を定義することによって、１体のまとまったオブジェクトを構築する場合が少なくない。上記の従来技術では、そのようなオブジェクトの変形に対応できていない。
【０００５】
そこで、本発明は、上記の課題に鑑みてなされたものであり、一般ユーザーが直観的にパラメータを操作してＣＧオブジェクト形状の変形の経路を変更することが可能なオブジェクト形状変形装置を提供することを目的とする。
【０００６】
更に、本発明は、人間の構造のように階層構造を有するキャラクタであっても、その階層関係を損なわずに形状を変形させることが可能なオブジェクト形状変形装置を提供することをも目的とする。
【０００７】
【課題を解決するための手段】
上記課題を解決するために、本発明に係る請求項１に記載のオブジェクト形状変形装置は、コンピュータグラフィックスにおけるオブジェクト形状の変形を制御するオブジェクト形状変形装置であって、変形前の時刻及び変形後の時刻におけるオブジェクトの形状情報、及びオブジェクトの形状の変形に影響する仮想の力である成長力を制御するためのパラメータの設定を受け付けるユーザーインタフェース手段と、前記設定されたパラメータに基づいて、前記仮想の力を算出する成長力算出手段と、前記算出された成長力を用いて、オブジェクトの変形の経路を決定する成長経路算出手段と、前記算出された変形の経路、及び前記変形前の時刻と前記変形後の間の時間を表すパラメータを用いて所定の時刻における前記オブジェクトの形状を決定するオブジェクト形状決定手段と、形状が決定された前記オブジェクトを表示するオブジェクト表示手段とを備える。
【０００８】
また、本発明に係る請求項２に記載のオブジェクト形状変形装置の前記成長力算出手段は、オブジェクトを構成する各頂点の位置に定義された仮想の質点に作用する力により生じる物理運動を考慮して前記形状の変形に影響する仮想の力を算出することを特徴とする。
【０００９】
また、本発明に係る請求項３に記載のオブジェクト形状変形装置の前記成長経路算出手段は、前記パラメータが前記ユーザーインタフェース手段により変更されて設定された場合に、前記変形の経路を変更することを特徴とする。
【００１０】
また、本発明に係る請求項４に記載のオブジェクト形状変形装置の前記ユーザーインタフェース手段は、１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトの変形前の時刻及び変形後の時刻における形状情報を設定し、前記成長経路算出手段は、前記設定された個々のセグメントについての変形の経路を決定し、前記オブジェクト形状決定手段は、所定の時刻における前記個々のセグメントの形状を決定し、前記オブジェクト形状変形装置は、さらに、前記所定の時刻における前記セグメント間の相対位置関係を決定する変換行列決定手段を備えることを特徴とする。
【００１１】
また、本発明に係る請求項５に記載のオブジェクト形状変形装置の前記変換行列決定手段は、親子の関係にあるセグメントが接続する点を取得し、親であるセグメントを構成する頂点の集合のうち、前記接続する点との距離が最も近い頂点を代表点として選び、所定の時刻における前記代表点の座標より変形前の時刻における前記代表点の位置からの変化の割合を求め、前記親子の関係にあるセグメントの相対位置関係を決定することを特徴とする。
【００１２】
また、本発明に係る請求項６に記載のオブジェクト形状変形装置の前記変換行列決定手段は、親子の関係にあるセグメント同士が接続する点を取得し、親であるセグメントに設定された座標系の原点、及び前記接続された点を通る直線を算出し、前記直線と前記親であるセグメントを構成するポリゴンとの交点を代表点として選び、所定の時刻における前記代表点の座標より変形前の時刻における前記代表点の位置からの変化の割合を求め、前記親子の関係にあるセグメントの相対位置関係を決定することを特徴とする。
【００１３】
また、本発明に係る請求項７に記載のオブジェクト形状変形装置は、さらに、親子の関係にあるセグメントが接続する点を算出する関節点算出手段を備え、前記変換行列決定手段は、前記関節点算出手段により算出された前記接続された点の所定の時刻における座標から、変形前の時刻における前記接続された点の座標における変化の割合を求め、前記親子の関係にあるセグメントの相対位置関係を決定することを特徴とする。
【００１４】
また、本発明に係る請求項８に記載のオブジェクト形状変形装置の前記変換行列決定手段は、前記関節点算出手段により算出された、変形前の時刻及び変更後の時刻における前記接続された点の位置に仮想の質点を定義し、前記ユーザーインタフェース手段において設定されたパラメータに基づいて前記仮想の質点に作用する仮想の力を算出し、前記算出された仮想の力を用いて前記接続された点の移動の経路を決定し、前記決定された移動の経路を用いて所定の時刻における前記接続された点の座標を算出し、前記算出された接続された点の座標に基づいて、前記親子の関係にあるセグメントの相対位置関係を決定する
ことを特徴とする。
【００１５】
また、本発明に係る請求項９に記載のオブジェクト形状変形装置の前記関節点算出手段は、親子の関係にあるセグメントを包含する図形をそれぞれのセグメントに関して算出し、前記セグメントを包含する図形が重なり合う領域を決定し、前記親子の関係にあるセグメントを構成する頂点のうち、前記重なり合う領域内に存在する頂点を取得し、取得された前記重なり合う領域内に存在する頂点の集合を用いて前記親子の関係にあるセグメントが接続する点を算出することを特徴とする。
【００１６】
また、本発明に係る請求項１０に記載のオブジェクト形状変形装置の前記関節点算出手段は、親子の関係にあるセグメントを構成する頂点のうち、親子の関係にあるセグメント間の距離が最小となる点に位置する頂点を取得し、前記取得された頂点を用いて前記親子の関係にあるセグメントが接続する点を算出することを特徴とする。
【００１７】
また、本発明に係る請求項１１に記載のオブジェクト形状変形装置の前記ユーザーインタフェース手段は、さらに、１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトの変形前の時刻における形状情報と、前記１個以上のセグメントの集合を構成する個々のセグメントの変形後の時刻における形状情報の設定を受け付ける設定部を備え、前記変換行列決定手段は、前記オブジェクト形状決定手段により算出された前記個々のセグメントの形状に基づき、前記変形前の時刻における前記セグメント間の相対位置関係を変更することを特徴とする。
【００１８】
また、本発明に係る請求項１２に記載のオブジェクト形状変形装置の前記ユーザーインタフェース手段は、さらに、変形後の時刻における形状情報を、オブジェクトを構成する個々のセグメントに対して複数個存在する前記変形後の時刻における形状情報の中から選択することを特徴とする。
【００１９】
また、本発明に係る請求項１３に記載のオブジェクト形状変形装置の前記変換行列決定手段は、親子の関係にあるセグメントが接続する点を取得し、前記接続する点の座標を親であるセグメントを構成する頂点を用いて表現し、所定の時刻における前記接続する点の座標を算出し、変形前の時刻における前記接続する点の座標からの変化量に基づき、前記親子の関係にあるセグメントの相対位置関係を変更することを特徴とする。
【００２０】
また、本発明に係る請求項１４に記載のオブジェクト形状変形装置は、さらに、変形前の時刻における、１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトに関して、親子の関係にあるセグメントが接続する点を算出する関節点算出手段を備え、前記変換行列決定手段は、前記関節点算出手段により算出された前記接続する点の所定の時刻における座標から前記変形前の時刻における前記接続する点の座標における変化の割合を求め、前記親子の関係にあるセグメントの相対位置関係を決定することを特徴とする。
【００２１】
また、本発明に係る請求項１５に記載のオブジェクト形状変形装置の前記関節点算出手段は、変形前の時刻における、１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトに関して、親子の関係にあるセグメントを包含する図形をそれぞれのセグメントについて算出し、前記セグメントを包含する図形が重なり合う領域を決定し、前記親子の関係にあるセグメントを構成する頂点のうち、前記重なり合う領域内に存在する頂点を取得し、取得された前記重なり合う領域内に存在する頂点の集合を用いて前記親子の関係にあるセグメントが接続する点を算出することを特徴とする。
【００２２】
また、本発明に係る請求項１６に記載のオブジェクト形状変形装置の前記形状の変形に影響する仮想の力は、線形関数及び定数関数を組み合わせた関数により表現されることを特徴とする。
【００２３】
また、本発明に係る請求項１７に記載のオブジェクト形状変形装置の前記形状の変形に影響する仮想の力を制御するためのパラメータは、前記形状の変形を加速して行なう期間、減速して行なう期間及び一定の速度で行なう期間のそれぞれの比率を制御することを特徴とする。
【００２４】
また、本発明に係る請求項１８に記載のオブジェクト形状変形方法は、コンピュータグラフィックスにおけるオブジェクト形状の変形を制御するためのオブジェクト形状変形方法であって、変形前の時刻及び変形後の時刻におけるオブジェクトの形状情報、及びオブジェクトの形状の変形に影響する仮想の力を制御するためのパラメータの設定を受け付けるユーザーインタフェースステップと、前記設定されたパラメータに基づいて、前記仮想の力を算出する成長力算出ステップと、前記算出された成長力を用いて、オブジェクトの変形の経路を決定する成長経路算出ステップと、前記算出された変形の経路、及び前記変形前の時刻と前記変形後の間の時間を表すパラメータを用いて所定の時刻における前記オブジェクトの形状を決定するオブジェクト形状決定ステップと、形状が決定された前記オブジェクトを表示するオブジェクト表示ステップとを含むことを特徴とする。
【００２５】
また、本発明に係る請求項１９に記載のオブジェクト形状変形方法の前記ユーザーインタフェースステップは、さらに、１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトの変形前の時刻及び変形後の時刻における形状情報の設定を受け付ける設定サブステップを含み、前記成長経路算出ステップは、設定された個々のセグメントの変形の経路を決定し、前記オブジェクト形状決定ステップは、所定の時刻における前記個々のセグメントの形状を決定し、さらに、前記所定の時刻における前記セグメント間の相対位置関係を決定する変換行列決定ステップとを含むことを特徴とする。
【００２６】
また、本発明に係る請求項２０に記載のオブジェクト形状変形方法の前記ユーザーインタフェースステップは、さらに、１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトの変形前の時刻における形状情報と、前記１個以上のセグメントの集合を構成する個々のセグメントの、変形後の時刻における形状情報の設定を受け付ける設定サブステップを含み、前記変換行列決定ステップは、オブジェクト形状決定ステップにより算出された前記個々のセグメントの形状に基づき、前記変更前の時刻における前記セグメント間の相対位置関係を変更することを特徴とする。
【００２７】
また、本発明に係る請求項２１に記載のプログラムは、コンピュータグラフィックスにおけるオブジェクト形状の変形を制御するオブジェクト形状変形装置に用いられるプログラムであって、請求項１８〜２０のいずれか１項に記載の全てのステップをコンピュータに実行させることを特徴とする。
【００２８】
【発明の実施の形態】
（実施の形態１）
以下、本発明に係る実施の形態１におけるオブジェクト形状変形装置を、図面を用いて説明する。なお、本実施の形態１では、オブジェクト形状として、人間のような３次元ＣＧキャラクタを例に挙げて説明するが、本発明は任意のオブジェクトに対して適用可能である。また、本実施の形態１で用いるキャラクタはワンスキンのポリゴンモデルで構成されているものとする。
【００２９】
図１は、本実施の形態１におけるオブジェクト形状変形装置の構成の一例を示す図である。
本実施の形態に係るオブジェクト形状変形装置１０は、ユーザーインタフェース部１００、成長力算出部１１０、成長経路算出部１２０、オブジェクト形状決定部１３０、及びオブジェクト表示部１４０により構成される。
【００３０】
ユーザーインタフェース部１００では、形状変形前の形状データを表すソースオブジェクト形状情報１５０、変形後の形状データを表すデスティネーションオブジェクト形状情報１６０、及び変形の経路をコントロールするためのコントロールパラメータ１７０をユーザーが設定する。ユーザーインタフェース部の一例を図２に示す。図２に示されたインタフェース部２００は、オブジェクト形状情報入力部２１０、パラメータコントロール部２２０及び、オブジェクト表示部２３０より構成される。
【００３１】
オブジェクト形状情報入力部２１０では、まず、ユーザーから変形前のオブジェクト（以降、「ソースオブジェクト」と称する。）及び、変形後のオブジェクト（以降、「デスティネーションオブジェクト」と称する）の指定を受け付ける。オブジェクトの指定は、エディットボックスにオブジェクトのデータ名（またはファイル名）を入力する方法で行なっても良いし、例えばファイルダイアログ表示ボタンを用意しておき、ファイルダイアログから所望のオブジェクトファイルを指定する方法で行なっても良い。次に、パラメータコントロール部２２０において、形状変形の経路をコントロールするパラメータの設定を受け付ける。
【００３２】
図２において、７個あるスライダーバーのうち、スライダーバー２２１は、時間的なパラメータ、すなわちソースオブジェクトからデスティネーションオブジェクトへの形状変形の度合いを表すパラメータをコントロールするスライダーバーである。従って、スライダーバーが０の位置にある状態はソースオブジェクトであることを表し、１の位置にある状態はデスティネーションオブジェクトであることを表す。０及び１の中間にある状態は、変形途中のオブジェクト（以降、「モーフィングオブジェクト」と称する。）であることを表す。一方、スライダーバー２２２は、変形の経路をコントロールするものである。各スライダーバーの役割に関しては後述する。なお、図２では、パラメータコントロール部２２０を、スライダーバーを用いて表現したが、エディットボックスを用意しておき、値を直接入力する方法で設定しても良いし、これらを共に備えていても良い。また、本実施の形態１では、図２においてスライダーバー２２２が６個設置されているが、これは後述する成長力算出部１１０の処理方法に依存するため、その個数は特に限定しない。オブジェクト表示部２３０は、オブジェクト表示部１４０（説明は後述）で処理されたオブジェクトの２次元映像を表示する。
【００３３】
成長力算出部１１０では、ユーザーインタフェース部１００において設定されたオブジェクト及びコントロールパラメータを用いて、ソースオブジェクトからデスティネーションオブジェクトへと形状を変形させるための仮想の力（以降、「成長力」と称する。）を算出する。なお、本実施の形態１で用いられるソースオブジェクトとデスティネーションオブジェクトを構成する頂点間の対応はなんらかの方法であらかじめ決定されているものとするが、決定方法については特に限定しない。成長力は、パラメータコントロール部２２２で設定されたパラメータにより時間的なパラメータの関数として一意に決定される。以下、成長力を表す関数（以降、「成長力関数」と称する。）の算出方法について説明する。
【００３４】
成長力関数の算出方法を説明するために、まず質点系の物理運動について考える。図３に示すように、時刻ｔ＝０においてＰｓ＝（ｘｓ，ｙｓ，ｚｓ）にある質点Ｍ（質量ｍ）がｔ＝１においてＰｄ＝（ｘｄ，ｙｄ，ｚｄ）に移動する運動を考える。ｔ＝０及びｔ＝１における質点の速度が０であると仮定し、Ｙ軸負の方向に重力ｇが作用する重力場を定義すると、質点に関する以下の運動方程式が成立する。
ｍ＊ａｘ（ｔ）＝Ｆｘ（ｔ），
ｍ＊ａｙ（ｔ）＝Ｆｙ（ｔ）−ｍ＊ｇ，
ｍ＊ａｚ（ｔ）＝Ｆｚ（ｔ）
【００３５】
ここで、ａ（ｔ）＝（ａｘ（ｔ），ａｙ（ｔ），ａｚ（ｔ））は、質点Ｍの時刻ｔにおける加速度であり、Ｆ（ｔ）＝（Ｆｘ（ｔ），Ｆｙ（ｔ），Ｆｚ（ｔ））は、時刻ｔにおいて質点Ｍに作用している力である。また、ｇは重力であり、＊は積を表す。更に、質点Ｍの位置（ｘ（ｔ），ｙ（ｔ），ｚ（ｔ））と速度（ｖｘ（ｔ），ｖｙ（ｔ），ｖｚ（ｔ））に関して以下の式が成立する。以下の式をまとめて拘束式と呼ぶことにする。
（ｘ（０），ｙ（０），ｚ（０））＝（ｘｓ，ｙｓ，ｚｓ），
（ｘ（１），ｙ（１），ｚ（１））＝（ｘｄ，ｙｄ，ｚｄ），
（ｖｘ（０），ｖｙ（０），ｖｚ（０））＝（０，０，０），
（ｖｘ（１），ｖｙ（１），ｖｚ（１））＝（０，０，０）
【００３６】
次に、拘束式を満たすような力Ｆ（ｔ）を求めることを考える。いま、力Ｆ（ｔ）として、Ｆｘ（ｔ）及びＦｚ（ｔ）に関しては図４、Ｆｙ（ｔ）に関しては図５に示すような形状の関数を定義する。図４及び図５より、各フェーズにおいて以下の関係が成立する。
（フェーズ１）
Ｆｘ（ｔ）、Ｆｚ（ｔ）：
図４より、Ｆ（ｔ）＝−Ｆ０／α＊ｔ＋Ｆ０となるので、運動方程式より、ａ（ｔ）＝−Ｆ０＊ｔ／（ｍ＊α）＋Ｆ０／ｍである。よって、速度ｖ（ｔ）は、ａ（ｔ）を時間ｔに関して１回積分することにより、ｖ（ｔ）＝−Ｆ０＊ｔ＊ｔ／（２＊ｍ＊α）＋Ｆ０＊ｔ／ｍとなる。更に、ｖ（ｔ）を時刻０からαまで１回積分することにより、フェーズ１における質点Ｍの移動距離Ｐ１は、Ｐ１＝Ｆ０＊α＊α／（３＊ｍ）となる。
【００３７】
Ｆｙ（ｔ）：
図５より、Ｆ（ｔ）＝−（Ｆ０−ｍ＊ｇ）＊ｔ／α＋Ｆ０となるので、運動方程式よりａ（ｔ）＝−（Ｆ０−ｍ＊ｇ）＊ｔ／（ｍ＊α）＋Ｆ０／ｍ−ｇである。Ｆｘ（ｔ）及びＦｚ（ｔ）の場合と同様の方法で算出することにより、移動距離Ｐ１は、Ｐ１＝Ｆ０＊α＊α／（３＊ｍ）−ｇ＊α＊α／３となる。
【００３８】
（フェーズ２）
Ｆｘ（ｔ）、Ｆｚ（ｔ）：
図４より、フェーズ２ではＦ（ｔ）＝０のため、等速運動を行なうことが分かる。従って、フェーズ２における質点の速度ｖ（ｔ）は、時刻ｔ＝αにおける質点の速度ｖ（α）に等しくなり、ｖ（ｔ）＝ｖ（α）＝Ｆ０＊α／（２＊ｍ）となる。フェーズ２における質点Ｍの移動距離Ｐ２は、Ｐ２＝Ｆ０＊α／（２＊ｍ）＊（β−α）となる。
【００３９】
Ｆｙ（ｔ）：
Ｆｘ（ｔ）及びＦｚ（ｔ）と同様に等速運動である。ｖ（ｔ）＝ｖ（α）＝Ｆ０＊α／（２＊ｍ）−ｇ＊α／２より、移動距離Ｐ２は、Ｐ２＝（Ｆ０＊α／（２＊ｍ）−ｇ＊α／２）＊（β−α）となる。
【００４０】
（フェーズ３）
Ｆｘ（ｔ）、Ｆｚ（ｔ）：
ｖ（α）＝Ｆ０＊α／（２＊ｍ）であり、ｖ（１）＝０となることから、フェーズ３における質点の速度ｖ（ｔ）は、ｖ（ｔ）＝−Ｆ０＊α／（２＊ｍ＊（１−β）＊（１−β））＊（ｔ−β）＊（ｔ−β）＋Ｆ０＊α／（２＊ｍ）となる。従って、フェーズ３における移動距離Ｐ３は、ｖ（ｔ）を時刻ｔ＝βから１まで積分することにより、Ｐ３＝−Ｆ０＊α＊（１−β）／（６＊ｍ）＋Ｆ０＊α／（２＊ｍ）−Ｆ０＊α＊β／（２＊ｍ）となる。
【００４１】
Ｆｙ（ｔ）：
Ｆｘ（ｔ）及びＦｚ（ｔ）と同様の計算により、ｖ（ｔ）＝（−Ｆ０＊α／（２＊ｍ＊（１−β）＊（１−β））＋ｇ＊α／（２＊（１−β）＊（１−β）））＊（ｔ−β）＊（ｔ−β）＋Ｆ０＊α／（２＊ｍ）−ｇ＊α／２となるので、移動距離Ｐ３は、Ｐ３＝Ｆ０＊α／（３＊ｍ）−Ｆ０＊α＊β／（３＊ｍ）−ｇ＊α／３＋ｇ＊α＊β／３となる。
【００４２】
以上より、移動距離に関しては次の関係が成立する。
Ｐ１＋Ｐ２＋Ｐ３＝Ｐｄ−Ｐｓ
上式より、α、βが設定されると、Ｆ０が一意に決定されることが分かる。すなわち、ＰｓからＰｄへの移動経路が決定される。
【００４３】
成長力算出部１１０では、オブジェクトのポリゴンを構成する各頂点に質量ｍを有する仮想の質点及びオブジェクトが存在する空間に仮想の重力場（重力加速度：ｇ）を定義する。そして、各頂点に対して、上で述べた処理を行ない、ソースオブジェクトにおける頂点座標からデスティネーションオブジェクトにおける対応点の頂点座標へと移動するためのＦ０（以降、「初期成長力」と称する。）を算出する。その際、図２のスライダーバー２２２を操作することにより、Ｆｘ（ｔ）、Ｆｙ（ｔ）、Ｆｚ（ｔ）の各軸方向の力についてα及びβの値をコントロールすることができる。従って、α、βをコントロールすることにより、初期成長力及び成長力関数の形状を変更することができ、その結果形状変形の経路を変更することが可能となる。
【００４４】
本実施の形態１では、成長力関数として線形関数と定数関数の組み合わせによるものを用い、６個のパラメータα及びβで成長力関数の形状をコントロールする例について述べたが、使用する関数やパラメータの個数は特に限定しない。従って、成長力算出部１１０は一般的には以下のように説明できる。
（１）ｍ個のコントロールパラメータα［０］，α［１］，．．．，α［ｍ−１］と、未決定の変数βにより定義される関数ｆ（α［０］，α［１］，．．．，α［ｍ−１］，β）を成長力関数として定義する。
（２）コントロールパラメータα［０］〜α［ｍ−１］をユーザーが設定する。（３）上述した運動方程式を解き、βを求める。
成長力関数ｆには、（３）の解が存在する任意の関数を用いることができる。また（３）に関して、運動方程式が解析的に解けない場合には、数値解法を用いてもよい。
【００４５】
次に、成長経路算出部１２０及び、オブジェクト形状決定部１３０について説明する。成長経路算出部１２０では、任意の時刻ｔａ（０＜＝ｔａ＜＝１）における各頂点の位置を算出する。解析的には以下の手順に従う。
（１）成長力算出部１１０で算出された初期成長力Ｆ０を用いて、成長力関数Ｆ（ｔ）を定義する。
（２）運動方程式を解き、加速度ａ（ｔ）を算出する。
（３）ａ（ｔ）を時間に関して１回積分することにより、速度ｖ（ｔ）を算出する。
（４）ｖ（ｔ）を時刻０から時刻ｔａまで１回積分することにより、時刻ｔａにおける質点の移動量ｄを算出する。
（５）時刻ｔａにおける各頂点の座標Ｐを、Ｐ＝Ｐｓ＋ｄとして求める。
（１）〜（５）の処理を、オブジェクトを構成するすべての頂点のｘ、ｙ、ｚ軸方向について行なう。
【００４６】
計算機で上記の処理を行なう場合には、問題を離散化し、以下の手順に従う。
（１）時刻０から１を、Ｎ個の区間に分割し、ｔ［ｉ］（ｉ＝０，．．．，Ｎ，ｔ［０］＝０，ｔ［Ｎ］＝１）とする。またΔｔ＝１／Ｎとする。
（２）成長力算出部１１０で算出された初期成長力Ｆ０を用いて、成長力関数Ｆ（ｔ）を定義する。
（３）運動方程式を解き、時刻ｔ［ｉ］における加速度ａ［ｉ］を算出する。
（４）ｖ［ｉ＋１］＝ｖ［ｉ］＋ａ［ｉ］＊Δｔとして時刻ｔ［ｉ＋１］における速度ｖ［ｉ＋１］を算出する。但し、ｖ［０］＝０である。
（５）Ｐ［ｉ＋１］＝Ｐ［ｉ］＋ｖ［ｉ＋１］＊Δｔとして時刻ｔ［ｉ＋１］における頂点の座標Ｐ［ｉ＋１］を算出する。但し、Ｐ［０］＝Ｐｓである。
（６）（２）〜（５）までの手順を繰り返す。
【００４７】
以下では、後者（離散系）の場合についてのみ考える。ユーザーが図２のスライダーバー２２１を操作し、時間的なパラメータが変更されるたびに、設定された時刻ｔ［ｋ］における座標を上記のループ処理を行なって求めるのは、計算の負荷が大きい。そこで、本実施の形態１では、成長経路算出部１２０においてｔ［０］〜ｔ［Ｎ］における各頂点の座標を一度にすべて算出し、結果をテーブルに保存しておく。そして、オブジェクト形状決定部１３０では、時間的なパラメータが設定された場合に、テーブルから設定されたパラメータに該当するデータを取得することで頂点の座標を決定する。具体的には以下の手順に従う。
（１）成長経路算出部１２０において算出された各頂点の座標データＰ［ｉ］（ｉ＝０，．．．，Ｎ）をテーブルとして保存しておく。
（２）時間的なパラメータが変更され、ｔ＝ｔ［ｋ］に設定された時、Ｐ［ｋ］のデータをテーブルより取得する。但し、ｋは０からＮの間のある整数である。
【００４８】
本実施の形態１では、オブジェクト形状決定部１３０を用いることにより、計算負荷の軽減と頂点座標算出の高速化を図るが、記憶領域に制約がある場合や成長経路算出部１２０での処理を高速に実現可能なハードウェアが備えられている場合には使用しなくても良い。
【００４９】
オブジェクト表示部１４０では、一般的な３次元ＣＧの描画処理を行ない、生成されたオブジェクトを表示する。具体的には以下の処理を行なう。
（１）座標変換（モデリング変換、視野変換など）
（２）シェーディング
（３）テクスチャマッピング
最終的に生成された２次元画像は、図２のオブジェクト表示部２３０に表示される。
【００５０】
以下では、本実施の形態１におけるコントロールパラメータの直観的な制御の方法について説明する。前述したように、本実施の形態１では、ユーザーは図２に示されているスライダーバー２２２を操作することにより、図４及び図５のα及びβを変更することが可能である。ユーザーがコントロールパラメータを操作することにより、成長力関数の形状が変化する一例を図６の（ａ）に示す。
【００５１】
まず、図６の（ａ）に関する物理的意味について説明する。成長力関数３１０及び成長力関数３２０は共に、時刻０からαのフェーズで正の値を取り、時刻αからβのフェーズでは０、時刻βから１のフェーズでは負の値を取っている。両者の違いはパラメータα及びβの位置に現れている。成長力関数３１０のパラメータα０及びβ０と、成長力関数３２０のパラメータα１及びβ１を比較すると、α１はα０よりも０に近く、β１はβ０よりも１に近い位置に設定されている。成長力関数が正であることは、頂点の移動が加速されることを意味するので、値が大きければ大きいほど形状が急激に変化することになる。また、成長力関数が負であれば、値が小さければ小さいほど頂点の移動量は急激に減速することになる。従って、図４及び図５のα及びβはそれぞれ、形状が急激に変化する区間と、緩やかに変化する区間を設定するパラメータであると言える。成長力関数３２０の方が成長力関数３１０よりも等速に移動するフェーズが長くなっているため、ソースオブジェクトの頂点位置からデスティネーションオブジェクトの頂点位置へと直線に近い経路で変形することになる。
【００５２】
図６の（ｂ）に、成長力関数３１０及び成長力関数３２０をＦｘ（ｔ）に用いた場合の、ソースオブジェクトにおける頂点Ｐｓからデスティネーションオブジェクトにおける頂点Ｐｄへの変形経路を示す。図６の（ｂ）において、変形経路３３０が成長力関数３１０を用いた場合の経路であり、変形経路３４０が成長力関数３２０を用いた場合の経路である。
【００５３】
ここで、上記成長力関数によってオブジェクトが実際に変形する（成長する）様子について具体的に説明する。
図７（ａ）は、オブジェクトに定義された座標系を説明する図である。図７（ａ）に示されるように、キャラクタの重心位置に原点Ｏを取り、原点より基準面に水平かつ左腕の方向にＸ軸、基準面に鉛直かつ頭部の方向にＹ軸、これらの軸に垂直であり、右手座標系となるようにＺ軸を定義する。このような座標系を定義することにより、頂点のＸ軸及びＺ軸方向の移動が体幹まわりの変形を表し、Ｙ軸方向の移動が高さ、すなわち身長方向の変形を表すことがわかる。従って、ユーザーは、成長力関数Ｆｙ（ｔ）のパラメータα、βを操作することでキャラクタの身長方向の変形をコントロールでき（図７（ｂ）参照）、成長力関数Ｆｘ（ｔ）及びＦｚ（ｔ）のパラメータα、βを操作することで、キャラクタの体幹まわりの変形、すなわち太り具合をコントロールできる（図７（ｃ）参照）ことが直観的に理解できる。
【００５４】
以上のように、本実施の形態１では、少数のパラメータをコントロールすることにより、ＣＧオブジェクトの多様な変形の経路を生成することが可能である。更に、形状変形の経路を制御する指標として、一般的なユーザーにとってもなじみの深い力の概念を用いているため、直観的な操作が容易なオブジェクト形状変形装置となっている。
【００５５】
（実施の形態２）
【００５６】
以下、本発明に係る実施の形態２におけるオブジェクト形状変形装置を、図面を参照しながら説明する。なお、本実施の形態２では、階層構造を有する人間のようなキャラクタを例に挙げて説明するが、本発明は階層構造を有する任意のオブジェクトに対して適用可能である。本実施の形態２で用いるキャラクタオブジェクトは、頭、腕、脚、胴体などがそれぞれ独立したセグメントとして構築され、それらが階層構造に従って連結されたオブジェクトであるとし、ソースオブジェクト及びデスティネーションオブジェクトの階層構造は一致しているものとする。更に、上記実施の形態１と同様に、ここで用いるソースオブジェクト及びデスティネーションオブジェクトについて、各セグメントで頂点間の対応があらかじめ求められているものとする。各セグメントには、それぞれ名称が定義されており、基本的にはソースオブジェクト及びデスティネーションオブジェクトで構造的に同一位置にあるセグメントには同一の名称が用いられるものとするが、その限りではない。異なる名称が用いられている場合には、ソースオブジェクトまたはデスティネーションオブジェクトのいずれか一方に定義されている名称を用いるものとする。
【００５７】
本実施の形態２で用いられるオブジェクトの各セグメントの名称、及び階層構造関係を図９に示す。本オブジェクトは、１５個のセグメントから構成され、各セグメントには名称が定義されている（図９の（ａ））。また、図９の（ａ）に対応して定義された階層構造が図９の（ｂ）に示されており、各セグメントの関節点には局所座標系が定義されている。本実施の形態２では、局所座標系は、図９の（ｂ）のＲｉｇｈｔ　Ｓｈｏｕｌｄｅｒに示されるように、自身の子にあたるセグメントの関節点方向と局所座標系のＺ軸が一致するように、定義されるものとするが、その限りではない。例えば、各セグメントに設置された局所座標系の原点が関節点と一致していない場合には、事前に座標変換を行なうことにより、接続点に一致させる方法が考えられる。図９の（ｂ）において、Ａｊｉ（ｉ、ｊは整数）は、子の局所座標系における表現を親の局所座標系における表現に変換する同次変換行列である。例えば、Ａ１１は、Ｌｅｆｔ　Ｅｌｂｏｗ（Ｌｅｆｔ　Ｌｏｗｅｒ　Ａｒｍ）座標系における表現を、Ｌｅｆｔ　Ｓｈｏｕｌｄｅｒ（Ｌｅｆｔ　Ｕｐｐｅｒ　Ａｒｍ）座標系における表現に変換する同次変換行列である。同次変換行列には、平行移動成分、回転成分、スケーリング成分の３つの要素が含まれているが、本実施の形態２ではオブジェクトの形状変形のみを扱うため、回転成分については考慮しないものとする。すなわち、同次変換行列の回転成分は０か、０でない場合にはソースオブジェクト及びデスティネーションオブジェクトの対応する同次変換行列で同一の値を取るものとする。また、スケーリング成分に関しては、あらかじめセグメントの各頂点の座標に乗じておくことにより、平行移動成分として取り扱うことが可能である。従って、本実施の形態２で用いる同次変換行列では平行移動成分についてのみ考慮する。
【００５８】
図１０は、本実施の形態２におけるオブジェクト形状変形装置の構成の一例を示す図である。オブジェクト形状変形装置５００は、ユーザーインタフェース部５１０及び変換行列決定部５２０を備えている。なお、図１０において、図１と同一のものには同一番号を付し、説明を省略する。
【００５９】
図８は、本実施の形態２におけるユーザーインタフェース部５１０の一例を示した図である。図８のユーザーインタフェース部４００は、図２に示された機能に加えて、セグメント選択部４１０を更に備えている。なお、図８において、図２と同一のものには同一番号を付し、説明を省略する。
【００６０】
本実施の形態２におけるオブジェクトはセグメントの集合で構成されているため、セグメントごとに変形の経路を設定することが可能である。ユーザーは、ソースオブジェクト形状情報１５０、デスティネーションオブジェクト情報１６０を指定した後、セグメント選択部４１０でどのセグメントの変形パラメータを設定するのかを指定する。なお、ソースオブジェクト形状情報１５０及びデスティネーションオブジェクト形状情報１６０には、各セグメントの階層関係及び、セグメント間の相対位置関係を定義する同次変換行列に関する情報も含まれており、これらも同時に読み込んでおく。セグメント選択部４１０には、オブジェクト情報に含まれている各セグメントの名称が登録される。セグメントを設定してから、スライダーバー２２２を操作することにより、ユーザーはそのセグメントに対する変形パラメータを設定する。すべてのセグメントについての設定が終了した後、スライダーバー２２１を操作することで時間パラメータが変化し、オブジェクトの形状が変形する。成長力算出部１１０、成長経路算出部１２０及び、オブジェクト形状決定部１３０は、上記実施の形態１と同様である。
【００６１】
次に、変換行列決定部５２０について説明する。前述したように、本実施の形態２では、各セグメントに対して変形の経路を設定することが可能である。いま、図１１に示すようにＲｉｇｈｔ　Ｌｏｗｅｒ　Ａｒｍの形状を変形することを考える。単にＲｉｇｈｔ　Ｌｏｗｅｒ　Ａｒｍの形状を変形するだけでは、図１１の（ａ）に示すようにＲｉｇｈｔ　ＨａｎｄがＲｉｇｈｔ　Ｌｏｗｅｒ　Ａｒｍから離れてしまう可能性がある。従って、局所座標系間の関係を表す同次変換行列を形状の変形にあわせて修正し、図１１の（ｂ）に示すような状態を生成しなければならない。以下では、同次変換行列の修正方法について述べる。
【００６２】
図１２は、セグメントｉに対応する同次変換行列Ａｉの修正処理の流れを示したフローチャートである。ここで、ソースオブジェクトのセグメントｉに対応する同次変換行列をＡｓｉ、デスティネーションオブジェクトのセグメントｉに対応する同次変換行列をＡｄｉとし、Ａｓｉ、Ａｄｉの平行移動成分をそれぞれ、（ｘｓｉ，ｙｓｉ，ｚｓｉ），（ｘｄｉ，ｙｄｉ，ｚｄｉ）とする。まずソースオブジェクトのセグメントｉについて、その子となるセグメントｊを取得する（Ｓ１００）。そして、Ｓ１１０において、セグメントｊの原点の座標Ｏｊをセグメントｉ局所座標系における表現Ｏｊｉに変換する。Ｓ１２０では、セグメントｉを構成する頂点のうちで、Ｏｊｉとの距離が最小となる点を求め、この頂点を代表点Ｐｓｐ＝（ｘｓｐ，ｙｓｐ，ｚｓｐ）とする。なおここでは、距離が最小となる点を代表点としたが、その決定方法は特に限定しない。例えば、以下の方法で求めた点を代表点とすることができる。
（１）セグメントｉの原点の座標ＯｉとＯｊｉを通る直線の方程式ｌを求める。
（２）セグメントｉを構成するポリゴンのうち、直線ｌと交わり、かつＯｊｉに最も近いポリゴンを算出する。
（３）直線ｌが、３点Ｐｉ０，Ｐｉ１，Ｐｉ２で構成されるポリゴンと交わったとすると、代表点Ｐを、Ｐ＝α＊Ｐｉ０＋β＊Ｐｉ１＋γ＊Ｐｉ２とする。但し、α、β、γは、０＜＝α＜＝１，０＜＝β＜＝１，０＜＝γ＜＝１，α＋β＋γ＝１を満たす実数であり、＊はベクトルと定数の積である。
【００６３】
本実施の形態２では、この代表点の移動に基づき、変換行列Ａｉの修正を行なう。いま時刻ｔにおいてセグメントｉの形状が変形したとする（Ｓ１３０）。Ｓ１４０において、Ｓ１２０で算出した代表点の時刻ｔにおける座標Ｐｃｐ＝（ｘｃｐ，ｙｃｐ，ｚｃｐ）を算出する。そして、Ｓ１５０では、以下の手順に従って時刻ｔにおける変換行列を決定する。ここで、デスティネーションオブジェクトにおける代表点の座標を、Ｐｄｐ＝（ｘｄｐ，ｙｄｐ，ｚｄｐ）とする。
（１）ｘ，ｙ，ｚ成分それぞれにおける変化の割合ｄｘ、ｄｙ、ｄｚを、ｄｘ＝（ｘｃｐ−ｘｓｐ）／（ｘｄｐ−ｘｓｐ），ｄｙ＝（ｙｃｐ−ｙｓｐ）／（ｙｄｐ−ｙｓｐ），ｄｚ＝（ｚｃｐ−ｚｓｐ）／（ｚｄｐ−ｚｓｐ）で求める。
（２）時刻ｔにおける同次変換行列Ａｉの平行移動成分（ｘｉ，ｙｉ，ｚｉ）を、ｘｉ＝（１−ｄｘ）＊ｘｓｉ＋ｄｘ＊ｘｄｉ，ｙｉ＝（１−ｄｙ）＊ｙｓｉ＋ｄｙ＊ｙｄｉ，ｚｉ＝（１−ｄｚ）＊ｚｓｉ＋ｄｚ＊ｚｄｉで求める。
以上の処理を、図９のＲｏｏｔに対応する変換行列から順に子の方へと階層構造を辿ってそれぞれの変換行列に対して行なう。子を持たないセグメントに対応する同次変換行列に関しては処理を行なわない。
【００６４】
以上のように、本実施の形態２では、階層構造を有するオブジェクトに関して、そのオブジェクトを構成するセグメントごとに変形パラメータを設定することのできるユーザーインタフェース部を備えているため、ユーザーはセグメントごとの変形の経路をコントロールすることが可能である。更に、形状が変形することにより、セグメント間の相対位置関係にずれが生じる問題を解決する変換行列決定部を備えている。従って、ユーザーは、それぞれの部位が独立したセグメントとして構築され、それらが階層構造に従って連結された人間キャラクタのようなオブジェクトであっても、変形を容易に制御することが可能である。
【００６５】
（実施の形態３）
以下、本発明に係る実施の形態３におけるオブジェクト形状変形装置を、図面を参照しながら説明する。なお、本実施の形態３で用いるソースオブジェクトは、上記実施の形態２と同様に階層構造を有するキャラクタオブジェクトであるとする（図９参照）。また、各部位の変形に用いられるオブジェクト（以降、「パーツオブジェクト」と称する。）は、それに対応するソースオブジェクトのセグメントと頂点間の対応があらかじめ求められているものとする。
【００６６】
図１５は、本実施の形態３におけるオブジェクト形状変形装置の構成の一例を示す図である。オブジェクト形状変形装置６００は、ソースオブジェクト形状情報１５０、コントロールパラメータ１７０に加えて、パーツオブジェクト形状情報６３０を入力することのできるユーザーインタフェース部６１０を備えている。なお、図１５において、図１と同一のものには同一番号を付し、説明を省略する。
【００６７】
図１６は、本実施の形態３におけるユーザーインタフェース部６１０の一例を示した図である。図１６のユーザーインタフェース部７００は、オブジェクト形状情報入力部７１０及びセグメント・パーツ選択部７２０を備えている。なお、図１６において、図２と同一のものには同一番号を付し、説明を省略する。
【００６８】
パーツオブジェクト形状情報６３０には、ソースオブジェクトを構成する各セグメントの形状変形に利用するパーツオブジェクトの形状情報が格納されている。上記実施の形態２と異なるのは、各パーツオブジェクトの形状データのみが含まれており、階層構造の情報は含まれていないことである。パーツオブジェクト形状情報６３０には、一つのセグメントの変形に利用可能な複数のパーツオブジェクトの情報が含まれていても良いが、すべて頂点間の対応関係は求められている必要がある。また、オブジェクト形状情報入力部７１０には、パーツオブジェクト形状情報を設定する箇所が１箇所しか設けられていないが、特に限定はせず、複数個のパーツオブジェクト形状情報が設定できても良い。セグメント・パーツ選択部７２０では、上記実施の形態２と同様に、まず、変形パラメータを設定するセグメントを設定した後、変形に利用するパーツオブジェクトを選択する。パーツオブジェクト形状情報６３０に、変形に利用可能なパーツオブジェクトが１個しか含まれていない場合には自動的に決定される。図１６は、Ｐａｒｔｓと呼ばれるファイルに格納されているＴｈｉｇｈ＿Ｄｏｇと定義されたパーツオブジェクトのデータを、ソースオブジェクトのＲｉｇｈｔ　Ｔｈｉｇｈセグメントの形状変形に用いる例を示している。ユーザーは各セグメントについて、変形に用いるパーツオブジェクトを指定し、更にスライダーバー２２２を操作することによって、変形の経路を設定することができる。
成長力算出部１１０、成長経路算出部１２０及びオブジェクト形状決定部１３０に関しては、上記実施の形態１と同様である。
【００６９】
以下、変換行列決定部５２０について説明する。本実施の形態３においても、セグメントごとに形状の変形を行なうため、セグメント間の相対位置関係のずれが生じる。従って、ソースオブジェクトに定義されている同次変換行列を変更していく必要がある。なお、上記実施の形態２と同様の理由から、本実施の形態３でも同次変換行列の平行移動成分についてのみ考慮する。
【００７０】
図１７は、ソースオブジェクトのセグメントｉに対応する同次変換行列Ａｉの修正処理の流れを示したフローチャートである。Ｓ２００では、まずソースオブジェクトにおけるセグメントｉの子となるセグメントｊを取得する。次に、Ｓ２１０において、セグメントｊの原点の座標Ｏｊをセグメントｉ局所座標系における表現Ｏｊｉに変換する。以降、Ｏｊｉを「接続点」と称する。Ｓ２２０において、接続点Ｏｊｉの座標を、セグメントｉを構成する頂点を用いて表現する。接続点の表現方法に関しては、それが存在している位置により異なるが、特に限定しない。以下で、３通りの場合について説明する。
【００７１】
ここで、セグメントｉ及びセグメントｊに設置された局所座標系をそれぞれ座標系Ｉ，Ｊとし、ソースオブジェクトにおいて、局所座標系Ｊにおける表現を局所座標系Ｉにおける表現に変換する同次変換行列をＡｓ、Ａｓの平行移動成分を（ｘｓ，ｙｓ，ｚｓ）とする。以上の設定の下で、セグメントｉの形状が変形した場合を考える。
【００７２】
（接続点がセグメントを構成する頂点と一致する場合）（図１３の（ａ））
まず、接続点Ｏｊｉが、セグメントｉを構成する頂点と一致する場合について説明する。いま、接続点Ｏｊｉが、セグメントｉの頂点Ｐｉと一致していたとすると、接続点の座標Ｏｊｉ＝（ｘｓｊｉ，ｙｓｊｉ，ｚｓｊｉ）は、Ｏｊｉ＝Ｐｉとなる。
【００７３】
（接続点がセグメント構成するポリゴン上に存在する場合）（図１３の（ｂ））いま、接続点Ｏｊｉがセグメントｉを構成する１ポリゴン上に存在する場合について説明する。Ｏｊｉが３点Ｐｉ０，Ｐｉ１，Ｐｉ２で構成されるポリゴン上に存在したとする。接続点Ｏｊｉ＝（ｘｓｊｉ，ｙｓｊｉ，ｚｓｊｉ）は、Ｏｊｉ＝α＊Ｐｉ０＋β＊Ｐｉ１＋γ＊Ｐｉ２となる。但し、α、β、γは、０＜＝α＜＝１，０＜＝β＜＝１，０＜＝γ＜＝１，α＋β＋γ＝１を満たす実数であり、＊はベクトルと定数の積である。
【００７４】
（接続点が任意の座標に存在する場合）（図１４）
接続点が上記のいずれにも該当しない場合には、セグメントｉを構成する任意の４頂点を利用して接続点Ｏｊｉの座標を算出する。具体的には以下の手順に従う。
（１）セグメントｉを構成する頂点より、同一平面上にない任意の４頂点を選択する。選択の方法は特に限定しないが、接続点Ｏｊｉと距離的に離れている頂点では以降の処理の誤差が大きくなり、場合によっては正しい座標が得られないことが考えられるので、基本的に距離が近い頂点を選択する方が良い。具体的には以下の方法が考えられる。
（方法１）
（ｉ）Ｏｊｉに距離が最も近く、かつ同一平面上にない４頂点を選ぶ。
（方法２）
（ｉ）Ｏｊｉに距離が最も近いポリゴンを求め、３頂点を選ぶ。
（ｉｉ）（ｉ）で求めた３頂点に隣接する頂点とＯｊｉとの距離を求め、距離が最小であり、かつ３頂点と同一平面上にない頂点を、第４の頂点とする。
（２）選択された４頂点を、Ｐｉ０，Ｐｉ１，Ｐｉ２，Ｐｉ３とする。３本の空間ベクトルｖ０↑＝Ｐｉ１−Ｐｉ０，ｖ１↑＝Ｐｉ２−Ｐｉ０，ｖ２↑＝Ｐｉ３−Ｐｉ０を取る。但し、↑はベクトルを表す。（図１４の（ｂ）参照）
（３）Ｏｊｉを、ｖ０↑、ｖ１↑、ｖ２↑を用いて表す。
Ｏｊｉ＝Ｐｉ０＋α＊ｖ０↑＋β＊ｖ１↑＋γ＊ｖ２↑
但し、α、β、γは実数、＊はベクトルと定数の積を表す。
【００７５】
次に、時刻ｔにおいてセグメントｉの形状変形が生じる（Ｓ２３０）と、その時刻における接続点の座標を算出し、同次変換行列を変更する。Ｓ２２０と対応させて、Ｓ２４０及びＳ２５０における処理を３通りの場合について述べる。
【００７６】
（接続点がセグメントを構成する頂点と一致する場合）（図１３の（ａ））
時刻ｔにおいてセグメントの形状変形が生じ、ＰｉがＰｉｃになったとすると、接続点の座標Ｏｃｊｉ＝（ｘｃｊｉ，ｙｃｊｉ，ｚｃｊｉ）は、Ｏｃｊｉ＝Ｐｉｃである。従って、時刻ｔにおける同次変換行列Ａｃの平行移動成分（ｘｃ，ｙｃ，ｚｃ）は、（ｘｃ，ｙｃ，ｚｃ）＝（ｘｓ＋ｘｃｊｉ−ｘｓｊｉ，ｙｓ＋ｙｃｊｉ−ｙｓｊｉ，ｚｓ＋ｚｃｊｉ−ｚｓｊｉ）となる。
【００７７】
（接続点がセグメント構成するポリゴン上に存在する場合）（図１３の（ｂ））時刻ｔにおいてセグメントの形状変形が生じ、３点Ｐｉ０，Ｐｉ１，Ｐｉ２の座標が、Ｐｉｃ０，Ｐｉｃ１，Ｐｉｃ２になったとすると、接続点Ｏｃｊｉ＝（ｘｃｊｉ，ｙｃｊｉ，ｚｃｊｉ）は、Ｏｃｊｉ＝α＊Ｐｉｃ０＋β＊Ｐｉｃ１＋γ＊Ｐｉｃ２である。従って、時刻ｔにおける同次変換行列Ａｃの平行移動成分は、上の場合と同様にして、（ｘｃ，ｙｃ，ｚｃ）＝（ｘｓ＋ｘｃｊｉ−ｘｓｊｉ，ｙｓ＋ｙｃｊｉ−ｙｓｊｉ，ｚｓ＋ｚｃｊｉ−ｚｓｊｉ）となる。
【００７８】
（接続点が任意の座標に存在する場合）（図１４）
時刻ｔにおいてセグメントの形状変形が生じ、４点Ｐｉ０，Ｐｉ１，Ｐｉ２，Ｐｉ３の座標が、Ｐｉｃ０，Ｐｉｃ１，Ｐｉｃ２，Ｐｉｃ３になったとすると、接続点Ｏｃｊｉ＝（ｘｃｊｉ，ｙｃｊｉ，ｚｃｊｉ）は、３本の空間ベクトルｖｃ０↑＝Ｐｉｃ１−Ｐｉｃ０，ｖｃ１↑＝Ｐｉｃ２−Ｐｉｃ０，ｖｃ２↑＝Ｐｉｃ３−Ｐｉｃ０を用いて、
Ｏｃｊｉ＝Ｐｉｃ０＋α＊ｖｃ０↑＋β＊ｖｃ１↑＋γ＊ｖｃ２↑
と表せる。従って、Ａｃの平行移動成分は、（ｘｃ，ｙｃ，ｚｃ）＝（ｘｓ＋ｘｃｊｉ−ｘｓｊｉ，ｙｓ＋ｙｃｊｉ−ｙｓｊｉ，ｚｓ＋ｚｃｊｉ−ｚｓｊｉ）となる。
【００７９】
以上のように、本実施の形態３では、ソースオブジェクトを構成する各セグメントに対して、形状の変形に利用するパーツオブジェクトを選択可能である。従って、ユーザーは簡単な操作で多様な形状のオブジェクトを生成することが可能である。
【００８０】
（実施の形態４）
以下、本発明に係る実施の形態４におけるオブジェクト形状変形装置を、図面を参照しながら説明する。なお、本実施の形態４では、階層構造を有する人間のようなキャラクタを例に挙げて説明するが、本発明は階層構造を有する任意のオブジェクトに対して適用可能である。本実施の形態４で用いるキャラクタオブジェクトは、頭、腕、脚、胴体などがそれぞれ独立したセグメントとして構築され、それらが階層構造に従って連結されたオブジェクトであるとし、ソースオブジェクト及びデスティネーションオブジェクトの階層構造は一致しているものとする。但し、本実施の形態４では、上記実施の形態２及び上記実施の形態３と異なり、各セグメントに定義された局所座標系の原点は関節点に一致せず、任意の位置に設定されているものとする。図１９の（ａ）はそのようなキャラクタオブジェクトの一例である。図１９の（ｂ）は、親子の関係にあるセグメント間の変換行列を示す一例であり、例えばＡ０１は、Ｒｉｇｈｔ　Ｌｏｗｅｒ　Ａｒｍ座標系における表現をＲｉｇｈｔ　Ｕｐｐｅｒ　Ａｒｍ座標系における表現に変換する同次変換行列である。同次変換行列には、平行移動成分、回転成分、スケーリング成分の３つの要素が含まれているが、上記実施の形態２と同様の理由から、本実施の形態４では平行移動成分についてのみ考慮する。
【００８１】
図１８は、本実施の形態４におけるオブジェクト形状変形装置の構成の一例を示す図である。オブジェクト形状変形装置８００は、図１０に示された機能に加えて、関節点算出部８１０を更に備えている。なお、図１８において、図１０と同一のものには同一番号を付し、説明を省略する。
【００８２】
本実施の形態４におけるオブジェクトについても階層構造を有しているため、各セグメントの形状を変形することによって、親子の関係にあるセグメント間の相対位置関係が変化し、図１１の（ａ）で説明した問題が発生する。この問題を解決するために、オブジェクト形状変形装置８００では、まず関節点算出部８１０において、親子の関係にあるソースセグメントの形状情報を用いて、それらが接続している点（以降、「関節点」と称する。）を仮想的に算出する。以下、関節点の算出方法について説明する。
【００８３】
親子の関係にあるセグメントｉ及びセグメントｊの関節点を算出することを考える（図２０、図２１参照）。関節点算出部８１０では、まずセグメントｉ２１３及びセグメントｊ２１４について、それぞれのセグメントの重心位置Ｇｉ、Ｇｊを中心とし、セグメント全体を包含するような球２１１、２１２を求める（Ｓ３００）。次に、２個の球が重なり合う領域を決定し（Ｓ３１０）、セグメントｉまたはセグメントｊを構成する頂点のうち、決定された領域内に存在する頂点２１６〜２１９を取得する（Ｓ３２０）。そして、上述した処理で得られた頂点の集合について再び重心Ｇ２１５の位置を算出し（Ｓ３３０）、得られた座標をセグメントｉ２１３及びセグメントｊ２１４の関節点と定義する。関節点の座標は各局所座標系で表現しておく。続いて、算出された関節点の座標を、各セグメントを構成する頂点を用いて表現する。例えば関節点を、セグメントｉ２１３を構成する頂点を用いて表現する場合には、以下の手順に従う。ここで関節点をＪｉとする。
（１）セグメントを構成する頂点より、同一平面上にない任意の４点を選択する。選択の方法は特に限定しないが、後述する変換行列決定の処理を考慮すると、関節点に距離的に近い頂点を選ぶ方が良い。
（２）選択された４頂点を、Ｐｉ０，Ｐｉ１，Ｐｉ２，Ｐｉ３とする。３本の空間ベクトルｖ０↑＝Ｐｉ１−Ｐｉ０，ｖ１↑＝Ｐｉ２−Ｐｉ０，ｖ２↑＝Ｐｉ３−Ｐｉ０を取る。但し、↑はベクトルを表す。
（３）Ｊｉを、ｖ０↑、ｖ１↑、ｖ２↑を用いて表す。Ｊｉ＝Ｐｉ０＋α＊ｖ０↑＋β＊ｖ１↑＋γ＊ｖ２↑
但し、α、β、γは実数、＊はベクトルと定数の積を表す。
【００８４】
上述した処理を、セグメントｊ２１４に関しても行なう。なお、ここでは関節点を算出する際に各セグメントを包含する球を用いたが、他の図形、例えば円柱や角柱を用いても良い。また、以上で説明した関節点算出部８１０は、各セグメントに定義された局所座標系の原点が関節点に一致していないソースオブジェクト形状情報１５０、及びパーツオブジェクト形状情報６３０を用いて、上記実施の形態３で説明したような形状変形を実施する場合にも利用することが可能である。但し、関節点と局所座標系の原点が一致していないオブジェクトを用いて形状変形を行ない、変換行列を修正する場合には、着目しているセグメントとその子にあたるセグメント間の関係を表す変換行列だけでなく、その親にあたるセグメントとの関係を表す変換行列についても修正する必要があることに注意を要する。
【００８５】
変換行列決定部５２０では、関節点算出部８１０において算出された関節点の座標を用いて、同次変換行列を修正する。時刻ｔにおいて、セグメントｉ及びセグメントｊがそれぞれに設定されたパラメータによって変形し、関節点算出部８１０において関節点を表現するために選択された４頂点の座標が、Ｐｉｍ０，Ｐｉｍ１，Ｐｉｍ２，Ｐｉｍ３，Ｐｊｍ０，Ｐｊｍ１，Ｐｊｍ２，Ｐｊｍ３であるとする。また、ソースオブジェクト及びデスティネーションオブジェクトにおける上記頂点の座標をそれぞれ、Ｐｉｓ０，Ｐｉｓ１，Ｐｉｓ２，Ｐｉｓ３，Ｐｉｄ０，Ｐｉｄ１，Ｐｉｄ２，Ｐｉｄ３，Ｐｊｓ０，Ｐｊｓ１，Ｐｊｓ２，Ｐｊｓ３，Ｐｊｄ０，Ｐｊｄ１，Ｐｊｄ２，Ｐｊｄ３とする。
【００８６】
（１）各セグメントのソース、デスティネーション、時刻ｔにおける関節点の座標を以下の式で算出する。
Ｊｉｓ＝Ｐｉｓ０＋αｉ＊ｖｉｓ０↑＋βｉ＊ｖｉｓ１↑＋γｉ＊ｖｉｓ２↑Ｊｉｍ＝Ｐｉｍ０＋αｉ＊ｖｉｍ０↑＋βｉ＊ｖｉｍ１↑＋γｉ＊ｖｉｍ２↑Ｊｉｄ＝Ｐｉｄ０＋αｉ＊ｖｉｄ０↑＋βｉ＊ｖｉｄ１↑＋γｉ＊ｖｉｄ２↑Ｊｊｓ＝Ｐｊｓ０＋αｊ＊ｖｊｓ０↑＋βｊ＊ｖｊｓ１↑＋γｊ＊ｖｊｓ２↑Ｊｊｍ＝Ｐｊｍ０＋αｊ＊ｖｊｍ０↑＋βｊ＊ｖｊｍ１↑＋γｊ＊ｖｊｍ２↑Ｊｊｄ＝Ｐｊｄ０＋αｊ＊ｖｊｄ０↑＋βｊ＊ｖｊｄ１↑＋γｊ＊ｖｊｄ２↑
【００８７】
但し、
Ｊｉｓ＝（ｘｉｓ，ｙｉｓ，ｚｉｓ），Ｊｉｍ＝（ｘｉｍ，ｙｉｍ，ｚｉｍ），Ｊｉｄ＝（ｘｉｄ，ｙｉｄ，ｚｉｄ），
Ｊｊｓ＝（ｘｊｓ，ｙｊｓ，ｚｊｓ），Ｊｊｍ＝（ｘｊｍ，ｙｊｍ，ｚｊｍ），Ｊｊｄ＝（ｘｊｄ，ｙｊｄ，ｚｊｄ）
は、それぞれの時刻における関節点の座標である。また、
ｖｉｓ０↑＝Ｐｉｓ１−Ｐｉｓ０，ｖｉｓ１↑＝Ｐｉｓ２−Ｐｉｓ０，ｖｉｓ２↑＝Ｐｉｓ３−Ｐｉｓ０，
ｖｉｍ０↑＝Ｐｉｍ１−Ｐｉｍ０，ｖｉｍ１↑＝Ｐｉｍ２−Ｐｉｍ０，ｖｉｍ２↑＝Ｐｉｍ３−Ｐｉｍ０，
ｖｉｄ０↑＝Ｐｉｄ１−Ｐｉｄ０，ｖｉｄ１↑＝Ｐｉｄ２−Ｐｉｄ０，ｖｉｄ２↑＝Ｐｉｄ３−Ｐｉｄ０，
ｖｊｓ０↑＝Ｐｊｓ１−Ｐｊｓ０，ｖｊｓ１↑＝Ｐｊｓ２−Ｐｊｓ０，ｖｊｓ２↑＝Ｐｊｓ３−Ｐｊｓ０，
ｖｊｍ０↑＝Ｐｊｍ１−Ｐｊｍ０，ｖｊｍ１↑＝Ｐｊｍ２−Ｐｊｍ０，ｖｊｍ２↑＝Ｐｊｍ３−Ｐｊｍ０，
ｖｊｄ０↑＝Ｐｊｄ１−Ｐｊｄ０，ｖｊｄ１↑＝Ｐｊｄ２−Ｐｊｄ０，ｖｊｄ２↑＝Ｐｊｄ３−Ｐｊｄ０
であり、↑はベクトルを表す。更に、αｉ、βｉ、γｉ、αｊ、βｊ、γｊは関節点算出部８１０で得られた定数であり、＊は定数とベクトルの積を表す。
【００８８】
（２）ｘ，ｙ，ｚそれぞれの成分における変化の割合ｄｘ，ｄｙ，ｄｚを、
ｄｘ＝（｜ｘｉｍ−ｘｉｓ｜＋｜ｘｊｍ−ｘｊｓ｜）／（｜ｘｉｄ−ｘｉｓ｜＋｜ｘｊｄ−ｘｊｓ｜），
ｄｙ＝（｜ｙｉｍ−ｙｉｓ｜＋｜ｙｊｍ−ｙｊｓ｜）／（｜ｙｉｄ−ｙｉｓ｜＋｜ｙｊｄ−ｙｊｓ｜），
ｄｚ＝（｜ｚｉｍ−ｚｉｓ｜＋｜ｚｊｍ−ｚｊｓ｜）／（｜ｚｉｄ−ｚｉｓ｜＋｜ｚｊｄ−ｚｊｓ｜）
で求める。ここで、｜・｜は絶対値を表す。
【００８９】
（３）時刻ｔにおける同次変換行列Ａｉの平行移動成分（ｘｉ，ｙｉ，ｚｉ）を、　ｘｉ＝（１−ｄｘ）＊ｘｓｉ＋ｄｘ＊ｘｄｉ，
ｙｉ＝（１−ｄｙ）＊ｙｓｉ＋ｄｙ＊ｙｄｉ，
ｚｉ＝（１−ｄｚ）＊ｚｓｉ＋ｄｚ＊ｚｄｉで求める。但し、（ｘｓｉ，ｙｓｉ，ｚｓｉ）、（ｘｄｉ，ｙｄｉ，ｚｄｉ）はそれぞれ、ソースオブジェクト及びデスティネーションオブジェクトにおけるセグメントｉに対応する同次変換行列Ａｓｉ，Ａｄｉの平行移動成分である。
以上の処理を、Ｒｏｏｔに対応するセグメントから順に子の方へと階層構造を辿りそれぞれの変換行列に対して施す。
【００９０】
次に、上記実施の形態１で説明した方法を用いて、変換行列を修正する方法について述べる。まず、関節点算出部８１０において、親子の関係にあるセグメントｉ及びセグメントｊの関節点の座標を、ソースオブジェクト及びデスティネーションオブジェクトに関して求める。算出された関節点の座標は、セグメントｉ及びセグメントｊに設定された座標系で表現しておく。そして、変換行列決定部５２０では、以下の手順で処理を行なう。
（１）セグメントを構成する頂点に対する処理と同様に、関節点にも仮想の質点を定義し、設定されたα及びβのパラメータを用いて、関節点の成長力を算出する。
（２）上記（１）で算出された関節点の成長力関数を用いて、関節点の変形の経路を算出する。
（３）ある時刻ｔにおけるセグメントｉに設定された座標系で表現された関節点の座標をＪｊｍ＝（ｘｉｍ，ｙｉｍ，ｚｉｍ）、セグメントｊに設定された座標系における座標をＪｊｍ＝（ｘｊｍ，ｙｊｍ，ｚｊｍ）とすると、Ｊｊｍを、セグメントｉに設定された座標系における表現Ｊｊｍ＊＊ｉ＝（ｘｊｍ＊＊ｉ，ｙｊｍ＊＊ｉ，ｚｊｍ＊＊ｉ）に変換する。
（４）同時変換行列Ａｉの平行移動成分（ｘｉ，ｙｉ，ｚｉ）を、ｘｉ＝ｘｉｍ−ｘｊｍ＊＊ｉ，ｙｉ＝ｙｉｍ−ｙｊｍ＊＊ｉ，ｚｉ＝ｚｉｍ−ｚｊｍ＊＊ｉで算出する。
上述した関節点の算出方法は、親子の関係にあるセグメントが重なり合う領域が存在する場合についてのみ適用可能である。
【００９１】
次に、重なり合う領域が存在しない場合における関節点の算出方法について説明する（図２２参照）。
前述の例と同様に、親子の関係にあるセグメントｉ及びセグメントｊの関節点を算出することを考える。ソースオブジェクトの関節点を求める場合の関節点算出部８１０における処理は、以下の手順に従う。
（１）セグメントｉ及びセグメントｊを構成する頂点のうち、距離的に最も近い２個の頂点を求める。
（２）上記（１）で算出されたセグメントｉを構成する頂点の座標をＰｉａ，セグメントｊを構成する頂点の座標をＰｊｂとすると、Ｐｊｂをセグメントｉに設定された座標系における表現に変換する。
（３）上記（２）で変換された頂点の座標をＰｊｂ＊＊ｉ、同次変換行列の平行移動成分をＡｓｉ＝（ｘｓｉ，ｙｓｉ，ｚｓｉ）とし、ＰｉａからＰｊｂへ向かうベクトルｖｓ＝（ｖｓｘ，ｖｓｙ，ｖｓｚ）をｖｓ＝Ａｓｉ−Ｐｉａ＋Ｐｊｂ＊＊ｉで算出する。
（４）関節点Ｊｓｉを、Ｊｓｉ＝Ｐｉａ＋ｖｓ／２で算出する。
上述した処理をセグメントｊに関しても行なう。
【００９２】
また、変換行列決定部５２０では、親子の関係にあるセグメントが重なり合う領域が存在する場合と同様に、ソースオブジェクト及びデスティネーションオブジェクトにおける関節点の座標を算出し、関節点に仮想の質点を定義する。次に、関節点における成長力関数を求めることによって変形の経路を生成する。そして、生成された経路に基づき変換行列を修正する。
【００９３】
以上のように、本実施の形態４では、階層構造を有するオブジェクトに関して、親子の関係にあるセグメントの関節点を算出する関節点算出部を備えているため、各セグメントに定義されている局所座標系の原点が関節点と一致していないオブジェクトを用いた場合でも、ユーザーはセグメントごとの変形の経路をコントロールすることが可能である。
【００９４】
【発明の効果】
以上のように、本発明に係るオブジェクト形状変形装置は、コンピュータグラフィックスにおけるオブジェクト形状の変形を制御するオブジェクト形状変形装置であって、変形前の時刻及び変形後の時刻におけるオブジェクトの形状情報、及びオブジェクトの形状の変形に影響する仮想の力である成長力を制御するためのパラメータの設定を受け付けるユーザーインタフェース手段と、前記設定されたパラメータに基づいて、前記仮想の力を算出する成長力算出手段と、前記算出された成長力を用いて、オブジェクトの変形の経路を決定する成長経路算出手段と、前記算出された変形の経路、及び前記変形前の時刻と前記変形後の間の時間を表すパラメータを用いて所定の時刻における前記オブジェクトの形状を決定するオブジェクト形状決定手段と、形状が決定された前記オブジェクトを表示するオブジェクト表示手段とを備えることを特徴とする。
これにより、ユーザーは直観的にパラメータを操作してオブジェクト形状の変形の経路を変更することが可能となる。
【００９５】
また、本発明に係るオブジェクト形状変形装置の前記ユーザーインタフェース手段は、１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトの変形前の時刻及び変形後の時刻における形状情報を設定し、前記成長経路算出手段は、前記設定された個々のセグメントについての変形の経路を決定し、前記オブジェクト形状決定手段は、所定の時刻における前記個々のセグメントの形状を決定し、前記オブジェクト形状変形装置は、さらに、前記所定の時刻における前記セグメント間の相対位置関係を決定する変換行列決定手段を備えることを特徴とする。
これにより、人間のような階層構造を有するキャラクタであっても、その階層関係を損なわずに形状を変形することが可能となる。
【００９６】
さらに、本発明に係るオブジェクト形状変形装置の前記ユーザーインタフェース手段は、さらに、１個以上のセグメントの集合と前記セグメント間の階層及び相対位置関係により記述されるオブジェクトの変形前の時刻における形状情報と、前記１個以上のセグメントの集合を構成する個々のセグメントの変形後の時刻における形状情報の設定を受け付ける設定部を備え、前記変換行列決定手段は、前記オブジェクト形状決定手段により算出された前記個々のセグメントの形状に基づき、前記変形前の時刻における前記セグメント間の相対位置関係を変更することを特徴とする。
これにより、ユーザーは、オブジェクトを構成する各セグメントに対して、形状の変形に利用するパーツを選択することができる。これにより、簡単な操作で多様なオブジェクトを生成することが可能となる。
【図面の簡単な説明】
【図１】実施の形態１におけるオブジェクト形状変形装置の構成の一例を示す図である。
【図２】実施の形態１におけるユーザーインタフェース部１００の構成の一例を示す図である。
【図３】質点系の物理運動を説明するための図である。
【図４】頂点に作用するＸ軸及びＺ軸方向の成長力関数の一例を示す図である。
【図５】頂点に作用するＹ軸方向の成長力関数の一例を示す図である。
【図６】（ａ）は、異なるパラメータを用いた場合の成長力関数の一例を示す図である。
（ｂ）は、それらを用いた場合の頂点の移動経路を示す図である。
【図７】（ａ）は、オブジェクトに定義された座標系を説明する図である。
（ｂ）は、成長力関数Ｆｙ（ｔ）のパラメータα、βを操作することで、キャラクタを身長方向に変形させた様子を示す図である。
（ｃ）は、成長力関数Ｆｘ（ｔ）及びＦｚ（ｔ）のパラメータα、βを操作することで、キャラクタを体幹まわりに変形させた様子を示す図である。
【図８】実施の形態２における、ユーザーインタフェース部の構成の一例を示す図である。
【図９】（ａ）は、実施の形態２における、オブジェクトを構成する各セグメントの名称を説明する図である。
（ｂ）は、実施の形態２における、オブジェクトの階層構造を説明する図である。
【図１０】実施の形態２における、オブジェクト形状変形装置の構成の一例を示す図である。
【図１１】（ａ）は、階層構造を有するオブジェクトを変形する際に生じる問題点を説明するための図である。
（ｂ）は、その問題点を解決した場合のオブジェクトの変形結果を示す図である。
【図１２】実施の形態２における、変換行列決定部の一連の処理を示すフローチャートである。
【図１３】（ａ）は、接続点が親セグメントを構成する頂点と一致する場合を示す図である。
（ｂ）は、接続点が親セグメントを構成するポリゴン上に存在する場合を示す図である。
【図１４】（ａ）は、接続点が親セグメントを構成する頂点とも一致せず、またポリゴン上にも存在しない場合を示す図である。
（ｂ）は、接続点の座標を、親セグメントを構成する４頂点を用いて表現する方法を説明する図である。
【図１５】実施の形態３における、オブジェクト形状変形装置の構成の一例を示す図である。
【図１６】実施の形態３における、ユーザーインタフェース部の構成の一例を示す図である。
【図１７】実施の形態３における、変換行列決定部の一連の処理を示すフローチャートである。
【図１８】実施の形態４における、オブジェクト形状変形装置の構成の一例を示す図である。
【図１９】（ａ）は、実施の形態４で用いる階層構造を有するオブジェクトの一例である。
（ｂ）は、親子関係にあるセグメント間の変換行列を示す一例である。
【図２０】関節点算出部における関節点を算出する一連の処理を示すフローチャートである。
【図２１】関節点算出部における関節点の算出方法を説明するための図である。
【図２２】重なり合う領域が存在しない場合における関節点の算出方法を説明するための図である。
【符号の説明】
１０、５００、６００、　　オブジェクト形状変形装置
８００
１００、２００、４００、　　ユーザーインタフェース部
５１０、６１０、７００
１１０　　　　　　　　　　　成長力算出部
１２０　　　　　　　　　　　成長経路算出部
１３０　　　　　　　　　　　オブジェクト形状決定部
１４０　　　　　　　　　　　オブジェクト表示部
１５０　　　　　　　　　　　ソースオブジェクト形状情報
１６０　　　　　　　　　　　デスティネーションオブジェクト形状情報
１７０　　　　　　　　　　　コントロールパラメータ
２１０、７１０　　　　　　　オブジェクト形状情報入力部
２２０　　　　　　　　　　　パラメータコントロール部
２２１、２２２　　　　　　　スライダーバー
２３０　　　　　　　　　　　オブジェクト表示部
３１０　　　　　　　　　　　成長力関数１
３２０　　　　　　　　　　　成長力関数２
３３０　　　　　　　　　　　形状変形経路１
３４０　　　　　　　　　　　形状変形経路２
４１０　　　　　　　　　　　セグメント選択部
５２０　　　　　　　　　　　変換行列決定部
６３０　　　　　　　　　　　パーツオブジェクト形状情報
７２０　　　　　　　　　　　セグメント・パーツ選択部
８１０　　　　　　　　　　　関節点算出部
【図１】
2004021866.tif 000003
【図２】
2004021866.tif 000004
【図３】
2004021866.tif 000005
【図４】
2004021866.tif 000006
【図５】
2004021866.tif 000007
【図６】
2004021866.tif 000008
【図７】
2004021866.tif 000009
【図８】
2004021866.tif 000010
【図９】
2004021866.tif 000011
【図１０】
2004021866.tif 000012
【図１１】
2004021866.tif 000013
【図１２】
2004021866.tif 000014
【図１３】
2004021866.tif 000015
【図１４】
2004021866.tif 000016
【図１５】
2004021866.tif 000017
【図１６】
2004021866.tif 000018
【図１７】
2004021866.tif 000019
【図１８】
2004021866.tif 000020
【図１９】
2004021866.tif 000021
【図２０】
2004021866.tif 000022
【図２１】
2004021866.tif 000023
【図２２】
2004021866.tif 000024