(57)【要約】      （修正有）【課題】  織物組織アニメーション表現のためのデータ構造、及びそれを利用した３次元グラフィックデータのレンダリング装置及び方法を提供する。【解決手段】  織物組織の平面メッシュの垂直軸に沿ってグラニュレーションを定義する垂直グラニュレーションフィールドと、織物組織の平面メッシュの水平軸に沿ってグラニュレーションを定義する水平グラニュレーションフィールドと、織物組織の平面メッシュの高さを定義する高さフィールドと、織物組織の平面メッシュの幅を定義する幅フィールドと、織物組織の移動と関連して作用する外力及び内力、力による移動位置、及び織物組織と衝突する客体がある場合、衝突による移動位置の計算に使われる物理的特性値を定義する物理的特性ノードと、を含むことを特徴とする。【選択図】  図３
2005243034.tif 000002
【特許請求の範囲】
【請求項１】
織物組織の平面メッシュの垂直軸に沿ってグラニュレーションを定義する垂直グラニュレーションフィールドと、
前記織物組織の平面メッシュの水平軸に沿ってグラニュレーションを定義する水平グラニュレーションフィールドと、
前記織物組織の平面メッシュの高さを定義する高さフィールドと、
前記織物組織の平面メッシュの幅を定義する幅フィールドと、
前記織物組織の移動と関連して作用する外力及び内力、前記力による移動位置、及び前記織物組織と衝突する客体がある場合、衝突による移動位置の計算に使われる物理的特性値を定義する物理的特性ノードと、を含むことを特徴とする織物組織アニメーション表現のためのデータ構造。
【請求項２】
前記物理的特性ノードは、
前記織物組織に作用する前記外力を計算するために、
重力の計算に使われる重力加速度を定義する重力加速度フィールドと、
空気抵抗力の計算に使われる風速を定義する風速フィールドと、
外部緩衝力の計算に使われる緩衝係数を定義する緩衝係数フィールドと、
前記空気抵抗力の計算に使われる抵抗係数を定義する空気抵抗係数フィールドと、を含むことを特徴とする請求項１に記載の織物組織アニメーション表現のためのデータ構造。
【請求項３】
前記物理的特性ノードは、
前記織物組織に作用する前記内力を計算するために、
前記織物組織の平面メッシュを構成する格子パーチクルを連結しているバネの最大伸長度を定義する最大伸長度フィールドと、
現在位置の格子パーチクルと隣接する格子パーチクルとを連結するバネが持つ抵抗係数を定義する平面力抵抗係数フィールドと、
前記現在位置の格子パーチクルと対角線方向に隣接する格子パーチクルとを連結するバネが持つ抵抗係数を定義する移動変形抵抗係数フィールドと、
前記現在位置の格子パーチクルと上下左右に一つ置きに隣接する格子パーチクルとを連結するバネが持つ抵抗係数を定義する捻れ抵抗係数フィールドと、を含むことを特徴とする請求項１または請求項２に記載の織物組織アニメーション表現のためのデータ構造。
【請求項４】
前記物理的特性ノードは、
前記力による移動位置を計算するための加速度の計算に使われる格子パーチクルの逆質量を定義する逆質量フィールドを含むことを特徴とする請求項１または請求項２に記載の織物組織アニメーション表現のためのデータ構造。
【請求項５】
前記物理的特性ノードは、
前記織物組織の移動位置の計算に使われる時間間隔を定義する時間間隔フィールドを含むことを特徴とする請求項１または請求項２に記載の織物組織アニメーション表現のためのデータ構造。
【請求項６】
前記データ構造は、
前記織物組織の平面メッシュのいずれか１方向のエッジが固定されていることを定義する固定エッジフィールドをさらに含むことを特徴とする請求項１ないし請求項５のいずれか１項に記載の織物組織アニメーション表現のためのデータ構造。
【請求項７】
前記データ構造は、
前記織物組織に客体が衝突する場合、衝突による前記織物組織の移動位置を計算して前記客体の表現に使われる衝突ノードをさらに含むことを特徴とする請求項１ないし請求項６のいずれか１項に記載の織物組織アニメーション表現のためのデータ構造。
【請求項８】
前記衝突ノードは、
前記客体が前記織物組織に衝突する点の移動速度の計算に使われる摩擦係数フィールドと、
前記織物組織に衝突する仮想の客体を定義するキネマチックスノードと、
前記織物組織に衝突する前記客体を実際に表示するのに使われる可視型ノードと、を含むことを特徴とする請求項７に記載の織物組織アニメーション表現のためのデータ構造。
【請求項９】
前記キネマチックスノードはジオメトリーノードを持ち、前記ジオメトリーノードはボックスノード、球形ノード及び円錐台ノードのうち少なくとも一つ以上のノードであることを特徴とする請求項７または請求項８に記載の織物組織アニメーション表現のためのデータ構造。
【請求項１０】
請求項１ないし請求項９のいずれか１項に記載のデータ構造を持つ３次元グラフィックデータからノードを判別し、かつフィールドを解析して構成された場面グラフを出力する解析器と、
前記場面グラフのノード及びフィールドから織物組織アニメーションのための物理量を計算し、計算された物理量を含む場面グラフを出力する計算器と、
前記計算された物理量を含む場面グラフを２次元画像に変換して出力する変換器と、を含むことを特徴とする３次元グラフィックデータのレンダリング装置。
【請求項１１】
前記計算器は、
前記場面グラフで織物ノードを判別する織物判別部と、
前記ノード及びフィールド値によって前記織物メッシュを生成する織物メッシュ生成部と、
前記織物組織に作用する前記外力、前記内力、及び前記外力及び前記内力による移動位置をそれぞれ表す物理量を計算する物理量計算部と、
前記物理量計算部により計算された前記移動位置を前記織物メッシュに適用して前記織物メッシュの構造を変形し、前記物理量を含む場面グラフを出力する織物メッシュ変形部と、を含むことを特徴とする請求項１０に記載の３次元グラフィックデータのレンダリング装置。
【請求項１２】
前記計算器は、
前記織物組織と衝突する客体がある場合、前記衝突する客体を判別する衝突客体判別部と、
前記織物組織と衝突する客体との衝突如何を検査する衝突検査部と、をさらに含み、
前記物理量計算部は、前記織物組織が前記客体との衝突により移動した位置を計算することを特徴とする請求項１１に記載の３次元グラフィックデータのレンダリング装置。
【請求項１３】
前記衝突検査部は、
前記織物組織が、前記キネマチックスノードにより定義された前記仮想の客体と衝突するかどうかを検査することを特徴とする請求項１２に記載の３次元グラフィックデータのレンダリング装置。
【請求項１４】
前記衝突検査部は、
前記織物組織が前記キネマチックスノードにより定義された前記仮想の客体と衝突すれば、衝突する点の位置を検出することを特徴とする請求項１３に記載の３次元グラフィックデータのレンダリング装置。
【請求項１５】
（ａ）請求項１ないし請求項９のいずれか１項に記載のデータ構造を持つ３次元グラフィックデータからノードを判別し、かつフィールドを解析して構成された場面グラフを出力する段階と、
（ｂ）前記場面グラフのノード及びフィールドから織物組織アニメーションのための物理量を計算し、計算された物理量を含む場面グラフを出力する段階と、
（ｃ）前記計算された物理量を含む場面グラフを２次元画像に変換して出力する段階と、を含むことを特徴とする３次元グラフィックデータのレンダリング方法。
【請求項１６】
前記（ｂ）段階は、
（ｂ１）前記場面グラフで織物ノードを判別する段階と、
（ｂ２）前記ノード及びフィールド値によって織物メッシュを生成する段階と、
（ｂ３）前記織物組織に作用する前記外力、前記内力、及び前記外力及び前記内力による前記織物組織の移動位置を計算する段階と、
（ｂ４）前記計算された移動位置を前記織物メッシュに適用して前記織物メッシュの構造を変形する段階と、を含むことを特徴とする請求項１５に記載の３次元グラフィックデータのレンダリング方法。
【請求項１７】
前記（ｂ）段階は、前記（ｂ３）段階前に、
（ｂ５）前記織物組織と衝突する客体がある場合、前記衝突する客体を判別する段階と、
（ｂ６）前記織物組織と衝突する客体との衝突如何を検査する段階と、をさらに含み、
前記（ｂ３）段階は、前記衝突による前記織物組織の移動位置を計算する段階をさらに含むことを特徴とする請求項１６に記載の３次元グラフィックデータのレンダリング方法。
【請求項１８】
前記（ｂ６）段階は、
前記織物組織が前記キネマチックスノードにより定義された前記仮想の客体と衝突するかどうかを検査する段階を含むことを特徴とする請求項１７に記載の３次元グラフィックデータのレンダリング方法。
【請求項１９】
前記（ｂ６）段階は、
前記織物組織が前記キネマチックスノードにより定義された前記仮想の客体と衝突すれば、衝突する点の位置を検出する段階をさらに含むことを特徴とする請求項１８に記載の３次元グラフィックデータのレンダリング方法。
【請求項２０】
請求項１５から請求項１９のいずれか１項に記載の方法を実行するプログラムを記録したことを特徴とするコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は３次元グラフィックデータのレンダリングに係り、特に布のような織物組織(cloth）を持つ物体を自然にリアルタイムでアニメーション表現可能にする織物組織アニメーション表現のためのデータ構造、及びそれを利用した３次元グラフィックデータのレンダリング装置及び方法に関する。
【背景技術】
【０００２】
３次元グラフィックデータを保存しているファイルからデータを判読してそれを画面に出力するためには、判読した３次元グラフィックデータの意味を解析し、これを画面に出力するデータを保存する場所であるビデオメモリに書き込む装置が必要である。通常このような装置を３次元グラフィックレンダリングエンジンという。
【０００３】
一般に、３次元グラフィックデータは、３次元空間上に位置する物体のジオメトリー情報、物体の材質情報、光源の位置と特性に関する情報、経時的な情報の変化情報などを含む。物体のジオメトリー情報には物体を構成する３次元頂点の位置、この頂点の連結情報などがあり、物体等の材質情報には色、表面の光反射度などがある。このような情報は、ユーザーが容易に３次元グラフィックデータを生成、修正できるように直観的または論理的に理解しやすい構造で表現されるが、通常はこれを場面グラフといい、非循環ツリー構造となっている。場面グラフは、物体のジオメトリー情報や材質情報などを含むノードとそれらを垂直的に連結して階層化をなす連結情報とで構成される。すなわち、ノードは場面グラフの基礎的な構成要素である。このようなノードの具体的な特性を定義する部分がフィールドである。
【０００４】
最近になって、３次元グラフィックデータをレンダリングするプロセッサーが高性能となり、これに伴い自然物をさらに高画質で現実感のあるように表現したいという要求が増加している。既存の３次元グラフィック技術は単純な３次元モデルを表してアニメーション表現するものであったが、最近では水、風、煙などの自然界現象を表現し、人の髪の毛、服などの動きを表現して仮想環境に合う演出が自在となり、開発者の想像力が容易に表現可能になってきている。
【０００５】
しかし、布のような織物組織の動きを表現する時は、織物組織が持っている内部の固有特性と実際の自然現象で発生する重力、風、加速度、空気抵抗など外部から加えられる物理的な力を考慮せねばならない。また、織物組織が他の外部物体と衝突した場合にどんな影響を受けてどのように動くかも考慮せねばならない。
【０００６】
近来このような物理法則を鑑みたアニメーション表現方法が多く提案されたが、各方法はそれぞれのフォーマットで作られており、汎用的な３次元グラフィックモデルのレンダリング及びアニメーション表現が不可能であった。また、ユーザーが複雑な物理的特性を鑑みて製作せねばならいために著作が難しく、それぞれのフォーマットで作られているために他のレンダリングや著作道具とは互換性がない。また、一度作ったモデルを再び使用するためには新たに製作せねばならないという再使用の問題があった。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする技術的課題は、ＶＲＭＬ（Virtual Reality Modeling Language：仮想現実具現言語）、ＭＰＥＧ（Moving Picture Expert Group：動画像専門家グループ）と３Ｄ ＭＡＸ、Ｍａｙａなど一般の商用プログラムで、織物組織の自然かつリアルタイムなアニメーションになるように必要な値についてのノード及びフィールドを定義する織物組織アニメーション表現のためのデータ構造を提供することである。
【０００８】
本発明が解決しようとする他の技術的課題は、織物組織アニメーション表現のためのデータ構造を利用して３次元織物組織モデルを２次元画像にレンダリングする３次元グラフィックデータのレンダリング装置及び方法を提供することである。
【課題を解決するための手段】
【０００９】
前記技術的課題を解決するために、本発明による織物組織アニメーション表現のためのデータ構造は、織物組織の平面メッシュの垂直軸に沿ってグラニュレーションを定義する垂直グラニュレーションフィールドと、前記織物組織の平面メッシュの水平軸に沿ってグラニュレーションを定義する水平グラニュレーションフィールドと、前記織物組織の平面メッシュの高さを定義する高さフィールドと、前記織物組織の平面メッシュの幅を定義する幅フィールドと、前記織物組織の移動と関連して作用する外力及び内力、前記力による移動位置、及び前記織物組織と衝突する客体がある場合、衝突による移動位置の計算に使われる物理的特性値を定義する物理的特性ノードと、を含むことを特徴とする。
【００１０】
前記物理的特性ノードは、前記織物組織に作用する前記外力を計算するために、重力の計算に使われる重力加速度を定義する重力加速度フィールドと、空気抵抗力の計算に使われる風速を定義する風速フィールドと、外部緩衝力の計算に使われる緩衝係数を定義する緩衝係数フィールドと、前記空気抵抗力の計算に使われる抵抗係数を定義する空気抵抗係数フィールドと、を含むことが望ましい。
【００１１】
また、前記物理的特性ノードは、前記織物組織に作用する前記内力を計算するために、前記織物組織の平面メッシュを構成する格子パーチクルを連結しているバネの最大伸長度を定義する最大伸長度フィールドと、現在位置の格子パーチクルと上下左右に隣接する格子パーチクルとを連結するバネが持つ抵抗係数を定義する平面力抵抗係数フィールドと、前記現在位置の格子パーチクルと対角線方向に隣接する格子パーチクルとを連結するバネが持つ抵抗係数を定義する移動変形抵抗係数フィールドと、前記現在位置の格子パーチクルと上下左右に一つ置きに隣接する格子パーチクルとを連結するバネが持つ抵抗係数を定義する捻れ抵抗係数フィールドと、を含むことが望ましい。
【００１２】
また、前記物理的特性ノードは、前記力による移動位置を計算するための加速度の計算に使われる格子パーチクルの逆質量を定義する逆質量フィールドを含むことが望ましい。前記物理的特性ノードは、前記織物組織の移動位置の計算に使われる時間間隔を定義する時間間隔フィールドを含むことが望ましい。
【００１３】
前記データ構造は、前記織物組織の平面メッシュのいずれか１方向のエッジが固定されていることを定義する固定エッジフィールドをさらに含みうる。また、前記データ構造は、前記織物組織に客体が衝突する場合、衝突による前記織物組織の移動位置を計算して前記客体の表現に使われる衝突ノードをさらに含むことができる。
【００１４】
前記衝突ノードは、前記客体が前記織物組織に衝突する点の移動速度の計算に使われる摩擦係数フィールドと、前記織物組織に衝突する仮想の客体を定義するキネマチックスノードと、前記織物組織に衝突する前記客体を実際に表示するのに使われる可視型ノードと、を含むことが望ましい。
【００１５】
前記他の技術的課題を解決するために、本発明による３次元グラフィックデータのレンダリング装置は、前記織物組織アニメーション表現のためのデータ構造を持つ３次元グラフィックデータからノードを判別し、かつフィールドを解析して構成された場面グラフを出力する解析器と、前記場面グラフのノード及びフィールドから織物組織アニメーションのための物理量を計算し、計算された物理量を含む場面グラフを出力する計算器と、前記計算された物理量を含む場面グラフを２次元画像に変換して出力する変換器と、を含むことを特徴とする。
【００１６】
前記計算器は、前記場面グラフで織物ノードを判別する織物判別部と、前記ノード及びフィールド値によって前記織物メッシュを生成する織物メッシュ生成部と、前記織物組織に作用する前記外力、前記内力、及び前記外力及び前記内力による移動位置をそれぞれ表す物理量を計算する物理量計算部と、前記物理量計算部により計算された前記移動位置を前記織物メッシュに適用して前記織物メッシュの構造を変形し、前記物理量を含む場面グラフを出力する織物メッシュ変形部と、を含むことを特徴とする。
【００１７】
前記衝突検査部は、前記織物組織が、前記キネマチックスノードにより定義された前記仮想の客体と衝突するかどうかを検査することを特徴とする。また、前記衝突検査部は、前記織物組織が前記キネマチックスノードにより定義された前記仮想の客体と衝突すれば、衝突する点の位置を検出することを特徴とする。
【００１８】
前記他の技術的課題を解決するために、本発明による３次元グラフィックデータのレンダリング方法は、（ａ）前述した織物組織アニメーション表現のためのデータ構造を持つ３次元グラフィックデータからノードを判別し、かつフィールドを解析して構成された場面グラフを出力する段階と、（ｂ）前記場面グラフのノード及びフィールドから織物組織アニメーションのための物理量を計算し、計算された物理量を含む場面グラフを出力する段階と、（ｃ）前記計算された物理量を含む場面グラフを２次元画像に変換して出力する段階と、を含むことを特徴とする。
【発明の効果】
【００１９】
本発明で定義したノードは格子形態の織物組織を３次元グラフィックで生成し、織物組織が内部的に持っている特徴を記述できる。また、織物組織に加えれる重力、風、加速度、空気抵抗などの力と外部剛体が衝突した時に加えらる力とを鑑みて実際のような軟らかい動きを表現することが可能である。また、ノードにある複数のフィールド値を変えるだけで全体的なアニメーションを表現することが可能であるので、誰でも容易にノード及びフィールド値を変えるだけで所望のアニメーションを製作できる。また、フィールド値だけを変えればよいので、いままで使われた補間回路アニメーションに比べてデータ量が少ないという長所もある。特に、３次元グラフィックの表現において標準となっているＶＲＭＬやＭＰＥＧ−４などは、このような織物組織についてのアニメーションを支援していない。しかし、本発明ではこのような標準に合わせてノードを表現することによって互換性を支援し、誰でも容易にノード及びフィールド値のみ変えるだけで所望のアニメーションを製作できる。
【発明を実施するための最良の形態】
【００２０】
以下、添付された図面を参照して本発明の望ましい実施例を詳細に説明する。
まず、織物組織の物理的モデルについて説明する。
図１は織物組織のジオメトリー構造を示したものであり、布のような織物組織物体をモデリングするためには、X.Provotの論文、「Deformation constraints in a mass-spring model to describe rigid cloth behavior」、Grapics Interface’95,pp.147〜158に表されているように、点質量を持つパーチクルで構成された四角形格子構造を使用する。それぞれの点質量は次のように３つの相異なる形態のバネにより隣接した点質量と連結される。
【００２１】
第１に、点質量（ｉ，ｊ）と点質量（ｉ＋１，ｊ）、（ｉ−１，ｊ）、（ｉ，ｊ＋１）、（ｉ，ｊ−１）とを連結するバネ（図１の最も太い実線）は布の骨格構造を指定する。すなわち、このバネは布の平面内での引張力に抵抗する。
【００２２】
第２に、点質量（ｉ，ｊ）と点質量（ｉ＋１，ｊ＋１）、（ｉ−１，ｊ＋１）、（ｉ＋１，ｊ−１）、（ｉ−１，ｊ−１）とを連結するバネ（図１の中間太さの実線）は布の平面内での移動変形に抵抗する。
【００２３】
第３に、点質量（ｉ，ｊ）と点質量（ｉ＋２、ｊ）、（ｉ−２、ｊ）、（ｉ，ｊ＋２）、（ｉ，ｊ−２）とを連結するバネ（図１の最も薄い実線）は布の平面外での捻れに抵抗する。
【００２４】
次いで、それぞれの格子パーチクルに作用する力について説明する。
各格子パーチクルの動きは、数式（１）のようにニュートンの第２運動法則により定義される。
【００２５】
【数１】
2005243034.tif 000003
【００２６】
ここで、 は（ｉ，ｊ）格子パーチクルに属している点質量、Ｋijklは格子パーチクルの空間位置、Ｆijはこのパーチクルに加えられるあらゆる力の和である。
【００２７】
このような力は、内部で発生する力及び外部から加えられる力より構成される。内部で発生する力はバネによって隣接の点質量との連結により定義され、外部から加えられる力は重力、空気抵抗、緩衝作用により定義される。
【００２８】
まず、内力を説明する。
（ｋ，ｌ）インデックスを持つ格子パーチクルの集合をＴ(i,j)とすれば、図１に示すように、（ｋ，ｌ）インデックスでの点質量は、（ｉ，ｊ）インデックスの点質量とバネで連結されている。この場合、（ｉ，ｊ）インデックスの点質量に影響を与える内力
【００２９】
【数２】
2005243034.tif 000004
【００３０】
は次のように計算できる。
【数３】
2005243034.tif 000005
【００３１】
ここで、、Ｋijklは（ｉ，ｊ）と（ｋ，ｌ）でのパーチクル（点質量を含む）とを連結するバネの強度、、Ｌijklは平衡状態でのバネの長さ、、ｒijは空間上で（ｉ，ｊ）インデックスの点質量の位置ベクトル、、ｒklは（ｋ，ｌ）インデックスの点質量の位置ベクトルである。
【００３２】
次いで、外力を説明すれば、外力は重力、外部緩衝力、空気抵抗力及び相対的加速度による力に大別できる。
【００３３】
重力
【００３４】
【数４】
2005243034.tif 000006
【００３５】
は次の数式（３）のように定義される。
【数５】
2005243034.tif 000007
ここで、ｍijは格子パーチクルの質量、ｇは重力加速度である。
外部緩衝力
【００３６】
【数６】
2005243034.tif 000008
は次の数式（４）のように定義される。
【００３７】
【数７】
2005243034.tif 000009
【００３８】
ここで、μは緩衝係数、ｖij≡ｒijは該当格子パーチクル（ｉ，ｊ）の速度である。
空気抵抗力
【００３９】
【数８】
2005243034.tif 000010
【００４０】
は次の数式（５）のように定義される。
【００４１】
【数９】
2005243034.tif 000011
【００４２】
ここで、ｃは抵抗係数、ｎijは該当格子パーチクル（ｉ，ｊ）での法線ベクトル、ｕwは風の速度である。
相対加速度による力
【００４３】
【数１０】
2005243034.tif 000012
【００４４】
は次の数式（６）のように定義される。
【００４５】
【数１１】
2005243034.tif 000013
【００４６】
ここで、ａ0は布の一部の動きが鑑みられた座標系での線形加速度、ω及びεはそれによる角速度及び角加速度である。
内力及び外力を合わせた全体力Ｆijkl（ｔ）は次の数式（７）の通りである。
【００４７】
【数１２】
2005243034.tif 000014
【００４８】
格子パーチクルの移動位置を計算するために、ここでは基本的な数値解析的方法であるオイラー法を使用する。時間ｔで全ての格子パーチクルの空間位置ｒij及び速度ｖijが分かると仮定すれば、短時間経過後、すなわち、時間ｔ＋τで全ての格子パーチクルの位置及び速度を次のような式により計算できる。
【００４９】
【数１３】
2005243034.tif 000015
【００５０】
【数１４】
2005243034.tif 000016
【００５１】
ここで、ｒij及びｖijは、時間ｔで微分可能であると仮定した時に展開されたテイラー級数の第１項及び第２項であるので、ｔ＋τにおける近似値を求めることができる。同様に数式（９）もｔ＋τでの近似値を求めたものである。この式に必要な該当格子点質量での加速度は次のように求めることができる。
【００５２】
【数１５】
2005243034.tif 000017
【００５３】
次いで、織物組織と他の物体との衝突について説明する。
織物組織が次のような物体（所定の形態の剛体：球形（sphear）、円錐台（Ttruncated Cone；シリンダーを含む）、正六面体などを想定できる）と衝突すると仮定する。
【００５４】
この時、次のような２つの機能を行う必要がある。第１に、衝突如何を検査するために織物組織のいずれか一つのパーチクルが衝突する物体中に位置しているかどうかを検出する必要がある。第２に、衝突による移動位置を計算するために織物組織のいずれか一つのパーチクルが衝突する物体の表面に投影される点を探す必要がある。
【００５５】
このような方法によれば、侵入モーメントを検出しなくても織物組織のパーチクルの移動位置を計算できる。
織物組織のパーチクルの位置ｙijが衝突する物体中にある場合、速度ｖijを次のように再計算する。
【００５６】
【数１６】
2005243034.tif 000018
【００５７】
ここで、ｖt及びｖnはパーチクルの位置ｙijでの接線速度及び法線速度成分、ｋfは侵入点での摩擦係数である。この時、必要な値（速度、物体表面に対する法線、摩擦係数）を求めるために物体の表面に対してパーチクル位置を投影し、この投影位置で侵入が発生すると仮定する。
織物組織の全てのパーチクルに対して、オイラー方法によって時間段階での全てのパーチクルの位置を求めれば、時間ｔ＋τでの織物組織のパーチクルの位置ｙijは次のように求めることができる。
【００５８】
【数１７】
2005243034.tif 000019
【００５９】
一方、織物組織アニメーションを表現するためのデータ構造は、ＣｌｏｔｈＡｎｉｍノード、ＣｌｏｔｈＡｎｉｍＰｈｙｓノード及びｃｏｌｌｉｄｅｒｓノードと定義できる。
図１を参照して説明したように、織物組織は点質量を持つパーチクルで構成された四角形格子構造を使用してモデリングし、各格子パーチクルは内力及び外力に影響されて動く。また、球形や正六面体の形態を持つ剛体との衝突に反応して動くこともある。図２は、織物組織を「ｘ−ｚ」座標系で三角形メッシュで表したものである。
【００６０】
ＣｌｏｔｈＡｎｉｍノードは、図２のメッシュ構造の織物組織を表現する格子パーチクルに対するフィールド値と格子パーチクルに加えられる内力、外力、衝突と関連したノード及びフィールド値で構成される。
【００６１】
このようなＣｌｏｔｈＡｎｉｍノードに使われるノード及びフィールド値の一例を図３に示す。
各ＣｌｏｔｈＡｎｉｍノードに使われるフィールドは、ｎｕｍＨＳｅｃｔｉｏｎｓ、ｎｕｍＷＳｅｃｔｉｏｎｓ、ｈｅｉｇｈｔ及びｗｉｄｔｈフィールド、ＣｌｏｔｈＡｎｉｍＰｈｙｓノード、ｃｏｎｓｔｒａｉｎフィールド、ｃｏｌｌｉｄｅｒｓノードを含んでいる。
【００６２】
ｎｕｍＨＳｅｃｔｉｏｎｓフィールドは「ｚ」軸に沿って平面メッシュのグラニュレーションを定義し、ｎｕｍＷＳｅｃｔｉｏｎｓフィールドは「ｘ」軸に沿って平面メッシュのグラニュレーションを定義する。図２でｎｕｍＨＳｅｃｔｉｏｎｓは３、ｎｕｍＷＳｅｃｔｉｏｎｓは５である。ｈｅｉｇｈｔフィールドは「ｚ」軸に沿って平面メッシュの高さを定義する。ｗｉｄｔｈフィールドは「ｘ」軸に沿って平面メッシュの幅を定義する。
ｎｕｍＨＳｅｃｔｉｏｎｓ、ｎｕｍＷＳｅｃｔｉｏｎｓ、ｈｅｉｇｈｔ及びｗｉｄｔｈフィールドにより図２のような織物組織の平面メッシュを構成し、ｈｅｉｇｈｔフィールド値をｎｕｍＨＳｅｃｔｉｏｎｓフィールド値で割った値、及びｗｉｄｔｈフィールド値をｎｕｍＷＳｅｃｔｉｏｎｓフィールド値で割った値は、内力を求めるための数式（２）で初期状態のＬijklである。
【００６３】
ＣｌｏｔｈＡｎｉｍＰｈｙｓノードは、与えられた織物組織についての物理的特性を定義する。このノードは相異なる複数のＣｌｏｔｈＡｎｉｍノード間に共有されることもある。図３でＣｌｏｔｈＡｎｉｍＰｈｙｓがＮＵＬＬである場合にはこのノードに対する値が定義されておらず、内部的にあらかじめ定義された値を使用するという意味である。ＣｌｏｔｈＡｎｉｍＰｈｙｓノードのフィールドについては後述する。
【００６４】
ｃｏｎｓｔｒａｉｎフィールドは「ｌｅｆｔ（左）」、「ｒｉｇｈｔ（右）」、「ｔｏｐ（上）」、「ｂｏｔｔｏｍ（下）」のストリングのうち一つの値を持つ。このフィールドは、四角形織物組織のメッシュで固定されるエッジを定義する。すなわち、「ｌｅｆｔ（左）」と設定すれば、織物組織のメッシュで左側エッジは固定されて動かず、残りのエッジのみ動くことができる。このｃｏｎｓｔｒａｉｎフィールドは、旗が旗竿に固定されてはためくようなアニメーションに使用できる。しかし、図３のように、ｃｏｎｓｔｒａｉｎにストリングが定義されていなければ、固定されるエッジなしにあらゆるエッジが動くことができるということを意味している。
【００６５】
ｃｏｌｌｉｄｅｒｓノードは衝突検査時に考慮されねばならない「Ｋｉｎｅｍａｔｉｃｓ」ノードを持っており、これについては後述する。
【００６６】
前述したように、織物組織の動きは格子パーチクル間の相互内部的な力と外部から加えられる重力、空気抵抗、緩衝作用などの外力により定義される。ＣｌｏｔｈＡｎｉｍＰｈｙｓノードはこのような物理的な特性値を持っている。
【００６７】
このようなＣｌｏｔｈＡｎｉｍＰｈｙｓノードに使われるフィールド値の一例を図４に示す。ＣｌｏｔｈＡｎｉｍＰｈｙｓノードは、ｇｒａｖｉｔｙフィールド、ｗｉｎｄフィールド、ｔｉｍｅＳｔｅｐフィールド、ｄｉｓｓｉｐａｔｉｖｅＣｏｅｆｆフィールド、ｎｏｄｅＭａｓｓＩｎｖフィールド、ａｉｒＲｅｓｉｓｔＣｏｅｆｆフィールド、ｍａｘＥｌｏｎｇａｔｉｏｎフィールド、ｓｔｉｆｆｎｅｓｓＳｔｒｕｃｔＨフィールド、ｓｔｉｆｆｎｅｓｓＳｔｒｕｃｔＷフィールド、ｓｔｉｆｆｎｅｓｓＳｈｅａｒフィールド、ｓｔｉｆｆｎｅｓｓＢｅｎｄＨフィールド及びｓｔｉｆｆｎｅｓｓＢｅｎｄＷフィールドより構成されている。このうち、ｇｒａｖｉｔｙフィールドは重力加速度を定義し、重力の計算に使われる。ｗｉｎｄフィールドは風の速度を定義し、空気抵抗力の計算に使われる。ｔｉｍｅＳｔｅｐフィールドはオイラー方法を解く時に時間間隔τを定義し、格子パーチクルの位置及び速度の計算に使われる。ｄｉｓｓｉｐａｔｉｖｅＣｏｅｆｆフィールドは外部緩衝力を計算するために使われる緩衝係数μを定義する。ｎｏｄｅＭａｓｓＩｎｖフィールドは格子パーチクルでの格子の逆質量ｍ-1を定義し、内力及び外力による加速度の計算に使われる。織物組織の密度が一定であると仮定すれば、各格子の質量は同一であるといえる。ａｉｒＲｅｓｉｓｔＣｏｅｆｆフィールドは空気抵抗を計算するために使用する抵抗係数ｃを定義する。ｍａｘＥｌｏｎｇａｔｉｏｎフィールドは格子パーチクルを連結しているバネの最大伸長度を定義する。バネが過度に伸びた場合には、強制に減る。ｓｔｉｆｆｎｅｓｓＳｔｒｕｃｔＨフィールドは「ｚ」軸と同一軸線上にあるバネの強度を定義する。この値は布の平面内での引張る力に抵抗する。ｓｔｉｆｆｎｅｓｓＳｔｒｕｃｔＷフィールドは「ｘ」軸と同一軸線上にあるバネの強度を定義する。この値は布の平面内での引張る力に抵抗する。ｓｔｉｆｆｎｅｓｓＳｈｅａｒフィールドは対角線方向にパーチクルを連結するバネの強度を定義する。この値は布の平面内での移動変形に対応する。ｓｔｉｆｆｎｅｓｓＢｅｎｄＨフィールドは、「ｚ」軸線上に一つ置きに隣接するパーチクルを連結するバネの強度を定義する。この値は布の平面外からの捻れ力に抵抗する。ｓｔｉｆｆｎｅｓｓＢｅｎｄＷフィールドは「ｘ」軸線上に一つ置きに隣接するパーチクルを連結するバネの強度を定義する。この値は布の平面外での捻れ力に抵抗する。ｓｔｉｆｆｎｅｓｓＳｔｒｕｃｔＨフィールド、ｓｔｉｆｆｎｅｓｓＳｔｒｕｃｔＷフィールド、ｓｔｉｆｆｎｅｓｓＳｈｅａｒフィールド、ｓｔｉｆｆｎｅｓｓＢｅｎｄＨフィールド及びｓｔｉｆｆｎｅｓｓＢｅｎｄＷフィールドは内力を求めるのに使われるＫijklである。
【００６８】
ｃｏｌｌｉｄｅｒｓノードはＣｌｏｔｈＡｎｉｍノードの衝突の定義に使用する。このようなｃｏｌｌｉｄｅｒｓノード及びフィールド値の一例は図５Ａに図示されている。ｃｏｌｌｉｄｅｒｓノードは、ｆｒｉｃｔｉｏｎＣｏｅｆｆフィールド、ｋｉｎｅｍａｔｉｃｓノード及びｖｉｓｉｂｌｅＳｈａｐｅノードより構成される。このうち、ｆｒｉｃｔｉｏｎＣｏｅｆｆフィールドは衝突応答過程で使用する摩擦係数ｋfを定義する。
【００６９】
ｋｉｎｅｍａｔｉｃｓノードはＣｌｏｔｈＡｎｉｍノードと衝突する仮想の客体を定義するために使われる。ｋｉｎｅｍａｔｉｃｓノードの定義方法には２つの方法がある。
第１の方法では、ｋｉｎｅｍａｔｉｃｓノードのＤＥＦ名称をＣｌｏｔｈＡｎｉｍノードにあるｃｏｌｌｉｄｅｒｓノードのフィールドで定義できる。このフィールドでｋｉｎｅｍａｔｉｃｓノードは、ＶＲＭＬ標準に既に定義された２個のｇｅｏｍｅｔｒｙノード（Ｂｏｘ、Ｓｐｈｅｒｅ）、及びＶＲＭＬ標準には定義されていないｇｅｏｍｅｔｒｙノード（ＴｒｕｎｃａｔｅｄＣｏｎｅ）を持つことができる。「Ｓｐｈｅｒｅ」の場合、球の直径が定義されねばならず、ＶＲＭＬ標準で使用するＳｐｈｅｒｅノードと同じ形態である。「Ｂｏｘ」の場合、大きさを定義しなけれならず、ＶＲＭＬ標準で使用するＢｏｘノードと同じ形態である。「ＴｒｕｎｃａｔｅｄＣｏｎｅ」の場合、高さ、上面半径及び下面半径を定義しなければならない。もし、上面半径と下面半径とが同じであれば円筒形態となり、上面半径が０であるか、下面半径が０であれば、円錐形態であると定義される。ＴｒｕｎｃａｔｅｄＣｏｎｅノードの一例を図５Ｂに示す。
【００７０】
他の方法では、ｋｉｎｅｍａｔｉｃｓノードはＣｌｏｔｈＡｎｉｍノードと衝突する仮想の客体を定義するためのＣｌｏｔｈＡｎｉｍＭｏｄｅｌのフィールド値を持つことができる。このようなｋｉｎｅｍａｔｉｃｓノードの一例を図５Ｃに示す。ＣｌｏｔｈＡｎｉｍＭｏｄｅｌは前記ｇｅｏｍｅｔｒｙノードと同じ「Ｓｐｈｅｒｅ」、「Ｂｏｘ」、「ＴｒｕｎｃａｔｅｄＣｏｎｅ」の３つのプリミティブを持つことができる。
【００７１】
ｖｉｓｉｂｌｅＳｈａｐｅノードは、実際織物組織と衝突する客体を画面に示すために使用し、ＶＲＭＬで定義したＳｈａｐｅノードを持つ。
【００７２】
次いで、図６ないし図１３を参照して本発明によるレンダリング装置及び方法を詳細に説明する。
【００７３】
図６は、本発明によるレンダリング装置のブロック図を示したものであり、解析器６１０、計算器６２０及び変換器６３０から主として構成されている。
前記解析器６１０は、前述した織物組織アニメーション表現のためのデータ構造を持つ３次元グラフィックデータＩＮからノードを判別し、フィールドを解析して構成された場面グラフを出力する。
【００７４】
前記計算器６２０は、場面グラフのノード及びフィールドから織物組織アニメーションのための物理量を計算し、計算された物理量を含む場面グラフを出力する。
前記変換器６３０は、前記計算された物理量を含む場面グラフを２次元画像ＯＵＴに変換して出力する。
【００７５】
図７は、図６において解析器６１０のブロック図を示したものであり、ノード判別部７１０、フィールド解析部７２０、文字列及びビット列判別部７３０及び場面グラフ構成部７４０から主として構成されている。解析器６１０の各構成要素の機能は図１０とともに説明する。図１０は、解析器６１０で行われる３次元グラフィックデータの解析過程をフローチャートで示したものである。
【００７６】
ノード判別部７１０は、３次元グラフィックデータＩＮ１からノードを判別する（Ｓ１０００段階）。この時、文字列及びビット列判別部７３０は、ノード判別部７１０から入力されたノードの文字列を解析してノード判別部７１０に出力する。判別されたノードによって、３次元グラフィックデータが物体に関するジオメトリー情報であるかどうか、物体の材質に関する情報であるかどうかが識別できる。次いで、ノード判別部７１０で解析されたノードにフィールドが充填される空間を生成する（Ｓ１０１０段階）。この時、文字列及びビット列判別部７３０は、フィールド解析部７２０から入力されたフィールドの文字列または２進ビット列を解析してその結果をフィールド解析部７２０に出力する。フィールド解析部７２０は、生成されたフィールドが充填される空間に３次元グラフィックデータを解析してフィールド値を充填する（Ｓ１０２０段階）。場面グラフ構成部７４０は、解析されたフィールド値を持つノードを挿入して構成された場面グラフＯＵＴ１を出力する（Ｓ１０３０段階）。この場面グラフは織物組織を構成する格子パーチクルの位置、この格子パーチクルの連結情報などの幾何情報、織物組織の材質に関する情報を含むノードを持っている。次いで、３次元グラフィックデータにさらに解析する必要があるノードがあるかどうかを判定する（Ｓ１０４０段階）。３次元グラフィックデータにさらに解析必要があるノードがあれば、Ｓ１０００段階に戻って解析過程を反復し、さらに解析必要があるノードがなければ、解析過程を終了する。
【００７７】
図８は、図６において計算器６２０のブロック図を示したものであり、織物判別部８１０、織物メッシュ生成部８２０、衝突個体判別部８３０、衝突検査部８４０、物理量計算部８５０及び織物メッシュ変形部８６０から主として構成されている。計算器６２０の各構成要素の機能は図１１とともに説明する。図１１は、計算器６２０で行われる場面グラフの計算過程をフローチャートで示したものである。
【００７８】
織物判別部８１０は、入力された場面グラフＩＮ２で織物ノードを判別する（Ｓ１１００段階）。織物メッシュ生成部８２０は、解析器６１０で解析されたノード及びフィールド値によって織物メッシュを生成する（Ｓ１１１０段階）。次いで、衝突客体判別部８３０は、入力された場面グラフＩＮ２で織物と衝突する客体の有無、すなわち、ｃｏｌｌｉｄｅｒｓノードの有無を判定する（Ｓ１１２０段階）。織物と衝突する客体がなければ、Ｓ１１５０段階に進む。
【００７９】
Ｓ１１２０段階で織物と衝突する客体があれば、ｃｏｌｌｉｄｅｒｓノードの幾何情報を通じて衝突する客体を判別する（Ｓ１１３０段階）。衝突検査部８４０は、衝突する客体が織物と衝突するかどうかを検査する（Ｓ１１４０段階）。ｋｉｎｅｍａｔｉｃｓノードにより定義された仮想の客体が織物と衝突するかどうかを検査する。この時、仮想の客体が織物と衝突すれば、衝突する点の位置を検出する。
【００８０】
その後、物理量計算部８５０は、織物と衝突する客体がある場合には内力、外力、この力による移動位置、衝突による移動位置などの物理量を計算し、織物と衝突する客体がない場合には内力、外力、この力による移動位置などの物理量を計算する（Ｓ１１５０段階）。この時、計算される力及び移動位置は前述した通りである。織物メッシュ変形部８６０は、計算された物理量野に基づいて織物メッシュの構造を変形し、計算された物理量を含む場面グラフを出力する（Ｓ１１６０段階）。その後、織物と衝突する客体がさらにあるかどうかを判定する（Ｓ１１７０段階）。織物と衝突する客体がさらにあれば、Ｓ１１３０段階に戻る。織物と衝突する客体がなければ、さらに計算する必要のあるノードの有無を判定する（Ｓ１１８０段階）。計算する必要のあるノードがあれば、Ｓ１１００段階に戻る。計算する必要のあるノードがなければ、場面グラフの計算過程を終了する。
【００８１】
図９は、図６において変換器６３０のブロック図を示したものであり、材質情報判読部９１０及び客体変換部９２０から主として構成されている。変換器６３０の各構成要素の機能は図１２とともに説明する。図１２は、場面グラフを２次元画像に変換する過程をフローチャートで表したものである。
【００８２】
材質情報判読部９１０は、計算器６２０から入力された場面グラフＩＮ３でノードの材質情報を判読する（Ｓ１２００段階）。例えば、ノードの材質情報にはテクスチャー、透明度などがある。客体変換部９１０は、判読された材質情報を利用して計算された物理量に関する情報を持つ場面グラフを、適切な座標変換を通じて２次元画像ＯＵＴ３に変換して出力する（Ｓ１２１０段階）。次いで、変換する必要のあるノードがさらにあるかどうかを判定する（Ｓ１２２０段階）。変換する必要のあるノードがさらにあれば、Ｓ１２００段階に戻って変換過程を反復する。変換する必要のあるノードがなければ、変換過程を終了する。
【００８３】
図１３は、本発明によって定義されたノード及びフィールドを利用してレンダリング処理した一例を表したものである。図１４は、従来の補間回路ノードを利用してレンダリング処理した一例を表したものである。図１３の一例を表現するためのファイルの大きさは１，５６８バイトであり、図１４の一例を表現するためのファイルの大きさは１，３７５，０６１バイトである。したがって、本発明によってレンダリング処理した方法が、約１／８７６程度でファイルサイズが小さい。
【００８４】
図１５は、本発明によるレンダリング方法を適用して球形客体が織物組織に衝突する場合のアニメーション結果の一例を表したものである。図１５に示すように、球形客体が織物組織に衝突した時に織物組織が「自然にもみくちゃになる」様子を見ることができる。
【００８５】
図１６は、図１５のアニメーションを具現するために使用したｃｏｌｌｉｄｅｒｓノードを表したものである。衝突応答過程中に使われる摩擦係数を定義するためにｆｒｉｃｔｉｏｎＣｏｅｆｆを持っている。また、ｋｉｎｅｍａｔｉｃｓノードはＳｐｈｅｒｅというｇｅｏｍｅｔｒｙノードを持ってもよく、織物ノードと衝突する客体を定義するものである。ｖｉｓｉｂｌｅＳｈａｐｅノードはＡｐｐｅａｒａｎｃｅというａｐｐｅａｒａｎｃｅノード及びＳｐｈｅｒｅというｇｅｏｍｅｔｒｙノードを持っている。ここで、ａｐｐｅａｒａｎｃｅノードは外形に関する情報を持っている。ｍａｔｅｒｉａｌノードは衝突客体の色相情報を持っており、ｔｅｘｔｕｒｅノードのｕｒｌフィールドにイメージの経路を書き込めばイメージが適用される。
【００８６】
図１７は、図１５のアニメーションを具現するために図１６のｃｏｌｌｉｄｅｒｓノードを使用したＣｌｏｔｈＡｎｉｍノードを表したものである。ＣｌｏｔｈＡｎｉｍノードは、ｃｏｌｌｉｄｅｒｓノードを呼び出して織物組織のアニメーション表示を行う。
【００８７】
本発明はコンピュータ可読記録媒体にコンピュータ（情報処理機能を持つ装置をいずれも含む）可読コードとして具現できる。コンピュータ可読記録媒体は、コンピュータシステムによって読取られるデータが保存されるあらゆる記録装置を含む。コンピュータ可読記録装置の例には、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピーディスク、光データ保存装置などがある。
【００８８】
本発明は図面に図示された実施例を参照して説明されたが、これは例示的なものに過ぎず、当業者ならば本発明の範囲を逸脱しないながらも多様な変形及び均等な他の実施例が可能であるという点を理解できる。したがって、本発明の真の技術的保護範囲は特許請求の範囲の技術的思想により決まらねばならない。
【産業上の利用可能性】
【００８９】
本発明は、ＶＲＭＬ、ＭＰＥＧと３Ｄ ＭＡＸ、Ｍａｙａなど一般の商用プログラムで好適に利用される。
【図面の簡単な説明】
【００９０】
【図１】織物組織のジオメトリー構造を示す図面である。
【図２】織物組織を「ｘ−ｚ」座標系で三角形メッシュで示す図面である。
【図３】本発明によるＣｌｏｔｈＡｎｉｍノードに使われるノード及びフィールド値の一例を示す図面である。
【図４】ＣｌｏｔｈＡｎｉｍＰｈｙノード及びフィールド値の一例を示す図面である。
【図５Ａ】ｃｏｌｌｉｄｅｒｓノード及びフィールド値の一例を示す図面である。
【図５Ｂ】ＴｒｕｎｃａｔｅｄＣｏｎｅノード及びフィールド値の一例を示す図面である。
【図５Ｃ】ｋｉｎｅｍａｔｉｃｓノードの一例を図５Ｃに示す図面である。
【図６】本発明による３次元グラフィックデータのレンダリング装置の構成を示すブロック図である。
【図７】図６における解析器の細部ブロック図である。
【図８】図６における計算器の細部ブロック図である。
【図９】図６における変換器の細部ブロック図である。
【図１０】本発明によるレンダリング方法において、３次元グラフィックデータの解析過程を示すフローチャートである。
【図１１】本発明によるレンダリング方法において、計算過程を示すフローチャートである。
【図１２】本発明によるレンダリング方法において、計算された物理量を含む場面グラフを２次元画像に変換する過程を示すフローチャートである。
【図１３】本発明によって定義されたノード及びフィールドを利用してレンダリング処理した例を示す図面である。
【図１４】従来の補間回路ノードを利用してレンダリング処理した例を示す図面である。
【図１５】本発明によるレンダリング方法を適用して球形客体が織物に衝突した場合のアニメーション結果の一例を示す図面である。
【図１６】図１５を具現するために使われたｃｏｌｌｉｄｅｒｓノードを示す図面である。
【図１７】図１５を具現するために使われたＣｌｏｔｈＡｎｉｍノードを示す図面である。
【図１】
2005243034.tif 000020
【図２】
2005243034.tif 000021
【図３】
2005243034.tif 000022
【図４】
2005243034.tif 000023
【図５Ａ】
2005243034.tif 000024
【図５Ｂ】
2005243034.tif 000025
【図５Ｃ】
2005243034.tif 000026
【図６】
2005243034.tif 000027
【図７】
2005243034.tif 000028
【図８】
2005243034.tif 000029
【図９】
2005243034.tif 000030
【図１０】
2005243034.tif 000031
【図１１】
2005243034.tif 000032
【図１２】
2005243034.tif 000033
【図１６】
2005243034.tif 000034
【図１７】
2005243034.tif 000035
【図１３】
2005243034.tif 000036
【図１４】
2005243034.tif 000037
【図１５】
2005243034.tif 000038