(57)【特許請求の範囲】
【請求項１】
ポリゴンデータの幾何圧縮を三角形ストリップの順序で頂点毎に行う圧縮システムにおいて、
処理対象となる第１の頂点を、その直前の第２の頂点との差分である第１の差分ベクトルで表現する差分ベクトル算出部と、
前記第２の頂点およびその直前の第３の頂点とによって規定される第２の差分ベクトルと、前記第３の頂点およびその直前の第４の頂点とによって規定される第３の差分ベクトルとに基づいて、前記第１の差分ベクトルに関する三次元の局所基底を算出する局所基底算出部と、
前記算出された局所基底に基づいて、前記第１の差分ベクトルを局所変換する局所変換部と、
前記局所変換された第１の差分ベクトルのそれぞれの成分に関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てることで歪み圧縮された第１の差分ベクトルを圧縮データとして出力する仮数切捨部と
を有することを特徴とするポリゴンデータの圧縮システム。
【請求項２】
前記局所基底は、前記第３の差分ベクトルと平行である第１の基底成分、および、前記第２の差分ベクトルと前記第３の差分ベクトルとによって張られる面の法線方向である第２の基底成分の少なくとも一方を含むことを特徴とする請求項１に記載されたポリゴンデータの圧縮システム。
【請求項３】
前記局所基底は、前記第２の差分ベクトルと前記第３の差分ベクトルとによって張られる面上の特定方向である第３の基底成分を含むことを特徴とする請求項２に記載されたポリゴンデータの圧縮システム。
【請求項４】
前記第３の基底成分は、前記第２の差分ベクトルと、前記第３の差分ベクトルとに基づいたグラム-シュミット直交化によって算出されることを特徴とする請求項３に記載されたポリゴンデータの圧縮システム。
【請求項５】
前記仮数切捨部は、前記局所変換された第１の差分ベクトルのそれぞれの成分の指数部に関して、エントロピー符号化を施すことを特徴とする請求項１から４のいずれかに記載されたポリゴンデータの圧縮システム。
【請求項６】
前記第２の頂点、前記第２の差分ベクトルおよび前記第３の差分ベクトルは、従前に歪み圧縮された差分ベクトルに対して、前記局所変換の逆変換を施すことによって復元された差分ベクトルに基づいて生成されることを特徴とする請求項１から５のいずれかに記載されたポリゴンデータの圧縮システム。
【請求項７】
ポリゴンデータの幾何圧縮を三角形ストリップの順序で頂点毎に行う圧縮システムにおいて、差分ベクトル算出部が、処理対象となる第１の頂点を、当該第１の頂点と共に第１の三角形の一辺を形成する第２の頂点との差分である第１の差分ベクトルで表現するとともに、仮数切捨部が、当該第１の差分ベクトルのそれぞれの成分に関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てることにより、当該第１の差分ベクトルを歪み圧縮した上で圧縮データとして出力する処理と、圧縮データ伸張部が、前記歪み圧縮された第１の差分ベクトルを圧縮前の第１の差分ベクトルに伸張するとともに、頂点データ算出部が、当該伸張された第１の差分ベクトルを前記第２の頂点に加算することによって、前記第１の頂点を復元する処理と、を頂点毎に繰り返し実行し、
前記第１の頂点の直後の頂点に関する前記差分ベクトル算出部における処理では、直前の前記頂点データ算出部における処理で復元された前記第１の頂点を前記第２の頂点として用いることを特徴とするポリゴンデータの圧縮システム。
【請求項８】
ポリゴンデータの圧縮データを伸張する伸張システムにおいて、
歪み圧縮された第１の差分ベクトルのそれぞれの成分に関して、圧縮時に切り捨てられた仮数部の下位ビットを補うことによって、処理対象となる第１の頂点と、その直前の第２の頂点との差分である第１の差分ベクトルに伸張する圧縮データ伸張部と、
前記第２の頂点およびその直前の第３の頂点とによって規定される第２の差分ベクトルと、前記第３の頂点およびその直前の第４の頂点とによって規定される第３の差分ベクトルとに基づいて、前記第１の差分ベクトルに関する三次元の局所基底を算出する局所基底算出部と、
前記算出された局所基底に基づいて、圧縮時における局所変換の逆変換である局所逆変換を前記第１の差分ベクトルに施す局所逆変換部と、
前記局所逆変換が施された第１の差分ベクトルと、従前の伸張によって算出済の前記第２の頂点とに基づいて、前記第１の頂点を算出する頂点データ算出部と
を有することを特徴とするポリゴンデータの伸張システム。
【請求項９】
前記局所基底は、前記第３の差分ベクトルと平行である第１の基底成分、および、前記第２の差分ベクトルと前記第３の差分ベクトルとによって張られる面の法線方向である第２の基底成分の少なくとも一方を含むことを特徴とする請求項８に記載されたポリゴンデータの伸張システム。
【請求項１０】
前記局所基底は、前記第２の差分ベクトルと前記第３の差分ベクトルとによって張られる面上の特定方向である第３の基底成分を含むことを特徴とする請求項９に記載されたポリゴンデータの伸張システム。
【請求項１１】
前記第３の基底成分は、前記第２の差分ベクトルと、前記第３の差分ベクトルとに基づいたグラム-シュミット直交化によって算出されることを特徴とする請求項１０に記載されたポリゴンデータの伸張システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ポリゴンデータの頂点座標の数値情報を削減する幾何圧縮に関する。
【背景技術】
【０００２】
近年、ＣＰＵ（Central Processing Unit）の高性能化やグラフィックボードの普及により、３Ｄグラフィックスを利用したデジタルコンテンツが増加し、ゲーム機から携帯電話までプラットフォームも多様化している。これらにおいて、数万オーダーのポリゴンデータ処理も可能になりつつあるが、ＣＰＵからグラフィックアクセラレータへの膨大なデータ転送によって、バスを通じたトラフィックが処理速度のボトルネックになる場合が多い。この問題に関しては、画像データや音声データと同様にポリゴンデータを圧縮転送し、処理側で伸張する手法が有効となる。従来のポリゴンデータに関する研究は、位相圧縮と幾何圧縮とに大別される。位相圧縮は、頂点の連結情報を対象とする無歪み圧縮であり、一般化三角形ストリップ、一般化三角形メッシュ等がある。特に、主な３Ｄグラフィックスライブラリでは、インデックスバッファ形式によって、位相圧縮に関する頂点重複の問題を解決している。
【０００３】
一方、幾何圧縮は、頂点座標の数値情報を対象とする無歪み圧縮または歪み圧縮であり、スカラー量子化、エントロピー符号化等がある。例えば、歪み圧縮であるスカラー量子化は、頂点座標の各成分の値を階段状に丸めることで、割り当てるビット数を削減する。一方、指数部のように一定の偏りがあるデータでは、シンボルの出現頻度に応じた可変長符号を割り当て、総符号量を減らす無歪み圧縮が利用される。例えば、非特許文献１には、浮動小数の指数部を算術符号によって圧縮する手法が開示されている。
【０００４】
また、特許文献１には、三角形メッシュで構成されたオブジェクトを対象とした位相圧縮と、その幾何圧縮とについて開示されている。この幾何圧縮では、まず、すべての頂点の座標を量子化によって整数値化する。つぎに、対象とする頂点によって形成される三角形Ａは、これと隣接する別の三角形Ｂと平行四辺形をなすと仮定して、対象とする頂点の座標を予測する。予測された座標は、その平行四辺形に隣接する別の三角形ペア間の角度より予測された三角形Ａ，Ｂ間の角度に基づいて、補正される。そして、補正された予測座標と実際の座標との残差を算出し、これにエントロピー符号化などが施される
【非特許文献１】Martin Isenburg, Peter Lindstorm and Jack Soneyink, "Lossless Compression of Predicted Floating-Point Geometry" Computer-Aided Design, Volume 37, Issue 8, pp869-8778 (2005)
【特許文献１】米国特許第６，１６７，１５９号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、ポリゴンデータの頂点座標の数値情報を有効に削減する新規な幾何圧縮手法を提案することである。
【課題を解決するための手段】
【０００６】
第１の発明は、差分ベクトル算出部と、局所基底算出部と、局所変換部と、仮数切捨部とを有し、ポリゴンデータの幾何圧縮を三角形ストリップの順序で頂点毎に行う圧縮システムを提供する。差分ベクトル算出部は、処理対象となる第１の頂点を、その直前の第２の頂点との差分である第１の差分ベクトルで表現する。局所基底算出部は、第２の頂点およびその直前の第３の頂点とによって規定される第２の差分ベクトルと、第３の頂点およびその直前の第４の頂点とによって規定される第３の差分ベクトルとに基づいて、第１の差分ベクトルに関する三次元の局所基底を算出する。局所変換部は、算出された局所基底に基づいて、第１の差分ベクトルを局所変換する。仮数切捨部は、局所変換された第１の差分ベクトルのそれぞれの成分に関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てることで歪み圧縮された第１の差分ベクトルを圧縮データとして出力する。
【０００７】
ここで、第１の発明において、局所基底は、第３の差分ベクトルと平行である第１の基底成分、および、第２の差分ベクトルと第３の差分ベクトルとによって張られる面の法線方向である第２の基底成分の少なくとも一方を含むことが好ましい。また、局所基底は、第２の差分ベクトルと第３の差分ベクトルとによって張られる面上の特定方向である第３の基底成分を含んでいてもよい。この場合、第３の基底成分は、第２の差分ベクトルと、第３の差分ベクトルとに基づいたグラム-シュミット直交化によって算出されることが好ましい。
【０００８】
また、第１の発明において、仮数切捨部は、局所変換された第１の差分ベクトルのそれぞれの成分の指数部に関して、エントロピー符号化を施してもよい。
【０００９】
第１の発明において、第２の頂点、第２の差分ベクトルおよび第３の差分ベクトルは、従前に歪み圧縮された差分ベクトルに対して、局所変換の逆変換を施すことによって復元された差分ベクトルに基づいて生成されることが好ましい。
【００１６】
第２の発明は、ポリゴンデータの幾何圧縮を三角形ストリップの順序で頂点毎に行う圧縮システムにおいて、差分ベクトル算出部が、処理対象となる第１の頂点を、当該第１の頂点と共に第１の三角形の一辺を形成する第２の頂点との差分である第１の差分ベクトルで表現するとともに、仮数切捨部が、当該第１の差分ベクトルのそれぞれの成分に関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てることにより、当該第１の差分ベクトルを歪み圧縮した上で圧縮データとして出力する処理と、圧縮データ伸張部が、歪み圧縮された第１の差分ベクトルを圧縮前の第１の差分ベクトルに伸張するとともに、頂点データ算出部が、当該伸張された第１の差分ベクトルを第２の頂点に加算することによって、第１の頂点を復元する処理と、を頂点毎に繰り返し実行し、第１の頂点の直後の頂点に関する差分ベクトル算出部における処理では、直前の頂点データ算出部における処理で復元された第１の頂点を第２の頂点として用いるポリゴンデータの圧縮システムを提供する。
【００１７】
第３の発明は、圧縮データ伸張部と、局所基底算出部と、局所逆変換部と、頂点データ算出部とを有し、ポリゴンデータの圧縮データを伸張する伸張システムを提供する。圧縮データ伸張部は、歪み圧縮された第１の差分ベクトルのそれぞれの成分に関して、圧縮時に切り捨てられた仮数部の下位ビットを補うことによって、第１の頂点と、その直前の第２の頂点との差分である第１の差分ベクトルに伸張する。局所基底算出部は、第２の頂点およびその直前の第３の頂点とによって規定される第２の差分ベクトルと、第３の頂点およびその直前の第４の頂点とによって規定される第３の差分ベクトルとに基づいて、第１の差分ベクトルに関する三次元の局所基底を算出する。局所逆変換部は、算出された局所基底に基づいて、圧縮時における局所変換の逆変換である局所逆変換を第１の差分ベクトルに施す、頂点データ算出部は、局所逆変換が施された第１の差分ベクトルと、従前の伸張によって算出済の第２の頂点とに基づいて、第１の頂点を算出する。
【００１８】
ここで、第３の発明において、局所基底は、第３の差分ベクトルと平行である第１の基底成分、および、第２の差分ベクトルと第３の差分ベクトルとによって張られる面の法線方向である第２の基底成分の少なくとも一方を含むことが好ましい。また、局所基底は、第２の差分ベクトルと第３の差分ベクトルとによって張られる面上の特定方向である第３の基底成分を含んでいてもよい。この場合、第３の基底成分は、第２の差分ベクトルと、第３の差分ベクトルとに基づいたグラム-シュミット直交化によって算出されることが好ましい。
【発明の効果】
【００２３】
第１の発明によれば、処理対象となる第１の頂点を第１の差分ベクトルで表現するとともに、三次元の局所基底で局所変換した上で、各成分の仮数部の下位ビットを可変に切り捨てる。これにより、歪み誤差を抑制しつつ、ポリゴンデータの頂点情報を効果的に圧縮できる。一方、第３の発明によれば、第１の発明によって圧縮されたデータを適切に伸張することができる。
【００２５】
また、第２の発明によれば、頂点を順次圧縮する際、一度圧縮された差分ベクトルを復元して、次の頂点の処理で用いる。これにより、頂点を順次伸張する際、処理対象となる頂点の推移に伴い、歪み圧縮による誤差が累積していくことを防止できる。
【発明を実施するための最良の形態】
【００２６】
［アルゴリズムの概要］
システムの具体的な説明に先立ち、まず、本実施形態に係るポリゴンデータの幾何圧縮アルゴリズムについて概説する。本アルゴリズムが対象とするデータは、図１に示すデータ形式を有する頂点座標である。頂点座標の数値表現形式としては、標準規格であるＩＥＥＥ７５４方式の３２ビット単精度が用いられる。ＩＥＥＥ７５４方式では、３２ビットワードを符号部（Ｓ）、指数部（Exp）および仮数部（Mantissa）の３つに別けて数値を表現する。ビット数の振り分けは、符号部（Ｓ）が１ビット、指数部（Exp）が８ビット、仮数部（Mantissa）が２３ビットである。ここで、符号部（Ｓ）は、０で正、１で負の符号を示す。指数部（Exp）は、２を基数とした指数の整数値であり、１２７をバイアスされた正の値をとる。仮数部（Mantissa）は、実際の仮数から１を引いた２進小数の小数点以下のビットとする。また、正規化数は、下式によって表される（ｅ＝Exp−１２７，ｍ＝１．Mantissa）。
【００２７】
（正規化数）
Ｓ × ２e × ｍ
【００２８】
図２に示すように、圧縮処理の対象となる頂点Ｐnは、この頂点Ｐnと共に三角形Ｔ1の一辺を形成する頂点Ｐn-1との差分である差分ベクトルｄnで表現される。そして、この差分ベクトルｄnのそれぞれの成分（ｘ，ｙ，ｚ）に関して、歪み圧縮が施される。本実施形態では、それぞれの成分の仮数部の下位ビットを可変に切り捨てることによって、歪み圧縮を実現する。上述した正規化数の表現式からわかるように、仮数部（Mantissa）の切り捨てによる値の変化は、指数部（Exp）の値が小さいほど少ない。この観点から、指数部の値が小さい場合には、仮数部（Mantissa）の切り捨てによる影響が比較的小さいので、仮数部の下位ビットを大きく切り捨てる。逆に、指数部の値が大きい場合には、仮数部の変化による影響も大きいので、下位ビットの切り捨てを小さく留める。具体的には、図３に示すように、仮数部２３ビットのうち、下位（２３−（ｅ−ｃ））ビットを切捨桁数（truncation）として切り捨て、（ｅ−ｃ）ビットを有効桁数（factor）とする（ｃは調整係数）。これにより、ｅと仮数部の有効桁数とが比例関係となり、全体として歪みを小さくすることができる。また、調整係数ｃ∈［-149，127］によって、浮動小数の精度と圧縮率とを調整する。なお、有効桁数（factor）は、負数は０に、２４以上の数は２３に丸める。このようにして、歪み圧縮された差分ベクトルｄnが頂点Ｐnの圧縮データとして出力される。
【００２９】
この圧縮アルゴリズムの特徴の一つは、頂点Ｐnを差分ベクトルｄnで表現した上で、仮数部の下位ビットを切り捨てる点である。差分ベクトルｄnは、頂点Ｐnと共に三角形の一辺を形成する頂点Ｐn-1を基準とした差分であり、三角形ストリップの場合には、頂点Ｐnの直前の頂点Ｐn-1を基準とした差分に相当する。頂点Ｐnを差分ベクトルで表現することで、その成分は、頂点Ｐnの本来の座標値よりも小さな値になる。したがって、座標値そのものを切り捨てる場合と比較して、仮数部の下位ビットをより大きく切り捨てることが期待でき、その結果として圧縮率の向上を図ることが可能になる。
【００３０】
つぎに、上述した基本的な概念を改良し、差分ベクトルｄnを三次元の局所基底に基づいて局所変換することによって、圧縮率の更なる向上を図る手法について説明する。図４は、処理対象となる差分ベクトルｄnと局所基底｛ｕ，ｖ，ｗ｝との関係を示す図である。一般に、三角形ポリゴンは二次元曲面を被覆する三角形の集合なので、ある三角形Ｔ1の一辺（ベクトル）ｄnは、これと隣接する三角形Ｔ2の二辺（ベクトル）ｄn-1，ｄn-2と以下のような幾何学的特徴を有するものと仮定できる。
【００３１】
（仮定Ａ）三角形Ｔ1の一辺ｄnは、三角形Ｔ2の一辺ｄn-2と平行
三角形ストリップの場合、他の辺ｄn-2は辺ｄnの２つ前の辺に相当する。
（仮定Ｂ）三角形Ｔ1の一辺ｄnは、三角形Ｔ2の２辺ｄn-1，ｄn-2が張る面と共面
三角形ストリップの場合、他の２辺ｄn-1，ｄn-2は辺ｄnの直前および２つ前の辺に相当する。
【００３２】
ここで、仮定Ａは、マニュアルまたはアルゴリズムによって人工的に作成されたポリゴンデータの規則性に基づくものである。また、仮定Ｂは、細かいポリゴンモデルほどなめらかな曲面に近づく法線方向の近似可能性に基づくものである。
【００３３】
このような隣り合った三角形Ｔ1，Ｔ2の相関性に着目して、絶対座標系で表現された差分ベクトルｄnに局所的な変換を施せば、その成分をより小さくできる。そして、局所変換された差分ベクトルｄnに対して、上述した仮数部の切り捨てを行えば、より高い圧縮率が期待できる。
【００３４】
具体的には、まず、ベクトルｄnが属する三角形Ｔ1と隣接した三角形Ｔ2に基づいて、三次元の局所基底｛ｕ，ｖ，ｗ｝を設定する。この局所基底｛ｕ，ｖ，ｗ｝は、（１）ベクトルｄn-2と平行な方向を基底成分ｕとすること（仮定１より）、（２）ベクトルｄn-1，ｄn-2によって張られる面（三角形Ｔ2）の法線方向を他の基底成分ｗとすること（仮定２より）が好ましい。なお、残りの基底成分ｖについては、ベクトルｄn-1，ｄn-2によって張られる面（三角形Ｔ2）上の特定の方向として定義することが好ましい。本実施形態では、ベクトルｄn-2の単位ベクトルをｕ、この単位ベクトルｕに対してベクトルｄn-1にグラム-シュミット直交化を施した単位ベクトルをｖ、これらの単位ベクトルｕ，ｖの外積の単位ベクトルをｗとして、正規直交基底｛ｕ，ｖ，ｗ｝を定義する。
【００３５】
つぎに、局所基底｛ｕ，ｖ，ｗ｝に基づいて、差分ベクトルｄn（ｘ，ｙ，ｚ）が局所変換される。変換後の差分ベクトルｄ'nのそれぞれの成分（α，β，γ）は、下式の内積によって算出される。
α ＝ ｜＜ｕ，ｄn＞｜
β ＝ ｜＜ｖ，ｄn＞｜
γ ＝ ｜＜ｗ，ｄn＞｜
【００３６】
そして、変換後の差分ベクトルｄn（α，β，γ）に対して、上述した仮数部の切り捨てによる歪み圧縮が施される。図５に示すような指数成分の分布を有する変換前の差分ベクトルｄn（ｘ，ｙ，ｚ）は、正規直交基底｛ｕ，ｖ，ｗ｝を用いた局所変換によって、図６に示すようなα，β，γの分布に変換される。この分布は、仮定Ａ（ｄn//ｄn-2）よりα＞＞β，γが、仮定Ｂ（ｄn⊥ｗ）よりα，β＞＞γがそれぞれ成立する結果、α＞β＞γとなることからも理論的に裏付けられる。その結果、α，β，γ成分に対する仮数部の切り捨ては、以下のようになり、特にγ成分の切り捨てが圧縮率の向上に大きく貢献するであろうと期待される。
【００３７】
（局所変換後の歪み圧縮）
指数部の値      仮数部の切捨ビット数
α成分          大                少ない
β成分          中                普通
γ成分          小                多い
【００３８】
つぎに、上述した圧縮アルゴリズムを実装した圧縮システムについて説明する。本実施形態における圧縮システムでは、三角形ストリップによって描画されたポリゴンデータを圧縮対象とし、原則として、三角形ストリップの順序で頂点を順次シフトさせながら、頂点毎に歪み圧縮を行う。
【００３９】
図７は、三角形ストリップの説明図である。三角形ストリップでは、初期頂点Ｐ0からはしご状に連結した２辺により三角形が順次定義され、隣接する面では頂点が共有される。同図に示したように、初期頂点Ｐ0からＰ1，Ｐ1，Ｐ2，Ｐ3，Ｐ4，Ｐ4，Ｐ5，Ｐ0，Ｐ6，Ｐ2，Ｐ7，Ｐ4，Ｐ8の順に指定していく場合、頂点Ｐ2が指定された時点で、２つの辺Ｐ0−Ｐ1，Ｐ1−Ｐ2よりなる三角形Ｐ0Ｐ1Ｐ2が形成される。そして、次の頂点Ｐ3が指定されると三角形Ｐ1Ｐ2Ｐ3が、更に頂点Ｐ4が指定されると三角形Ｐ2Ｐ3Ｐ4がそれぞれ形成される。頂点Ｐ4では同一頂点が重複指定され、その後に頂点Ｐ5にジャンプしている。これは、同一頂点Ｐ4が重複指定された場合、例外的に辺Ｐ4−Ｐ5を一辺とする三角形は形成せず、その後の頂点Ｐ5を初期頂点として新たに三角形の形成を開始することを意味する。以後、三角形Ｐ5Ｐ0Ｐ6（頂点Ｐ6の指定時）、三角形Ｐ0Ｐ6Ｐ2（頂点Ｐ2の指定時）、三角形Ｐ6Ｐ2Ｐ7（頂点Ｐ7の指定時）、三角形Ｐ2Ｐ7Ｐ7（頂点Ｐ4の指定時）、三角形Ｐ7Ｐ4Ｐ8（頂点Ｐ8の指定時）の順に形成される。なお、DirectXやOpenGL等の３Ｄグラフィックスライブラリでは、重複した頂点の冗長性を削除してデータ量を減らすために、頂点の連結情報をインデックスにより管理する方式、すなわちインデックスバッファ方式が用いられる。この方式では、すべての頂点をリスト化し、各三角形の３頂点を三角形ストリップのインデックスとして記述する。
【００４０】
［圧縮システム］
図８は、本実施形態に係る圧縮システムのブロック構成図である。この圧縮システムは、差分ベクトル算出部１と、局所変換部２と、仮数切捨部３と、局所基底算出部４と、記憶部５と、圧縮データ伸張部６と、局所基底逆変換部７と、頂点データ算出部８とで構成されている。
【００４１】
差分ベクトル算出部１は、処理対象として入力されたｎ番目の頂点データＰn（ｘ，ｙ，ｚ）に関して、三角形ストリップにおける直前の頂点データＰ'n-1（ｘ，ｙ，ｚ）との差分を算出し、差分ベクトルｄｎ（ｘ，ｙ，ｚ）として出力する。直前のデータＰ'n-1は、頂点データ算出部８において保持されている。なお、直前の頂点データＰ'n-1は、元の頂点データＰn-1ではなく、歪み圧縮された値を復元したものである（符号に付された「'」は復元値を意味する）。なお、初期頂点Ｐ0については、差分ベクトル算出部１による差分ベクトルの算出は行わず、次の頂点Ｐ1の差分ベクトルｄ1を算出するために必要なデータとして、頂点データ算出部８に格納される。
【００４２】
局所変換部２は、局所基底算出部４によって算出された局所基底Ｂ｛ｕ，ｖ，ｗ｝に基づいて、差分ベクトルｄnを局所変換して、変換後の差分ベクトルｄn（α，β，γ）を出力する。ここで、α成分はベクトルｕと差分ベクトルｄnとの内積、β成分はベクトルｖと差分ベクトルｄnとの内積、そして、γ成分はベクトルｗと差分ベクトルｄnとの内積である。上述したように、局所基底Ｂ｛ｕ，ｖ，ｗ｝としては正規直交基底を用いることができ、１つ前の差分ベクトルｄ'n-1と、２つ前の差分ベクトルｄ'n-2とに基づいて、頂点毎に生成される。なお、図４に示したように、１つ前の差分ベクトルｄ'n-1は、頂点Ｐn-1（正確には復元値Ｐ'n-1）と、その直前の頂点Ｐn-2（正確には復元値Ｐ'n-2）とによって規定される。また、２つ前の差分ベクトルｄ'n-2は、頂点Ｐn-2（正確には復元値Ｐ'n-2）と、その直前の頂点Ｐn-3（正確には復元値Ｐ'n-3）とによって規定される。
【００４３】
仮数切捨部３は、局所変換後の差分ベクトルｄnのそれぞれの成分α，β，γに関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てる。このようにして歪み圧縮された差分ベクトルｄ'n（α'，β'，γ'）は、頂点データＰnの圧縮データとして外部に出力されるとともに、圧縮データ伸張部６にも供給される。
【００４４】
なお、仮数切捨部３において、仮数部の切り捨て処理と並行して、α，β，γ成分の指数部に関して、エントロピー符号化による無歪み圧縮を行ってもよい。８ビット固定長で表される指数部の値ｅ∈［-126,127］には常にある程度の偏りがあるため、エントロピー符号化による圧縮効果が期待できる。エントロピー符号化としては、例えば静的ハフマン符号を用いることができる。この場合、成分毎に指数部の値を計測し、出現回数によってそれぞれハフマン木を構成する。また、圧縮データの先頭にシンボル数、シンボル、出現回数を記述し、伸張時にこれらよりハフマン木を再構成する。
【００４５】
圧縮データ伸張部６は、差分ベクトルｄ'n（α'，β'，γ'）の切り捨てられた下位ビットを補って、符号小数フォーマットに戻す（単に０を追加して桁数を揃える）。この伸張によって得られたα，β，γ成分は、局所変換部２より出力されたものとは一致せず、仮数部の歪み誤差を含む。なお、仮数切捨部３において指数部のエントロピー符号化を行っている場合には、これに対応した復号化も併せて行われる。
【００４６】
局所逆変換部７は、圧縮データ伸張部６によって伸張された差分ベクトルｄ'n（α'，β'，γ'）と、局所基底算出部４によって算出された局所基底Ｂ｛ｕ，ｖ，ｗ｝とに基づいた局所逆変換を行い、差分ベクトルｄ'n（ｘ，ｙ，ｚ）を算出する。この逆変換は、局所変換部２における変換の逆処理に相当する。この差分ベクトルｄ'nは、差分ベクトル算出部１より出力された差分ベクトルｄnとは一致せず、仮数部の歪み誤差を含む。算出された差分ベクトルｄ'nは、記憶部５および頂点データ算出部８に供給される。記憶部５に供給された差分ベクトルｄ'nは、次の頂点Ｐn+1の処理で１つ前の差分ベクトルとして使用すべく、記憶領域ｄ'n-1に格納される。また、現在の頂点Ｐnの処理で１つ前の差分ベクトルとして使用された記憶領域ｄ'n-1のデータは、次の頂点Ｐn+1の処理で２つ前の差分ベクトルとして使用すべく、記憶領域ｄ'n-2に格納される。これに伴い、現在、記憶領域ｄ'n-2に格納されているデータは破棄される。
【００４７】
一方、頂点データ算出部８は、現在格納している頂点データＰ'n-1に差分ベクトルｄ'nを加算したものを新たな頂点データＰ'nとして算出する。この新たな頂点データＰ'nは、次の頂点Ｐn+1の処理において、１つ前の頂点データとして用いられる。このように、一度圧縮されたデータを復元して、次の頂点Ｐn+1の処理で用いる理由は、伸張時に歪み圧縮による誤差の累積を防止するためである。
【００４８】
この誤差の累積防止に関して、図９を参照しつつ詳述する。処理対象が頂点Ｐ1の場合、この頂点Ｐ1と共に三角形の一辺を形成する直前の頂点Ｐ0との差分が差分ベクトルｄ1として表現されるとともに、これを歪み圧縮することで圧縮差分ベクトルｄ'1が算出される。そして、圧縮差分ベクトルｄ'1を伸張して、これと頂点Ｐ0とを加算することによって、頂点Ｐ'1が復元される。しかしながら、歪み圧縮による誤差の影響があるので、復元された頂点Ｐ'1と、本来の頂点Ｐ1との間にずれが生じる。圧縮側では本来の頂点を特定できるが、伸張側では復元された頂点しか特定できない。したがって、圧縮時に本来の頂点を起点に差分ベクトルを算出してしまうと、伸張時に、頂点Ｐ2，Ｐ3，Ｐ4といった順序での繰り返し処理によって、本来の頂点とのずれが徐々に大きくなっていってしまう。このような誤差の累積を防止すべく、本実施形態では、ある頂点Ｐnの直後の頂点Ｐn+1に関する圧縮処理では、本来の頂点Ｐnではなく、直前の処理で復元された頂点Ｐ'nを用いる。なお、誤差の累積を防止するための本手法自体は、仮数部の切り捨てに限定されるものではなく、それ以外の歪み圧縮に対しても適用可能である。
【００４９】
以上のような処理は、三角形ストリップの順序に従い、圧縮すべき頂点データＰn+1，Ｐn+2，・・・が入力される毎に繰り返される。そして、最後の頂点データＰlastの処理の完了に伴い、ポリゴンデータを構成する全頂点の圧縮が終了する。なお、処理対象となる頂点Ｐnが従前のものと一致する場合等においては、例外処理として、今回の頂点Ｐnの処理をスキップ等する。
【００５０】
このように、本実施形態に係る圧縮システムでは、局所基底Ｂ｛ｕ，ｖ，ｗ｝によって局所変換された差分ベクトルｄnのα，β，γ成分に関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てる。そして、この切り捨てによって歪み圧縮された差分ベクトルｄ'nの成分が圧縮データとして用いられる。これにより、歪み誤差を抑制しつつ、ポリゴンデータの頂点データを効果的に圧縮することが可能になる。特に、差分ベクトルｄnが属する三角形と隣接する三角形に基づいた局所基底を用いれば、より高い圧縮率を確保することが可能になる。
【００５１】
［伸張システム］
図１０は、上述した圧縮システムに対応する伸張システムのブロック構成図である。この伸張システムは、圧縮データ伸張部１１と、局所逆変換部１２と、頂点データ算出部１３と、局所基底算出部１４と、記憶部１５とで構成されている。圧縮システムから伸張システムに渡されるデータは、初期頂点Ｐ0の座標データ、および、歪み圧縮された圧縮データｄ'n（α'，β'，γ'）（ｎ＝１，２，３，・・・）である。なお、指数部の大きさと仮数部の切捨ビットとの対応関係は、圧縮側および伸張側の間で予め取り決められている。また、初期頂点Ｐ0については、次の頂点Ｐ1を算出するために必要なデータとして、頂点データ算出部１３に格納される。
【００５２】
圧縮データ伸張部１１は、圧縮データＰ'n（α'，β'，γ'）に関して、圧縮時に切り捨てられた下位ビットを補って、浮動小数フォーマットに戻す（単に０を追加して桁数を揃える）。なお、指数部がエントロピー符号化されている場合には、その伸張も併せて行われる。これにより、頂点Ｐ'nと、その直前の頂点Ｐ'n-1との差分である差分ベクトルｄ'nが伸張・復元される。
【００５３】
局所逆変換部１２は、圧縮データ伸張部１１によって伸張された差分ベクトルｄ'n（α'，β'，γ'）と、局所基底算出部１４によって算出された局所基底Ｂ｛ｕ，ｖ，ｗ｝とに基づいて、下式の局所逆変換、すなわち圧縮時における局所変換の逆変換を行い、差分ベクトルｄ'n（ｘ，ｙ，ｚ）を算出する。三次元の局所基底Ｂ｛ｕ，ｖ，ｗ｝は、圧縮側と同様のものが用いられ、１つ前の差分ベクトルｄ'n-1（頂点Ｐ'n-1，Ｐ'n-2によって規定）と、２つ前の差分ベクトルｄ'n-2（Ｐ'n-2，Ｐ'n-3によって規定）とに基づいて、頂点毎に生成される。算出された差分ベクトルｄ'nは、頂点データ算出部１３および記憶部１５に供給される。
ｄ'n（ｘ，ｙ，ｚ）＝＜ｕ，ｄ'n＞ｕ＋＜ｖ，ｄ'n＞ｖ＋＜ｗ，ｄ'n＞
【００５４】
頂点データ算出部１３は、現在格納している頂点データＰ'n-1（従前の伸張によって算出済のもの）に、局所逆変換部１２によって算出された今回の差分ベクトルｄ'n（ｘ，ｙ，ｚ）を加算することによって、出力データとしての頂点データＰ'n（ｘ，ｙ，ｚ）を算出する。この新たな頂点データＰ'nは、次の頂点Ｐn+1の処理において、１つ前の頂点データとして用いられる。
【００５５】
また、記憶部１５に供給された差分ベクトルｄ'nは、次の頂点Ｐn+1の処理で１つ前の差分ベクトルとして使用すべく、記憶領域ｄ'n-1に格納される。また、現在の頂点Ｐnの処理で１つ前の差分ベクトルとして使用された記憶領域ｄ'n-1のデータは、次の頂点Ｐn+1の処理で２つ前の差分ベクトルとして使用すべく、記憶領域ｄ'n-2に格納される。これに伴い、現在、記憶領域ｄ'n-2に格納されているデータは破棄される。
【００５６】
以上のような処理は、伸張すべき圧縮データｄ'n+1，ｄ'n+2，・・・が入力される毎に繰り返される。そして、最後の頂点データｄ'lastの処理の完了に伴い、ポリゴンデータを構成する全頂点の伸張が終了する。
【００５７】
このように、本実施形態に係る伸張システムによれば、上述した圧縮システムによって生成された圧縮データを適切に伸張することができる。
【００５８】
なお、上述した実施形態では、圧縮／伸張システムに関して説明したが、これと等価な処理手順をコンピュータによって実行させるコンピュータ・プログラムも本発明の別の態様を構成するものである。この場合、圧縮処理の基本的な流れは以下のようになる（詳細は上述した通りなので省略）。なお、圧縮効率は落ちるものの、下記ステップ１２，１３を省略して、ステップ１１で算出された差分ベクトルを直接歪み圧縮することも可能であり、本発明はこのような形態を排除するものではない。
【００５９】
（圧縮処理手順）
（ステップ１１）処理対象となる頂点の差分ベクトル化
（ステップ１２）局所基底の算出
（ステップ１３）局所基底に基づく差分ベクトルの局所変換
（ステップ１４）変換後の差分ベクトルの歪み圧縮
【００６０】
また、伸張処理は以下のような手順となる。なお、圧縮処理で局所変換を行わない場合には、下記ステップ２２，２３は不要である。
（伸張処理手順）
【００６１】
（ステップ２１）圧縮データの伸張
（ステップ２２）局所基底の算出
（ステップ２３）局所基底を用いた局所逆変換による差分ベクトルの算出
（ステップ２４）頂点データの算出
【図面の簡単な説明】
【００６２】
【図１】頂点座標のデータ形式の説明図
【図２】差分ベクトルで表現された頂点の説明図
【図３】仮数部における下位ビット切り捨ての説明図
【図４】差分ベクトルと局所基底との関係を示す図
【図５】変換前の差分ベクトルに関する指数成分の分布図
【図６】変換後の差分ベクトルに関する指数成分の分布図
【図７】三角形ストリップの説明図
【図８】圧縮システムのブロック構成図
【図９】伸張時における歪み誤差の累積の説明図
【図１０】伸張システムのブロック構成図
【符号の説明】
【００６３】
１  差分ベクトル算出部
２  局所変換部
３  仮数切捨部
４  局所基底算出部
５  記憶部
６  圧縮データ伸張部
７  局所逆変換部
８  頂点データ算出部
１１  圧縮データ伸張部
１２  局所逆変換部
１３  頂点データ算出部
１４  局所基底算出部
１５  記憶部
【図１】
0004721072.tif 000002
【図２】
0004721072.tif 000003
【図３】
0004721072.tif 000004
【図４】
0004721072.tif 000005
【図５】
0004721072.tif 000006
【図６】
0004721072.tif 000007
【図７】
0004721072.tif 000008
【図８】
0004721072.tif 000009
【図９】
0004721072.tif 000010
【図１０】
0004721072.tif 000011