前回に引き続き、技術者目線でXVLについてご紹介します。
今回のテーマは「XVLはなぜ軽くできるのか?」です。
目次
形状データの軽量化
いきなりディープな内容になるのもどうかとも思ったのですが、多くの人が興味を持つところだと思いますので、真っ先に形状データに切り込んでいきます。
形状データに関しては、用途上問題が無い、あるいは人が見て差に気付かない場合には、情報を落とす(=情報量を減らす)ことが許される点が他のデータと異なります。
つまり、形状データの軽量化には
情報量を減らす軽量化
情報量を維持する軽量化
が存在し、両者の組み合わせの結果、フォーマットとしての性能と適用可能範囲が決まってきます。
情報量を減らす軽量化
まずは、情報量を減らす軽量化手法を挙げます。
数値精度を下げる
コンピューターの内部で実数値を扱う際、現在の64bit CPUを搭載したPC上では、IEEE 754という国際規格で定められた表現形式に従い64bitで実数一つを表す「倍精度」浮動小数点型として計算処理などを行うのが一般的です。
ここで、形状データに含まれる実数値を32bitで実数一つを表す「単精度」浮動小数点型に変換して保持することにより、そのデータ量を単純に半分にすることが可能です。
この軽量化のデメリットは単純で、数値の精度が下がる(=非常に小さい値を正確に扱うことが出来ない)、扱える数値の範囲が狭くなる(=表現できる値の最大・最小値が変わるだけでなく、有効数字の関係で一定の精度を保って扱える値の範囲が縮小する)と言うことにつきます。
実世界で利用する上では、例えば0.1mmの精度と言うように絶対的な目安を示すことが必要になるため、整合性を持たせるためにいろいろと気を使うことになります。
情報を捨てる
XVLでは3D CADデータなどの元データが保持している形状データの多くを捨てています。
詳細の説明は省きますが、その結果としてXVLでは何が出来なくなっているのか、と言う視点から一覧してみたいと思います。
モデリングフィーチャー(CADフィーチャー)の破棄
現在の主流であるフィーチャーベースのモデリング機能を持った3D CADデータには、形状を作成する際のフィーチャー情報(モデリングフィーチャー)が保存されています。
XVLでは変換の時点でこのフィーチャーをすべて破棄しており、結果として出来上がった形状のみを形状データとして保持しています。
一般的にフィーチャーの情報は膨大なものなので、相当なデータ軽量化になります。
またその結果として、XVLでは形状の変形操作が基本的には出来ません。
この点が3D CADフォーマットとの本質的な差異である、と言えるでしょう。
曲面情報の削減
XVLでは、曲面の向き・滑らかさの情報を変換時に破棄しています。
この軽量化の結果として、XVLは自由曲面の厳密な角度や滑らかさを必要とする用途には不向きなフォーマットとなっています。
トリム曲面境界のuv曲線の破棄
この内容を説明するには、曲面データの内部表現に関してかなり突っ込んだ説明が必要になるため、今回は触れません。
この軽量化の最大のデメリットは、一部のケースにおいてXVLのテッセレーション結果が破綻する(いわゆる面抜け、面伸び)ことがあること、一部のケースにおいてXVLのテッセレーション処理に非常に時間が掛かることがある、と言う点になります。
実際のアプリケーションにおいては、一般的なユーザーデータでこれらのデメリットが表面化しないよう、細かな対応が入れられています。
まとめ
形状データに関し、情報量を減らす軽量化手法に関して
数値精度を下げる
情報を捨てる
の二つを紹介しました。
前後編でお送りした技術者から見たXVL、いかがでしたか?少しでも面白い!と思っていただけたなら幸いです!