3次元形状データ形式の解説

メッシュ・CAD・点群・ボリュームなどの表現方式と、代表的なファイル形式の特徴・構造・使い分け

1. 3次元形状の表現方式

ファイル形式を理解する前に、「形をどう数値で表すか」という表現方式を押さえておくと整理しやすくなります。多くの形式は、以下のどれか(または複数)を保存するための入れ物です。

ポリゴンメッシュ 頂点(座標)と、頂点を結ぶ面(三角形・四角形)で表面を近似。最も広く使われる。
境界表現(B-rep)・NURBS 面・稜線・頂点の位相と、数式で定義された曲面で厳密に表す。CADの標準。
点群 表面上の点の集合。接続情報を持たない。レーザースキャナやフォトグラメトリの生データ。
ボクセル・ボリューム 空間を格子に区切り、各セルに値(密度・CT値など)を持たせる。内部まで表現できる。
陰関数・ニューラル表現 符号付き距離関数(SDF)や NeRF など、関数 f(x,y,z) の等値面として形を表す。

メッシュは「表面だけを平面のつぎはぎで近似」、B-rep は「数式で厳密に」、点群は「つながりを持たない標本」、ボクセルは「内部まで格子で」表す、と捉えると違いがわかりやすいでしょう。用途に応じて相互に変換されます(例:点群 → メッシュ化、CAD → メッシュ化して3Dプリント、メッシュ → ボクセル化してシミュレーション)。

2. ポリゴンメッシュ形式

形状そのもの(頂点と面)を中心に保存する、比較的シンプルな形式です。研究用データセットや3Dプリントでよく使われます。

STL.stl

3D Systems, 1987テキスト/バイナリ三角形のみ

光造形(ステレオリソグラフィ)用に作られた形式で、現在も3Dプリントの事実上の標準です。三角形ごとに「法線ベクトル+3頂点の座標」を並べるだけの極めて単純な構造です。

頂点を共有せず三角形ごとに座標を重複して持つため、ファイルが大きくなり、隣接関係(どの三角形がつながっているか)も読み込み後に再構築する必要があります。色・材質・単位の情報は持ちません(mm か inch かは受け手が判断します)。バイナリ版は「80バイトのヘッダー+三角形数(uint32)+1三角形あたり50バイト」という固定長構造です。

OBJ(Wavefront OBJ).obj + .mtl

Wavefront Technologies, 1980年代テキストUV・法線・材質

行頭のキーワードで意味を表すテキスト形式です。v(頂点座標)、vt(テクスチャ座標)、vn(法線)、f(面)が基本で、面は「頂点/テクスチャ座標/法線」の番号の組で指定します。番号は1から始まる点に注意が必要です。

材質は別ファイルの MTL(mtllib で参照、usemtl で適用)に書き、テクスチャ画像はさらに別ファイルになります。人が読めて実装が容易なため、ほぼすべての3Dソフトが対応しています。一方、アニメーションやシーン階層は扱えません。

PLY(Polygon File Format / Stanford Triangle Format).ply

Greg Turk(Stanford大), 1994テキスト/バイナリ任意の属性を定義可

Stanford 3D Scanning Repository(Bunny、Dragon、Lucy など)で使われ、研究分野で広く普及しました。ヘッダーで element(vertex、face など)と property(型と名前)を宣言し、その定義どおりに本体を並べる自己記述的な構造が特徴です。

頂点色・法線・信頼度・反射強度などの任意の属性を追加できます。そのため、メッシュだけでなく点群の保存にもよく使われます。最近では 3D Gaussian Splatting の学習結果(ガウシアンの位置・共分散・球面調和係数)を保存する器としても用いられています。

OFF(Object File Format).off

Geomviewテキスト最小限

先頭に OFF、次に頂点数・面数・辺数、続いて頂点座標と面のリストを並べるだけの最小構成の形式です。Princeton Shape Benchmark や ModelNet など、形状解析・機械学習のデータセットで見かけます。

3MF(3D Manufacturing Format).3mf

3MF Consortium, 2015ZIP+XML単位・色・材料

STL の欠点を補う3Dプリント向けの後継形式です。ZIP アーカイブの中に XML で頂点共有型のメッシュを格納します。単位、色、材料、複数オブジェクトの配置、プリント設定などを1ファイルにまとめられ、主要なスライサーが対応しています。

VRML / X3D.wrl / .x3d

VRML97: ISO/IEC 14772X3D: ISO/IEC 19775シーングラフ

Web で3Dを扱うために1990年代に作られた形式で、X3D はその XML ベースの後継です。シーングラフ(階層構造)を表現できます。現在は Web 用途では glTF に置き換わりつつありますが、フルカラー3Dプリントの入稿形式としては今も使われることがあります。

3. 同じ形状を4形式で書く

4つの頂点 (0,0,0), (1,0,0), (0,1,0), (0,0,1) を持つ四面体を各形式で表すと、次のようになります。面の頂点順は、外側から見て反時計回りです。

OBJ(番号は1始まり)

# tetrahedron
v 0 0 0
v 1 0 0
v 0 1 0
v 0 0 1
f 1 3 2
f 1 2 4
f 1 4 3
f 2 3 4

OFF(番号は0始まり)

OFF
4 4 6
0 0 0
1 0 0
0 1 0
0 0 1
3 0 2 1
3 0 1 3
3 0 3 2
3 1 2 3

PLY(ASCII)

ply
format ascii 1.0
element vertex 4
property float x
property float y
property float z
element face 4
property list uchar int vertex_indices
end_header
0 0 0
1 0 0
0 1 0
0 0 1
3 0 2 1
3 0 1 3
3 0 3 2
3 1 2 3

STL(ASCII、最初の1面のみ)

solid tetrahedron
  facet normal 0 0 -1
    outer loop
      vertex 0 0 0
      vertex 0 1 0
      vertex 1 0 0
    endloop
  endfacet
  ...(残り3面も同様)
endsolid tetrahedron
OBJ・OFF・PLY は「頂点リスト+面は頂点番号で参照」するインデックス方式です。STL だけは面ごとに座標を直接書くため、同じ頂点 (0,0,0) が3回登場します。また、OFF と PLY の面の行頭にある 3 は、その面の頂点数を表します。

4. シーン・DCC交換形式

形状に加えて、材質、テクスチャ、カメラ、ライト、階層構造、骨格(スケルトン)、アニメーションなどを含む「シーン全体」をやり取りする形式です。DCC(Digital Content Creation)ツール間の受け渡しや、ゲーム・Web での配信に使われます。

glTF / GLB.gltf + .bin + 画像 / .glb

Khronos Group, 2.0 は2017年ISO/IEC 12113:2022PBR材質・アニメーション

「3DのJPEG」を目指して設計された、実行時の配信に向いた形式です。シーン構造を JSON(.gltf)に書き、頂点などの大量データはバイナリバッファ(.bin)に、GPU にそのまま渡せる形で格納します。これらをすべて1ファイルにまとめたものが GLB です。

物理ベースレンダリング(PBR)の metallic-roughness 材質、スキニング、モーフターゲット、アニメーションに対応しています。Draco や meshopt によるメッシュ圧縮、KTX2 によるテクスチャ圧縮などの拡張もあります。three.js、Babylon.js、Unity、Unreal、Blender など対応環境が広く、Web 3D の第一選択です。

FBX.fbx

Autodesk(独自仕様)バイナリ/ASCIIアニメーション・リギング

Maya、3ds Max、MotionBuilder、Unity、Unreal などの間でモデルやアニメーションをやり取りする、映像・ゲーム業界の定番形式です。仕様は非公開で、公式 SDK を通じて扱うのが前提のため、ソフト間で解釈の差が出ることがあります。

USD / USDZ.usd / .usda / .usdc / .usdz

Pixar, 2016年オープンソース化AOUSD で標準化推進レイヤー合成

Pixar が大規模な映画制作パイプラインのために開発したシーン記述形式です。最大の特徴はコンポジション(合成)で、複数のファイル(レイヤー)を参照・上書き・バリアント切り替えしながら1つのシーンを組み立てられます。これにより、多人数での分業が可能になります。

.usda はテキスト、.usdc はバイナリ、.usdz はそれらとテクスチャをまとめた ZIP パッケージで、Apple の AR Quick Look で使われています。NVIDIA Omniverse などのデジタルツイン基盤でも採用されています。

Alembic.abc

Sony Pictures Imageworks + ILM, 2011ジオメトリキャッシュ

アニメーションやシミュレーション(布、流体のメッシュ、破壊など)の結果を、フレームごとの形状として「焼き込んで」保存する形式です。リグや計算手順は持たず、結果の形だけを効率よく受け渡します。

COLLADA.dae

Khronos GroupXMLレガシー

ツール間交換のためのオープンな XML 形式です。機能は豊富ですが、記述の自由度が高く実装ごとの差が大きいという問題がありました。現在は新規用途では glTF が推奨されます。

その他

.3ds(旧3D Studio の形式。1オブジェクトあたり頂点数65,536の制限あり)、.blend(Blender のネイティブ形式)、.max / .ma / .mb(3ds Max・Maya のネイティブ形式)などがあります。ネイティブ形式は各ソフト専用なので、他ソフトに渡す際は上記の交換形式に書き出します。

5. CAD(B-rep)形式

機械設計では、形状を三角形で近似せず、NURBS 曲面や円柱面などの数式で厳密に表します。面同士のつながり(位相)も保持します。寸法の正確さが必要な製造・解析ではこちらを使います。

STEP.step / .stp

ISO 10303テキストCAD間交換の標準

製品データ交換の国際標準で、異なる CAD ソフト間で B-rep 形状を渡すときの第一選択です。用途別にアプリケーションプロトコル(AP)が定められています。AP203(形状・構成管理)、AP214(自動車)、そして両者を統合した AP242 では、寸法公差などの製造情報(PMI)も扱えます。

IGES.igs / .iges

米国 ANSI, 1980年テキストレガシー

STEP 以前から使われてきた CAD 交換形式です。曲線や曲面の受け渡しはできますが、ソリッドとしての位相情報が欠けやすく、読み込み後に面の隙間を修正する作業が必要になることがあります。古いデータや一部の業界では今も使われています。

カーネル形式・軽量形式

CAD ソフトの形状計算エンジン(ジオメトリカーネル)に固有の形式もあります。Parasolid の .x_t / .x_b(SolidWorks、NX などが採用)や、ACIS の .sat などです。同じカーネルを使うソフト同士なら、ほぼ劣化なく受け渡せます。

JT(.jt、ISO 14306)は、大規模な組立品を軽く表示・共有するための形式で、多段階の詳細度(LOD)を持つメッシュと B-rep を併せて格納できます。各 CAD のネイティブ形式(.sldprt、.catpart、.prt、.ipt など)は、設計履歴(フィーチャー)まで含みますが、原則として他ソフトでは直接開けません。

CAD → メッシュの変換(テッセレーション)は簡単にできますが、メッシュ → CAD の逆変換は難しく、リバースエンジニアリング用の専用ツールが必要です。設計データは STEP などの B-rep 形式で保管し、表示や3Dプリントのときにメッシュへ書き出すのが基本です。

6. 点群形式

レーザースキャナ(LiDAR)、深度カメラ、フォトグラメトリなどで取得した点の集合を保存する形式です。点ごとに色、反射強度、法線、分類ラベルなどの属性を持つことが多くあります。

XYZ / テキスト点群.xyz / .txt / .csv / .pts

1行に1点の座標(と色など)を並べただけの形式です。最も単純で扱いやすい反面、仕様の統一がなく、列の意味はファイルごとに確認が必要です。

PLY.ply

面要素を持たない PLY は、そのまま点群形式として使えます。Open3D、MeshLab、CloudCompare などで標準的に扱えます。

PCD.pcd

Point Cloud Library(PCL)ASCII/バイナリ/圧縮

PCL の標準形式で、ロボティクス分野(ROS など)でよく使われます。PLY と同様にヘッダーでフィールドを宣言します。加えて、センサーの位置・姿勢(VIEWPOINT)や、画像のように縦横に並んだ「組織化点群」の幅と高さを記録できます。

LAS / LAZ.las / .laz

ASPRSバイナリ航空・地上 LiDAR

航空レーザー測量の標準形式です。座標系の情報、反射強度、リターン番号、地表・建物・植生などの分類コード、GPS 時刻などを持ちます。LAZ はその可逆圧縮版です。国や自治体が公開する地形点群データの多くはこの形式で配布されています。

E57.e57

ASTM E2807ベンダー非依存

地上型3Dレーザースキャナのデータ交換用規格です。複数スキャン位置の点群に加えて、各スキャナの位置・姿勢や、同時撮影したパノラマ画像も格納できます。

Gaussian Splatting 系

3D Gaussian Splatting は、点の代わりに半透明の3次元ガウス分布を多数配置して、写真のようなシーンを再現する手法です。学習結果は PLY に独自属性として保存されるのが一般的です。ほかに、配信用に軽量化した .splat や、圧縮形式の .spz も使われています。形式の標準化はまだ発展途上です。

7. ボリューム・ボクセル形式

表面だけでなく内部の情報まで、3次元格子の値として保存する形式です。

形式拡張子概要
DICOM.dcm医用画像の国際標準。CT・MRI は断面画像のシリーズとして保存され、重ねると3次元ボリュームになる。患者情報や撮影条件も含む。
NIfTI.nii / .nii.gz脳画像研究で標準的な形式。1ファイルに3次元(+時間)ボリュームと座標変換行列を格納する。
OpenVDB.vdbDreamWorks Animation 発の疎(スパース)なボリューム形式。煙・炎・雲などの映像エフェクトや、レベルセットによる形状処理に使われる。
RAW+メタ情報.raw / .mhd など値をそのまま並べたバイナリと、寸法・型・間隔を書いたヘッダーの組。科学計算や研究用データで多い。
MagicaVoxel.voxボクセルアート用。セルごとにパレット番号(色)を持つ。

ボリュームから表面メッシュを取り出すには、マーチングキューブ法などで等値面を抽出します。医用画像から臓器の STL を作って3Dプリントする、といった流れが典型例です。

8. 建築・地理空間の形式

IFC.ifc

buildingSMARTISO 16739BIM

建築分野の BIM(Building Information Modeling)データ交換の国際標準です。壁・柱・窓といった建築要素を、形状だけでなく材料・属性・要素間の関係を持つオブジェクトとして記述します。

CityGML / 3D Tiles

CityGML は、都市の建物・道路・地形を意味情報付きで表す OGC 標準です。詳細度(LOD)の概念を持ち、日本の国土交通省 PLATEAU でも採用されています。

3D Tiles は、都市規模の巨大な3Dデータ(建物群、点群、フォトグラメトリモデル)を階層的なタイルに分割し、Web で段階的にストリーミング表示するための形式です。Cesium が開発し、現在は OGC のコミュニティ標準になっています。中身のタイルには glTF が使われています。

9. 比較表

形式形状表現保存方式色・テクスチャ材質階層アニメ主な用途
STL三角形テキスト/バイナリ××××3Dプリント
OBJ多角形テキスト○(UV+画像)△(MTL)△(グループ)×汎用交換
PLY多角形/点群テキスト/バイナリ○(頂点色)×××研究・スキャン
OFF多角形テキスト△×××形状解析データセット
3MF三角形ZIP+XML○○(造形材料)○×3Dプリント
glTF/GLB三角形などJSON+バイナリ○○(PBR)○○Web・AR・ゲーム
FBX多角形・NURBSバイナリ/ASCII○○○○映像・ゲーム制作
USD多角形・曲面などテキスト/バイナリ/ZIP○○○○映像制作・デジタルツイン
Alembic多角形・曲線バイナリ△×○○(焼き込み)シミュレーション結果
STEPB-rep(厳密)テキスト△△○(組立)×機械設計・製造
IGES曲線・曲面テキスト△×△×旧来のCAD交換
PCD点群テキスト/バイナリ○×××ロボティクス
LAS/LAZ点群バイナリ○×××航空測量・GIS
DICOMボリュームバイナリ————医用画像
OpenVDB疎ボリュームバイナリ——○○(連番)VFX

○:標準で対応 △:限定的・実装依存 ×:非対応 —:該当しない

10. 用途別の選び方

やりたいこと推奨形式理由
Web ページや AR で3Dモデルを表示したいglTF / GLB(iOS AR は USDZ)軽量で読み込みが速く、ブラウザのライブラリが標準対応している
3Dプリントしたい3MF(なければ STL)3MF は単位・色を保持できる。STL は最も確実に読める
CAD ソフト間で設計データを渡したいSTEP(AP242 / AP214)厳密な曲面と位相が保たれ、後から修正・解析ができる
ソフト間でモデルを手軽に受け渡したいOBJ(材質込みなら glTF)対応ソフトが最も多く、テキストなので中身も確認しやすい
キャラクターのアニメーションを受け渡したいFBX / glTF骨格・スキニング・キーフレームを保持できる
スキャンデータや点群を研究で扱いたいPLY(LiDAR 測量なら LAS/LAZ)任意の属性を付けられ、Open3D などで標準的に扱える
自作プログラムで形状を読み書きしたいOBJ / OFF / PLY仕様が短く、パーサーを自作しやすい
大規模な制作パイプラインを組みたいUSDレイヤー合成により多人数での分業が可能
形式を変換すると情報が失われることがあります。たとえば FBX → OBJ ではアニメーションが、STEP → STL では厳密な曲面が、OBJ → STL では色とテクスチャが失われます。元データは情報量の多い形式のまま保管し、用途に応じて書き出すのが安全です。変換には Blender、MeshLab、CloudCompare、FreeCAD、Assimp ライブラリなどがよく使われます。