スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

STLファイルがバイナリモードかAsciiモードか判断する方法

たとえばこちらでSTLのフォーマットの仕様が解説されています。

STLファイルというのは、Asciiは「solid」+任意の文字列で始まる、Binaryは長さが80文字で固定の任意の文字列で始まる、というようにいずれもコメント的な文字列で開始され、モードやフォーマットバージョンをあらわすヘッダのような情報はありません。

Asciiモードの場合、必ず「solid」で始まることがはっきりしているので、それ以外の文字列で開始しているファイルがあれば、それは必ずBinaryモードなのですが、実はどういうわけかBinaryモードでも「solid」で始まるコメントを入れることが非常に良くあるようなので、モードの判定が難しいという奇妙な状況になっています。

で、たとえばassimpではどのようにモードの認識を行っているのか見てみたところ、

  • ひとまずBinaryモードとみなしてポリゴン数を読み込んでみる
  • Binaryモードならポリゴン数からファイルサイズがはっきりわかるので、ファイルサイズが正しければBinaryモード
  • それ以外はAsciiモード

というルールで判断しているようです。

若干修正を加えていますが、コードとしては大体下記のような感じです。



これで運用としてはほぼ100%に近い確率で自動認識できるのですが、Asciiモードであれば任意のコメントを先頭に入れることが出来るので、奇跡的に上記条件にマッチするコメントから始まるファイルがあれば誤認識してしまいます。
スポンサーサイト

コメントの投稿

非公開コメント

カレンダー
10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
最新記事
カテゴリ
Qt (21)
SDL (2)
MFC (2)
検索フォーム
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
リンク
リンク(管理用)
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。