(57)【特許請求の範囲】
【請求項１】
コンピュータの処理ユニットによって、アニメーションシーケンスで移動する3Dジオメトリを圧縮する方法であって、該方法は、
アニメーションシーケンス内の一連の3Dメッシュを定義するジオメトリストリームを受け取るステップであって、前記一連の3Dメッシュを表すために、3D空間におけるオブジェクトをモデリングするための離散的時間での3Dの頂点位置のマトリックスが用いられ、前記3Dの頂点位置は、前記一連の3Dメッシュ間を動き、前記アニメーションシーケンス内の前記オブジェクトの動きのシミュレーションを行うステップと、
前記ジオメトリストリームを符号化するステップであって、
アニメーションシーケンス内の一連のカレントメッシュの位置に近似化するようにベースジオメトリックメッシュを変換するジオメトリック変換を決定するステップであって、前記ジオメトリック変換は、動きモデルに従うメッシュ変換を含むステップと、
変換されたベースメッシュを決定する前記ジオメトリック変換に従い前記ベースメッシュを変換するステップと、
前記変換されたベースメッシュの要素とカレントメッシュの対応する要素との間の差分として残余を決定するステップと、
残余、ベースメッシュおよびジオメトリック変換を符号化するステップとを含むステップとを備えることを特徴とする方法。
【請求項２】
請求項１に記載の方法において、さらに、
ジオメトリック変換を量子化するステップと、
ジオメトリック変換を量子化解除するステップと、
ベースメッシュを量子化するステップと、
ベースメッシュを量子化解除するステップとを含み、
前記変換するステップは、量子化解除ベースメッシュを量子化解除変換で変換して変換ベースメッシュを計算することを含むことを特徴とする方法。
【請求項３】
請求項１に記載の方法において、さらに、1つ以上の一連の後続メッシュの各々に対して、
前記アニメーションシーケンス内の前記後続メッシュの位置を近似化するためのジオメトリック変換を決定するステップと、
前記後続メッシュの残余を決定するステップと、
前記後続メッシュの前記残余と前記後続メッシュを近似化するための前記ジオメトリック変換を符号化するステップであって、１つ以上の後続メッシュの各々に対する前記ベースメッシュは、残余と先行メッシュの変換ベースメッシュから再構築されたメッシュであるステップとを含むことを特徴とする方法。
【請求項４】
コンピュータの処理ユニットによって、アニメーションシーケンスで移動する3Dジオメトリを圧縮する方法であって、該方法は、
アニメーションシーケンス内の一連の3Dメッシュを定義するジオメトリストリームを受け取るステップであって、前記一連の3Dメッシュを表すために、3D空間におけるオブジェクトをモデリングするための離散的時間での3Dの頂点位置のマトリックスが用いられ、前記3Dの頂点位置は、前記一連の3Dメッシュ間を動き、前記アニメーションシーケンス内の前記オブジェクトの動きのシミュレーションを行うステップと、
前記ジオメトリストリームを符号化するステップであって、
前記アニメーションシーケンス内の一連のカレントメッシュの位置に近似化するようにベースメッシュを変換するジオメトリック変換を決定するステップであって、前記ジオメトリック変換は、動きモデルに従うメッシュ変換を含むステップと、
変換されたカレントメッシュを決定する逆ジオメトリック変換に従い前記カレントメッシュを変換するステップと、
前記変換されたカレントメッシュと前記ベースメッシュとの間の残余を決定するステップと、
残余、ベースメッシュおよびジオメトリック変換を符号化するステップとを含むステップとを備えることを特徴とする方法。
【請求項５】
請求項１又は請求項４に記載の方法において、前記残余を符号化するステップは、前記残余を表すマトリックスの行または列で行または列予測を使用して残余を符号化することを特徴とする方法。
【請求項６】
請求項１又は請求項４に記載の方法において、前記残余を符号化するステップは、前記残余を表すマトリックスを基底ベクトルと重みに分解することを特徴とする方法。
【請求項７】
請求項６に記載の方法において、前記残余を符号化するステップは、重みで行または列予測を実行することをさらに含むことを特徴とする方法。
【請求項８】
請求項４に記載の方法において、前記残余は、前記変換されたカレントメッシュの要素と前記ベースメッシュの対応する要素との間の差分を表し、該方法は、さらに、
ジオメトリック変換を、カレントタイムサンプルのモデリングおよびカメラ変換と結合するステップを含むことを特徴とする方法。
【請求項９】
コンピュータの処理ユニットによって、アニメーションシーケンスで移動する3Dジオメトリを復号化する方法であって、該方法は、
アニメーションシーケンス内の一連の3Dメッシュを定義するジオメトリストリームのための符号化されたデータを受け取るステップであって、前記一連の3Dメッシュを表すために、3D空間におけるオブジェクトをモデリングするための離散的時間での3Dの頂点位置のマトリックスが用いられ、前記3Dの頂点位置は、前記一連の3Dメッシュ間を動き、前記アニメーションシーケンス内の前記オブジェクトの動きのシミュレーションを行うステップと、
前記符号化されたデータを用いて前記ジオメトリストリームを復号化するステップであって、
前記アニメーションシーケンス内のオブジェクトのジオメトリを表しているベースメッシュを復号化するステップと、
アニメーションシーケンスにおける特定のタイムサンプルに対して、ジオメトリック変換パラメータの集合を復号化するステップであって、前記ジオメトリック変換パラメータは、ジオメトリック変換を指定して、前記ベースメッシュを変換して前記アニメーションシーケンス内の一連のカレントメッシュの位置に近似化し、前記ジオメトリック変換は、動きモデルに従うメッシュ変換を含むステップと、
前記特定のタイムサンプルの残余が、前記カレントメッシュと、前記ジオメトリック変換パラメータの集合によって変換された前記特定のタイムサンプルの前記ベースメッシュとの間の差分を表す、前記特定のタイムサンプルの符号化残余を復号化するステップと、
前記特定のタイムサンプルの前記カレントメッシュを、再構築するステップであって、
前記特定のタイムサンプルに対応する復号化された前記ジオメトリック変換パラメータの集合を前記ベースメッシュに適用することと、
前記復号化された残余を前記変換されたベースメッシュに追加することとを含むステップとを含むステップとを備えることを特徴とする方法。
【請求項１０】
コンピュータの処理ユニットによって、アニメーションシーケンスで移動する3Dジオメトリを復号化する方法であって、該方法は、
アニメーションシーケンス内の一連の3Dメッシュを定義するジオメトリストリームのための符号化されたデータを受け取るステップであって、前記一連の3Dメッシュを表すために、3D空間におけるオブジェクトをモデリングするための離散的時間での3Dの頂点位置のマトリックスが用いられ、前記3Dの頂点位置は、前記一連の3Dメッシュ間を動き、前記アニメーションシーケンス内の前記オブジェクトの動きのシミュレーションを行うステップと、
前記符号化されたデータを用いて前記ジオメトリストリームを復号化するステップであって、
前記アニメーションシーケンス内の前記オブジェクトのジオメトリを表しているベースメッシュを復号化するステップと、
アニメーションシーケンスにおける特定のタイムサンプルに対して、ジオメトリック変換パラメータの集合を復号化するステップであって、前記ジオメトリック変換パラメータは、ジオメトリック変換を指定して、前記ベースメッシュを変換して前記アニメーションシーケンス内の一連のカレントメッシュの位置に近似化し、前記ジオメトリック変換は、動きモデルに従うメッシュ変換を含むステップと、
前記特定のタイムサンプルの残余が、前記ベースメッシュと、逆ジオメトリック変換パラメータの集合によって変換された前記特定のタイムサンプルの前記カレントメッシュとの間の差分を表す、前記特定のタイムサンプルの符号化残余を復号化するステップと、
前記特定のタイムサンプルの前記カレントメッシュを、再構築するステップであって、
前記復号化された残余を前記ベースメッシュに追加することと、
前記特定のタイムサンプルに対応する復号化された前記ジオメトリック変換パラメータの集合を前記ベースメッシュに適用することとを含むステップとを含むステップとを備えることを特徴とする方法。
【請求項１１】
請求項１又は請求項４に記載の方法において、前記符号化するステップは、量子化、エントロピコード化、および伝送のためのフォーマッティングを含むことを特徴とする方法。
【請求項１２】
請求項１又は請求項４に記載の方法において、前記ジオメトリック変換を決定するステップは、前記カレントメッシュに近似化するように前記ベースメッシュを変換するための１つ以上の可能なジオメトリック変換を評価することを含むことを特徴とする方法。
【請求項１３】
請求項１２に記載の方法は、前記評価の前に、前記ベースメッシュおよび前記カレントメッシュを単純化することを含むことを特徴とする方法。
【請求項１４】
請求項１、４、９、１０のいずれかに記載の方法において、前記ベースメッシュは、一連の3Dメッシュの最初のメッシュ、一連の3Dメッシュの平均、又は前記アニメーションシーケンスに対して事前に定義されたメッシュであることを特徴とする方法。
【請求項１５】
請求項１、４、９、１０のいずれかに記載の方法において、前記ジオメトリック変換は、１つ以上の剛体の各々に対するアフィン変換を含むことを特徴とする方法。
【請求項１６】
請求項１、４、９、１０のいずれかに記載の方法を実行するための命令を有するコンピュータで読取り可能な媒体。
【請求項１７】
請求項９又は請求項１０に記載の方法において、ジオメトリック変換パラメータの集合を復号化するステップは、ジオメトリック変換パラメータを量子化解除することを含むことを特徴とする方法。
【請求項１８】
請求項９又は請求項１０に記載の方法において、ベースメッシュと符号化残余を復号化するステップは、ベースメッシュと符号化残余を量子化解除することを含むことを特徴とする方法。
【請求項１９】
請求項９に記載の方法において、さらに、1つ以上の一連の後続メッシュの各々に対して、
前記後続メッシュのジオメトリック変換パラメータの集合を復号化するステップと、
前記後続メッシュの符号化された残余を復号化するステップと、
前記後続メッシュを再構築するステップであって、前記１つ以上の後続メッシュ各々を再構築するために使用されるベースメッシュは、再構築バージョンの先行メッシュであるステップを含むことを特徴とする方法。
【請求項２０】
請求項９又は請求項１０に記載の方法において、符号化残余を復号化するステップは、基底ベクトルマトリックスと重みマトリックスから残余マトリックスを再構築することを含むことを特徴とする方法。
【請求項２１】
請求項９又は請求項１０に記載の方法において、符号化残余を復号化するステップは、残余マトリックスの行または列で逆予測を実行することを含み、残余マトリックスの行または列は隣接行または列の対応する要素の間の異なる値から再構築されることを特徴とする方法。
【発明の詳細な説明】
【０００１】
発明の分野
本発明はコンピュータ生成グラフィックスに関し、さらに具体的には、時間依存 (time dependent) ジオメトリック（幾何図形）データの圧縮に関する。
【０００２】
発明の背景
３次元 (3D) グラフィックスでは、移動するオブジェクトは3Dジオメトリックモデル（geometric model−幾何モデルまたは図形モデル）を使用してモデリングされている。これらのモデルは、3D空間におけるオブジェクトの表面を表している表面要素 (surface element) のメッシュの位置を定義している3D座標の集合として表現されているのが代表的である。3Dオブジェクトモデルを含んでいるシーンをレンダリング (rendering) するために、グラフィックスレンダリングパイプライン(graphics rendering pipeline) は、最初に、一連のジオメトリック変換（geometric transformation−図形変換）を実行してモデルをローカル座標空間からシーンのグローバルまたは「ワールド」座標系に変換してから2Dビュー空間のビューイングまたは「カメラ」座標に変換している。次に、変換されたジオメトリとその属性（カラー、陰影など）を出力イメージ（画像、映像など。以下「画像」という）を表すピクセル値の配列に変換している。このプロセスは、オブジェクトモデルがシーンの周りを移動するとき、アニメーションシーケンスの画像フレームごとに繰り返されているのが代表的である。
【０００３】
移動するグラフィカルオブジェクトは時間依存ジオメトリ (time-dependent geometry) の形で表現されている。モデルの3D位置を表しているメッシュは時間の経過と共に移動し、変形して、3Dオブジェクトの動き（モーション）をシミュレートしている。アニメーションで3Dジオメトリの動きを描写するために使用される動きモデル (motion model) にはいくつかがある。比較的単純なオブジェクトは剛体 (rigid body) でジオメトリック変換を使用してモデリングすることができる。しかし、計算能力が向上し、より現実的なアニメーションの要求に伴い、複雑なアニメーションモデルをリアルタイムでプレイバックするようなアプリケーションの要求が高まっている。
【０００４】
Avid Technology, Inc. 提供のSoftimageモデリングツールのような、精巧なオーサリングツール (authoring tool) やモデリングプログラムは、非常に複雑な時間依存ジオメトリを作成する能力を備えている。複雑に移動するジオメトリシーメーンスは、フリーフォーム変形格子 (free-formed deformation lattice)、ジョイントエンベロープ (joint envelope)や物理的シミュレーション、その他の操作によって作ることが可能になっている。アニメーション変換 (animated transformation) による単純な剛体モデル以上のものがリアルタイプアプリケーションに要求されることに伴い、複雑なアニメーションモデルをリアルタイムのパフォーマンスで効率的にストアし、プレイバックする方法を開発することがますます緊急になっている。
【０００５】
オーサリングツールがますます精巧化されていることのほかに、3Dキャプチャシステム (capture system) の進歩により、3Dグラフィックスアプリケーションで使用される時間依存ジオメトリもさらに複雑化することが見込まれている。ここで、「3Dキャプチャ」という用語は、現実モデルのデジタル化3Dモデルを生成するプロセスのことを意味している。現在は、スタチック（静的）ジオメトリ集合はレンジスキャナ (range scanner) で得ている。しかし、レンジスキャナの精度とスピードが向上するのに伴い、大きな時間依存ジオメトリックメッシュのソースが増加している。シミュレーションは、リッチなアニメーションジオメトリを得る別のソースになっている。有限要素 (definite element) 法によると、現実的で複雑なアニメーションが得られるが、リアルタイムで計算するにはコストがかかりすぎる。
【０００６】
複雑な時間依存ジオメトリを得るソースが普及するのに伴い、必要なメモリ量と帯域幅を低減化するために時間依存ジオメトリをもっと効率よくストアし、伝達するための方法に対する要求が高まっている。研究者は、スタチックジオメトリを圧縮する方法を研究している。参考文献として、Michael F. Deering著「ジオメトリック圧縮(Geometric Compression)」(pp. 13-20, SIGGRAPH 95)、Mike M. Chow著「リアルタイムレンダリングのための最適化ジオメトリ圧縮(Optimized Geometry Compression for Real-Time Rendering)」(pp. 347-354, Proceedings of IEEE Visualization, 97)、Stefan Gumhold、Wolfgang Strasser共著「トライアングルメッシュ接続性のリアルタイム圧縮(Real Time Compression of Triangle Mesh Connectivity)」(pp. 133-140, SIGGRAPH 98)、Gabriel Taubin、Jarek Rossignac共著「トポロジカルサージャリによるジオメトリック圧縮(Geometric Compression Through Topological Surgery)」(ACM Transactions on Graphics, Vol. 17, No. 2, April 1998, pp. 84-115)、Gabriel Taubin、Andre Gueziec、William Horn、Francis Lazarus共著「プログレッシブフォレストスプリット圧縮(Progressive Forest Split Compression)」(pp. 123-132, SIGGRAPH 98)、Costa Touma、Crag Gotsman共著「トライアングルメッシュ圧縮(Triangle Mesh Compression)」(Proceedings of Graphics Interface, ’98, pp. 26-34)、およびFrank Bossen（編者）「3Dモデルコーディングでのコア実験の説明(Description of Core Experiments on 3D Mode Coding)」(ISO/IEC JTC!/SC29/WG11 MPEG98/N244rev1, Atlantic City, October 1998)がある。この研究では、スタチックジオメトリの圧縮が対象になっているが、移動する3Dジオメトリストリームを圧縮する方法を開発するには、もっと多くの作業が必要である。
【０００７】
3Dジオメトリの圧縮とは対照的に、静止画像と移動画像圧縮の分野は十分に開発されている。静止画像の圧縮のために使用できる手法には、ランレングス符号化 (run-length encoding)、JPEG符号化などのように、さまざまな手法がある。画像シーケンスの圧縮手法も、MPEG、AVIなどのように多数の手法がある。研究者は、3Dジオメトリを使用してムービー（動画）圧縮を支援する手法も提供している。参考文献としては、Brian K. Guenter、Hee Cheol Yun、Russell M. Mersereau共著「コンピュータアニメーションフレームの動き補償圧縮(Motion Compensated Compression of Computer Animated Frames)」(pp. 297-304, SIGGRAPH ’93)、Mark Levoy著「合成画像のポリゴン支援JPEGおよびMPEG圧縮(Polygon-Assisted JPEG and MPEG Compression of Synthetic Images)」(pp. 21-28, SIGGRAPH ’95)、およびDan S. Wallach、Sharma Kunapalli、Michael F. Cohen共著「ダイナミックポリゴナルシーンの高速MPEG圧縮(Accelerated MPEG Compression of Dynamic Polygonal Scenes)」(pp. 193-197, SIGGRAPH ’94) がある。
【０００８】
ある側面では、従来のグラフィックスレンダリングパイプレインによる手法では、アニメーションオブジェクトが一連のアニメーション変換マトリックスを使用して変換されるスタティックな剛体で表されている場合、アニメーションジオメトリの圧縮が行われている。このケースでは、時間依存ジオメトリックモデルは、剛体を表すシングルメッシュと、時間の経過と共に剛体の動きを記述する一連のアニメーション変換マトリックスにレンダリングされている。このように単純にコヒーレント部分に分割すると、移動するオブジェクトは剛体の階層として構築できるので大きな時間依存アニメーション群の符号化 (encode) が可能になっている。この方法によると、限られたクラスの時間依存ジオメトリは効率よく圧縮されるが、もっと複雑なアニメーションモデルをもっと一般化され、フレキシブルな方法で圧縮するという要求には、十分に応えていない。複雑な動きの形態によっては、剛体の階層および関連変換マトリックスの使用によるシミュレーションに適さないものがある。さらに、モデルによっては、剛体から構築されないものがあり、むしろ、これらのモデルは、オーサリングツールや3Dキャプチャツールのように、ジオメトリが剛体の形で表されていないジオメトリソースから得られている。
【０００９】
発明の概要
本発明は、時間依存ジオメトリおよびアニメーションをコード化 (code) する方法を提供している。本発明の側面は、アニメーション3Dオブジェクトだけでなく、時間以外の次元と共に変化する3Dアニメーションも表している時間依存メッシュのエンコーダ（符号器）およびデコーダ（復号器）で実現されている。これらの手法を使用すると、3Dジオメトリストリームのストアと転送が効率化される。これは、コンピュータシステム内で使用すると、ホストプロセッサまたはストレージデバイスとグラフィックスレンダリングエンジン (graphics rendering engine) との間の帯域幅が低減されるので便利である。また、ローカルエリアネットワーク (local area network − LAN) や広域ネットワーク (wide area network − WAN) 上のコンピュータ相互間の伝送帯域幅を低減する上でも便利である。さらに、これらの手法は、ジオメトリストリームが生成され、符号化され、その後、即時プレイバックのために復号化されるアプリケーションのように、ジオメトリストリームが時間的拘束の中で符号化されるような、ダイナミック圧縮コンテキストで使用すると便利である。
【００１０】
一般的に、本発明の圧縮方法によれば、ジオメトリストリームは、そのストリームの低パラメータモデルを得るように分解し、その残余を符号化することによってコード化されている。圧縮器 (compressor) は、オブジェクトの3D位置を選択したタイムサンプル (selected time samples) で表している時間依存ジオメトリ構造に作用する。具体的には、以下で説明するコーダ (coder) は、アニメーションシーケンス内の一連のタイムサンプルに対するメッシュの3D位置を表している頂点 (vertex) 位置（マトリックスの列）のマトリックスを圧縮することが中心になっている（マトリックスの行は選択したタイムサンプルでのメッシュを表している）。圧縮器 (compressor) は各タイムサンプルのメッシュに近似化し、その近似化メッシュとマトリックスの行からの実際のメッシュとの間の残余 (residual) を復号化 (decode) する。また、圧縮器は、ジオメトリまたはベースメッシュ (base mesh) のコヒーレント部分、残余、およびメッシュに近似化するために使用されるパラメータを符号化する。伸張器 (decompressor) は、圧縮されたジオメトリストリームを復号化し、選択したタイムサンプルのときのメッシュを、コヒーレント部分、残余および各メッシュに近似化するために使用されたパラメータから再構築する。
【００１１】
コーダの一形態として、ジオメトリック変換コーダ (geometric transform coder)、もっと具体的には、メッシュ変換コーダ (mesh transform coder) と呼ばれているものがある。このコーダは、入力マトリックス内の各メッシュと変換されたベースメッシュとの差分 (difference) を決定することによって残余を符号化している。ジオメトリック変換は、ベースメッシュと、カレントタイムサンプルのときのメッシュとの間の動きに近似化するために使用されている。ジオメトリック変換はコーダに与えることも、ベースメッシュを各タイムサンプルでのメッシュにマッチング（合致させること）することによって導き出すことも可能である。同様に、ベースメッシュはコーダに与えることも、頂点位置の入力マトリックスから導き出すことも可能である。
【００１２】
別形態のコーダとして、列/行予測器 (column/row predictor) がある。この形態のコーダは、時間依存ジオメトリを表すマトリックスでコヒーレンスを利用している。例えば、頂点位置のマトリックスの時間的コヒーレンス (temporal coherence) は、マトリックス内の隣接行 (neighboring rows) 間の差分を符号化することによって利用できる。空間的コヒーレンス (spatial coherence) は、マトリックス内の隣接列 (neighboring columns) 間の差分を符号化することによって利用できる。コード化効率を向上するには、行と列は、隣接行/列間の差分が最小限になるようにソートすることができる。列と行の予測は頂点位置を表すマトリックスに適用され、この中には、入力マトリックス、残余マトリックス、およびこれらのマトリックスのどちらかを主要コンポーネント分析 (principal component analysis) することで得られる重み (weight) マトリックスが含まれている。
【００１３】
さらに別形態のコーダとして、基底分解コーダ (basis decomposition coder) がある。主要コンポーネント分析を使用して、時間依存ジオメトリのマトリックスは、基底ベクトルと重みに分解される。基底ベクトルと重みは、オリジナルマトリックスの近似を基底ベクトルと重みから再構築し、その後オリジナルマトリックスと近似マトリックスとの差分を符号化することによって、残余を計算するために使用できる。この形態のコーダでは、残余は基底ベクトルおよび重みと一緒に符号化される。別の基底分解コーダでは、時間依存ジオメトリのマトリックスは基底ベクトルと重みに分解され、その後、重みで列/行予測が使用されて重みが符号化されている。
【００１４】
さらに別形態のコーダでは、時間依存ジオメトリのマトリックスは時間依存ジオメトリを階層空間−時間ピラミッド (space-time pyramid) として表しているデータ構造に変換されている。このデータ構造は、空間と時間詳細レベル(level of detail) と、各詳細レベル間のデルタを符号化している。これが一種の圧縮であるのは、マトリックスのサイズが大きくなっても、デルタが小さいからである。
【００１５】
この空間−時間詳細レベルを表現すると、特定の空間−時間構成で必要になる空間的または時間的精細化 (spatial or temporal refinements) だけを、エンコーダからデコーダに送ればよいので、送信期間中に別形態の圧縮が得られることになる。圧縮表現全体を送信するのではなく、デコーダは、要求された詳細レベルをフィードバックチャネルでデコーダに送信し、その後、エンコーダは、空間−時間のカレント領域用に要求された詳細レベルを達成するために必要な精細化だけを送信する。
【００１６】
空間と時間にわたるアニメーションを符号化するために使用される原理は、他の次元にも応用可能である。例えば、時間次元の代わりに、ジョイントアングル（関節角度）、回転軸、並行移動軸などの、別の次元にわたってジオメトリストリームを符号化することが可能である。このケースでは、ジオメトリは空間次元と新次元（例えば、時間次元の代わりに）内に階層的に符号化される。このように次元に沿って符号化することをインタラクティブアニメーションで利用すると、ユーザはアニメーションオブジェクトの動きを次元に沿って制御できるので便利である。ユーザがこの次元に沿う詳細レベルを指定して入力すると、コーダは該当詳細レベルをジオメトリの階層表現からどのように抽出するかを指定している更新レコードを計算する。
【００１７】
上述したコード化手法は、アニメーションで使用される他の形態のジオメトリックデータにまで拡張可能である。例えば、これらの手法はテクスチャ座標 (texture coordinate) のコード化に応用されている。
【００１８】
以下では、本発明の特徴の理解を容易にするために、添付図面を参照して詳しく説明することにする。
【００１９】
詳細説明
序論
アニメーション3Dオブジェクトの動きを記述する時間依存ジオメトリは、次に示す3D位置のマトリックスPで表すことができる。
【００２０】
【数１】
0004384813.tif 000002
【００２１】
マトリックスPの各列は、3Dメッシュの頂点位置のように、3D位置を表している。行は、アニメーションシーケンスのフレームのように、時間のインクリメント（増分）を表している。マトリックスの各要素のスーパスクリプトは3D位置を示し、この表記では、列番号に対応している。マトリックス内の各要素のサブスクリプトはタイムインクリメントを示し、マトリックスの行番号に対応している。マトリックスPが空間的に連続していると考えると、あるオブジェクトの3D表面を完全に記述する3D位置（列）は、概念的には、無限個数（infinite number）になる。実際には、アニメーションの各タイムインクリメントの3D位置は有限個数（finite number）であり、位置は、その時点でのアニメーションのジオメトリック詳細レベルに対応している。マトリックスPが時間的に連続していると考えると、行は、概念的には、無限個数になる。グラフィックレンダリングパイプラインでは、当然のことであるが、3Dモデルは離散的時間で出力画像にレンダリングされ、最も起こり得ることは、フレームレートのように周期的レートで出力画像にレンダリングされている。ある種のアーキテチャでは、オブジェクトの更新レートが変化し得るため、各行はアニメーションシーケンスのフレームに対応している必要がない。もっと一般化された表現では、行はタイムサンプルに対応しているだけである。
【００２２】
マトリックスPは、次式に示すように３つのコンポーネントに因数分解 (factorize) することができる。
【００２３】
【数２】
0004384813.tif 000003
【００２４】
コンポーネントGは、低レベルのグラフィックスハードウェアに実装されているポリゴン補間 (polygon interpolation) または表面パッチ補間 (surface patch interpolation) である。コンポーネントSは時間を通るマトリックスの補間である。言い換えれば、時間補間コンポーネントは、3Dモデルが出力画像にレンダリングされるときの離散的時間を指定している。空間的および時間的詳細レベルをジオメトリ補間関数と時間補間関数で制御すると、任意の空間−時間ポリトープ (polytope) はこの公式を使用して符号化することができる。
【００２５】
時間とジオメトリ補間コンポーネントはグラフィックスレンダリングハードウェアに実装されているのが代表的であるので、以下に説明する圧縮手法では、頂点位置マトリックスVが中心になっている。
【００２６】
頂点位置マトリックスVの各列は、単一頂点の動きを記述している。
【００２７】
【数３】
0004384813.tif 000004
【００２８】
マトリックスVの列は頂点位置を表している。具体的には、マトリックスVの各要素のスーパスクリプトは頂点であることを示している。マトリックスVの行はタイムサンプルを表している。マトリックスVの各要素のサブスクリプトはタイムサンプルであることを示している。
【００２９】
汎用重み付け軌跡 (Generic Weighted Trajectories)
以下に説明する手法はすべて、次のメッシュアニメーション手法を特殊化したものと考えることができる。
【００３０】
【数４】
0004384813.tif 000005
【００３１】
アフィン変換 (Affine Transformations)
代表的なグラフィックスアーキテクチャでは、マトリックスVは、剛体オブジェクトの階層に因数分解されている。これが、上述したもっと一般化されたマトリックスVに比べて小さなクラスの移動ジオメトリであるのは、特定タイプの動き、つまり、剛体で行われる一連のアフィン変換 (affine transform) に限定されているためである。この概念を具体例で示すと、剛体動きのマトリックスVの特殊ケースは次式で表すことができる。
【００３２】
【数５】
0004384813.tif 000006
【００３３】
このケースでは、剛体の時間依存ジオメトリックマトリックスPR = VRGは、３つのコンポーネントに因数分解されている。すなわち、アフィン変換、剛体、およびジオメトリ補間である。左側のマトリックスはアフィン変換を表し、各行はアニメーションのフレームに対応し、各列は剛体のアフィン変換に対応している。上式では、左側マトリックスのアフィン変換が唯一の変化する項であり、フレームごとに更新される。上に示す剛体の各々は剛体構造を構成する頂点の集合からなり、アフィン変換の列が剛体構造と関連付けられている。ジオメトリ補間コンポーネントは各剛体の補間関数からなり、この補間関数は剛体内の頂点にストアされた属性を保管して、デバイス座標を出力するために使用される。
【００３４】
グラフィックスレンダリングアーキテクチャには、基本タイプとして即時モード (immediate-mode) アーキテクチャと保存モード (retained-mode) アーキテクチャの２つがある。即時モードアーキテクチャでは、頂点とジオメトリック接続性マトリックス (geometric connectivity matrix) 全体がフレームごとに再送信される。このプロセスによると、3Dジオメトリレンダリングシステムにフレームごとに送信する必要のあるデータが大量であるために、大量の帯域幅が必要になる。これとは対照的に、保存モードアーキテクチャでは、頂点とジオメトリック接続性マトリックスは、あるシーケンスのフレームの間一度だけ送信され、フレームごとに剛体の位置をどのように変更すべきかを3Dレンダリングサブシステムに通知するために使用される変化アフィン変換が符号化される。
【００３５】
事実、マトリックスVの列を、コヒーレントな動きをもつ剛体の集合にセグメント化することが１つの圧縮方式となっているのは、この方式によると、3Dジオメトリのフレーム間の（frame to frame）変化がアフィン変換で符号化できるからである。しかし、この動きモデルが適用されるのは、その動きがアフィン変換の形で定義できる剛体に限られているという点で、この方式はどちらかと言えば、制約的である。以下のセクションでは、アニメーション剛体に限定されない、より一般化された頂点位置の時間依存マトリックスを圧縮する方法について説明する。
【００３６】
フリーフォーム変形 (Free-Form Deformations)
より一般化されたグラフィックスアーキテクチャによれば、剛体の動きの制約は、より一般化されたパラメータ化変形 (parameterized deformation) をサポートすることによって解消している。より一般化された3D動きモデルの例としては、フリーフォーム変形格子 (free-form deformation lattice) をもつ逆キネマチックリンケージ (inverse-kinematic linkage) がある。この形態の動きモデルは文字アニメーションで広く使用されている。次の式は、一般的時間依存ジオメトリマトリックスがこのより一般化された動きモデル用にどのように因数分解されるかを示している。時間依存ジオメトリマトリックスの係数としては、変形関数Fのマトリックス、一連の剛体V、および剛体の各々ごとに対応する一連のジオメトリ補間関数Gがある。
【００３７】
【数６】
0004384813.tif 000007
【００３８】
左側のマトリックスの変形関数は、剛体を構成する頂点の集合の動きを定義するパラメータが少数になっているのが代表的である。各変形関数のこれらの動きパラメータは時間を通るようにスプラインされることが時にはあるが、ユーザ入力から計算されて、アニメーションシーケンス内のフレームに対する剛体の位置が決定されることもある。上式において、変形関数Fと対応する剛体
【００３９】
【数７】
0004384813.tif 000008
【００４０】
との乗算は、変形関数Fを剛体の頂点に適用していることを示している。
【００４１】
【数８】
0004384813.tif 000009
【００４２】
キー形状 (Key Shapes)
もう１つの有用な圧縮手法は、マトリックスを基底関数と重みに分解することである。この手法は、主要コンポーネント分析またはKL変換 (Karhunen-Loeve) といった、いくつかの名前で通っている。
【００４３】
【数９】
0004384813.tif 000010
【００４４】
この変換によると、データの相関性が最大限になくなり、正規直交の基底 (orthonormal basis) が得られる。しかし、KL手法はデータの非線形変換をキャプチャすることができない。z軸を中心にスピンしながらx方向に並行移動する剛体形状を想像してみると、この単純な回転と並行移動をキャプチャするように結合できる基底形状 (basis shape) の集合が存在しない。
【００４５】
スキンニング (skinning)
もう１つ広く使用されている手法は各頂点で「スキンニング」重みβjを使用して、移動する「ボーン(bone)」座標フレームCi がメッシュをどのように変形するかを決定することである。代表例として、重みのほとんどはゼロであるので、頂点当たりの重みマトリックスはスパース (sparse) になっている。この手法の利点は、単一静止形状 (rest shape) が、関心のある領域の近くに埋め込まれている座標フレームの集合によって変形できることである。初期フレームの逆がカレント座標フレームに事前付加されていると、「ボーン」座標フレームが得られる。
【００４６】
【数１０】
0004384813.tif 000011
【００４７】
特殊ケース重み付け軌跡 (Special-Case Weighted Trajectories)
時間依存ジオメトリは、3D空間内の選択したコントロールポイントの動きを通して、これらのコントロールポイントとメッシュ内の頂点とのアソシエーションと共に表現することもできる。参考文献としては、Brian Guenter、Cindy Marie Grimm、およびHenrique Sarmento Malvar（以下、Guenter他という）による係属中の米国特許出願第09/093,590号、発明の名称「3Dジオメトリ、表面表現のカラーと陰影および他のアニメーションオブジェクトをキャプチャし表現する方法およびシステム (Method and System For Capturing And Representing 3d Geometry, Color And Shading Of Facial Expressions And Other Animated Objects)」があるが、その内容全体は引用により本明細書に含まれている。Guenter他では、コントロールポイントの動きが関連頂点に適用されてメッシュを変形している。あるフレームから別のフレームへのコントロールポイントの動きは、軌跡 (trajectory) と呼ばれている。
【００４８】
コントロールポイントをこのように使用することは、一般的に、種々のグラフィックスアプリケーションに応用可能であるが、Guenter他では、コントロールポイントは人間の顔を表している時間変化ジオメトリを符号化するために使用されている。Guenter他では、俳優の顔の動きは、基準 (fiducial) 「ドット」を付加し、その後ビジョン手法を使用してドットの動きを回復することによって回復されている。また、Guenter他では、静止位置で俳優の顔を表しているスタチック3Dメッシュを、従来の3Dキャプチャシステムを使用してキャプチャしている。Guenter他では、これらのドットをコントロールポイントとして使用し、次のようにドットの動きを適用してメッシュを変形している。
【００４９】
【数１１】
0004384813.tif 000012
【００５０】
Guenter他では、この因数分解は、ドット軌跡の主要コンポーネントを計算し、その結果の係数をコード化することによってさらに圧縮されている。
【００５１】
【数１２】
0004384813.tif 000013
【００５２】
この符号化方式では、ドット軌跡にキー形状を使用してから、ドットの動きを頂点の残余に適用している。
【００５３】
セグメンテーション (segmentation)
最初のステップは、頂点マトリックスVのどの列をローカル座標系で符号化するかを決定することである。ある種のアニメーションでは、モデリングパッケージからこの情報が得られるようになっている。いくつかの現行アニメーションパッケージは「ボーン」と「スキンニング」を使用し、座標フレームは最終頂点位置が得られるように重み付けされている。汎用アニメーション（シミュレーション、シェープカメラ (shape camera) などの出力）では、分解を良好にするために入力頂点マトリックスが分析されている。「ボーン」の数をランタイムシステム用に変更する必要があるときは、自動分析によると便利である。このクラスタリング問題は、学習、ベクトル量子化、および他の圧縮手法でよく起こっている。本件のケースでは、ベクトルは頂点マトリックスの列から構成されている。問題は、クラスタがいくつ必要であり、どのクラスタを各クラスタに所属させるかを決定することである。もう１つの問題は、変形のクラスをクラスタごとに決定することである。
【００５４】
クラスタセグメンテーション問題は次の通りである。頂点マトリックスVが与えられているとき、クラスタの数nclusterと、各頂点のクラスタ割り当てのリストが戻される。複数の割り当てが許されるので、各頂点はあるクラスタの集合に所属し、関連の重みをもつことができる。各クラスタは関連の時間変化座標フレームCをもち、これは所与であるか、あるいはクラスタのメンバである頂点に基づいて計算されたものである。
【００５５】
【数１３】
0004384813.tif 000014
【００５６】
プロトタイプのセグメンテーションアルゴリズムでは、オリジナルメッシュのトライアングルをベースにした貪欲クラスタリング手法 (greedy clustering approach) を使用している。シードトライアングル (seed triangle) の集合はランダムに選択されている。トライアングルは、必要ならば、すべてをシードトライアングルとして使用できるが、以下に説明する実験では、メッシュ内のオリジナルトライアングルの約10%が使用されている。シードトライアングルの座標フレーム軌跡が比較され、所与の許容範囲内にあれば、クラスタは結合される。頂点の軌跡は、その結果得られたクラスタの各々のローカル座標系に投影され、軌跡を通るマッチング (match)の品質別に分類される。
【００５７】
ジオメトリック変換コード化 (Geometric Transform Coding)
ジオメトリック変換コード化 とは、3Dジオメトリの動きをジオメトリック変換で近似化し、その後、アニメーションシーメンス全体にわたる選択されたタイムサンプル期間の、変換された3Dジオメトリと3Dジオメトリの実際位置との差分を符号化することによって時間依存ジオメトリを圧縮する方法のことである。これらのタイムサンプルはアニメーションシーケンスの時間に対応し、そこでは、オブジェクトの位置が更新されている（フレームごとに更新されるとは限らない）。アニメーションシーケンスの時間依存ジオメトリは一連の3Dメッシュとして表され、各々はアニメーション内の特定タイムサンプルでの頂点位置の集合を示している。この形態の時間依存ジオメトリの具体例として、上述した頂点位置マトリックスVがある。このジオメトリック変換コード化方法は基底メッシュを選択することから始まる。次に、基底メッシュとアニメーション内のメッシュの各々との間の、ジオメトリック変換が決定される。時間依存ジオメトリを圧縮するために、この方法によれば、変換された基底メッシュと実際のメッシュとの間の差分が決定され、この差分は残余 (residual) と呼ばれる。
【００５８】
ジオメトリック変換コード化手法は、時間依存ジオメトリがアニメーション剛体から構成されている特殊ケースと競合関係にある。この特殊ケースでは、基底メッシュは剛体に対応し、ジオメトリック変換は、アフィン変換や格子フリーフォーム変換のように、剛体に適用される動きモデルに対応している。この概念を示すために、一緒にアニメーション化される頂点のブロック、すなわち、アフィン変換やフリーフォーム変形格子をもつ逆キネマチックリンケージのように、単純化クラスの移動ジオメトリのどちらかにおける剛体に対応している列のブロックを考えてみることにする。このケースでは、変換されたベース剛体とカレントメッシュの間にどれだけのひずみがあるかは、残余から分かるようになっている。以下の式は、変形関数Ｆが剛体
【００５９】
【数１４】
0004384813.tif 000015
【００６０】
に適用された場合の、残余の計算を示している。
【００６１】
【数１５】
0004384813.tif 000016
【００６２】
アニメーションシーケンスの時間依存ジオメトリが変形関数を剛体に適用することによって作られる場合は、ひずみがなくなる。以下に説明するジオメトリック変換コード化方法がもっと一般的であるのは、動きをもっと一般的な形で表現でき、変換関数または時間依存ジオメトリの剛体部分がコード化時に分かっていないような、任意のメッシュを符号化するのに適応できるからである。
【００６３】
時間依存ジオメトリを表している所与のデータ集合を圧縮するには、ジオメトリック変換方法では、変形パラメータ、ベースメッシュまたはメッシュ、および残余を量子化し、符号化している。時間依存ジオメトリが単純化サブクラス（剛体または格子FFD）の１つに合致するときは、残余はゼロであるので、符号化するときのオーバヘッドは非常に低くなる。
【００６４】
ジオメトリックコード化方法は単独で使用することも、時間依存ジオメトリマトリックスVのコヒーレンスを活用するために下述する他の圧縮手法と併用することも可能である。時間依存ジオメトリマトリックスの時間的および空間的コヒーレンスをさらに活用するための１つの方法は、マトリックスVの行と列の中からコヒーレンスを特定し、符号化することである。時間依存ジオメトリをコード化する方法は、以下で説明するように、単純化された動きモジュールに内在する圧縮を改善し、しかも、現行3Dグラフィックスレンダリングアーキテクチャとの互換性を維持したまま、もっと複雑な動きモデルに応用可能である。
【００６５】
図１は、メッシュ変換コーダの例を示すブロック図である。図１には、時間依存ジオメトリがどのように符号化されて伝送またはストアされた後、どのように復号化されるかを示すために、圧縮器 (compressor) ２０と伸張器 (decompressor) ４０の両方が示されている。圧縮器２０への入力には、３種類ある。時間の経過と共に変化するメッシュ頂点の位置を表しているマトリックスVと、ベースメッシュVと、ベースメッシュを、時間依存マトリックスV内のメッシュとマッチングするジオメトリック変換 (”xfm”) である。圧縮器はジオメトリック変換の変換パラメータ、ベースメッシュ、および残余を量子化し、符号化する。伸張器で再構築されるメッシュのひずみを最小限にするために、圧縮器は量子化/量子化解除変換 (quantized/de-quantized transformation) とベースメッシュパラメータを使用して残余を計算する。
【００６６】
このエンコーダでのベースメッシュは、剛体を表す頂点のメッシュになることを目的としている。しかし、一部の実施形態では、ベースメッシュはコーダに与えられないので、これは時間依存ジオメトリVのストリームから導き出す必要がある。このような場合には、ベースメッシュは、マトリックスVの行をベースメッシュとして使用するか、Vの複数行の平均をベースメッシュとしてとるか、あるいは変換パラメータと残余のための結合帯域幅が最小になるようにベースメッシュを事前に計算することで、計算することができる。後者の方法によると、変形パラメータとベースメッシュの両方は同時に非線形的に最適化される。
【００６７】
図１に圧縮器への入力として示されているジオメトリック変換 (”Xfm”) は、選択したタイムサンプルインクリメントでベースメッシュの位置を新しい位置に変換するために使用されるジオメトリック変換パラメータの集合である。従来のグラフィックスレンダリングパイプラインでは、選択したタイムインクリメントはアニメーションシーケンス内のフレームに対応しているのが代表的である。しかし、もっと一般的には、タイムインクリメントは、変化するレートでオブジェクトの更新を可能にするレンダリングアーキテクチャと互換性をもつように、タイムサンプルに対応させることも可能である。変換パラメータは、タイムサンプルごとにベースメッシュを新しい位置に変換するために使用されるので、各サンプルは対応する変換パラメータの集合をもっている。ベースメッシュが剛体を表している場合には、変換パラメータは、アフィン変換や一般的フリーフォーム変換のように、剛体をそのローカル座標系からアニメーショングラフィックスシーンのワールド座標に変換するジオメトリック変換を表している。
【００６８】
圧縮器２０は、変換パラメータとベースメッシュの3D位置値を、それぞれ量子化する量子化モジュール２２、２４を備えている。また、圧縮器は変換パラメータとベースメッシュの3D位置値を量子化解除するために使用される量子化解除器２６、２８も備えている。圧縮器２０に示されている変換モジュール３０は、量子化解除変換パラメータを量子化解除3D位置値に適用して、時間依存ジオメトリのカレント位置に近似化している変換メッシュを出力する。その後、減算器モジュール３２は変換ベースメッシュの値と、マトリックスVの対応する要素との差分を計算する。具体的には、減算器モジュールは、量子化解除され、変換されたベースメッシュの頂点と、カレントタイムサンプルのときの頂点位置マトリックスVの行の頂点との差分を計算する。
【００６９】
圧縮器２０の出力には、タイムサンプルごとの量子化変換パラメータと量子化ベースメッシュが含まれており、これは圧縮データストリームの先頭で一度送信される。この出力には、量子化器３４で計算された量子化残余も、タイムサンプルごとに含まれている。従って、圧縮データストリームは、アニメーションシーケンスに対してベースメッシュを一度符号化し、アニメーションシーケンス内の各フレームのように、アニメーションシーケンスに含まれる複数のタイムサンプルの残余で変換パラメータを符号化する。圧縮データストリームは、将来の使用に備えて永続メモリにストアしておくことも、トランスミッタに送信し、そこから別のコンピュータやレンダリングデバイスに送信することも可能である。
【００７０】
伸張器４０は、選択したタイムインクリメントのときの時間依存ジオメトリを、圧縮データストリームから再構築する。具体的には、伸張器はアニメーションシーケンス内のタイムサンプルに対して、頂点位置のマトリックスを１行ごとに再構築する。伸張器に含まれる量子化解除器４２、４４は、残余、変換パラメータ、およびベースメッシュの3D位置データをそれぞれ量子化解除する。ジオメトリック変換モジュール４８はカレントタイムサンプルの量子化解除変換パラメータを量子化解除ベースメッシュに適用して、変換ベースメッシュを計算する。加算器モジュール５０はカレントタイムサンプルの変換ベースメッシュを、そのタイムサンプルのときの、対応する量子化解除残余と結合し、時間依存ジオメトリのカレント3D位置を計算する。
【００７１】
伸張器４０はオンラインレンダリングアプリケーションで使用できる。その場合には、圧縮時間依存ジオメトリが取り出されたあと、頂点位置の集合は時間的余裕をもって再構築されてからジオメトリが3Dグラフィックスレンダリングサブシステムに渡され、そこでアニメーションシーケンスでのレンダリングが行われることになる。
【００７２】
変換マッチング (Transformation Matching)
ある種のアプリケーションでは、時間と共に変化する変換パラメータは、時間依存ジオメトリのコード化が開始される前に使用可能になっていない。このことが特に該当するアプリケーションとしては、アフィン変換やフリーフォーム変形などの、標準的ジオメトリック変換を使用して変換された単純な剛体になっていない時間依存頂点位置の集合を表している、より一般化されたマトリックスのコード化を行うアプリケーションがある。このようなアプリケーションでは、圧縮器はベースメッシュを、アニメーションシーケンス内の選択したタイムインクリメントのときのカレントメッシュに最良に合致させる一連の変換を得ている。以下では、一般的で、任意の動きをもつ時間依存ジオメトリを表しているマトリックスの変換パラメータを導き出すコーダについて説明する。以下に説明する図示の例では、アフィン変換を導き出すことが示されているが、これと同じ手法は他の動きモジュールにも応用可能である。
【００７３】
図２は、変換マッチングを行って時間依存ジオメトリから変換パラメータを導き出すベースメッシュ変換コーダを示すブロック図である。図１と同じように、図２には、圧縮器モジュール６０と伸張器モジュール６２が示されている。図を単純化するために、図１に示す量子化器モジュールと量子化解除器モジュールは、図２には破線６２−６８で示されている。
【００７４】
圧縮器６０への入力としては、ベースメッシュV0 と、時間依存ジオメトリを表している頂点位置のマトリックスVとがある。ベースメッシュが剛体を表している特殊ケースとは対照的に、より一般的なケースでのベースメッシュはコード化を始める前に分かっている必要がない。ベースメッシュはマトリックスVから導き出すことができる。例えば、ベースメッシュはVの行を選択するか、Vの行の平均をとるか、あるいは上述したように、変換パラメータと残余の結合帯域幅が最小になるようにベースメッシュを再計算することによって選択することができる。
【００７５】
ベースメッシュと同じように、変換パラメータも頂点位置のマトリックスから導き出すことができる。図２に示すように、圧縮器６０に置かれた変換マッチングモジュール (transform match module) ７０は、ベースメッシュを、マトリックスV内の時間依存メッシュの各々とに最良に合致させるジオメトリック変換を決定する。マトリックスVの行の各々は、選択した時間におけるメッシュに対応している。変換マッチングモジュール７０は、マトリックスVの行にストアされたメッシュの位置に近似化するようにベースメッシュを変換するために使用されるジオメトリック変換の変換パラメータを計算する。
【００７６】
圧縮器６０は変換モジュール７２を含み、このモジュールは量子化解除変換パラメータを量子化解除メッシュパラメータに適用し、カレントメッシュの位置に近似化するようにする。その後、減算器モジュール７４は、変換ベースメッシュとカレントメッシュとの間の3D位置の差分を計算し、残余を出力する。残余、変換パラメータ、およびベースメッシュパラメータは、破線６４、６６、６８で示すように量子化され、送信される。ベースメッシュは、代表的なアニメーションシーケンスでは一度送信されるだけである。変換パラメータと残余は符号化されるアニメーションのタイムサンプルごとに計算される。代表例では、このタイムサンプルはアニメーションシーケンスのフレームに対応している。
【００７７】
図１と同じように、図２の伸張器６２は圧縮データストリームを復号化し、時間依存ジオメトリのストリームを再構築するために使用されるコンポーネントを表している。破線６４−６８で示す固有の量子化解除モジュールのほかに、伸張器６２は変換モジュール８０と加算器モジュール８２も備えている。変換モジュールは量子化解除変換パラメータを量子化解除ベースメッシュに適用し、選択したタイムサンプルに対する変換ベースメッシュを計算する。加算器モジュール８２は変換ベースメッシュを受け取り、その時間の間にそれを残余メッシュと結合してメッシュを再構築する。変換モジュール８０と加算器モジュール８２は、他の変換パラメータと関連残余メッシュの集合ごとに上記プロセスを繰り返す。
【００７８】
変換マッチングモジュール７０がどのように実現されるかは、その一部として、ベースメッシュとマトリックスVの対応するメッシュとの間の変更位置に近似化するために使用される動きモデルによって決まる。例えば、3Dの動きがアフィン変換モデルに基づいて推定される場合は、変換マッチングモジュール７０は、選択した時点において変換ベースメッシュと対応するメッシュとが最も緊密に合致しているものが得られるようにアフィン変換係数を計算する。変換係数を計算する式は次のように表すことができる。
【００７９】
【数１６】
0004384813.tif 000017
【００８０】
上式において、Ak は望ましい4 x 4マトリックスであり、これは、ベースメッシュV0 を、一般的マトリックスVのカレント行であるVk に変換するために使用される。最良の最小２乗解 (best least-squares solution) を表している変換係数を求める１つの手法は、ベースメッシュVo の特異値分解 (singular value decomposition) を計算し、ベースメッシュの分解をVのカレント行に適用することである。この手法では、マトリックスが大きいと計算コストが高くなる。この計算の複雑さを軽減するために、変換マッチングモジュール７０は、以下で説明する最適化の１つまたは２つ以上を使用するように適応させることができる。１つの最適化は、ベースメッシュとカレントメッシュに低詳細レベルのマトリックスを使用して計算を行うことである。低詳細レベルのマトリックスを使用すると、最良の最小２乗解の近似値を計算し、それを完全マトリックスに適用することができる。
【００８１】
もう１つの最適化は正規方程式 (normal expression) を使用することであるが、そこでは、ベースメッシュの4 x 4適合マトリックス、および n x 4マトリックスと適合マトリックスとのマトリックス積を累算し、反転することが行われている。この手法を数学的に示すと、次の２式のようになる。
【００８２】
【数１７】
0004384813.tif 000018
【００８３】
正規方程式の手法は完全方程式系の解を求めて、変換係数を決定するほどには堅固でないが、実用的にはその働きは十分である。この手法が完全系で解を求めるほど正確でないのは、小さな部分空間に投影するとき情報が失われるからである。しかし、変換係数はメッシュの動きの近似にすぎないため、正規方程式の手法でも十分に正確である。セグメント化頂点ブロックのフレームごとに、最良合致（matching）アフィン変換を計算するために、プロトタイプでは次の方法が採用されている。
【００８４】
1) 静止形状Vo（これは頂点マトリックスの最初の行またはモデルの代表的ポーズのどちらかである）を使用して、合致マトリックス K = VoT (V oVoT)-1 を計算する。
【００８５】
2) アニメーションのフレームごとに、最良合致アフィン変換をAj = VjKとして計算する。
【００８６】
3) 頂点グループが縮退 (degenerate)（つまり、すべての点が平面内にある）であるときは、V oVoT マトリックスは特異であるか、状態が乏しくなっている。このケースでは、静止形状頂点Vo とフレーム当たり頂点Vjを増加するために追加頂点が追加され、縮退を取り除いている。この追加頂点は、各トライアングルの法線に沿って各トライアングルの中心をオフセットすることによって、頂点に関連するトライアングルから導き出されている。
【００８７】
図２に示す手法で使用されているジオメトリック変換がアフィン変換であれば、カレントフレームのメッシュの位置に近似化するために使用されるジオメトリック変換を、そのフレームのビューイング変換と一緒に結合することが可能である。ジオメトリック変換コーダは、図３に示すように改良すれば、ジオメトリック変換をビューイング変換と結合することが可能になる。
【００８８】
図３は、ジオメトリック変換ではなく逆ジオメトリック変換 (inverse geometric transform) を符号化する代替ベースメッシュ変換コーダを示すブロック図である。このタイプのコーダでは、各タイムサンプルの残余は、カレントメッシュのローカル座標で変換ベースメッシュをカレントメッシュから減算するのではなく、変換ベースメッシュの座標で計算される。この計算式は次に示すとおりである。
【００８９】
【数１８】
0004384813.tif 000019
【００９０】
上式において、残余パラメータΔVk は、1) ベースメッシュの座標空間に変換された頂点位置のマトリックスのカレント行と、2) ベースメッシュV0 との差分として計算される。変換ベースメッシュをカレントメッシュにマッチングするのではなく、変換パラメータはカレントメッシュをベースメッシュにマッチングする。
【００９１】
図３に示す逆変換コーダに含まれる圧縮器１００と伸張器１０２は同じ入力データに作用し、図２のメッシュ変換コーダと同じようなコンポーネントをもっている。具体的には、圧縮器の変換マッチングモジュール１０４は、変換されたカレントメッシュをベースメッシュと合致させる変換パラメータを計算する。その後、逆変換モジュール１０６は量子化解除変換パラメータをカレントメッシュに適用し、カレントメッシュをベースメッシュ座標に適用して残余を計算し、減算器モジュール１０８は、変換されたカレントメッシュとベースメッシュの対応する要素間の差分を計算する。圧縮器は入力マトリックスVの行ごとに上記プロセスを繰り返し、圧縮ジオメトリストリームを出力する。
【００９２】
伸張器は量子化残余、量子化変換パラメータ、および量子化ベースメッシュに作用する。時間依存ジオメトリ内の各メッシュを再構築するために、伸張器１０２に含まれる加算器モジュール１１０はベースメッシュの量子化解除パラメータを量子化残余と結合する。伸張器に含まれるジオメトリック変換モジュール１１２は、カレントフレームのビューイング変換を、圧縮器で計算された3D変形変換と結合する量子化解除変形を入力として受け取る。変換モジュール１１２はカレントメッシュを、ベースメッシュ座標からワールド座標に変換し、その後ワールド座標からビューイング座標に変換する。この方法によると、圧縮器の変換モジュールは変換マッチングで計算された3D変換を、グラフィックスレンダリングパイプラインの標準モデリングおよびカメラ変換と結合することができる。
【００９３】
メッシュフィードバック (Mesh Feedback)
これまでのセクションで説明したように、ある種の時間依存ジオメトリのベースメッシュは剛体を表す事前定義のメッシュであり、他方、他のアプリケーションでは、メッシュは一般的なマトリックス位置の頂点から導き出されている。時間依存ジオメトリの経時的コヒーレンスを利用するために、ジオメトリック変換コーダは、先行フレームのメッシュをカレントフレームのベースメッシュとして使用するように適応化することができる。この方法によると、先行フレームのメッシュを使用するフィードバックループは、メッシュがカレントフレームのどこに置かれるかを予測する手段 (predictor) として使用されている。ここで注意すべきことは、この種の予測が、頂点位置のマトリックスで行われる行予測と異なっているのは、変換がN次元ベクトル空間ではなく、3D座標空間で行われるためである、ということである。しかし、以下で詳しく説明するように、行予測と列予測を使用すると、どちらの場合も、残余やベースメッシュのような、3D位置データのマトリックスをさらに圧縮することができる。
【００９４】
図４は、先行タイムサンプルで計算されたメッシュを、カレントタイムサンプルのベースメッシュとして使用するメッシュ変換コーダを示すブロック図である。図４には、この種のコーダ用として圧縮器１２０と伸張器１２２の両方が示されている。このコーダでは、各カレントフレームのベースメッシュは先行フレームからの構築メッシュである。
【００９５】
他のメッシュコーダと同じように残余を計算することのほかに、圧縮器は先行タイムサンプルからのメッシュを再構築したあと、その再構築メッシュのコピーを保存している。第１フレームのメッシュの予測手段として初期メッシュから始めて、変換マッチングモジュール１２４は最良変換を見つけ、先行フレームの近似頂点V’ を次フレームのメッシュにマッピングする。カレントメッシュは、アニメーションシーケンス全体のシングルベースメッシュよりも先行フレームのメッシュに類似しているのが普通であるので、この手法によって得られる残余値は小さくなる傾向がある。
【００９６】
変換マッチングモジュール１２４は、「ディレイ」メモリに一時的にストアされた近似メッシュに作用し、先行メッシュとカレントメッシュが最良適合する変換パラメータを見つける。図２および図３と同じように、破線は量子化器と量子化解除器のペアを示している。圧縮器は変換マッチングモジュール１２４からの変換パラメータを量子化する。量子化パラメータは、圧縮データストリーム１２８の一部となり、圧縮器で残余を計算するために使用される前に量子化解除器にも入力される。
【００９７】
変換モジュール１３０は量子化解除変換パラメータを先行フレームの近似メッシュに適用し、カレントフレームのメッシュの位置を推定する変換メッシュを計算する。圧縮器の減算器モジュール１３２は残余を、先行フレームの変換メッシュとカレントメッシュとの差分として計算する。この残余は量子化され、量子化残余は、量子化変換パラメータ１２８と共に圧縮データストリームの別部分となる。
【００９８】
圧縮器のフィードバックループはカレントメッシュの近似メッシュを再構築し、カレントフレームの近似メッシュをメモリ１２６に一時的にストアしておく。具体的には、加算器モジュール１３６はカレントフレームで計算された残留3D位置データを、変換バージョンの先行フレームと結合し、その結果のカレントメッシュの近似メッシュをメモリ１２６にストアしておく。圧縮器は、あるタイムインクリメント、例えば、フレームのときの、頂点のカレント近似頂点のコピーを保存しておき、時間依存ジオメトリVで次タイムインクリメントのときの、メッシュを予測する手段として使用できるようにする。
【００９９】
伸張器１２２にも、最近に計算された頂点をあるタイムインクリメントだけ遅延させるフィードバックループがあるので、次の頂点集合を予測する手段として使用できるようになっている。伸張器の変換モジュール１４０は量子化解除変換パラメータを、以前に構築され、メモリ１４２に一時的にストアされていたメッシュに適用する。変換モジュール１４０の出力はカレントメッシュに変換された先行フレームのメッシュである。加算器モジュール１４４はこの変換メッシュを、圧縮データストリームからの、カレントフレームの量子化解除残余と結合し、カレント近似頂点V’を構築する。
【０１００】
図３を参照して上述した逆変換コード化方法は、図４に示すフィードバックコーダで使用することも可能である。このケースでは、変換マッチングモジュール１２４はカレントメッシュ入力を、先行フレームの近似メッシュの座標に変換する。その後、圧縮器は先行フレームの座標に変換されたカレントメッシュと先行フレームの近似メッシュとの差分として、残余を計算する。圧縮器と伸張器は、先行フレームの近似メッシュを変換カレントメッシュと結合することによって、残余からカレントメッシュを再構築する。図３の逆メッシュコーダと同様に、その結果の3D位置データは、変換マッチングモジュール１２４で計算された変換パラメータを使用して、カレントフレームでその位置に変換される。しかし、図３のコーダとは異なり、3D変換はカメラ変換と結合することはできない。カレントメッシュは、カメラ変換なしで変換し、次フレームのメッシュの位置を予測する際に使用されるように別にストアしておかなければならない。
【０１０１】
列と行の予測とソート
時間依存ジオメトリのマトリックスでジオメトリックと時間的コヒーレンスを利用するもう１つの方法は、マトリックスの行と列で予測を行うことである。上述した圧縮方法と同じように、時間依存ジオメトリのストリームは3Dジオメトリック位置データのマトリックスで表すことでき、そこでは、各行はアニメーションシーケンスのフレームのような、タイムサンプルに対応し、各列は3D位置と関連付けられている。オリジナルマトリックスを圧縮マトリックスから減算すると（つまり、上述した方法を使用すると）得られる残余マトリックスはオリジナルマトリックスと同じ形態になっているので、このセクションで説明している圧縮手法は、オリジナル頂点マトリックスに関する残余マトリックスにも十分に適用される。時間的予測は、各行を別の行または参照行 (reference row) とペアにし、２行の各対応する要素の間の差分を計算し、例えば、差分値を量子化することによって２行の間の差分を符号化することによって行うことができる。ジオメトリック予測は、類似の手法を用いて列についても行うことができる。また、各列に関連する3D位置間のジオメトリック接続性は独立に指定されるのが普通であるので、列は、隣接列の対応する要素の値が可能な限り類似するようにソートすることができる。
【０１０２】
図５は、圧縮器１６０と伸張器１６２の両方を備えたマトリックス予測コーダの例を示すブロック図である。圧縮器１６０は時間依存ジオメトリストリームに作用するが、これは、このケースでは、頂点位置のマトリックスVになっている。圧縮器に含まれるソートモジュール１６２は、隣接列/行の対応する要素が、オリジナルマトリックスよりも類似するように列または行（または両方）を位置付ける。具体的には、ソートモジュール１６２は、隣接頂点パス（経路）が可能な限り類似するように列をソートする。このジオメトリでのソーティングプロセスは、コヒーレントな動きをもつジオメトリの部分を一個所に置くようにする。3Dジオメトリが一連の剛体からなるようなけースでは、列は一緒に移動する剛点グループになるように配列される。
【０１０３】
もっと一般化された頂点マトリックスでは、ソートモジュール１６２は、列の類似性程度に作用して類似の動きをもつ列グループを見つける。この類似性程度の１つとして、平均除去列 (mean-removed columns) の内積 (inner product) が使用できる。
【０１０４】
類似性程度を計算するには、
１）マトリックス内の各列の平均をとり、その結果を行ベクトル
【０１０５】
【数１９】
0004384813.tif 000020
【０１０６】
にストアし、
２）列平均値を各行
【０１０７】
【数２０】
0004384813.tif 000021
【０１０８】
から減算する。
【０１０９】
その後、ソータはその結果の類似性程度を使用して列をソートすることができる。
【０１１０】
プロトタイプでは、列ｉとｊの類似性は２つの方法で計算されている。生 (raw)の列ドット積 (raw column dot product) Vi・Vj 、および列要素間の二乗距離 (squared distances) の和 (Σ(Vki − Vkj )2 )1/2 である。最も類似している頂点の列は相互に隣接して置かれる。左から始まって右に移動しながら、列ソータは残余の列から最も類似する列を見つけていき、カレント列のちょうど右になるようにその列をスワップする。トライアングルリストは頂点インデックスを使用し、各頂点は列で表されているので、マトリックス内のロケーションと出力時の列の使用との間にはインディレクション(indirection) のレベルがある。このようにすると、デコーダに気づかないで列の再配列が行われることになる。エンコーダは、頂点マトリックス内のソートされた列に対応するように、トラインアングルリスト内のインデックスに番号を付け直す。
【０１１１】
行のソーティングも、列のソーティングと同じように行うことができる。
【０１１２】
類似の経路を移動する頂点は類似するものとみなされる。この特定ソートでは、2D表面で線形的ソート (linear sort) が行われるので、得られる最良結果は、Peano曲線に類似する表面を満たす頂点マトリックスを通る経路になっている。なお、Peano曲線は「空間を満たす」曲線の一種である。言い換えれば、頂点は2Dメッシュ上にあるので、利用できる隣接間のコヒーレンスは単純な1Dソートによる場合よりも向上するが、1Dソートでも、コヒーレンスが向上するので、伸張器は低コストになる。エッジ縮小 (edge contraction) で隣接頂点をクラスタ化することによって列間のコヒーレンスを向上するソート手法は以後のセクションで詳しく説明する。
【０１１３】
ソートモジュール１６３は、マトリックスの行/列をソートして、隣接行/列のコヒーレンスを向上するプロセスを表しているのが一般である。ソートモジュール１６３は列データのソートを行うと、マトリックスのジオメトリック接続性データを更新し、ソートされたマトリックス内の該当列を正しく指すようにする。ジオメトリック接続性データ１６４は、マトリックス内の頂点位置間の接続性を定義している。データは、１つに接続されたメッシュ内の頂点の部分集合を定義しており、その構造内の頂点位置とマトリックスV内の対応する頂点位置の間のレファレンス（参照）も維持している。ソートモジュール１６３は列の順序を変更するとき、接続性データ内の頂点位置がマトリックスV内の該当列を指すように接続情報を更新する。
【０１１４】
空間的予測 (spatial prediction) のほかに、圧縮器１６０は頂点位置のマトリックスの行について時間的予測 (temporal prediction) も行う。大部分のケースでは、マトリックスV内の隣接行は、隣接行が最も類似している、対応する要素を含むようにすでに配列されている。しかし、隣接行がオリジナル入力マトリックスよりも類似するように行をソートすることも可能である。また、参照行、つまり、他の行の動きを予測する基礎として使用される参照行を選択することも可能である。行がソートされるとき、ソートモジュール１６３は行間の時間的関係を維持しているデータ構造１６５を更新する。このデータ構造を使用すると、メッシュデータを正しい時間的順序で再構築できるかを確かめることができる。
【０１１５】
圧縮器１６０は、参照行/列と別の列/行間の各対応する要素の間の差分を計算することによって行/列予測を行う。ソートが完了すると、予測器モジュール１６６は、行予測を行うときは、ペアの隣接行内の各対応する要素の間の差分を計算し、列予測を行うときは、隣接列内の各対応する要素の間の差分を計算する。予測器モジュール１６６の出力は差分値のマトリックスである。これらの差分値は量子化モジュール１６８で量子化することができる。
【０１１６】
圧縮データストリームを伸張 (decompress) するために、図５の伸張器１６２は圧縮器１６０のオペレーションと逆のことを実行する。具体的には、量子化解除器１７０は差分値のマトリックスを量子化解除する。その後、差分値のマトリックスは再構築され、ソートされたマトリックスのオリジナル行と列が逆予測器モジュール１７２で計算される。再配列モジュール (reorder module) １７４は列予測のためにソートされた場合は列を再配列し、行予測のためにソートされた場合は行を再配列する。ジオメトリック接続性データ１７６は列を再配列するために使用される。同様に、時間的データ１７８で表されている行の配列は、ジオメトリックデータが正しい時間シーケンスにあるかを確かめるために使用される。
【０１１７】
図５の上例では、頂点位置のマトリックスVが対象になっているが、行と列の予測は他の形態の時間依存ジオメトリマトリックスで行うことも可能である。例えば、以下で詳しく説明するように、時間依存ジオメトリックデータのマトリックスは、主要コンポーネント分析を使用して、基底ベクトルのマトリックスと別の重みマトリックスに分解することができる。このケースでは、行/列予測は、重みを表すマトリックスで行うことができる。メッシュコーダで計算された残余値のマトリックスとベースマトリックスで予測を使用することも可能である。
【０１１８】
基底分解コーダ (Basis Decomposition Coder)
時間依存ジオメトリを表すマトリックスを圧縮するもう１つの方法は、主要コンポーネント分析を使用してマトリックスを基底関数 (basis function) と重みに分解することである。マトリックスの最良基礎ベクトル集合を見つける手法は、例えば、PCA（principal components analysis−主要コンポーネント分析）、KL変換 (Karhunen-Loeve)、SVD（singular value decomposition−特異値分解）などのように、いろいろな名前で通っている。SVDは頂点マトリックスVをUDWに因数分解している。ここで、UとWは正規直交マトリックス (orthonormal matrix) であり、D ＝ diag(s0, s1, s2, ．．．) はサイズ別にソートされた特異値 (singular value) の対角マトリックス (diagonal matrix) である。特異値のサイズは対応する基底ベクトルの大きさを示している。基底ベクトルは特異値si と行Wi によって与えられる。各列Ui はフレーム当たりの対応する重みを示している。次式は、頂点位置のマトリックスがどのようにして基底ベクトルと重みのメッシュに分解されるかを示している。
【０１１９】
【数２１】
0004384813.tif 000022
【０１２０】
左側のマトリックスは重みを表し、重みは係数とも呼ばれる。頂点位置のオリジナルマトリックスと同じように、上に示す重みのマトリックスは、タイムインクリメントに対応する行とジオメトリック位置を表す列をもっている。同様に、メッシュ基底ベクトルを表している右側のマトリックスは、各タイムインクリメントの行と基底ベクトルを表す列を含んでいる。重要な基底ベクトルの数が少なければ、最も重要な基底ベクトルだけを符号化し、送信し、そのあとフレーム当たりの重みと、明示的に符号化されなかった基底ベクトルの残りからの残余とを加えたものを送信するようにすると、良好な圧縮が得られる。
【０１２１】
主要コンポーネント分析は、3Dオブジェクトではフルサイズの頂点位置マトリックスで行うことができるが、特に複雑なオブジェクトでは、フルサイズマトリックスを分解すると、計算コストが高くなる。従って、フルサイズの特異値分解 V = UDW（Uはサイズnframe x nframe、Wはサイズnvertex x nvertex）を計算する方法もあるが、もっと良い方法は、マトリックスの処理前にメッシュ単純化を行ってから、基底分解を行うことである。このケースでは、オリジナル頂点マトリックスVは空間的（プログレッシブメッシュ法の使用による）と時間的（結び目削除 (knot deletion) またはウェーブレット (wavelet) 符号化の使用による）にスムーズなバージョンVs が得られるまでフィルタに通され、得られたバージョンはVs = UsDsWs として因数分解されている。DsWs で与えられた基底ベクトルは、次に、プログレッシブメッシュ頂点分割レコードによって拡張されるが、これはファイン詳細 (fine-detail) メッシュの基礎を得るために必要になるものである。同様に、Us によって与えられる重みは、詳細レコード（結び目挿入またはウェーブレット詳細によって与えられる）によって時間的に拡張される。
【０１２２】
もう１つの方法は、特異値分解に対してスモールランク近似 (small rank approximation)、Vk = UkDkWkT（Uk はサイズnframe x K、Vk はサイズK x nvertex）を反復的に計算できる近似SVDコーダを使用することである。
【０１２３】
図６は、主要コンポーネント分析を使用して時間依存ジオメトリストリームを圧縮するメッシュ基底コーダを示すブロック図である。図６に示すメッシュ基底コーダは、頂点位置のマトリックスVをメッシュ基底ベクトルの集合に投影し、その後基底係数と残余を圧縮する。圧縮器２００では、基底投影モジュール２０２はカレントメッシュを基底係数と基底ベクトルに分解する。量子化モジュール２０４は基底係数を量子化し、これは圧縮データストリーム２０６の一部になる。量子化解除モジュール２０６はカレントメッシュの基底係数を量子化解除する。基底合成モジュール (basis synthesis module) ２０８は、量子化解除基底係数と基底ベクトルからカレントメッシュを再構築する。圧縮器で残余を計算するために、減算器２１０は、再構築メッシュとカレントメッシュの間の、対応する各要素の差分を計算する。最後に、量子化器２１２は残余を量子化し、量子化された残余は量子化された基底係数と共に圧縮データストリーム２１４の第２部分となる。
【０１２４】
圧縮データストリームを伸張するために、伸張器２２０は、コード化残余と基底係数からカレントメッシュを再構築する。量子化解除器２２２は基底係数を再構築し、量子化解除器２２４は残余を再構築する。基底合成モジュール２２６は、量子化解除基底係数を基底ベクトルに適用することによってカレントメッシュに近似化する。その後、加算器ユニット２２８は、基底合成モジュール２２６からの近似メッシュを量子化解除残余と結合して、再構築メッシュを計算する。
【０１２５】
量子化 (Quantization)
符号化時間変化ジオメトリのコンポーネントを表している数を量子化するために使用できる、従来の量子化手法にはさまざまなものがある。ワープ(warp) 係数と残余を量子化するために、圧縮器は３レンジ正規量子化器を使用している。参考文献としては、Allen Gersho、Robert M. Gray共著「ベクトル量子化と信号圧縮(Vector Quantization and Signal Compression)」(Kluwer Academic Publishers, 1991) がある。メインレンジは平均の標準偏差内の信号に対するもので、他の２つは下位と上位のアウトライア(outlier) に対するものである。第１パスでは、信号の統計が計算され、第２パスでは、実際の量子化が行われる。
【０１２６】
空間時間詳細レベル (Spacetime Level of Detail)
メッシュ単純化手法は、3D時間依存ジオメトリをメッシュ精細化 (mesh refinements) の階層に変換するために使用することができる。メッシュ単純化手法の例をいくつか挙げると、Hugues Hoppe著「プログレシッブメッシュ(Progressive Meshes)」、pp. 99-108, SIGGRAPH 95 およびHugues Hoppe著「プログレッシブメッシュのビュー依存精細化(View-Dependent Refinement of Progressive Meshes)」、pp. 189-198, SIGGRRAPH 97 に記載されているプログレッシブメッシュがある。プログレッシブメッシュを詳しく説明した文献としては、次の米国特許出願、すなわち、第08/586,593号、発明の名称「プログレッシブメッシュの符号化とプログレッシブ伝送(Encoding and Progressive Transmission of Progressive Meshes)」(Hugues Hoppe)、第08/797,502号、発明の名称「プログレッシブメッシュのメッシュ単純化と構築(Mesh Simplification and Construction of Progressive Meshes)」(Hugues Hoppe)、第08/7907,501号、発明の名称「プログレッシブメッシュのジオモルフと可変解像度制御(Geomorphs and Variable Resolution Control of Progressive Meshes)」(Hugues Hoppe)、および第08/797,781号、発明の名称「プログレッシブメッシュの選択的精細化(Selective Refinement of Progressive Meshes)」(Hugues Hoppe) がある。なお、これらの内容全体は引用により本明細書に含まれている。
【０１２７】
二次曲面誤差メッシュ単純化 (quadric error mesh simplification) は、Michael Garland、Paul S. Heckbert共著「二次曲面誤差メトリックスを使用した表面単純化(Surface Simplification Using Quadric Error Metrics)」、pp. 209-216, SIGGRAPH 97に記載されている。
【０１２８】
MetaCreations Corporation提供のMetaStream 3Dファイルフォーマットで使用されているメッシュ単純化のように、他のメッシュ単純化手法を使用することも可能である。
【０１２９】
時間依存ジオメトリの圧縮で詳細レベルコントロールを使用すると、いくつかの利点が得られる。詳細レベルコントロールを使用すると、3Dジオメトリを表すメッシュが単純化されるので、時間依存ジオメトリの符号化コストが大幅に低減される。単純化されたジオメトリの動きは詳細化メッシュに表れた動きによく近似しているので、ジオメトリの単純化バージョンを使用すると、メッシュ変換コーダではアフィン変換、基底分解コーダでは基底ベクトルといったように、圧縮パラメータを計算することができる。
【０１３０】
詳細レベルコントロールのもう１つの利点は、このコントロールによると、圧縮器が時間を通るメッシュのトポロジを変更できることである。特定の3Dオブジェクトがシーンのどこに置かれているか、そのオブジェクトがどれだけ変化するかに応じて、オブジェクトの時間依存ジオメトリは、高詳細レベルでも、低詳細レベルでも表現することができる。従って、3Dオブジェクトまたはオブジェクトの一部は、選択した時点でのアニメーションシーケンスの中でどれだけ重要であるかに応じて、変化する詳細レベルで表現することができる。
【０１３１】
時間と空間の両方でメッシュ単純化を拡張すると、時間依存ジオメトリの効率的な表現が得られる。具体的には、メッシュ単純化は、時間依存ジオメトリを空間と時間でピラミッドとして表現するデータ構造を作るように拡張することができる。このピラミッドは、時間と空間の両方で3Dオブジェクトの詳細レベルの階層を表している。この空間−時間ピラミッドが一種の圧縮として使用できるのは、オブジェクトの時間依存ジオメトリの階層表現が、アニメーション内のフレームごとにメッシュからなるオリジナル時間依存ジオメトリよりも小さくなるからである。また、この階層表現が伝送するのに効率的であるのは、階層表現を精細化 (refine) または粗粒化 (coarsen) するために使用される精細化と粗粒化レコードが、フレームごとにメッシュを伝送する代わりに伝送できるからである。上述したように、階層表現によると、上述した他の圧縮方式は、空間−時間ピラミッドの該当詳細レベルで動作するように設計できるので、さらに効率化されることになる。
【０１３２】
ローカルフレーム (Local Frames)
以下で詳しく説明するように、空間−時間ピラミッドの階層表現は、一連の拡張レコードを使用して表現することができる。メッシュ表面のローカル座標で拡張レコードを符号化すると、動きの多くはファイン詳細化することができる。このローカル座標には、メッシュ形状の階層コントロールや階層量子化といった、いくつかの利点がある（そこでは、ファイン詳細を符号化するビット数が少なくなる）。これらの利点は細分化方式 (subdivision scheme) で得られる利点と類似している。細分化方式に関する参考文献としては、Denis Zorin、Peter Schroeder、Wim Sweldens共著「任意トポロジをもつメッシュの補間細分化(Interpolating Subdivision for Meshes with Arbitrary Topology)」、pp. 189-192, SIGGRAPH 96、Denis Zorin、Peter Schroeder、Wim Sweldens共著「インタラクティブマルチレゾルーションメッシュ編集(Interactive Multiresolution Mesh Editing)」、pp. 259-268, SIGGRAPH 97、およびMichael Lounsbery、Tony D. DeRose、Joe Warren共著「任意トポロジカルタイプの表面のマルチレゾルーション分析(Multiresolution analysis for Surfaces of Arbitrary Topological Type)」、pp. 34-73, ACM Transaction on Graphics, volume 16, January 1997がある。しかし、時間依存ジオメトリという意味では、ローカル座標系のコヒーレンスは時間を通すとさらに大きくなる。
【０１３３】
本実施形態では、空間−時間ピラミッドの階層は、時間依存頂点位置のマトリックスを、1) 縮小したジオメトリの集合と、2) 拡張レコードに因数分解することにより作られている。次の式は、頂点位置のマトリックスが、どのように縮小頂点列のマトリックスと頂点拡張に因数分解されるかを示している。
【０１３４】
【数２２】
0004384813.tif 000023
【０１３５】
縮小頂点列の各々は、空間階層におけるペアの隣接レベル間のデルタを表している。頂点拡張には、各々の対応する縮小頂点列の拡張レコードが含まれ、縮小頂点列をどのように拡張すると、オリジナルマトリックスの近似に復元できるかを示している。
【０１３６】
マトリックス位置の頂点は、次式に示すように、時間拡張と縮小頂点行のマトリックスに因数分解することも可能である。
【０１３７】
【数２３】
0004384813.tif 000024
【０１３８】
上式において、行は、時間次元における階層の隣接ペア間のデルタを表している。時間拡張Tは、各縮小頂点行に対応する時間拡張レコードを含み、対応する行をどのように拡張すると、オリジナルマトリックスの近似に復元できるかを定義している。前記２式の考え方を結合すると、次式に示すように、頂点位置のマトリックスは時間拡張、縮小頂点ブロックのマトリックス、および頂点拡張に因数分解することができる。
【０１３９】
【数２４】
0004384813.tif 000025
【０１４０】
縮小頂点ブロックは、空間−時間階層における隣接列と行の間のデルタを表している。
【０１４１】
精細化基底コード化 (Refinement Basis Coding)
本実施形態では、メッシュ精細化手法を使用して一連のエッジ縮小/頂点分割レコード (edge-contraction/vertex-split record) を作成している。メッシュの詳細レベルを減少するには、頂点位置を相互接続するエッジは、頂点が少なくなったメッシュを作成するように縮小される。逆に、メッシュの詳細レベルを増加するには、頂点位置は、詳細化されたメッシュを作成するように追加位置に分割される。この実装では、デルタ値の集合をメッシュ精細化のトポロジから分離することによって、次の形式の精細化マトリックスを得ている。
【０１４２】
【表１】
0004384813.tif 000026
【０１４３】
上のマトリックスは頂点拡張リストを表している。マトリックスの上段行は時間依存ジオメトリの空間階層の分割を示している。マトリックス内の後続行は時間のインクリメントに対応している。マトリックスの列は空間ドメインにおける階層の隣接レベル間のデルタ値に対応している。
【０１４４】
本実施形態では、縮小係数は右から左に向かい、逆に拡張係数は左から右に向かっている。精細化プロシージャの構造により、マトリックスの各要素にストアされたデルタベクトルの大きさは、左から右に向かって減少している。当然に理解されるように、これは、縮小される最初のエッジがオリジナルメッシュを乱すことが最小になる設計になっているためである。信号強度はマトリックスの左側が強く、マトリックスの左から右に向かって徐々に小さくなっている。
【０１４５】
精細化マトリックスを使用すると、上述した圧縮方法、具体的には、ジオメトリック変換方法と基底伸張方法の効率が向上する。例えば、テストケースでは、メッシュ精細化方法の本実施形態によれば、約3000の頂点をもつオリジナルメッシュは精細化マトリックスに変換されている。プロトタイプのジオメトリック変換コーダで計算されたアフィン変換係数とプロトタイプの基底分解コーダで計算された基底ベクトルは、精細化マトリックスの左側で300 − 1000要素を使用するだけで扱いやすくなっている。事実、このメッシュ単純化を行うと、メッシュがローパスフィルタの働きをするという利点が得られる。
【０１４６】
拡張リストで要素をどのように配列するかは、メッシュ単純化プロセス期間に使用される最適化基準によって決定される。本実施形態では、アニメーションの第１フレームのメッシュで二次曲面誤差測定プログレッシブメッシュ手法 (quadric-error measure Progressive Mesh technique) が使用され、その結果がジオメトリデータのオリジナル時間依存マトリックス内の行の残りに適用されている。この方法は十分に高速で、正確である。しかし、圧縮をダイナミックに行うという意味では、このように配列を行うことは、アニメーションシーケンス全体では最適でない。もっと最適な配列を見つけるには、頂点分割の依存性グラフを使用すると、二次曲面誤差測定のように、同時に使用される圧縮と忠実度測定によって拡張レコードを再配列することができる。言い換えれば、どの分割列が再配列できるか、マトリックスのさらに左側の頂点が分割に依存するためどの分割列が再配列できないかは、頂点分割の依存性グラフによって決まることになる。もっと一般化された手法では、最良の圧縮/最良のビジュアル品質が得られる特定のプログレッシブメッシュ (PM) 拡張が探索されるようになっている。特定の瞬時では（言い換えれば、Vのある行が与えられているとき）、このプログレッシブメッシュ手法では、低詳細レベルメッシュの空間ジオメトリをオリジナルメッシュの空間ジオメトリに合致させる、最良の頂点縮小のシーケンスが見つけられる。時間依存ジオメトリでは、特定のPMの品質を測定するためには、PMの詳細レベルごとに時間次元にわたって（つまり、オリジナル頂点マトリックスVの行にわたって）ジオメトリの誤差を加算する必要がある。
【０１４７】
例えば、PMはVの行ごとに計算したあと、Vの全行にわたってテストして、ジオメトリの正確性を確かめることができる。また、Vの列の平均をとることによって得られた平均メッシュに対してPMを計算することもできる。
【０１４８】
空間−時間コーダのオペレーションを示す例
時空コーダの理解を容易にするために、以下では、人物を例にして説明することにする。ある距離からは、必要になることは、手足を固定させたまま、ボディ全体を低ポリゴンカウントで並行移動し、回転させることである。人物が近づくと、動きの正しい知覚を伝達するために手足のおおまかな運動と形状が必要になる。人物がさらに近づくと、顔と他の筋肉の動きと形状のファイン詳細が大きくなる。その後、人物が後退すると、上に挙げたステップとは逆順に、必要になる詳細は小さくなる。詳細を段階的に大きくした後、小さくしていくために、空間−時間コーダは、最初に、モデルの単純なジオメトリック表現とアニメーションの単純なバージョンを送信する。その後、クライアントのビューポイントに基づいて、サーバは、空間的および時間的詳細更新を必要に応じてストリームダウンする。
【０１４９】
ここで言うサーバとは、時間と共に変化するジオメトリのソースの働きをするシステムエンティティのことであり、クライアントとは、そこでプレイバックが行われるエンティティのことである。ここで言う広い意味では、必要になる帯域幅とメモリを低減化するアプリケーションは広範囲にわたっている。サーバとクライアントは、同一または異なるプロセッサ上で実行されるソフトウェアプロセスにすることができる。サーバは、ホストプロセッサ上で実行されるソフトウェアモジュールにすることができ、クライアントは、コンピュータシステムのグラフィックスコプロセッサにすることができる。サーバは第１コンピュータ上で実行されるソフトウェアにすることができ、クライアントは第２コンピュータで実行されるハードウェアデバイスまたはソフトウェアモジュールにすることができ、この場合、第２コンピュータは、モデム接続、ローカルエリアネットワークまたは広域ネットワークを介して第１コンピュータに接続されている。
【０１５０】
空間−時間ピラミッドの導出
入力は、高蜜にタイムサンプリングされたメッシュM(0), ..., M(n-1) の集合である。これまでのセクションで上述したように、頂点の位置はマトリックスVとして考えることができる。Vの各行iはシングルタイムサンプルVi = M(i) に対応している。Vの各列j は時間を通る座標の軌跡である。空間−時間ピラミッドは空間（列にまたがる）と時間（行にまたがる）の２つの次元に沿ってVを分解したものである。これを具体的に説明するために、左から右へ移動する立方体の単純な１秒アニメーションについて考えてみる。そこでは、立方体の上部は底部に対して垂直軸を中心に周期的に回転（ツイスト）している。このアニメーションは図７に示されている。立方体の上部と底部は、x − z 平面に同一線上の四角のままになっているが、立方体の側辺は、図７の上段アニメーションシーケンスに示すように、上部のy回転が増減したとき、曲面になっている。このアニメーションは60Hzでタイムサンプリングされ、60個の初期メッシュM(0), ..., M(59) を得ている。上部頂点はV0からV3までであり、下部頂点はV4からV7までである。頂点の残りは立方体の回転している側面を符号化している。
【０１５１】
最初のステップでは、メッシュが係数にセグメント化され、これらの係数は独立にアニメーション化された後、アニメーション式と結合される。立方体では、望ましいアニメーション式は次のようになっている。
【０１５２】
【数２５】
0004384813.tif 000027
【０１５３】
k項の各々は、異なる回転速度でメッシュのセグメントを符号化している。下部セグメントは立方体の下部と合致し、静止している。下から上へ移動するとき、各セグメントの速度は、立方体の上部のy回転と合致する上部セグメントに至るまで徐々に増加している。
【０１５４】
生の入力シーケンスからこのアニメーション式を得るために、ジオメトリック変換符号化ステップのリストがメッシュに適用される。例示のリストはカレントVマトリックスの平均値軌跡であり、その後、一連のアフィン合致ジオメトリック符号化になっている。Vマトリックスメッシュの各行の平均を求めると、マス中心の軌跡が得られ、それからアニメーション式のTranslation項が得られる。立方体の並行移動は、図７の下段アニメーションシーケンスに示されている。
【０１５５】
次に、一連のアフィン合致ジオメトリック変換符号化はy軸を中心に回転している頂点の残りと合致される。頂点マトリックス全体に合致されるy回転項が立方体の中心に良好に合致しているのは、立方体の中心近くの頂点が平均的回転と共に移動するからである。符号化はy軸の中心から始まり、その後、アニメーション式の、次の回復項にどれだけ合致しているかに基づいて、上部までと下部まで外側に移動していく。これから得られるアニメーション式は、次のような形式になっている。
【０１５６】
【数２６】
0004384813.tif 000028
【０１５７】
単純な代数で単純化すると、これは所望のアニメーション式(A)になる。
【０１５８】
詳細項は、次の２パラグラフで説明するように、空間的または時間的に符号化することができる。エンコーダの仕事は、符号化シーケンスの各ステップで、最大のコヒーレンスをもつ次元を選択することである。これは、次元を利用すると共に、最良の予測で詳細スムーズ化を選択することによって行われる。
【０１５９】
各セグメントの空間的次元は、代表的なメッシュを使用するプログレッシブメッシュのエッジ縮小 (edge collapse) を使用してコード化され、この代表的なメッシュはシーケンスの最初のものであるか、初期の未アニメーション化メッシュ（静止形状とも呼ばれる）であるか、のどちらかである。エッジ縮小を行うと、Vの２列が結合されて１つの列になり、オリジナル列を回復するためにデルタが符号化される。
【０１６０】
各セグメントの時間的次元をコード化するには、２つの方法がある。スパースでスムーズなデータでは、頂点位置とアニメーション係数は時間を通るようにスプライン (spline) される。より高詳細レベルは、２つの既存頂点の間に新しいスプライン頂点を挿入することにより追加され、動きは新しいローカル特徴をもつことになる。時間エッジ縮小を行うと、カレントセグメントの２行が結合され、オリジナル行を回復するために行デルタが符号化される。高蜜度アニメーションでは、ウェーブレット (wavelet) が使用され、より高詳細レベルがより多くの詳細係数と共に追加される。詳細レベル間でスムーズに移行するために、クライアント側の表現は、よりスムーズな係数を残したまま、新しい詳細係数とブレンドされる。
【０１６１】
ビューに依存する、望ましい空間的および時間的解像度が与えられているとき、チェックポイントがセーブされ、符号化は各次元で反復的に開始される。これにより、メッシュのピラミッド格子が得られる。格子の各ノード間のリンクは、一方から他方へ移動するために必要な一連の更新である。図８はピラミッドの１レベルを示している。この構造が繰り返されて、完全なピラミッドが得られる。
【０１６２】
空間−時間コーダで使用されるデータ構造の例は以下に示されている。データ構造は、それがサーバに置かれているか、クライアントに置かれているか、あるいは3Dアニメーションシーケンスの選択的プレイバック期間にクライアントとサーバの間で送信されるかどうかに基づいて分類されている。
【０１６３】
クライアント側データ構造のフォーマット
次のデータ構造は、クライアント側でアニメーションを表現するために使用されるものである。
【０１６４】
【表２】
0004384813.tif 000029
【０１６５】
サーバからクライアントへのデータ構造のフォーマット
サーバは次のデータ構造をクライアントに伝達し、選択的プレイバック期間にクライアント側でアニメーションを更新することを可能にする。
【０１６６】
【表３−１】
0004384813.tif 000030
【０１６７】
【表３−２】
0004384813.tif 000031
【０１６８】
【表３−３】
0004384813.tif 000032
【０１６９】
サーバ側データ構造のフォーマット
次のデータ構造は、クライアント側でのアニメーションの選択的プレイバックに関連してサーバ側に置かれているものである。
【０１７０】
【表４】
0004384813.tif 000033
【０１７１】
アニメーションの伝送期間中、サーバとクライアントの間では次のような通信が行われる。
【０１７２】
【表５】
0004384813.tif 000034
【０１７３】
クライアントは、セグメントのカレントビューポイントを、所望の空間的解像度 (spatial resolution) と一緒にサーバに送信する。空間的解像度は、クライアントがセグメントをレンダリングするときのジオメトリック詳細レベルを示している。これに応答して、サーバは空間的更新レコードを返送し、クライアントが空間−時間ピラミッドから所望のジオメトリック詳細レベルを抽出できるようにする。
【０１７４】
セグメントが更新されるときのレートを指定するために、クライアントは時間的解像度 (temporal resolution) とカレント時間インターバルをサーバに送信する。これに応答して、サーバは時間的更新レコードを送信し、クライアントが空間−時間ピラミッドから所望の時間的詳細レベルを抽出できるようにする。
【０１７５】
他の次元にまたがる符号化
これまでは、本明細書では代表的な次元として時間を使用してきた。リニアシーケンスをプレイバックするだけでなく、この次元はインタラクティブコントロールのためにも使用できる。例えば、ひじを曲げる詳細アニメーション（隆起する筋肉、スライドするスキンなどと共に）は、ひじのジョイントアングル（関節角度）によってパラメータ化されている。ユーザがジョイントアングルを指定し、アニメーションシーケンスをその指定に応じて伸張 (decompress) できるようにすると、ユーザは高詳細のアニメーションを制御することができる。これは、ゲームなどのインタラクティブアプリケーションで利用すると便利である。
【０１７６】
この特定例では、曲げるひじのアニメーションは、空間―角度マトリックス構造で表現することができる。各列はひじのオブジェクトの3Dメッシュ内の位置を表し、行はひじの関節の角度位置を表している。時間と同じように、関節角度は、低詳細レベル（例えば、関節角度サンプルが少ない）から高詳細レベル（例えば、関節角度位置を多くしてひじの曲がりを詳細に表している）までの階層構造で表現することができる。選択的プレイバック期間、クライアントは角度の動きに見合った詳細レベルを要求し、この要求に応答して、サーバは関節角度次元の、対応する更新レコード（粗粒化または精細化のどちらか）を送信し、ひじの運動が該当詳細レベルでアニメーション化されるようにする。例えば、ユーザはひじの関節の角度位置を、ジョイスティックなどの入力デバイスから指定することができる。この場合、クライアントは角度位置を計算し、それをサーバに送信すると、サーバからは、該当更新レコードが戻される。
【０１７７】
類似の手法を使用して、他の次元（例えば、ある軸を中心とする回転運動、軸に沿う並行運動、カーブした通路上の動きなど）上の3Dアニメーションを符号化することもできる。
【０１７８】
テクスチャとジオメトリの結合圧縮
頂点位置のほかに、各頂点は、テクスチャ座標のように、3D頂点位置に関して上述した同じ手法を用いて圧縮することができる、他のデートと関連付けることも可能である。テクスチャマップオペレーション (texture map operation) では、グラフィックスレンダリングシステムは2D画像を3Dオブジェクトの表面にマッピングする。オブジェクトの各頂点のテクスチャ座標は、2Dテクスチャ空間における、その頂点の対応する位置を表している。出力画像のピクセルを計算するとき、グラフィックスレンダリングシステムはテクスチャ座標を使用して、テクスチャ画像内の該当テクスチャサンプル（１つまたは複数）をピクセルごとに見つける。テクスチャマップオペレーションの形態に応じて、グラフィックスレンダリングシステムはテクスチャサンプルをフィルタに通してから、その結果のカラー値を出力ピクセルに適用することができる。テクスチャ座標は、テクスチャ座標が3D空間ではなく2D空間の位置を表していることを除けば、3D頂点位置のメッシュと同じマトリックス形式で表現することができる。構造が類似しているために、時間変化3Dジオメトリのマトリックスに適用される同じ圧縮手法を、テクスチャ座標のマトリックスにも適用することが可能である。
【０１７９】
代表例として、テクスチャ座標はスタッチク（静的）であるが、これは必須ではない。例えば、川の水のさざなみの画像は、テクスチャ座標をアニメーション化することだけで下流に移動させることができる。具体的には、特定頂点のテクスチャ座標は時間の関数として表現することができる。ビジュアル効果が大きいクラスでは、アニメーション化ジオメトリとアニメーション化テクスチャを結合することは不可欠である。テクスチャ座標を変化させる新しいアプリケーションは、アニメーション化ジオメトリ圧縮の基礎が与えられていれば、実現することができる。
【０１８０】
詳細レベルの表現は、ジオメトリ座標とテクスチャ画像の両方を含んでいることが好ましい。ジオメトリック詳細レベルが低であれば、テクスチャ座標には対応する低詳細レベルを使用するだけで十分である。テクスチャ画像の空間的解像度は、空間的解像度レベルが変化する階層方式で、可能ならば、空間−時間ピラミッドにおけるジオメトリック詳細レベルに対応付けて、符号化することができる。選択的プレイバックのコンテキストでは、サーバは最初にテクスチャ画像の低詳細レベル係数を送信し、その後、必要に応じて高詳細レベルを送信すれば、よりファインな詳細を必要とするビューポイントでテクスチャ画像を精細化することができる。画像とジオメトリの両方の更新を結合すると、与えられた解像度でどちらが重要であるかに応じて、トレードオフを行うことができる。アニメーション化テクスチャ画像では、このトレードオフは時間的詳細と空間的詳細の両方で行うことができる。
【０１８１】
時間的および空間的符号化の対象となる高次表面
高密度にサンプリングされた頂点マトリックスVの初期表現では、２つの補間マトリックスS（時間を通る）とG（空間を通る）は、連続する位置マトリックスP = S V Gを得るようにグラフィックスシステムによって定義されるものと想定していた。しかし、SとGが初期に一定補間または線形的補間として与えられていれば、特に最新のグラフィックスハードウェアには、スプラインや細分化表面のような、高次ジオメトリック補間のサポートが含まれているので、高次補間値(interpolator) S’とG’をVから導き出すようにすると好都合である。
【０１８２】
最良S’とG’の推定は下から上に向かって行われる。最初に、時間的および空間的に小さな近隣値がランダムに選択され、与えられた次数のローカル最良合致スプライン表面と適合する。次に、最良合致をもつ近隣値の成長と合体 (coalesce) を繰り返すと、S’とG’のローカル貪欲最適値 (local greedy optimum) が見つかる。これは、前述したトライアングルセグメンテーションに似ているが、空間的座標と時間的座標の両方を使用して、合致領域の規模を決定している。
【０１８３】
高次補間値が正確に合致しないときでも、これらは、表面が時間的にどのように移動するか、あるいは空間的に点から点へどのように変化するかを予測する手段として使用することができる。残余R = S V G − S’ V’ G’は、オリジナルマトリックスP = S’ V’ G’ + Rを回復するために使用できる。
【０１８４】
残余の符号化のための変位マップ
大部分のグラフィックスハードウェアは、2Dカラー画像を形状の表面ジオメトリに効率良くマッピングするテクスチャマッピングハードウェアを含んでいる。最新グラフィックスハードウェアは「バンプ(bump)」マッピングも含んでおり、そこでは、2D画像はカラーではなく、形状の法線 (normal) を乱し、関心のある照明効果が得られるようにしている。いくつかの最新グラフィックスハードウェアは「変位(displacement)」マッピングも含んでおり、そこでは、オフセットの2D画像が形状の位置を乱すようにしている。
【０１８５】
時間依存ジオメトリコーダの残余を表面のローカル座標に変換すると、変位マッピングは残余を伸張された表面に適用するために使用することができる。時間依存残余は、変位マップとして符号化された複数の残余をブレンドすることで計算することができる。グラフィックスシステムは高速データ通路と高速頂点プロセッサを装備しているので、このグラフィックスシステムは、最終的残余補正を伸張された形状に適用する効率的な場所になっている。これが特に効率的な手法となるのは、前述した高次表面符号化と併用したときである。
【０１８６】
実施形態の例
本実施形態では、上述した圧縮方法を組み合わせたものを使用して、時間依存ジオメトリを表す頂点位置のマトリックスを圧縮している。図９はこの実施形態におけるコンピュータを示すブロック図であり、図１０は伸張器を示すブロック図である。
【０１８７】
図９に示すように、頂点位置のマトリックスVで表されている、時間依存ジオメトリのストリームを圧縮するプロセスは時間依存メッシュを単純化することから始められる。本実施形態では、アニメーションの第１フレームのメッシュはベースメッシュとして使用されている。しかし、上述したように、ベースメッシュを決定するには、さまざまな代替方法があり、この中には、モデルの作成者が事前定義したもの、マトリックスVに含まれる一連のメッシュの平均から導き出されるもの、などが含まれている。本実施形態では、アニメーションの第１フレームのメッシュに二次曲面誤差測定手法を使用して、ペア縮小の集合を上述した精細化マトリックステーブル行の１つの形で得ている。図９に示す単純化メッシュブロック２５０は、頂点位置のメッシュについてGarlandの二次曲面誤差測定手法を実装するために使用されるルーチンを表している。
【０１８８】
結果として得られるペア縮小の集合は、オリジナル時間依存頂点マトリックスVの行の残りに適用され、ブロック２５２に示すような精細化マトリックスが得られる。この精細化マトリックスは拡張レコードを通るように「順方向にローリング」され、マトリックスVに含まれるオリジナルメッシュの各々の単純化バージョンが作成される。
【０１８９】
ブロック２５２からの単純化メッシュは、単純化ベースメッシュを含めて、ベースメッシュとマトリックスV内の他のメッシュとの間の最良アフィン合致を見つけるために使用される。マトリックスV内のメッシュの各々は、アニメーションシーケンス内のタイムサンプル、つまり、アニメーション内のフレームに対応している。変換合致ブロック２５４は、各フレームのアフィン変換係数の集合を計算するために使用されるルーチンを表している。これらのルーチンは低詳細レベルの頂点マトリックスを使用して、
【０１９０】
【数２７】
0004384813.tif 000035
【０１９１】
に対する最小２乗解の近似値を計算する。変換ブロック２５４には、正規方程式の方法を実行して変換係数の解を求めるルーチンも含まれており、そこには、ベースメッシュの4 x 4 適合マトリックスの累算と反転、およびn x 4 マトリックスと適合マトリックスとのマトリックス積が次のように含まれている。
【０１９２】
【数２８】
0004384813.tif 000036
【０１９３】
本実施形態では、頂点位置の時間依存マトリックスVにおけるメッシュの各々は、そのローカル座標系に表現されている。このようにすると、時間を通るメッシュの動きのコヒーレンスが向上するが、圧縮器の計算複雑性も増加することになる。精細化マトリックスのメッシュはローカル座標に表現されるので、ローカル座標はグローバル座標に変換される必要がある（言い換えれば、メッシュが変換される必要がある）。本実施形態では、これは、アフィン変換係数が計算された後、新しい座標内のメッシュの各々を単純化し直すことによって解決されている。
【０１９４】
精細化マトリックスを新しい座標系に変換する別の方法は、拡張レコードに入っているデルタ値を、それぞれのローカル座標系から新しいグローバル座標系に変換することである。図９のブロック２５６は、ブロック２５０と２５２のメッシュ単純化ルーチンを新座標系のメッシュの各々に適用するプロセスを表している。
【０１９５】
次に、圧縮器は、メッシュの各々と変換ベースメッシュとの間の差分で、各メッシュに対応するアフィン変換係数を使用して計算された差分として残余を圧縮する。アフィン変換係数と単純化ベースメッシュは共に量子化され、その後、量子化器ブロック２６０、２６２と量子化解除器ブロック２６４、２６６に示すように量子化解除される。ジオメトリック変換ブロック２７０は、カレントメッシュのアフィン変換係数をベースメッシュに適用して、変換ベースメッシュを計算するルーチンを表している。変換ベースメッシュと対応する単純化メッシュとの差分は図示のように減算器ブロック２７２によって計算される。
【０１９６】
時間依存ジオメトリをさらに圧縮するために、本実施形態によれば、基底分解コード化 (basis decomposition coding) がオプションとしてサポートされている。なお、量子化残余（量子化ブロック２７４）、アフィン変換係数２７６、およびベースメッシュ２７８は、このステージでトランスミッタ２８０に直接に送ることができる。しかし、ある種のアニメーションでは、基底分解によると、3Dジオメトリマトリックスをさらに圧縮することができ、この中には、残余マトリックス２８２と単純化ベースメッシュを表すマトリックスが含まれている。
【０１９７】
基底分解ブロック２８６は、マトリックスをその基底ベクトル２８８と重み２９０（係数とも呼ばれる）に分解するプロセスを表している。本実施形態では、精細化マトリックスの切り捨てバージョン (truncated version) を使用して、基底関数と重みの集合を計算している。このステップを行うかどうかはオプションであるのは、ある種の動きは分解に役立たないが、それでも精細化マトリックスの空間的および時間的コヒーレンスが大きいためである。従って、基底分解ステップをバイパスし、残余の精細化マトリックスで列/行予測を行うことが可能である。
【０１９８】
基底分解が残余の精細化マトリックスで行われる場合は、重みがブロック２９２、２９４に示すように列/行予測器に渡される。逆に、基底分解が適用されない場合は、フラット精細化階層が列/行予測器に渡される。圧縮器は、量子化ブロック２９６と２９８に示すように、正規量子化を基底ベクトルと予測器ブロックの出力に適用する。
【０１９９】
圧縮器は、時間依存ジオメトリストリームを表す精細化階層全体を符号化するが、階層全体をランタイムにデコーダに送る必要はない。その代わりに、アニメーションの中の、与えられたビューポイントのために必要とされる空間的精細化だけが送信され、更新される必要がある。同様に、時間的精細化が必要になるのは、ジオメトリの位置の変化がアニメーションの中で見える程度まででよい。トランスミッタ２８０は、時間依存ジオメトリの、どの時間的および空間的コンポーネントを送信する必要があるかを決定するように適応させることができる。例えば、トランスミッタは時間依存ジオメトリストリームで表されたモデルのスクリーン空間投影を評価して、アニメーションの中の、与えられたビューポイントのために送信する必要のある空間的および時間的精細化を決定することができる。
【０２００】
図１０は、図９の圧縮器からの符号化時間依存ジオメトリを復号化する伸張器を示すブロック図である。レシーバブロック３２０は符号化時間依存ジオメトリをデマルチプレクスする。圧縮器の動作モードに応じて、この符号化データには、量子化基底ベクトル３２２、予測および/量子化重み３２４、階層構造３２６内の量子化ベースメッシュ、量子化ジオメトリック変換パラメータ３２８、および精細化マトリックスフォーマットの量子化残余（場合によっては、予測残余）を含めることができる。なお、基底ベクトル３２２と重み３２４を使用すると、ベースメッシュだけでなく、残余も表現することができる。量子化解除ブロック３４０−３４８は、それぞれのデータタイプの各々の量子化解除を表している。
【０２０１】
圧縮器がベースメッシュまたはベースメッシュの重みと残余で予測（行または列）を使用していれば、伸張器は逆の予測３５０を行って、マトリックスを予測以前の形態に復元する。
【０２０２】
メッシュ再構築ブロック３５２は、残余の精細化マトリックスとベースメッシュを復元する。圧縮器で行われる基底合成では、k個の浮動小数点乗算累算が行われる。ここで、kは基底ベクトルの個数である。なお、k個の基底ベクトルの部分集合nだけを送信して、精細化マトリックスを圧縮することも可能である。n個の基底ベクトルは最上位ベクトルである。例えば、k個中の最初のn個のベクトル。
【０２０３】
変換ブロック３５４はカレントメッシュの量子化解除アフィン変換係数を、ベースメッシュの再構築精細化マトリックス内の対応するエントリに適用して変換ベースメッシュを計算する。加算器ブロック３５６は量子化解除残余と、変換ベースメッシュの対応する要素を結合することを表している。残余は精細化マトリックスの一部から得られる。その後、拡張ブロック３５８は再構築精細化マトリックスの該当部分を拡張して、カレントフレームの再構築メッシュを計算する。
【０２０４】
軌跡の圧縮
上述したように、3Dモデルの動きを定義するために使用されるジオメトリックデータは、3Dモデルに関連する3D参照点の一連の変形ベクトルとして表すことができる。Guenter他を参照。変形ベクトルはマトリックス形式で表現することができる。例えば、マトリックスの列は時間インターバルに対応し、行は3D参照点の変形ベクトルに対応している。このマトリックスはマトリックスを基底ベクトルと係数に分解すると、効率よくコード化することができる。係数は時間的予測を使用してコード化することができる。量子化とエントロピコード化は、基底ベクトルと係数をコード化するためにも使用できる。
【０２０５】
図１１は、変形ベクトルのマトリックスをどのようにコード化すると、ストアと送信に効率のよいフォーマットになるかを示す図である。ジオメトリックデータは変形ベクトルのマトリックス（４００）として表現されている。この特定例では、列は、アニメーションシーケンスのフレームのような時間のインクリメントに対応している。行は、対応する3D参照点の位置を定義している3Dベクトルに対応している。
【０２０６】
分解ブロック（４０２）はマトリックスを係数（４４０）と基底ベクトル（４０６）に分解するモジュールである。時間的予測ブロック（４０８）は、係数マトリックスの列間の時間的予測を行うモジュールを表している。係数と基底ベクトルは、量子化とエントロピコード化モジュール（４１０、４１２、４１４および４１６）に示すような、量子化とエントロピコード化を使用して圧縮することができる。係数の場合には、予測は係数の予測前と後に係数のマトリックスで行うことができる。ジオメトリックデータとそのデータをストアするために使用されるマトリックスの形態によっては、係数マトリックスの列と行のどちらでも予測を使用することが可能である。
【０２０７】
エントロピコード化モジュール（４１２、４１６）の出力はトランスミッタまたはハードディスクなどのストレージデバイスに送られる。ある種のアプリケーションでは、変形ベクトルは、可能であれば、なんらかの形態の入力に応答して計算され、送信用にコード化されている。ここで言う「トランスミッタ」とは、バス、コンピュータネットワーク、電話回線、シリアル通信リンクなどの、なんらかの形態の通信媒体上にコード化データを伝送するために使用されるシステムソフトウェアおよび/またはハードウェアのことである。圧縮ジオメトリデータがどのように転送されるかは、通信媒体によって決まる。
【０２０８】
変形データの即時転送を必要としない他のアプリケーションでは、変形ベクトルを圧縮すると、依然として有利である。具体的には、圧縮データに必要な記憶スペースが少なくなり、必要とするメモリ帯域幅が低減化される。
【０２０９】
マトリックスを基底ベクトルと係数に分解する方法には、さまざまなものがある。以下では、主要コンポーネント分析をどのように適用すると、3Dモデルの時間変化位置を表すマトリックスを圧縮できるかを、例を示して説明することにする。
【０２１０】
データ集合がマトリックスAとして表されていて、データのフレームiがAの列iをマップしているとすると、Aの最初の主要コンポーネントは次のようになる。
【０２１１】
【数２９】
0004384813.tif 000037
【０２１２】
式 (3) を最大限にするuは、AAT の最大固有値 (eigenvalue) に関連する固有ベクトル (eigenvector) あり、これは最大値の値でもある。後続の主要コンポーネントは、すべての先行主要コンポーネントに直交していることを除けば、同じように定義される。つまり、uiT uj for j ≠ i。主要コンポーネントはマトリックスUで表される正規直交基底集合 (orthonormal basis set) となり、そこでは、Uの列は、固有値サイズ別に配列されたAの主要コンポーネントであり、最上位主要コンポーネントはUの最初の列に置かれている。
【０２１３】
Aマトリックス内のデータは、次のように主要コンポーネント基底上に投影することができる。
【０２１４】
【数３０】
0004384813.tif 000038
【０２１５】
Wの行iは、列Ai を基底ベクトルui 上に投影したものである。もっと正確に言うと、Wの行iのｊ番目の要素はオリジナルデータのフレームjを、i番目の基底ベクトル上に投影したものに対応している。Wマトリックス投影の要素は係数と呼ぶことにする。
【０２１６】
同様に、Aは、次のように基底集合で乗算すると、Wから正確に再構築することができる。
【０２１７】
【数３１】
0004384813.tif 000039
【０２１８】
本発明の目的上、主要コンポーネントの最も重要なプロパティは、これらが、I2 正規形の意味で再構築するときの最良線形基底集合となることである。与えられたどのマトリックスUk の場合も（ここで、kはマトリックスの列の数およびk < rank(A) である）、次の再構築誤差
【０２１９】
【数３２】
0004384813.tif 000040
【０２２０】
（ここで、
【０２２１】
【数３３】
0004384813.tif 000041
【０２２２】
は次のように定義されているFrobenius正規形である。）
【０２２３】
【数３４】
0004384813.tif 000042
【０２２４】
は、Uk がAのk個の最上位主要コンポーネントを含んでいるマトリックスであれば、最小限になる。
【０２２５】
データ集合Aは、その対応するWとUマトリックスの要素を量子化し、これらをエントロピコード化することで圧縮することができる。圧縮データは主要コンポーネント基底ベクトルがなければ再構築できないので、WマトリックスとUマトリックスの両方を圧縮する必要がある。基底ベクトルでは、DCT基底のように、オリジナルデータ集合から独立して計算できる基底集合では存在しないオーバヘッドが余分に生じることになる。
【０２２６】
特定の構造をもたないデータシーケンスでは、得られる圧縮効率以上に基底ベクトルの余分オーバヘッドが発生するおそれがある。しかし、正規フレーム間構造をもつデータ集合では、主要コンポーネントの基底ベクトルで再構築するときの残余誤差は、他のベースよりもはるかに小さくすることができる。この残余誤差の減少は、基底ベクトルのオーバヘッドビットを埋め合わせるのに十分な大きさになる。
【０２２７】
主要コンポーネントは、Strang著「線形代数とその応用(Linear Algebra and its Application)」、HBJ, 1988に記載されている特異値分解 (singular value decomposition − SVD) 法を使用して計算することができる。このアルゴリズムを効率化した実装は広く利用されている。マトリックスAのSVDは次のようになっている。
【０２２８】
【数３５】
0004384813.tif 000043
【０２２９】
上記において、Uの列はA AT の固有値、対角マトリックスΣ上の特異値Σi はA AT の固有値の平方根、Vの列はA AT の固有値である。Uのi 番目の列はAのi 番目の主要コンポーネントである。Aの最初のk個の左特異値を計算することは、最初のk個の主要コンポーネントを計算するのと同じである。
【０２３０】
以上、あるタイプの主要コンポーネント分析を説明してきたが、他の形態の主要コンポーネント分析を使用してジオメトリデータを圧縮することも可能である。別の形態の主要コンポーネント分析は、KL変換 (Karhunen-Loeve) と呼ばれている。
【０２３１】
３Ｄマーカの変形ベクトルの圧縮
ジオメトリックデータは、顔の動きが高度に構造化されているため、上述したように長期の時間的コヒーレンスプロパティをもっている。本実施形態を使用したあるテストケースでは、ジオメトリックデータの基底ベクトルのオーバヘッドは、キャプチャされる3Dオブジェクトに182個のマーカがあったため、固定していた。このケースでは、基底ベクトルの最大数は、3つの数x, y, zが各マーカと関連付けられているので182 * 3である。基底ベクトルのオーバヘッドはアニメーションシーケンスの長さが増加すると共に着実に減少している。
【０２３２】
ジオメトリックデータは、i番目のフレームの3Dオフセットデータを受け取り、それをデータマトリックスAg のi番目の列にマッピングすることによってマトリックス形式にマッピングされる。投影係数はマトリックスMg にストアされる。
【０２３３】
投影係数の列の間に顕著な相関関係があるのは、3D参照点の動きが経時的に相対的にスムーズであるからである。量子化投影係数のエントロピは列iの投影係数を、列i-1、つまり、ci-1 +Δiから時間的に予測し、これらの列の対応する要素間の差分を符号化することによって減少することができる。このテストケースでデータ集合を圧縮するために、均一量子化を使用して係数を量子化し、その後時間的予測を使用してこれらをさらに圧縮した。以下で述べるように、他の形態の量子化を使用することも可能である。
【０２３４】
このデータ集合では、Wg の最初の45個の行に対応する、最初の45個の主要コンポーネントに関連する投影係数だけが顕著な時間的相関関係をもっているため、最初の45個の行だけが時間的に予測される。残りの行は直接にエントロピコード化される。時間的予測の後、エントロピこのテストケースでは、約20パーセントだけ減少している。図１２は、最初の45個の係数の時間的予測が、どのようにエントロピを減少したかを示すグラフである。垂直軸はエントロピをサンプル当たりのビット数で示し、水平軸は係数のインデックスを示している。このケースでは、各係数はサンプルである。点線は予測なしの係数のエントロピをプロットしたもので、実線は予測付きの係数のエントロピをプロットしたものである。
【０２３５】
上述したように、基底ベクトルはこれらを量子化すると、さらに圧縮することができる。本実施形態では、基底ベクトルは、ピーク誤差レートを選択し、その後、各ベクトルに割り当てられた量子化レベルの数を各ベクトルの投影係数の標準偏差に基づいて変えることによって圧縮されている。この形態の量子化はスカラ量子化 (scalar quantization − SQ) とも呼ばれている。SQは、実数を丸めによって整数に変換する量子化法である。SQでは、丸め関数（例えば、round(.)）が次の例に示すように、実数を整数に変換している。すなわち、数4.73はround(4.73) = 5によって近似化され、数3.21はround(3.21) = 3によって近似化され、数-6.1はround(-6.1) = -6によって近似化される。なお、丸めには、近似化誤差があり、これは-0.5と0.5の範囲で変化している。つまり、その最大絶対値は0.5である。round(.)関数のとり得る値は量子化レベルとも呼ばれている。
【０２３６】
以下の例では、xi が基底ベクトルのi 番目の座標であり、i が1からNの間で変化するものとしている。ここで、Nは、すべてのベクトルにおけるすべての座標の数である。SQ法の例は次のようになっている。
【０２３７】
1) すべてのxi（ただし、I = 1,2,..., N）を調べ、Vをその最大絶対値と名付ける。つまり、すべてのiについてV = max { |xi| }
2) 最大相対誤差（「ピーク誤差レート」）dをセットする。例えば、d = 0.001は、最大相対誤差が0.1%であることを意味する。
3) すべてのxi を「ゲイン」係数だけスケーリングする。ただし、A = 0.5 / (d* V)。すなわち、すべてのiについてyi = A * xi を計算する。
4) 次に、値を最寄りの整数に丸めて量子化する。つまり、すべてのi についてui = round(yi)
5) 量子化した値のスケーリングを、Aの反転によって元に戻す。つまり、すべてのi について vi = ui / Aを計算する。
【０２３８】
なお、量子化値vi はオリジナル値xi の近似値になっている。この近似値の質は、最大相対誤差がmax(|xi - vi|) / max {|xi|} <= d を満足しているので、パラメータdによって制御される。
【０２３９】
なお、vi とui の間には１対１の関係がある。ui は整数であるので、これらは有限数のビットで表されている。さらに、小さな値をもつui は大きい値をもつものよりもビット数が少なくなっている。
【０２４０】
最後に、画像の集合が与えられているとき、ベクトルの値ui は確率分布が非均一になる。例えば、yi の値の多くは非常に小さいのが代表的であるので、ui はゼロになる。従って、量子化によると、量子化されたデータをエントロピコーダで圧縮すると、コードワードが発生確率に基づいて各値に割り当てられるので圧縮効率が向上する。図１２のグラフは、そのようなコーダのエントロピ（係数当たりの平均ビット数）を示している。
【０２４１】
別の形態の量子化を使用することも可能である。例えば、数xi は小さなベクトルにグループ化した後で（例えば、M = 4またはM = 8の値グループ）、ベクトル量子化 (vector qualification − VQ) を使用して圧縮することができる。VQでは、ベクトルはM次元空間における正規または非正規点格子内の最寄りの近隣によって近似化される。
【０２４２】
実用では、本テストケースで生成されたデータの場合、VQを使用しても向上はわずかである。多くても圧縮が20%向上するだけである。
【０２４３】
上述したように、予測係数と量子化基底ベクトルは、算術演算またはハフマン(Huffman) コード化などの、エントロピコード化を使用するとさらに圧縮される。エントロピコード化によると、発生頻度の高いサンプルには短いコードが、発生頻度の低いサンプルには長いコードが割り当てられるので、ジオメトリックデータはさらに圧縮されることになる。
【０２４４】
ピーク誤差レートをいろいろと変えてWgを圧縮したアニメーションシーケンスをビジュアルに検査した。誤差レベルが約0.001または0.002のときのWg のエントロピは36 Kビット/秒、Ug のエントロピは13 Kビット/秒であり、全グラフィックデータでは合計40 Kビット/秒である。これらの値は3330フレームのアニメーションシーケンス（１秒）の場合の平均である。
【０２４５】
伸張 (decompression)
ジオメトリデータは、コード化ステップを逆に実行することによって復号化される。最初に、エントロピデコーダ（復号器）は、基底ベクトルと係数を可変長コードから再構築する。次に、係数が予測係数から再構築される。次に、逆量子化器は係数と基底ベクトルを復元する。変形ベクトルのオリジナルマトリックスは、その後、基底ベクトルと係数マトリックスから再構築される。
【０２４６】
変形軌跡エンコーダとしてのセグメンテーションとジオメトリック変換
Guenter他によれば、システムへの入力として変形コントロールの集合が与えられている（例えば、俳優の顔またはボディ上の蛍光ドットの位置によって）。このセクションで説明している手法は、生の頂点マトリックスが与えられているとき、変形コントロールを推定している。初期頂点マトリックスVが与えられた後で、上述したセグメンテーションとジオメトリック変形手法を適用すると、V = A Bが因数分解される。ここで、Aは軌跡の集合、Bは影響重み (influence weight) の集合である。例えば、アフィンジオメトリックコーダでは、左辺は時間依存アフィン変換であり、右辺は初期ベースメッシュの集合である。
【０２４７】
【数３６】
0004384813.tif 000044
【０２４８】
ジオメトリの意味では、Aは時間変化変形コントロールの集合である。アフィン例では、これらのコントロールは、オリジナル表面近くの並行移動中心周りの回転、スケール、およびスキューを定義する点の集合である。
【０２４９】
動作環境
プロトタイプは次の２システム上に実装されている。
1) Silicon Graphics, Inc.提供のワークステーション
a.  150MHz MIPS R4400 プロセッサおよび128 MBメモリを搭載し、IRIX 5.3オペレーティングシステムが稼動しているIndigo2 モデル。
b.  OpenGLが稼動している急進的グラフィックスコプロセッサ
2) Gateway, Inc. 提供のGateway 2000コンピュータ
a.  300MHz Intel Pentium IIプロセッサと128 MBメモリを搭載し、Microsoft Windows 98オぺレーティングシステムが稼動しているE5000モデル。
b.  NVIDIA RivaTNTグラフィックスチップセットを使用し、Microsoft DirectXマルチメディアAPIが稼動しているDiamond Multimedia Viper550グラフィックスカード。
【０２５０】
図１３と以下の説明は、上述したソフトウェアルーチンを実装できる適当なコンピューティング環境の概要を簡単に説明することを目的としている。
【０２５１】
図１３は、本発明用の動作環境として使用できるコンピュータシステムの例を示す図である。コンピュータシステムは従来のコンピュータ５２０を装備し、その中には、処理ユニット５２１、システムメモリ５２２、およびシステムメモリを含む種々のシステムコンポーネントを処理ユニット５２１に結合しているシステムバス５２３が含まれている。システムバスは、いくつかを挙げると、PCI、VESA、マイクロチャネル (Microchannel)、ISAおよびEISAなどの、従来の種々バスアーキテクチャのいずれかを使用する、数種タイプのバス構造のいずれかで構成することが可能であり、この中には、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスが含まれている。システムメモリとしては、リードオンリメモリ (read only memory - ROM) ５２４とランダムアクセスメモリ (random access memory - RAM) ５２５がある。基本入出力システム (basic input/output system − BIOS) ５２６は、スタートアップ時のときのように、コンピュータ５２０内のエレメント間で情報を転送しやすくする基本ルーチンから構成され、ROM５２４に格納されている。コンピュータ５２０は、さらに、ハードディスクドライブ５２７、例えば、取り外し可能ディスク５２９に読み書きするための磁気ディスクドライブ５２８、および例えば、CD-ROMディスク５３１を読み取り、あるいは他の光媒体に読み書きするための光ディスクドライブを装備している。ハードディスクドライブ５２７、磁気ディスクドライブ５２８、および光ディスクドライブ５３０は、それぞれハードディスクドライブインタフェース５３２、磁気ディスクドライブインタフェース５３３、および光ディスクドライブインタフェース５３４を通してシステムバス５２３に接続されている。これらのドライブおよび関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令などをコンピュータ５２０のために保管しておく、不揮発性ストレージとなっている。上記コンピュータ可読媒体の説明では、ハードディスク、取り外し可能磁気ディスクおよびCDだけが挙げられているが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、Bernoulliカートリッジなどのように、コンピュータが読み取れる媒体ならば、他のタイプの媒体をこのコンピューティング環境で使用することも可能である。
【０２５２】
ドライブおよびRAM５２５には、複数のプログラムモジュールを格納しておくことができる。そのようなものとしては、オペレーティングシステム、１つまたは複数のアプリケーションプログラム（上述した圧縮および伸張ルーチンなど）、他のプログラムモジュール５３７、およびプログラムデータ５３８（例えば、マトリックスV、ジオメトリック変換パラメータ、残余の精細化マトリックス、ベースメッシュなど）などがある。ユーザは、キーボード５４０およびマウス５４２などのポインティングデバイスからコマンドや情報をコンピュータ５２０に入力することができる。他の入力デバイス（図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどがある。上記および他の入力デバイスは、システムバスに結合されているシリアルポートインタフェース５４６を通して処理ユニット５２１に接続されていることがよくあるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス (universal serial bus − USB) などの、他のインタフェースで接続することも可能である。
【０２５３】
モニタ５４７または他のタイプのディスプレイデバイスも、ビデオコントローラ５４８などのインタフェースを介してシステムバス５２３に接続されている。ビデオコントローラは、ピクセル強度値を、ディスプレイ上でスキャンされるアナログ信号に変換することによってレンダリングパイプラインによって生成される出力画像の表示を管理している。グラフィックスワークステーションによっては、コンピュータ上の拡張スロットにプラグインされるグラフィックスアクセラレータやマザーボード上のバス構造を通してプロセッサとメモリに接続されるグラフィックスレンダリングチップセットのような、追加のレンダリングデバイスを装備しているものもある。この種のグラフィックスレンダリングハードウェアは、代表例として、専用ハードウェアを使用して、Vにメッシュで形成されたポリゴン（多角形）などの、ジオメトリックプリミティブをスキャン変換することによって画像生成を加速化している。
【０２５４】
コンピュータ５２０は、リモートコントローラ５４９などの、１つまたは複数のリモートコンピュータとの論理的コネクションを使用するネットワーキング環境で動作させることができる。リモートコンピュータ５４９はサーバ、ルータ、ピアデバイスまたは他の共通ネットワークノードにすることができ、コンピュータ５２０に関連して上述したエレメントの多くまたはすべてを含んでいるのが代表的である。なお、図１３には、メモリストレージデバイス５５０だけが示されている。図１３に示す論理的コネクションとしては、ローカルエリアネットワーク (local area network − LAN) ５５１と広域ネットワーク(wide area network − WAN) ５５２がある。このようなネットワーキング環境は、オフィス、エンタープライズワイドコンピュータネットワーク、イントラネットおよびインターネット (the Internet) で普及している。
【０２５５】
LANネットワーキング環境で使用されるときは、コンピュータ５２０はネットワークインタフェースまたはアダプタ５５３を通してローカルネットワーク５５１に接続されている。WANネットワーキング環境で使用されるときは、コンピュータ５２０は、インターネットなどの広域ネットワーク５５２上で通信を確立するためのモデム５５４または他の手段を装備しているのが代表的である。モデム５５４は、外部モデムと内部モデムのどちらも、シリアルポートインタフェース５４６を介してシステムバス５２３に接続されている。ネットワーキング環境では、コンピュータ５２０に関連して示されているプログラムモジュールまたはその一部は、リモートメモリストレージデバイスに格納しておくことができる。図示のネットワークコネクションは単なる例であり、コンピュータ間の通信リンクを確立する他の手段を使用することも可能である。
【０２５６】
【表６】
0004384813.tif 000045
【０２５７】
表１は、コーデックでの結果であり、そこでは、残余行予測によるジオメトリック変換コード化 (Affin-Match) によって時間依存頂点マトリックスが圧縮され、その後に続いてエントロピコード化（GNUのgzipのLempel-Ziv手法を使用）が行われている。この表は、未圧縮浮動小数点頂点マトリックス（サイズ14544000バイト = 400フレーム * 3030頂点/フレーム * 3座標/頂点 * 4バイト/座標）と圧縮メッシュとの比率別にソートされている。比較のために、最後の行には、16ビットに量子化された生の（raw）頂点マトリックスが示されている。
【０２５８】
【表７】
0004384813.tif 000046
【０２５９】
表２は、各種圧縮手法の比較を示している。これらの結果から分かるように、アニメーション化モデルがアフィン変換モデル（Chicken欄の最下段行）に近いとき、アフィンマッチ手法が高圧縮になっている。MPEG4の実験用圧縮器は階層のアニメーションを活用する設計になっていない。顔の例では、全頂点マトリックスに適用される汎用アフィン合致圧縮器は、各フレームに適用されるMPEG4実験用コーダよりも性能が悪くなっている。ドット軌跡に適用されたときは、アフィン合致圧縮器は良好な働きをする。このことから分かるように、圧縮器は、最も適合するエンコーダを見つけるためには、アフィン合致だけよりも、大きなクラスのアニメーションモデルを探さなければならない。
【０２６０】
代替実施形態
以上、可能とされるいくつかの実施形態を参照して本発明を説明してきたが、本発明はこれらの特定実施形態の範囲に限定されないことはもちろんである。本発明の実施形態には、上述してきた新規コード化方法の１つまたは２つ以上を取り入れることが可能である。さらに、上述したコード化方法は、他のコード化方法と併用することが可能である。時間変化ジオメトリデータを表すマトリックスには、離散コサイン変換 (Discrete Cosine Transform − DCT)、ウェーブレット/ゼロツリーコーダのような、周波数ドメインコーダを適用することが可能であり、この中には、頂点位置のマトリックス、変形ベクトルや奇跡のマトリックス、および残余のマトリックスが含まれている。これらのコード化方式は、上述したコード化方法で残余マトリックスに適用したとき特に効果的である。ジオメトリック構造が除かれた後（例えば、アフィン変換ベースメッシュがカレントの頂点位置マトリックスから除かれた後）、周波数ドメインコーダを残余マトリックスに適用することができる。周波数ドメインコーダに加えて、エントロピコーダと量子化を使用すると、変化するジオメトリストリーム内のデータをさらに圧縮することができる。
【０２６１】
圧縮手法は、上述した空間と時間だけでなく、他の次元にわたっても適用することが可能である。
【０２６２】
本発明の原理を適用できる実施形態は多数が可能であるので、当然に理解されるように、上述してきた実施形態は本発明の単なる例であり、本発明の範囲を限定するものではない。むしろ、本発明の範囲は特許請求の範囲に定義されている通りである。従って、特許請求の範囲に記載されている特徴はすべて、本発明の範囲と精神に属するものである。
【図面の簡単な説明】
【図１】  メッシュ変換コーダの例を示すブロック図である。
【図２】  変換マッチングを実行して変換パラメータを時間依存ジオメトリから導き出すベースメッシュ変換コーダを示すブロック図である。
【図３】  ジオメトリック変換ではなく、逆ジオメトリック変換を符号化する代替ベースメッシュ変換コーダを示すブロック図である。
【図４】  先行タイムサンプル用に計算されたメッシュを、カレントタイムサンプルのベースメッシュとして使用する別タイプのメッシュ変換コーダを示すブロック図である。
【図５】  マトリックス予測コーダの例を示すブロック図である。
【図６】  主要コンポーネント分析を使用して時間依存ジオメトリストリームを圧縮するメッシュ基底コーダを示すブロック図である。
【図７】  回転しながら、並行移動する立方体のアニメーションシーケンスを示す図であり、そこでは、アニメーションのいくつかの側面が別々のフレーム列に示されている。つまり、1) 最下行は左から右へ単純に並行移動する立方体のジオメトリを示し、2) 中間行は立方体の上部が立方体の下部よりも高速に回転しているが、立方体の辺が直線のままになっている中間形態のアニメーションを示し、3) 最上行は立方体の曲線の動きが複雑化し、その頂点が立方体の下部から上部に徐々に高速に回転していることを示している。
【図８】  空間と時間の両方における詳細レベル間の空間−時間ピラミッドの構造を示す図である。
【図９】  メッシュ変換コード化、基底コード化、メッシュ単純化および行/列予測コード化を結合した時間依存ジオメトリのプロトタイプ圧縮器を示すブロック図である。
【図１０】  図９の圧縮器によって出力された圧縮時間依存ジオメトリの伸張器を示すブロック図である。
【図１１】  主要コンポーネント分析、時間的予測、量子化およびエントロピコード化を使用して時間変化ジオメトリを符号化するコーダを示すブロック図である。
【図１２】  変形ベクトルの主要コンポーネント分析によって生成された係数の時間的予測が係数のエントロピを低減化する様子を示すグラフである。
【図１３】  本発明をソフトウェアで実現したときの動作環境の働きをするコンピュータシステムを示すブロック図である。
【図１】
0004384813.tif 000047
【図２】
0004384813.tif 000048
【図３】
0004384813.tif 000049
【図４】
0004384813.tif 000050
【図５】
0004384813.tif 000051
【図６】
0004384813.tif 000052
【図７】
0004384813.tif 000053
【図８】
0004384813.tif 000054
【図９】
0004384813.tif 000055
【図１０】
0004384813.tif 000056
【図１１】
0004384813.tif 000057
【図１２】
0004384813.tif 000058
【図１３】
0004384813.tif 000059