---
title: 怖くない3Dファイルフォーマット
tags:  #3dプログラミング #コンピューターサイエンス  
author: [ta_ka_tsu](https://www.docswell.com/user/ta_ka_tsu)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/2JV2KKK3JQ.jpg?width=480
description: 2025/12/06に開催されたvisionOS TCでのLT資料です
published: December 06, 25
canonical: https://www.docswell.com/s/ta_ka_tsu/K6ER79-2025-12-06-visionOS-TC
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/2JV2KKK3JQ.jpg)

怖くない
3Dファイルフォーマット
visionOS TC 2025


# Page. 2

![Page Image](https://bcdn.docswell.com/page/5EGRQQQYJL.jpg)

自己紹介
岐阜県出身
岐阜県在住
フリーランスエンジニア
元CAD/CAM系プログラマ
エンジニアと人生コミュニティに生息
@ta̲ka̲tsu


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4JQVKKK67P.jpg)

趣味で砂鉄から鉄をつくっています


# Page. 4

![Page Image](https://bcdn.docswell.com/page/K74MPPPMJ1.jpg)

3Dファイルフォーマット
→難しそう
→怖い


# Page. 5

![Page Image](https://bcdn.docswell.com/page/LJ18999YEG.jpg)

難しくないものも
あるよ！


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GJWZQQQ1J2.jpg)

.stlファイル


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4EZ1WWWX73.jpg)

.stlファイル
・ただの三角形のリスト
・ascii形式のフォーマットとbinary形式のフォーマットがある


# Page. 8

![Page Image](https://bcdn.docswell.com/page/Y76LGGGPJV.jpg)

.stlファイル
一つの三角形の情報
(nx, ny, nz)
・頂点座標1
・頂点座標2
・頂点座標3
(x3, y3, z3)
(x1, y1, z1)
・法線ベクトル（向いている方が表）
なお3つの頂点が反時計回りに見えるのが表
(x2, y2, z2)


# Page. 9

![Page Image](https://bcdn.docswell.com/page/G751VVVPE4.jpg)

.stlファイル
一つの三角形の情報
(nx, ny, nz)
・頂点座標1
・頂点座標2
・頂点座標3
(x3, y3, z3)
(x1, y1, z1)
・法線ベクトル（向いている方が表）
なお3つの頂点が反時計回りに見えるのが表
→表がどちらか食い違っているデータもある
(x2, y2, z2)


# Page. 10

![Page Image](https://bcdn.docswell.com/page/9J21333Z7R.jpg)

.stlファイル(ascii形式)
solid name
facet normal 0.0 -1.0 0.0
outer loop
vertex 0.0 0.0 0.0
vertex 1.0 0.0 0.0
vertex 0.0 0.0 1.0
endloop
endfacet
. . .
endsolid


# Page. 11

![Page Image](https://bcdn.docswell.com/page/DEYZ111N7M.jpg)

.stlファイル(ascii形式)
solid name データの開始位置とモデルの名前
facet normal 0.0 -1.0 0.0
outer loop
vertex 0.0 0.0 0.0
vertex 1.0 0.0 0.0
vertex 0.0 0.0 1.0
endloop
endfacet
. . .
endsolid
データの終了


# Page. 12

![Page Image](https://bcdn.docswell.com/page/VJN3222VJ8.jpg)

.stlファイル(ascii形式)
solid name
facet normal 0.0 -1.0 0.0
outer loop
vertex 0.0 0.0 0.0
vertex 1.0 0.0 0.0
vertex 0.0 0.0 1.0
endloop
endfacet
. . .
endsolid
三角形のデータ


# Page. 13

![Page Image](https://bcdn.docswell.com/page/YE99111VE3.jpg)

.stlファイル(ascii形式)
solid name
facet normal 0.0 -1.0 0.0
outer loop
vertex 0.0 0.0 0.0
vertex 1.0 0.0 0.0
vertex 0.0 0.0 1.0
endloop
endfacet
. . .
endsolid
法線ベクトル


# Page. 14

![Page Image](https://bcdn.docswell.com/page/GE8944447D.jpg)

.stlファイル(ascii形式)
solid name
facet normal 0.0 -1.0 0.0
outer loop
vertex 0.0 0.0 0.0
vertex 1.0 0.0 0.0
vertex 0.0 0.0 1.0
endloop
endfacet
. . .
endsolid
頂点座標


# Page. 15

![Page Image](https://bcdn.docswell.com/page/LELW666VJR.jpg)

.stlファイル(binary形式)
80bytes
ヘッダ
4bytes
三角形の数(UInt32)
4bytes 4bytes 4bytes
法線(Float x 3)
4bytes 4bytes 4bytes
頂点座標１(Float x 3)
4bytes 4bytes 4bytes
頂点座標２(Float x 3)
4bytes 4bytes 4bytes
頂点座標３(Float x 3)
2bytes
属性(UInt16)
. . .


# Page. 16

![Page Image](https://bcdn.docswell.com/page/4JM9555NEW.jpg)

.stlファイル(binary形式)
80bytes
ヘッダ
4bytes
三角形の数(UInt32)
4bytes 4bytes 4bytes
法線(Float x 3)
4bytes 4bytes 4bytes
頂点座標１(Float x 3)
4bytes 4bytes 4bytes
頂点座標２(Float x 3)
4bytes 4bytes 4bytes
頂点座標３(Float x 3)
2bytes
属性(UInt16)
. . .


# Page. 17

![Page Image](https://bcdn.docswell.com/page/PJRG3334E9.jpg)

.stlファイル(binary形式)
80bytes
ヘッダ
4bytes
三角形の数(UInt32)
4bytes 4bytes 4bytes
法線(Float x 3)
4bytes 4bytes 4bytes
頂点座標１(Float x 3)
4bytes 4bytes 4bytes
頂点座標２(Float x 3)
4bytes 4bytes 4bytes
頂点座標３(Float x 3)
2bytes
属性(UInt16)
. . .


# Page. 18

![Page Image](https://bcdn.docswell.com/page/PEXX444ZEX.jpg)

.stlファイル(binary形式)
80bytes
ヘッダ
4bytes
三角形の枚数(UInt32)
4bytes 4bytes 4bytes
法線(Float x 3)
4bytes 4bytes 4bytes
頂点座標１(Float x 3)
4bytes 4bytes 4bytes
頂点座標２(Float x 3)
4bytes 4bytes 4bytes
頂点座標３(Float x 3)
2bytes
属性(UInt16)
. . .
※属性はゼロがデファクトスタンダード


# Page. 19

![Page Image](https://bcdn.docswell.com/page/3EKWZZZVED.jpg)

.stlファイル(binary形式)
80bytes
ヘッダ
4bytes
三角形の枚数(UInt32)
4bytes 4bytes 4bytes
法線(Float x 3)
4bytes 4bytes 4bytes
頂点座標１(Float x 3)
4bytes 4bytes 4bytes
頂点座標２(Float x 3)
4bytes 4bytes 4bytes
頂点座標３(Float x 3)
2bytes
属性(UInt16)
. . .
※UInt32, Float, UInt16は全てLittle-endian


# Page. 20

![Page Image](https://bcdn.docswell.com/page/L731DDXQJ5.jpg)

.stlファイル
豆知識：.stlファイルはGitHubでは3Dビューで見られる


# Page. 21

![Page Image](https://bcdn.docswell.com/page/87DXPP2WEG.jpg)

.plyファイル


# Page. 22

![Page Image](https://bcdn.docswell.com/page/VJPPNN1XJ8.jpg)

.plyファイル
・頂点のリスト、面のリスト、エッジのリスト
・各情報の型や属性を指定できる
・ascii形式のフォーマットとbinary形式のフォーマットがある


# Page. 23

![Page Image](https://bcdn.docswell.com/page/2EV2KKY3EQ.jpg)

.plyファイル
ヘッダ(ascii/binary共通)
ply
format ascii 1.0
comment hello
element vertex 8
property float x
property float y
property float z
element face 6
property list uchar int vertex_index
endheader


# Page. 24

![Page Image](https://bcdn.docswell.com/page/57GRQQ9YEL.jpg)

.plyファイル
ヘッダ(ascii/binary共通)
ply固定
ply
format ascii 1.0
comment hello
element vertex 8
property float x
property float y
property float z
element face 6
property list uchar int vertex_index
endheader


# Page. 25

![Page Image](https://bcdn.docswell.com/page/4EQVKKW6JP.jpg)

.plyファイル
ヘッダ(ascii/binary共通)
ply
ascii形式かbinary形式か
format ascii 1.0
comment hello
・ascii
element vertex 8
・binary̲big̲endian
property float x
・binary̲little̲endian
property float y
のいずれか
property float z
element face 6
property list uchar int vertex_index
endheader


# Page. 26

![Page Image](https://bcdn.docswell.com/page/KJ4MPPKME1.jpg)

.plyファイル
ヘッダ(ascii/binary共通)
ply
format ascii 1.0
コメント
comment hello
element vertex 8
property float x
property float y
property float z
element face 6
property list uchar int vertex_index
endheader


# Page. 27

![Page Image](https://bcdn.docswell.com/page/LE1899XY7G.jpg)

.plyファイル
ヘッダ(ascii/binary共通)
fl
ply
format ascii 1.0
頂点の宣言
comment hello
・頂点は8つ
element vertex 8
property float x
・頂点はx, y, zという情報を持つ
property float y
・x, y, zは oat型
property float z
element face 6
property list uchar int vertex_index
endheader


# Page. 28

![Page Image](https://bcdn.docswell.com/page/GEWZQQN1E2.jpg)

.plyファイル
. . .
element vertex 8
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue
property double nx
property double ny
property double nz
プロパティ名や数は仕様上は自由
読む側が解釈できれば良い
(とはいえx, y, zは実質デファクト)
&quot;A typical PLY object definition is
simply a list of (x,y,z) triples
for
vertices and a list of faces that
are described by indices into the
list of
vertices. Most PLY files include
this core information.&quot;
https://gamma.cs.unc.edu/POWERPLANT/papers/ply.pdf


# Page. 29

![Page Image](https://bcdn.docswell.com/page/47Z1WW3XJ3.jpg)

.plyファイル
ヘッダ(ascii/binary共通)
ply
format ascii 1.0
面の宣言
comment hello
・面は6つ
element vertex 8
・リスト内の頂点の数はucharで表現
property float x
・頂点のインデックスをint列で指定
property float y
property float z
element face 6
property list uchar int vertex_index
endheader
※vertex̲indexでなくvertex̲indicesのものもある


# Page. 30

![Page Image](https://bcdn.docswell.com/page/YJ6LGGXPEV.jpg)

.plyファイル
ヘッダ(ascii/binary共通)
ply
format ascii 1.0
comment hello
element vertex 8
property float x
property float y
property float z
element face 6
property list uchar int vertex_index
endheader


# Page. 31

![Page Image](https://bcdn.docswell.com/page/GJ51VVXP74.jpg)

.plyファイル(ascii形式)
ascii形式のヘッダ以降
0 0 0
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
3 0 1 2
3 0 2 3
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0


# Page. 32

![Page Image](https://bcdn.docswell.com/page/9E2133XZJR.jpg)

.plyファイル(ascii形式)
ascii形式のヘッダ以降
fl
0 0 0
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
3 0 1 2
3 0 2 3
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
頂点の宣言
・頂点は8つ
・頂点はx, y, zという情報を持つ
・x, y, zは oat型
面の宣言
・面は6つ
・リスト内の頂点の数はucharで表現
・頂点のインデックスをint列で指定


# Page. 33

![Page Image](https://bcdn.docswell.com/page/D7YZ118NJM.jpg)

.plyファイル(ascii形式)
ascii形式のヘッダ以降
fl
0 0 0
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
3 0 1 2
3 0 2 3
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
頂点の宣言
・頂点は8つ
・頂点はx, y, zという情報を持つ
・x, y, zは oat型
面の宣言
・面は6つ
・リスト内の頂点の数はucharで表現
・頂点のインデックスをint列で指定


# Page. 34

![Page Image](https://bcdn.docswell.com/page/VEN322QVE8.jpg)

.plyファイル(ascii形式)
ascii形式のヘッダ以降
fl
0 0 0
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
3 0 1 2
3 0 2 3
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
頂点の宣言
・頂点は8つ
・頂点はx, y, zという情報を持つ
・x, y, zは oat型
面の宣言
・面は6つ
・リスト内の頂点の数はucharで表現
・頂点のインデックスをint列で指定


# Page. 35

![Page Image](https://bcdn.docswell.com/page/Y79911DV73.jpg)

.plyファイル(ascii形式)
ascii形式のヘッダ以降
fl
0 0 0
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
3 0 1 2
3 0 2 3
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
頂点の宣言
・頂点は8つ
・頂点はx, y, zという情報を持つ
・x, y, zは oat型
面の宣言
・面は6つ
・リスト内の頂点の数はucharで表現
・頂点のインデックスをint列で指定
※頂点のインデックスは0から


# Page. 36

![Page Image](https://bcdn.docswell.com/page/G7894434JD.jpg)

.plyファイル
4つ以上の頂点を持つface→Triangle Fan形式
v4
v5
v3
6 0 1 2 3 4 5
6点で構成される
v2
v0
v1


# Page. 37

![Page Image](https://bcdn.docswell.com/page/L7LW66VVER.jpg)

.plyファイル
4つ以上の頂点を持つface→Triangle Fan形式
v4
v5
v3
6 0 1 2 3 4 5
v2
v0
v1


# Page. 38

![Page Image](https://bcdn.docswell.com/page/4EM955GN7W.jpg)

.plyファイル
4つ以上の頂点を持つface→Triangle Fan形式
v4
v5
v3
6 0 1 2 3 4 5
v2
v0
v1


# Page. 39

![Page Image](https://bcdn.docswell.com/page/PERG33Z479.jpg)

.plyファイル
4つ以上の頂点を持つface→Triangle Fan形式
v4
v5
v3
6 0 1 2 3 4 5
v2
v0
v1


# Page. 40

![Page Image](https://bcdn.docswell.com/page/P7XX449Z7X.jpg)

.plyファイル
4つ以上の頂点を持つface→Triangle Fan形式
v4
v5
v3
6 0 1 2 3 4 5
v2
v0
v1


# Page. 41

![Page Image](https://bcdn.docswell.com/page/37KWZZPV7D.jpg)

.plyファイル(binary形式)
binary形式のヘッダ以降
x
y
z
x
y
z
index
index
index
index
index
頂点の宣言
・頂点は8つ
・頂点はx, y, zという情報を持つ
・x, y, zは oat型
...
3
...
index
fl
4
index
面の宣言
・面は6つ
・リスト内の頂点の数はucharで表現
・頂点のインデックスをint列で指定


# Page. 42

![Page Image](https://bcdn.docswell.com/page/LJ31DD4QE5.jpg)

指定できる数値型
fl
char
uchar
short
ushort
int
uint
oat
double
fl
fl
.plyファイル
(int8)
(uint8)
(int16)
(uint16)
(int32)
(uint32)
( oat32)
( oat64)
1byte整数
1byte符号なし整数
2bytes整数
2bytes符号なし整数
4bytes整数
4bytes符号なし整数
4bytes単精度浮動小数点型
8bytes倍精度浮動小数点型


# Page. 43

![Page Image](https://bcdn.docswell.com/page/8JDXPPQW7G.jpg)

.objファイル


# Page. 44

![Page Image](https://bcdn.docswell.com/page/VEPPNNLXE8.jpg)

.objファイル
・基本は頂点列とそれを使った線や面など
・asciiファイル形式
・テクスチャや色(Phongモデル)にも対応(本日は割愛)
・もっと複雑な表現にも対応(本日は割愛)


# Page. 45

![Page Image](https://bcdn.docswell.com/page/27V2KKQ37Q.jpg)

.objファイル
# comment
mtllib sample.mtl
v 0.0 0.0 1.0
. . .
vt 0.0 0.0
. . .
vn 1.0 0.0 0.0
. . .
usemtl materialA
f 1/2/1 2/1/3 3/2/2
. . .


# Page. 46

![Page Image](https://bcdn.docswell.com/page/5JGRQQWY7L.jpg)

.objファイル
# comment
mtllib sample.mtl
v 0.0 0.0 1.0
. . .
vt 0.0 0.0
. . .
vn 1.0 0.0 0.0
. . .
usemtl materialA
f 1/2/1 2/1/3 3/2/2
. . .
コメント


# Page. 47

![Page Image](https://bcdn.docswell.com/page/47QVKK36EP.jpg)

.objファイル
# comment
mtllib sample.mtl
v 0.0 0.0 1.0
. . .
vt 0.0 0.0
. . .
vn 1.0 0.0 0.0
. . .
usemtl materialA
f 1/2/1 2/1/3 3/2/2
. . .
マテリアルファイルの指定


# Page. 48

![Page Image](https://bcdn.docswell.com/page/KE4MPP1M71.jpg)

.objファイル
# comment
mtllib sample.mtl
v 0.0 0.0 1.0
. . .
vt 0.0 0.0
. . .
vn 1.0 0.0 0.0
. . .
usemtl materialA
f 1/2/1 2/1/3 3/2/2
. . .
頂点


# Page. 49

![Page Image](https://bcdn.docswell.com/page/L71899GYJG.jpg)

.objファイル
# comment
mtllib sample.mtl
v 0.0 0.0 1.0
. . .
vt 0.0 0.0
. . .
vn 1.0 0.0 0.0
. . .
usemtl materialA
f 1/2/1 2/1/3 3/2/2
. . .
テクスチャ座標


# Page. 50

![Page Image](https://bcdn.docswell.com/page/G7WZQQK172.jpg)

.objファイル
# comment
mtllib sample.mtl
v 0.0 0.0 1.0
. . .
vt 0.0 0.0
. . .
vn 1.0 0.0 0.0
. . .
usemtl materialA
f 1/2/1 2/1/3 3/2/2
. . .
法線ベクトル


# Page. 51

![Page Image](https://bcdn.docswell.com/page/4JZ1WWZXE3.jpg)

.objファイル
# comment
mtllib sample.mtl
v 0.0 0.0 1.0
. . .
vt 0.0 0.0
. . .
vn 1.0 0.0 0.0
. . .
マテリアルファイル内のマテリアル指定
usemtl materialA
f 1/2/1 2/1/3 3/2/2
. . .


# Page. 52

![Page Image](https://bcdn.docswell.com/page/YE6LGGZP7V.jpg)

.objファイル
# comment
mtllib sample.mtl
v 0.0 0.0 1.0
. . .
vt 0.0 0.0
. . .
vn 1.0 0.0 0.0
. . .
usemtl materialA
f 1/2/1 2/1/3 3/2/2
. . .
面の構造指定
※インデックスは1から
※マイナスをつけると逆順


# Page. 53

![Page Image](https://bcdn.docswell.com/page/GE51VVWPJ4.jpg)

.objファイル
fの記述方法＝頂点番号/テクスチャ座標番号/法線番号 を３点分
f 1/2/1 2/1/3 3/2/2
全て使う時
f 1//1 2//3 3//2
テクスチャ座標を使用しない時
f 1/2 2/1 3/2
法線を使用しない時
f 1 2 3
頂点だけ使用する時


# Page. 54

![Page Image](https://bcdn.docswell.com/page/972133QZER.jpg)

.objファイル
テクスチャ座標
. . .
vt 0.2 0.2
vt 0.6 0.2
vt 0.2 0.6
. . .
f 1/1 2/2 3/3
. . .
3
2
1.0
1
1.0


# Page. 55

![Page Image](https://bcdn.docswell.com/page/DJYZ11WNEM.jpg)

.objファイル
テクスチャ座標
. . .
vt 0.2 0.2
vt 0.6 0.2
vt 0.2 0.6
. . .
f 1/1 2/2 3/3
. . .
3
2
1.0
1
1.0


# Page. 56

![Page Image](https://bcdn.docswell.com/page/V7N3229V78.jpg)

.objファイル
テクスチャ座標
. . .
vt 0.2 0.2
vt 0.6 0.2
vt 0.2 0.6
. . .
f 1/1 2/2 3/3
. . .
3
2
1.0
1
1.0


# Page. 57

![Page Image](https://bcdn.docswell.com/page/YJ99112VJ3.jpg)

.objファイル
テクスチャ座標
. . .
vt 0.2 0.2
vt 0.6 0.2
vt 0.2 0.6
. . .
f 1/1 2/2 3/3
. . .
3
2
1.0
1
1.0


# Page. 58

![Page Image](https://bcdn.docswell.com/page/GJ894454ED.jpg)

.objファイル
テクスチャ座標
. . .
vt 0.2 0.2
vt 0.6 0.2
vt 0.2 0.6
. . .
f 1/1 2/2 3/3
. . .
3
2
1


# Page. 59

![Page Image](https://bcdn.docswell.com/page/LJLW66YV7R.jpg)

.objファイル
私のアイコンに使っている顔も.objファイルで保存してあります


# Page. 60

![Page Image](https://bcdn.docswell.com/page/47M955NNJW.jpg)

最後に


# Page. 61

![Page Image](https://bcdn.docswell.com/page/P7RG33D4J9.jpg)

最後に
・標準化されていないためフォーマットに曖昧さがあるので注意
・歴史が古い→対応しているツール/ビューワが多くある
・自分で出力できると役に立つことも
・実はModel I/Oフレームワークで読み書きできる…？


# Page. 62

![Page Image](https://bcdn.docswell.com/page/PJXX441ZJX.jpg)

怖くないよ


