English / 日本語
3Dキューブの表現 – OFFファイル形式

Object File Format (OFF)

POGO Visualizer:3Dポリゴン形状のための、シンプルで柔軟な標準ビューア

Gregの自作OFFビューア - いつかこのサイトで公開予定の物理光学/幾何光学(POGO)パッケージの一部

OFFファイル形式の概要

OFF(Object File Format)は、2Dまたは3Dオブジェクトの形状を、主に頂点で定義されたポリゴン(面)の集合として記述する、軽量で人間にも読みやすいASCIIベースのファイル形式です。1980年代後半に開発され(特にオハイオ州立大学のプロジェクトと関連が深く、その後ミネソタ大学Geometry CenterのGeomviewという対話的3Dビューアによって広まりました)、OFFは現在でも学術研究、メッシュ処理ライブラリ(CGAL、MeshLab、libiglなど)、3Dベンチマーク(Princeton Shape Benchmarkなど)、そして表面再構成・可視化・計算幾何学のツールにおいて広く使われています。

OFFは意図的にシンプルかつ拡張可能な設計になっており、テクスチャ、マテリアル、アニメーション、階層構造といった機能は持たず(OBJやPLY、あるいはFBXやglTFのようなより複雑な形式とは異なります)、ポリゴンメッシュそのものに焦点を当てています。有限要素解析、コンピュータビジョンにおける形状解析、3Dプリント前処理など、トポロジーに絞ったクリーンな形状データのやり取りが求められる場面で威力を発揮します。

主な特徴と構造

標準的なOFFファイルの構造

基本的なOFFファイルは、次のようなレイアウトに従います:

  1. 1行目(マジックヘッダー): OFF(非常に古いファイルでは省略されていることもありますが、記述が推奨されます)。
  2. 2行目: 3つの整数:n_vertices n_faces n_edges
    (n_edges は0に設定され、多くの場合読み込み側では無視されます。歴史的にはオイラー標数のチェックのために含まれていました。)
  3. 続くn_vertices行: 頂点座標
    各行:x y z(浮動小数点数、1行につき1頂点)
  4. 続くn_faces行: 面の定義
    各行は整数v(その面を構成する頂点数)で始まり、続けて頂点リストへの0始まりのインデックスがv個並びます:
    v idx1 idx2 ... idxv
    各面は平面かつ自己交差しないものと仮定され、表向きの面では反時計回りの巻き順が一般的です。

例:シンプルな立方体(頂点8個、四角形の面6個)

OFF
8 6 0
-0.5 -0.5  0.5
 0.5 -0.5  0.5
 0.5  0.5  0.5
-0.5  0.5  0.5
-0.5 -0.5 -0.5
 0.5 -0.5 -0.5
 0.5  0.5 -0.5
-0.5  0.5 -0.5
4 0 1 2 3
4 4 5 6 7
4 0 1 5 4
4 1 2 6 5
4 2 3 7 6
4 3 0 4 7

拡張形式(色付き / 法線付きバリアント)

多くの現代的な実装(MeshLab、CGALなど)はこれらに対応しています。純粋な「OFF」リーダーは、余分なフィールドを無視するか、問題なく読み込みに失敗するようになっています。

利点と制約

利点:読み書きが非常に簡単、依存関係がない、人間の手で編集可能、基本的なメッシュならコンパクト、任意の多角形に対応(ワークフローによっては三角形分割によるアーティファクトを減らせる)。

制約:テクスチャ/UVなし、マテリアルなし、階層/グループなし、メタデータ(単位、作者など)なし、巨大なモデルに対するバイナリ形式の効率性はない(一部のツールにはバイナリ版OFFも存在します)、実用上ほとんどのレンダラーでは面が凸かつ平面である必要がある。

より高度な用途には、今日ではPLY(プロパティ付き)、OBJ(MTLマテリアル付き)、glTFといった形式が好まれることが多くなっています。しかしOFFは、その純粋さと実装のしやすさから、幾何学処理の研究や教育分野において今なおゴールドスタンダードであり続けています。

OFF標準ドキュメントをダウンロード(Paul Bourke氏による仕様書)

参考資料:拡張形式や例を含む、OFF形式の包括的な説明。

© 2026 Gregory J. Durnan · OFFファイル形式について