説明

ポリゴンデータの圧縮システム、圧縮プログラム、伸張システムおよび伸張プログラム

【課題】ポリゴンデータの頂点座標の数値情報を有効に削減する新規な幾何圧縮手法を提案する。
【解決手段】差分ベクトル算出部1は、処理対象となる頂点Pnを、その直前の頂点Pn-1との差分である差分ベクトルdnで表現する。局所基底算出部4は、差分ベクトルdnに関する三次元の局所基底Bを算出する。局所変換部2は、局所基底Bに基づいて、差分ベクトルdnを局所変換する。仮数切捨部3は、局所変換された差分ベクトルd'nのそれぞれの成分α,β,γに関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ポリゴンデータの頂点座標の数値情報を削減する幾何圧縮に関する。
【背景技術】
【0002】
近年、CPU(Central Processing Unit)の高性能化やグラフィックボードの普及により、3Dグラフィックスを利用したデジタルコンテンツが増加し、ゲーム機から携帯電話までプラットフォームも多様化している。これらにおいて、数万オーダーのポリゴンデータ処理も可能になりつつあるが、CPUからグラフィックアクセラレータへの膨大なデータ転送によって、バスを通じたトラフィックが処理速度のボトルネックになる場合が多い。この問題に関しては、画像データや音声データと同様にポリゴンデータを圧縮転送し、処理側で伸張する手法が有効となる。従来のポリゴンデータに関する研究は、位相圧縮と幾何圧縮とに大別される。位相圧縮は、頂点の連結情報を対象とする無歪み圧縮であり、一般化三角形ストリップ、一般化三角形メッシュ等がある。特に、主な3Dグラフィックスライブラリでは、インデックスバッファ形式によって、位相圧縮に関する頂点重複の問題を解決している。
【0003】
一方、幾何圧縮は、頂点座標の数値情報を対象とする無歪み圧縮または歪み圧縮であり、スカラー量子化、エントロピー符号化等がある。例えば、歪み圧縮であるスカラー量子化は、頂点座標の各成分の値を階段状に丸めることで、割り当てるビット数を削減する。一方、指数部のように一定の偏りがあるデータでは、シンボルの出現頻度に応じた可変長符号を割り当て、総符号量を減らす無歪み圧縮が利用される。例えば、非特許文献1には、浮動小数の指数部を算術符号によって圧縮する手法が開示されている。
【0004】
また、特許文献1には、三角形メッシュで構成されたオブジェクトを対象とした位相圧縮と、その幾何圧縮とについて開示されている。この幾何圧縮では、まず、すべての頂点の座標を量子化によって整数値化する。つぎに、対象とする頂点によって形成される三角形Aは、これと隣接する別の三角形Bと平行四辺形をなすと仮定して、対象とする頂点の座標を予測する。予測された座標は、その平行四辺形に隣接する別の三角形ペア間の角度より予測された三角形A,B間の角度に基づいて、補正される。そして、補正された予測座標と実際の座標との残差を算出し、これにエントロピー符号化などが施される
【非特許文献1】Martin Isenburg, Peter Lindstorm and Jack Soneyink, "Lossless Compression of Predicted Floating-Point Geometry" Computer-Aided Design, Volume 37, Issue 8, pp869-8778 (2005)
【特許文献1】米国特許第6,167,159号明細書
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明の目的は、ポリゴンデータの頂点座標の数値情報を有効に削減する新規な幾何圧縮手法を提案することである。
【課題を解決するための手段】
【0006】
第1の発明は、差分ベクトル算出部と、局所基底算出部と、局所変換部と、仮数切捨部とを有し、ポリゴンデータの幾何圧縮を三角形ストリップの順序で頂点毎に行う圧縮システムを提供する。差分ベクトル算出部は、処理対象となる第1の頂点を、その直前の第2の頂点との差分である第1の差分ベクトルで表現する。局所基底算出部は、第2の頂点およびその直前の第3の頂点とによって規定される第2の差分ベクトルと、第3の頂点およびその直前の第4の頂点とによって規定される第3の差分ベクトルとに基づいて、第1の差分ベクトルに関する三次元の局所基底を算出する。局所変換部は、算出された局所基底に基づいて、第1の差分ベクトルを局所変換する。仮数切捨部は、局所変換された第1の差分ベクトルのそれぞれの成分に関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てることで歪み圧縮された第1の差分ベクトルを圧縮データとして出力する。
【0007】
ここで、第1の発明において、局所基底は、第3の差分ベクトルと平行である第1の基底成分、および、第2の差分ベクトルと第3の差分ベクトルとによって張られる面の法線方向である第2の基底成分の少なくとも一方を含むことが好ましい。また、局所基底は、第2の差分ベクトルと第3の差分ベクトルとによって張られる面上の特定方向である第3の基底成分を含んでいてもよい。この場合、第3の基底成分は、第2の差分ベクトルと、第3の差分ベクトルとに基づいたグラム-シュミット直交化によって算出されることが好ましい。
【0008】
また、第1の発明において、仮数切捨部は、局所変換された第1の差分ベクトルのそれぞれの成分の指数部に関して、エントロピー符号化を施してもよい。
【0009】
第1の発明において、第2の頂点、第2の差分ベクトルおよび第3の差分ベクトルは、従前に歪み圧縮された差分ベクトルに対して、局所変換の逆変換を施すことによって復元された差分ベクトルに基づいて生成されることが好ましい。
【0010】
第2の発明は、処理対象となる第1の頂点を、当該第1の頂点と共に第1の三角形の一辺を形成する第2の頂点との差分である第1の差分ベクトルで表現するステップと、第1の差分ベクトルのそれぞれの成分に関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てることで歪み圧縮された第1の差分ベクトルを圧縮データとして出力するステップとを有する圧縮方法をコンピュータに実行させるポリゴンデータの圧縮プログラムを提供する。
【0011】
ここで、第2の発明において、第1の三角形と隣接した第2の三角形に基づいて、三次元の局所基底を算出するステップと、算出された局所基底に基づいて、第1の差分ベクトルを局所変換するステップとをさらに設けてもよい。この場合、歪み圧縮は、局所変換された第1の差分ベクトルを対象に行う。
【0012】
第3の発明は、ポリゴンデータの幾何圧縮を三角形ストリップの順序で頂点毎に行う圧縮プログラムにおいて、処理対象となる第1の頂点を、その直前の第2の頂点との差分である第1の差分ベクトルで表現するステップと、第2の頂点およびその直前の第3の頂点とによって規定される第2の差分ベクトルと、第3の頂点およびその直前の第4の頂点とによって規定される第3の差分ベクトルとに基づいて、第1の差分ベクトルに関する三次元の局所基底を算出するステップと、算出された局所基底に基づいて、第1の差分ベクトルを局所変換するステップと、局所変換された第1の差分ベクトルのそれぞれの成分に関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てることで歪み圧縮された第1の差分ベクトルを圧縮データとして出力するステップとを有する圧縮方法をコンピュータに実行させるポリゴンデータの圧縮プログラムを提供する。
【0013】
ここで、第3の発明において、局所基底は、第3の差分ベクトルと平行である第1の基底成分、および、第2の差分ベクトルと第3の差分ベクトルとによって張られる面の法線方向である第2の基底成分の少なくとも一方を含むことが好ましい。また、局所基底は、第2の差分ベクトルと第3の差分ベクトルとによって張られる面上の特定方向である第3の基底成分を含んでいてもよい。この場合、第3の基底成分は、第2の差分ベクトルと、第3の差分ベクトルとに基づいたグラム-シュミット直交化によって算出されることが好ましい。
【0014】
また、第3の発明において、仮数切捨部は、局所変換された第1の差分ベクトルのそれぞれの成分の指数部に関して、エントロピー符号化を施してもよい。
【0015】
第3の発明において、第2の頂点、第2の差分ベクトルおよび第3の差分ベクトルは、従前に歪み圧縮された差分ベクトルに対して、局所変換の逆変換を施すことによって復元された差分ベクトルに基づいて生成されることが好ましい。
【0016】
第4の発明は、ポリゴンデータの幾何圧縮を三角形ストリップの順序で頂点毎に行う圧縮プログラムにおいて、処理対象となる第1の頂点を、当該第1の頂点と共に第1の三角形の一辺を形成する第2の頂点との差分である第1の差分ベクトルで表現するとともに、当該第1の差分ベクトルを歪み圧縮した上で圧縮データとして出力するステップと、歪み圧縮された第1の差分ベクトルを圧縮前の第1の差分ベクトルに伸張するとともに、当該伸張された第1の差分ベクトルを第2の頂点に加算することによって、第1の頂点を復元するステップとを有する処理を頂点毎に繰り返し実行し、第1の頂点の直後の頂点に関する処理では、直前の処理で復元された第1の頂点を第2の頂点として用いる圧縮方法をコンピュータに実行させるポリゴンデータの圧縮プログラムを提供する。
【0017】
第5の発明は、圧縮データ伸張部と、局所基底算出部と、局所逆変換部と、頂点データ算出部とを有し、ポリゴンデータの圧縮データを伸張する伸張システムを提供する。圧縮データ伸張部は、歪み圧縮された第1の差分ベクトルのそれぞれの成分に関して、圧縮時に切り捨てられた仮数部の下位ビットを補うことによって、第1の頂点と、その直前の第2の頂点との差分である第1の差分ベクトルに伸張する。局所基底算出部は、第2の頂点およびその直前の第3の頂点とによって規定される第2の差分ベクトルと、第3の頂点およびその直前の第4の頂点とによって規定される第3の差分ベクトルとに基づいて、第1の差分ベクトルに関する三次元の局所基底を算出する。局所逆変換部は、算出された局所基底に基づいて、圧縮時における局所変換の逆変換である局所逆変換を第1の差分ベクトルに施す、頂点データ算出部は、局所逆変換が施された第1の差分ベクトルと、従前の伸張によって算出済の第2の頂点とに基づいて、第1の頂点を算出する。
【0018】
ここで、第5の発明において、局所基底は、第3の差分ベクトルと平行である第1の基底成分、および、第2の差分ベクトルと第3の差分ベクトルとによって張られる面の法線方向である第2の基底成分の少なくとも一方を含むことが好ましい。また、局所基底は、第2の差分ベクトルと第3の差分ベクトルとによって張られる面上の特定方向である第3の基底成分を含んでいてもよい。この場合、第3の基底成分は、第2の差分ベクトルと、第3の差分ベクトルとに基づいたグラム-シュミット直交化によって算出されることが好ましい。
【0019】
第6の発明は、ポリゴンデータの圧縮データを伸張する伸張プログラムにおいて、歪み圧縮された第1の差分ベクトルのそれぞれの成分に関して、圧縮時に切り捨てられた仮数部の下位ビットを補うことによって、第1の頂点と、当該第1の頂点と共に第1の三角形の一辺を形成する第2の頂点との差分である第1の差分ベクトルに伸張するステップと、第1の差分ベクトルと、従前の伸張によって算出済の第2の頂点とに基づいて、第1の頂点を算出するステップとを有する伸張方法をコンピュータに実行させるポリゴンデータの伸張プログラムを提供する。
【0020】
ここで、第6の発明において、第1の三角形と隣接した第2の三角形に基づいて、三次元の局所基底を算出するステップと、算出された局所基底に基づいて、圧縮時における局所変換の逆変換である局所逆変換を第1の差分ベクトルに施すステップとをさらに設けてもよい。この場合、歪み圧縮は、局所逆変換された第1の差分ベクトルを対象に行う。
【0021】
第7の発明は、ポリゴンデータの圧縮データを伸張する伸張プログラムにおいて、歪み圧縮された第1の差分ベクトルのそれぞれの成分に関して、圧縮時に切り捨てられた仮数部の下位ビットを補うことによって、第1の頂点と、その直前の第2の頂点との差分である第1の差分ベクトルに伸張するステップと、第2の頂点およびその直前の第3の頂点とによって規定される第2の差分ベクトルと、第3の頂点およびその直前の第4の頂点とによって規定される第3の差分ベクトルとに基づいて、第1の差分ベクトルに関する三次元の局所基底を算出するステップと、算出された局所基底に基づいて、圧縮時における局所変換の逆変換である局所逆変換を第1の差分ベクトルに施すステップと、局所逆変換が施された第1の差分ベクトルと、従前の伸張によって算出済の第2の頂点とに基づいて、第1の頂点を算出するステップとを有する伸張方法をコンピュータに実行させるポリゴンデータの伸張プログラムを提供する。
【0022】
ここで、第7の発明において、局所基底は、第3の差分ベクトルと平行である第1の基底成分、および、第2の差分ベクトルと第3の差分ベクトルとによって張られる面の法線方向である第2の基底成分の少なくとも一方を含むことが好ましい。また、局所基底は、第2の差分ベクトルと第3の差分ベクトルとによって張られる面上の特定方向である第3の基底成分を含んでいてもよい。この場合、第3の基底成分は、第2の差分ベクトルと、第3の差分ベクトルとに基づいたグラム-シュミット直交化によって算出されることが好ましい。
【発明の効果】
【0023】
第1または第3の発明によれば、処理対象となる第1の頂点を第1の差分ベクトルで表現するとともに、三次元の局所基底で局所変換した上で、各成分の仮数部の下位ビットを可変に切り捨てる。これにより、歪み誤差を抑制しつつ、ポリゴンデータの頂点情報を効果的に圧縮できる。一方、第5または第7の発明によれば、第1または第3の発明によって圧縮されたデータを適切に伸張することができる。
【0024】
また、第2の発明によれば、処理対象となる第1の頂点を第1の差分ベクトルで表現し、その各成分の仮数部の下位ビットを可変に切り捨てる。これにより、ポリゴンデータの頂点情報を圧縮することが可能になる。一方、第6の発明によれば、第2の発明によって圧縮されたデータを適切に伸張することができる。
【0025】
また、第4の発明によれば、頂点を順次圧縮する際、一度圧縮された差分ベクトルを復元して、次の頂点の処理で用いる。これにより、頂点を順次伸張する際、処理対象となる頂点の推移に伴い、歪み圧縮による誤差が累積していくことを防止できる。
【発明を実施するための最良の形態】
【0026】
[アルゴリズムの概要]
システムの具体的な説明に先立ち、まず、本実施形態に係るポリゴンデータの幾何圧縮アルゴリズムについて概説する。本アルゴリズムが対象とするデータは、図1に示すデータ形式を有する頂点座標である。頂点座標の数値表現形式としては、標準規格であるIEEE754方式の32ビット単精度が用いられる。IEEE754方式では、32ビットワードを符号部(S)、指数部(Exp)および仮数部(Mantissa)の3つに別けて数値を表現する。ビット数の振り分けは、符号部(S)が1ビット、指数部(Exp)が8ビット、仮数部(Mantissa)が23ビットである。ここで、符号部(S)は、0で正、1で負の符号を示す。指数部(Exp)は、2を基数とした指数の整数値であり、127をバイアスされた正の値をとる。仮数部(Mantissa)は、実際の仮数から1を引いた2進小数の小数点以下のビットとする。また、正規化数は、下式によって表される(e=Exp−127,m=1.Mantissa)。
【0027】
(正規化数)
S × 2e × m
【0028】
図2に示すように、圧縮処理の対象となる頂点Pnは、この頂点Pnと共に三角形T1の一辺を形成する頂点Pn-1との差分である差分ベクトルdnで表現される。そして、この差分ベクトルdnのそれぞれの成分(x,y,z)に関して、歪み圧縮が施される。本実施形態では、それぞれの成分の仮数部の下位ビットを可変に切り捨てることによって、歪み圧縮を実現する。上述した正規化数の表現式からわかるように、仮数部(Mantissa)の切り捨てによる値の変化は、指数部(Exp)の値が小さいほど少ない。この観点から、指数部の値が小さい場合には、仮数部(Mantissa)の切り捨てによる影響が比較的小さいので、仮数部の下位ビットを大きく切り捨てる。逆に、指数部の値が大きい場合には、仮数部の変化による影響も大きいので、下位ビットの切り捨てを小さく留める。具体的には、図3に示すように、仮数部23ビットのうち、下位(23−(e−c))ビットを切捨桁数(truncation)として切り捨て、(e−c)ビットを有効桁数(factor)とする(cは調整係数)。これにより、eと仮数部の有効桁数とが比例関係となり、全体として歪みを小さくすることができる。また、調整係数c∈[-149,127]によって、浮動小数の精度と圧縮率とを調整する。なお、有効桁数(factor)は、負数は0に、24以上の数は23に丸める。このようにして、歪み圧縮された差分ベクトルdnが頂点Pnの圧縮データとして出力される。
【0029】
この圧縮アルゴリズムの特徴の一つは、頂点Pnを差分ベクトルdnで表現した上で、仮数部の下位ビットを切り捨てる点である。差分ベクトルdnは、頂点Pnと共に三角形の一辺を形成する頂点Pn-1を基準とした差分であり、三角形ストリップの場合には、頂点Pnの直前の頂点Pn-1を基準とした差分に相当する。頂点Pnを差分ベクトルで表現することで、その成分は、頂点Pnの本来の座標値よりも小さな値になる。したがって、座標値そのものを切り捨てる場合と比較して、仮数部の下位ビットをより大きく切り捨てることが期待でき、その結果として圧縮率の向上を図ることが可能になる。
【0030】
つぎに、上述した基本的な概念を改良し、差分ベクトルdnを三次元の局所基底に基づいて局所変換することによって、圧縮率の更なる向上を図る手法について説明する。図4は、処理対象となる差分ベクトルdnと局所基底{u,v,w}との関係を示す図である。一般に、三角形ポリゴンは二次元曲面を被覆する三角形の集合なので、ある三角形T1の一辺(ベクトル)dnは、これと隣接する三角形T2の二辺(ベクトル)dn-1,dn-2と以下のような幾何学的特徴を有するものと仮定できる。
【0031】
(仮定A)三角形T1の一辺dnは、三角形T2の一辺dn-2と平行
三角形ストリップの場合、他の辺dn-2は辺dnの2つ前の辺に相当する。
(仮定B)三角形T1の一辺dnは、三角形T2の2辺dn-1,dn-2が張る面と共面
三角形ストリップの場合、他の2辺dn-1,dn-2は辺dnの直前および2つ前の辺に相当する。
【0032】
ここで、仮定Aは、マニュアルまたはアルゴリズムによって人工的に作成されたポリゴンデータの規則性に基づくものである。また、仮定Bは、細かいポリゴンモデルほどなめらかな曲面に近づく法線方向の近似可能性に基づくものである。
【0033】
このような隣り合った三角形T1,T2の相関性に着目して、絶対座標系で表現された差分ベクトルdnに局所的な変換を施せば、その成分をより小さくできる。そして、局所変換された差分ベクトルdnに対して、上述した仮数部の切り捨てを行えば、より高い圧縮率が期待できる。
【0034】
具体的には、まず、ベクトルdnが属する三角形T1と隣接した三角形T2に基づいて、三次元の局所基底{u,v,w}を設定する。この局所基底{u,v,w}は、(1)ベクトルdn-2と平行な方向を基底成分uとすること(仮定1より)、(2)ベクトルdn-1,dn-2によって張られる面(三角形T2)の法線方向を他の基底成分wとすること(仮定2より)が好ましい。なお、残りの基底成分vについては、ベクトルdn-1,dn-2によって張られる面(三角形T2)上の特定の方向として定義することが好ましい。本実施形態では、ベクトルdn-2の単位ベクトルをu、この単位ベクトルuに対してベクトルdn-1にグラム-シュミット直交化を施した単位ベクトルをv、これらの単位ベクトルu,vの外積の単位ベクトルをwとして、正規直交基底{u,v,w}を定義する。
【0035】
つぎに、局所基底{u,v,w}に基づいて、差分ベクトルdn(x,y,z)が局所変換される。変換後の差分ベクトルd'nのそれぞれの成分(α,β,γ)は、下式の内積によって算出される。

α = |<u,dn>|
β = |<v,dn>|
γ = |<w,dn>|
【0036】
そして、変換後の差分ベクトルdn(α,β,γ)に対して、上述した仮数部の切り捨てによる歪み圧縮が施される。図5に示すような指数成分の分布を有する変換前の差分ベクトルdn(x,y,z)は、正規直交基底{u,v,w}を用いた局所変換によって、図6に示すようなα,β,γの分布に変換される。この分布は、仮定A(dn//dn-2)よりα>>β,γが、仮定B(dn⊥w)よりα,β>>γがそれぞれ成立する結果、α>β>γとなることからも理論的に裏付けられる。その結果、α,β,γ成分に対する仮数部の切り捨ては、以下のようになり、特にγ成分の切り捨てが圧縮率の向上に大きく貢献するであろうと期待される。
【0037】
(局所変換後の歪み圧縮)
指数部の値 仮数部の切捨ビット数
α成分 大 少ない
β成分 中 普通
γ成分 小 多い
【0038】
つぎに、上述した圧縮アルゴリズムを実装した圧縮システムについて説明する。本実施形態における圧縮システムでは、三角形ストリップによって描画されたポリゴンデータを圧縮対象とし、原則として、三角形ストリップの順序で頂点を順次シフトさせながら、頂点毎に歪み圧縮を行う。
【0039】
図7は、三角形ストリップの説明図である。三角形ストリップでは、初期頂点P0からはしご状に連結した2辺により三角形が順次定義され、隣接する面では頂点が共有される。同図に示したように、初期頂点P0からP1,P1,P2,P3,P4,P4,P5,P0,P6,P2,P7,P4,P8の順に指定していく場合、頂点P2が指定された時点で、2つの辺P0−P1,P1−P2よりなる三角形P0P1P2が形成される。そして、次の頂点P3が指定されると三角形P1P2P3が、更に頂点P4が指定されると三角形P2P3P4がそれぞれ形成される。頂点P4では同一頂点が重複指定され、その後に頂点P5にジャンプしている。これは、同一頂点P4が重複指定された場合、例外的に辺P4−P5を一辺とする三角形は形成せず、その後の頂点P5を初期頂点として新たに三角形の形成を開始することを意味する。以後、三角形P5P0P6(頂点P6の指定時)、三角形P0P6P2(頂点P2の指定時)、三角形P6P2P7(頂点P7の指定時)、三角形P2P7P7(頂点P4の指定時)、三角形P7P4P8(頂点P8の指定時)の順に形成される。なお、DirectXやOpenGL等の3Dグラフィックスライブラリでは、重複した頂点の冗長性を削除してデータ量を減らすために、頂点の連結情報をインデックスにより管理する方式、すなわちインデックスバッファ方式が用いられる。この方式では、すべての頂点をリスト化し、各三角形の3頂点を三角形ストリップのインデックスとして記述する。
【0040】
[圧縮システム]
図8は、本実施形態に係る圧縮システムのブロック構成図である。この圧縮システムは、差分ベクトル算出部1と、局所変換部2と、仮数切捨部3と、局所基底算出部4と、記憶部5と、圧縮データ伸張部6と、局所基底逆変換部7と、頂点データ算出部8とで構成されている。
【0041】
差分ベクトル算出部1は、処理対象として入力されたn番目の頂点データPn(x,y,z)に関して、三角形ストリップにおける直前の頂点データP'n-1(x,y,z)との差分を算出し、差分ベクトルdn(x,y,z)として出力する。直前のデータP'n-1は、頂点データ算出部8において保持されている。なお、直前の頂点データP'n-1は、元の頂点データPn-1ではなく、歪み圧縮された値を復元したものである(符号に付された「'」は復元値を意味する)。なお、初期頂点P0については、差分ベクトル算出部1による差分ベクトルの算出は行わず、次の頂点P1の差分ベクトルd1を算出するために必要なデータとして、頂点データ算出部8に格納される。
【0042】
局所変換部2は、局所基底算出部4によって算出された局所基底B{u,v,w}に基づいて、差分ベクトルdnを局所変換して、変換後の差分ベクトルdn(α,β,γ)を出力する。ここで、α成分はベクトルuと差分ベクトルdnとの内積、β成分はベクトルvと差分ベクトルdnとの内積、そして、γ成分はベクトルwと差分ベクトルdnとの内積である。上述したように、局所基底B{u,v,w}としては正規直交基底を用いることができ、1つ前の差分ベクトルd'n-1と、2つ前の差分ベクトルd'n-2とに基づいて、頂点毎に生成される。なお、図4に示したように、1つ前の差分ベクトルd'n-1は、頂点Pn-1(正確には復元値P'n-1)と、その直前の頂点Pn-2(正確には復元値P'n-2)とによって規定される。また、2つ前の差分ベクトルd'n-2は、頂点Pn-2(正確には復元値P'n-2)と、その直前の頂点Pn-3(正確には復元値P'n-3)とによって規定される。
【0043】
仮数切捨部3は、局所変換後の差分ベクトルdnのそれぞれの成分α,β,γに関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てる。このようにして歪み圧縮された差分ベクトルd'n(α',β',γ')は、頂点データPnの圧縮データとして外部に出力されるとともに、圧縮データ伸張部6にも供給される。
【0044】
なお、仮数切捨部3において、仮数部の切り捨て処理と並行して、α,β,γ成分の指数部に関して、エントロピー符号化による無歪み圧縮を行ってもよい。8ビット固定長で表される指数部の値e∈[-126,127]には常にある程度の偏りがあるため、エントロピー符号化による圧縮効果が期待できる。エントロピー符号化としては、例えば静的ハフマン符号を用いることができる。この場合、成分毎に指数部の値を計測し、出現回数によってそれぞれハフマン木を構成する。また、圧縮データの先頭にシンボル数、シンボル、出現回数を記述し、伸張時にこれらよりハフマン木を再構成する。
【0045】
圧縮データ伸張部6は、差分ベクトルd'n(α',β',γ')の切り捨てられた下位ビットを補って、符号小数フォーマットに戻す(単に0を追加して桁数を揃える)。この伸張によって得られたα,β,γ成分は、局所変換部2より出力されたものとは一致せず、仮数部の歪み誤差を含む。なお、仮数切捨部3において指数部のエントロピー符号化を行っている場合には、これに対応した復号化も併せて行われる。
【0046】
局所逆変換部7は、圧縮データ伸張部6によって伸張された差分ベクトルd'n(α',β',γ')と、局所基底算出部4によって算出された局所基底B{u,v,w}とに基づいた局所逆変換を行い、差分ベクトルd'n(x,y,z)を算出する。この逆変換は、局所変換部2における変換の逆処理に相当する。この差分ベクトルd'nは、差分ベクトル算出部1より出力された差分ベクトルdnとは一致せず、仮数部の歪み誤差を含む。算出された差分ベクトルd'nは、記憶部5および頂点データ算出部8に供給される。記憶部5に供給された差分ベクトルd'nは、次の頂点Pn+1の処理で1つ前の差分ベクトルとして使用すべく、記憶領域dn-1に格納される。また、現在の頂点Pnの処理で1つ前の差分ベクトルとして使用された記憶領域dn-1のデータは、次の頂点Pn+1の処理で2つ前の差分ベクトルとして使用すべく、記憶領域dn-2に格納される。これに伴い、現在、記憶領域dn-2に格納されているデータは破棄される。
【0047】
一方、頂点データ算出部8は、現在格納している頂点データP'n-1に差分ベクトルd'nを加算したものを新たな頂点データP'nとして算出する。この新たな頂点データP'nは、次の頂点Pn+1の処理において、1つ前の頂点データとして用いられる。このように、一度圧縮されたデータを復元して、次の頂点Pn+1の処理で用いる理由は、伸張時に歪み圧縮による誤差の累積を防止するためである。
【0048】
この誤差の累積防止に関して、図9を参照しつつ詳述する。処理対象が頂点P1の場合、この頂点P1と共に三角形の一辺を形成する直前の頂点P0との差分が差分ベクトルd1として表現されるとともに、これを歪み圧縮することで圧縮差分ベクトルd'1が算出される。そして、圧縮差分ベクトルd'1を伸張して、これと頂点P0とを加算することによって、頂点P'1が復元される。しかしながら、歪み圧縮による誤差の影響があるので、復元された頂点P'1と、本来の頂点P1との間にずれが生じる。圧縮側では本来の頂点を特定できるが、伸張側では復元された頂点しか特定できない。したがって、圧縮時に本来の頂点を起点に差分ベクトルを算出してしまうと、伸張時に、頂点P2,P3,P4といった順序での繰り返し処理によって、本来の頂点とのずれが徐々に大きくなっていってしまう。このような誤差の累積を防止すべく、本実施形態では、ある頂点Pnの直後の頂点Pn+1に関する圧縮処理では、本来の頂点Pnではなく、直前の処理で復元された頂点P'nを用いる。なお、誤差の累積を防止するための本手法自体は、仮数部の切り捨てに限定されるものではなく、それ以外の歪み圧縮に対しても適用可能である。
【0049】
以上のような処理は、三角形ストリップの順序に従い、圧縮すべき頂点データPn+1,Pn+2,・・・が入力される毎に繰り返される。そして、最後の頂点データPlastの処理の完了に伴い、ポリゴンデータを構成する全頂点の圧縮が終了する。なお、処理対象となる頂点Pnが従前のものと一致する場合等においては、例外処理として、今回の頂点Pnの処理をスキップ等する。
【0050】
このように、本実施形態に係る圧縮システムでは、局所基底B{u,v,w}によって局所変換された差分ベクトルdnのα,β,γ成分に関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てる。そして、この切り捨てによって歪み圧縮された差分ベクトルd'nの成分が圧縮データとして用いられる。これにより、歪み誤差を抑制しつつ、ポリゴンデータの頂点データを効果的に圧縮することが可能になる。特に、差分ベクトルdnが属する三角形と隣接する三角形に基づいた局所基底を用いれば、より高い圧縮率を確保することが可能になる。
【0051】
[伸張システム]
図10は、上述した圧縮システムに対応する伸張システムのブロック構成図である。この伸張システムは、圧縮データ伸張部11と、局所逆変換部12と、頂点データ算出部13と、局所基底算出部14と、記憶部15とで構成されている。圧縮システムから伸張システムに渡されるデータは、初期頂点P0の座標データ、および、歪み圧縮された圧縮データd'n(α',β',γ')(n=1,2,3,・・・)である。なお、指数部の大きさと仮数部の切捨ビットとの対応関係は、圧縮側および伸張側の間で予め取り決められている。また、初期頂点P0については、次の頂点P1を算出するために必要なデータとして、頂点データ算出部13に格納される。
【0052】
圧縮データ伸張部11は、圧縮データP'n(α',β',γ')に関して、圧縮時に切り捨てられた下位ビットを補って、浮動小数フォーマットに戻す(単に0を追加して桁数を揃える)。なお、指数部がエントロピー符号化されている場合には、その伸張も併せて行われる。これにより、頂点P'nと、その直前の頂点P'n-1との差分である差分ベクトルd'nが伸張・復元される。
【0053】
局所逆変換部12は、圧縮データ伸張部11によって伸張された差分ベクトルd'n(α',β',γ')と、局所基底算出部14によって算出された局所基底B{u,v,w}とに基づいて、下式の局所逆変換、すなわち圧縮時における局所変換の逆変換を行い、差分ベクトルd'n(x,y,z)を算出する。三次元の局所基底B{u,v,w}は、圧縮側と同様のものが用いられ、1つ前の差分ベクトルd'n-1(頂点P'n-1,P'n-2によって規定)と、2つ前の差分ベクトルd'n-2(P'n-2,P'n-3によって規定)とに基づいて、頂点毎に生成される。算出された差分ベクトルd'nは、頂点データ算出部13および記憶部15に供給される。

d'n(x,y,z)=<u,d'n>u+<v,d'n>v+<w,d'n>
【0054】
頂点データ算出部13は、現在格納している頂点データP'n-1(従前の伸張によって算出済のもの)に、局所逆変換部12によって算出された今回の差分ベクトルd'n(x,y,z)を加算することによって、出力データとしての頂点データP'n(x,y,z)を算出する。この新たな頂点データP'nは、次の頂点Pn+1の処理において、1つ前の頂点データとして用いられる。
【0055】
また、記憶部15に供給された差分ベクトルd'nは、次の頂点Pn+1の処理で1つ前の差分ベクトルとして使用すべく、記憶領域dn-1に格納される。また、現在の頂点Pnの処理で1つ前の差分ベクトルとして使用された記憶領域dn-1のデータは、次の頂点Pn+1の処理で2つ前の差分ベクトルとして使用すべく、記憶領域dn-2に格納される。これに伴い、現在、記憶領域dn-2に格納されているデータは破棄される。
【0056】
以上のような処理は、伸張すべき圧縮データd'n+1,d'n+2,・・・が入力される毎に繰り返される。そして、最後の頂点データd'lastの処理の完了に伴い、ポリゴンデータを構成する全頂点の伸張が終了する。
【0057】
このように、本実施形態に係る伸張システムによれば、上述した圧縮システムによって生成された圧縮データを適切に伸張することができる。
【0058】
なお、上述した実施形態では、圧縮/伸張システムに関して説明したが、これと等価な処理手順をコンピュータによって実行させるコンピュータ・プログラムも本発明の別の態様を構成するものである。この場合、圧縮処理の基本的な流れは以下のようになる(詳細は上述した通りなので省略)。なお、圧縮効率は落ちるものの、下記ステップ12,13を省略して、ステップ11で算出された差分ベクトルを直接歪み圧縮することも可能であり、本発明はこのような形態を排除するものではない。
【0059】
(圧縮処理手順)
(ステップ11)処理対象となる頂点の差分ベクトル化
(ステップ12)局所基底の算出
(ステップ13)局所基底に基づく差分ベクトルの局所変換
(ステップ14)変換後の差分ベクトルの歪み圧縮
【0060】
また、伸張処理は以下のような手順となる。なお、圧縮処理で局所変換を行わない場合には、下記ステップ22,23は不要である。
(伸張処理手順)
【0061】
(ステップ21)圧縮データの伸張
(ステップ22)局所基底の算出
(ステップ23)局所基底を用いた局所逆変換による差分ベクトルの算出
(ステップ24)頂点データの算出
【図面の簡単な説明】
【0062】
【図1】頂点座標のデータ形式の説明図
【図2】差分ベクトルで表現された頂点の説明図
【図3】仮数部における下位ビット切り捨ての説明図
【図4】差分ベクトルと局所基底との関係を示す図
【図5】変換前の差分ベクトルに関する指数成分の分布図
【図6】変換後の差分ベクトルに関する指数成分の分布図
【図7】三角形ストリップの説明図
【図8】圧縮システムのブロック構成図
【図9】伸張時における歪み誤差の累積の説明図
【図10】伸張システムのブロック構成図
【符号の説明】
【0063】
1 差分ベクトル算出部
2 局所変換部
3 仮数切捨部
4 局所基底算出部
5 記憶部
6 圧縮データ伸張部
7 局所逆変換部
8 頂点データ算出部
11 圧縮データ伸張部
12 局所逆変換部
13 頂点データ算出部
14 局所基底算出部
15 記憶部

【特許請求の範囲】
【請求項1】
ポリゴンデータの幾何圧縮を三角形ストリップの順序で頂点毎に行う圧縮システムにおいて、
処理対象となる第1の頂点を、その直前の第2の頂点との差分である第1の差分ベクトルで表現する差分ベクトル算出部と、
前記第2の頂点およびその直前の第3の頂点とによって規定される第2の差分ベクトルと、前記第3の頂点およびその直前の第4の頂点とによって規定される第3の差分ベクトルとに基づいて、前記第1の差分ベクトルに関する三次元の局所基底を算出する局所基底算出部と、
前記算出された局所基底に基づいて、前記第1の差分ベクトルを局所変換する局所変換部と、
前記局所変換された第1の差分ベクトルのそれぞれの成分に関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てることで歪み圧縮された第1の差分ベクトルを圧縮データとして出力する仮数切捨部と
を有することを特徴とするポリゴンデータの圧縮システム。
【請求項2】
前記局所基底は、前記第3の差分ベクトルと平行である第1の基底成分、および、前記第2の差分ベクトルと前記第3の差分ベクトルとによって張られる面の法線方向である第2の基底成分の少なくとも一方を含むことを特徴とする請求項1に記載されたポリゴンデータの圧縮システム。
【請求項3】
前記局所基底は、前記第2の差分ベクトルと前記第3の差分ベクトルとによって張られる面上の特定方向である第3の基底成分を含むことを特徴とする請求項2に記載されたポリゴンデータの圧縮システム。
【請求項4】
前記第3の基底成分は、前記第2の差分ベクトルと、前記第3の差分ベクトルとに基づいたグラム-シュミット直交化によって算出されることを特徴とする請求項3に記載されたポリゴンデータの圧縮システム。
【請求項5】
前記仮数切捨部は、前記局所変換された第1の差分ベクトルのそれぞれの成分の指数部に関して、エントロピー符号化を施すことを特徴とする請求項1から4のいずれかに記載されたポリゴンデータの圧縮システム。
【請求項6】
前記第2の頂点、前記第2の差分ベクトルおよび前記第3の差分ベクトルは、従前に歪み圧縮された差分ベクトルに対して、前記局所変換の逆変換を施すことによって復元された差分ベクトルに基づいて生成されることを特徴とする請求項1から5のいずれかに記載されたポリゴンデータの圧縮システム。
【請求項7】
ポリゴンデータの圧縮プログラムにおいて、
処理対象となる第1の頂点を、当該第1の頂点と共に第1の三角形の一辺を形成する第2の頂点との差分である第1の差分ベクトルで表現するステップと、
前記第1の差分ベクトルのそれぞれの成分に関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てることで歪み圧縮された第1の差分ベクトルを圧縮データとして出力するステップと
を有することを特徴とする圧縮方法をコンピュータに実行させるポリゴンデータの圧縮プログラム。
【請求項8】
前記第1の三角形と隣接した第2の三角形に基づいて、三次元の局所基底を算出するステップと、
前記算出された局所基底に基づいて、前記第1の差分ベクトルを局所変換するステップとをさらに有し、
前記歪み圧縮は、前記局所変換された第1の差分ベクトルを対象に行うことを特徴とする請求項7に記載されたポリゴンデータの圧縮プログラム。
【請求項9】
ポリゴンデータの幾何圧縮を三角形ストリップの順序で頂点毎に行う圧縮プログラムにおいて、
処理対象となる第1の頂点を、その直前の第2の頂点との差分である第1の差分ベクトルで表現するステップと、
前記第2の頂点およびその直前の第3の頂点とによって規定される第2の差分ベクトルと、前記第3の頂点およびその直前の第4の頂点とによって規定される第3の差分ベクトルとに基づいて、前記第1の差分ベクトルに関する三次元の局所基底を算出するステップと、
前記算出された局所基底に基づいて、前記第1の差分ベクトルを局所変換するステップと、
前記局所変換された第1の差分ベクトルのそれぞれの成分に関して、指数部の大きさに応じて仮数部の下位ビットを可変に切り捨てることで歪み圧縮された第1の差分ベクトルを圧縮データとして出力するステップと
を有することを特徴とする圧縮方法をコンピュータに実行させるポリゴンデータの圧縮プログラム。
【請求項10】
前記局所基底は、前記第3の差分ベクトルと平行である第1の基底成分、および、前記第2の差分ベクトルと前記第3の差分ベクトルとによって張られる面の法線方向である第2の基底成分の少なくとも一方を含むことを特徴とする請求項9に記載されたポリゴンデータの圧縮プログラム。
【請求項11】
前記局所基底は、前記第2の差分ベクトルと前記第3の差分ベクトルとによって張られる面上の特定方向である第3の基底成分を含むことを特徴とする請求項10に記載されたポリゴンデータの圧縮プログラム。
【請求項12】
前記第3の基底成分は、前記第2の差分ベクトルと、前記第3の差分ベクトルとに基づいたグラム-シュミット直交化によって算出されることを特徴とする請求項11に記載されたポリゴンデータの圧縮プログラム。
【請求項13】
前記仮数切捨部は、前記局所変換された第1の差分ベクトルのそれぞれの成分の指数部に関して、エントロピー符号化を施すことを特徴とする請求項9から12のいずれかに記載されたポリゴンデータの圧縮プログラム。
【請求項14】
前記第2の頂点、前記第2の差分ベクトルおよび前記第3の差分ベクトルは、従前に歪み圧縮された差分ベクトルに対して、前記局所変換の逆変換を施すことによって復元された差分ベクトルに基づいて生成されることを特徴とする請求項9から13のいずれかに記載されたポリゴンデータの圧縮プログラム。
【請求項15】
ポリゴンデータの幾何圧縮を三角形ストリップの順序で頂点毎に行う圧縮プログラムにおいて、
処理対象となる第1の頂点を、当該第1の頂点と共に第1の三角形の一辺を形成する第2の頂点との差分である第1の差分ベクトルで表現するとともに、当該第1の差分ベクトルを歪み圧縮した上で圧縮データとして出力するステップと、
前記歪み圧縮された第1の差分ベクトルを圧縮前の第1の差分ベクトルに伸張するとともに、当該伸張された第1の差分ベクトルを前記第2の頂点に加算することによって、前記第1の頂点を復元するステップとを有する処理を頂点毎に繰り返し実行し、
前記第1の頂点の直後の頂点に関する処理では、直前の処理で復元された前記第1の頂点を前記第2の頂点として用いることを特徴とする圧縮方法をコンピュータに実行させるポリゴンデータの圧縮プログラム。
【請求項16】
ポリゴンデータの圧縮データを伸張する伸張システムにおいて、
歪み圧縮された第1の差分ベクトルのそれぞれの成分に関して、圧縮時に切り捨てられた仮数部の下位ビットを補うことによって、処理対象となる第1の頂点と、その直前の第2の頂点との差分である第1の差分ベクトルに伸張する圧縮データ伸張部と、
前記第2の頂点およびその直前の第3の頂点とによって規定される第2の差分ベクトルと、前記第3の頂点およびその直前の第4の頂点とによって規定される第3の差分ベクトルとに基づいて、前記第1の差分ベクトルに関する三次元の局所基底を算出する局所基底算出部と、
前記算出された局所基底に基づいて、圧縮時における局所変換の逆変換である局所逆変換を前記第1の差分ベクトルに施す局所逆変換部と、
前記局所逆変換が施された第1の差分ベクトルと、従前の伸張によって算出済の前記第2の頂点とに基づいて、前記第1の頂点を算出する頂点データ算出部と
を有することを特徴とするポリゴンデータの伸張システム。
【請求項17】
前記局所基底は、前記第3の差分ベクトルと平行である第1の基底成分、および、前記第2の差分ベクトルと前記第3の差分ベクトルとによって張られる面の法線方向である第2の基底成分の少なくとも一方を含むことを特徴とする請求項16に記載されたポリゴンデータの伸張システム。
【請求項18】
前記局所基底は、前記第2の差分ベクトルと前記第3の差分ベクトルとによって張られる面上の特定方向である第3の基底成分を含むことを特徴とする請求項17に記載されたポリゴンデータの伸張システム。
【請求項19】
前記第3の基底成分は、前記第2の差分ベクトルと、前記第3の差分ベクトルとに基づいたグラム-シュミット直交化によって算出されることを特徴とする請求項18に記載されたポリゴンデータの伸張システム。
【請求項20】
ポリゴンデータの圧縮データを伸張する伸張プログラムにおいて、
歪み圧縮された第1の差分ベクトルのそれぞれの成分に関して、圧縮時に切り捨てられた仮数部の下位ビットを補うことによって、第1の頂点と、当該第1の頂点と共に第1の三角形の一辺を形成する第2の頂点との差分である第1の差分ベクトルに伸張するステップと、
前記第1の差分ベクトルと、従前の伸張によって算出済の前記第2の頂点とに基づいて、前記第1の頂点を算出するステップと
を有することを特徴とする伸張方法をコンピュータに実行させるポリゴンデータの伸張プログラム。
【請求項21】
前記第1の三角形と隣接した第2の三角形に基づいて、三次元の局所基底を算出するステップと、
前記算出された局所基底に基づいて、圧縮時における局所変換の逆変換である局所逆変換を前記第1の差分ベクトルに施すステップとをさらに有し、
前記歪み圧縮は、前記局所逆変換された第1の差分ベクトルを対象に行うことを特徴とする請求項20に記載されたポリゴンデータの伸張プログラム。
【請求項22】
ポリゴンデータの圧縮データを伸張する伸張プログラムにおいて、
歪み圧縮された第1の差分ベクトルのそれぞれの成分に関して、圧縮時に切り捨てられた仮数部の下位ビットを補うことによって、第1の頂点と、その直前の第2の頂点との差分である第1の差分ベクトルに伸張するステップと、
前記第2の頂点およびその直前の第3の頂点とによって規定される第2の差分ベクトルと、前記第3の頂点およびその直前の第4の頂点とによって規定される第3の差分ベクトルとに基づいて、前記第1の差分ベクトルに関する三次元の局所基底を算出するステップと、
前記算出された局所基底に基づいて、圧縮時における局所変換の逆変換である局所逆変換を前記第1の差分ベクトルに施すステップと、
前記局所逆変換が施された第1の差分ベクトルと、従前の伸張によって算出済の前記第2の頂点とに基づいて、前記第1の頂点を算出するステップと
を有することを特徴とする伸張方法をコンピュータに実行させるポリゴンデータの伸張プログラム。
【請求項23】
前記局所基底は、前記第3の差分ベクトルと平行である第1の基底成分、および、前記第2の差分ベクトルと前記第3の差分ベクトルとによって張られる面の法線方向である第2の基底成分の少なくとも一方を含むことを特徴とする請求項22に記載されたポリゴンデータの伸張プログラム。
【請求項24】
前記局所基底は、前記第2の差分ベクトルと前記第3の差分ベクトルとによって張られる面上の特定方向である第3の基底成分を含むことを特徴とする請求項23に記載されたポリゴンデータの伸張プログラム。
【請求項25】
前記第3の基底成分は、前記第2の差分ベクトルと、前記第3の差分ベクトルとに基づいたグラム-シュミット直交化によって算出されることを特徴とする請求項24に記載されたポリゴンデータの伸張プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2009−193095(P2009−193095A)
【公開日】平成21年8月27日(2009.8.27)
【国際特許分類】
【出願番号】特願2008−29945(P2008−29945)
【出願日】平成20年2月12日(2008.2.12)
【出願人】(398034168)株式会社アクセル (80)
【Fターム(参考)】