什么是 .off 文件?Geomview 网格、ModelNet,以及 Mac
OFF(Object File Format)是一种非常简单的多边形网格文本格式,随 University of Minnesota 的 Geomview 查看器流传开来。它主要用于研究领域:CGAL 库、多面体工具,以及 ModelNet 等机器学习数据集。Mac 自己打不开它。
概览
- 扩展名
- .off
- 类型
- 三角网格
- 创建者
- Geomview (University of Minnesota)
- 标准
- 不是正式标准
- macOS 自身(不装应用)
- 不认识:没有预览,也没有缩略图
信息核对于 2026年11月4日
一屏就能看完的整个格式
下面是一个棱长为 10 个单位的立方体:
OFF
8 6 0
0 0 0
10 0 0
10 10 0
0 10 0
0 0 10
10 0 10
10 10 10
0 10 10
4 0 3 2 1
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根据 Geomview 手册,开头的单词 OFF 是建议使用的,但并非必需,所以很多文件没有它。第二行是数量:8 个顶点、6 个面,以及边的数量。最后这个数字既不使用也不检查,但必须存在,通常是 0。接下来是顶点坐标,每行一个。每个面以它的顶点数开头,后面跟着这些顶点的编号,从零开始计数。OBJ 从一开始计数,所以手动转换时要当心。面可以是凹的,但不能有孔。注释以 # 开头。
顶点编号之后可以跟一个面的颜色:三个或四个 0 到 255 的整数,或者 0 到 1 的小数。Antiprism 指出这是有歧义的:1 0 0 按小数理解是红色,按整数理解则几乎是黑色。
前缀:COFF、NOFF、STOFF 等
关键字可以带上前缀,为每个顶点添加数据:
| 文件头 | 每个顶点获得什么 |
|---|---|
NOFF | 一个法线 |
COFF | 一种颜色 |
STOFF | 纹理坐标 |
4OFF | 第四个齐次坐标 |
nOFF | 任意数量的维度 |
还有一种二进制变体 OFF BINARY。OFF 没有单位,没有材质,每个文件也只能有一个对象。
在哪里会遇到 OFF
- 机器学习数据集。Princeton 的 ModelNet10 和 ModelNet40(CVPR 2015)以 OFF 存储其 CAD 模型。有些 ModelNet40 文件的文件头是坏的,数量和单词 OFF 在同一行,例如
OFF6586 5534 0,较严格的程序会拒绝它们。 - Princeton Shape Benchmark。它的文件总是文本,总是以 OFF 开头,边数总是 0。较旧版本的模型因为一个转换错误而含有 −1 索引。
- 几何与多面体。CGAL 库能读写 OFF,Antiprism 工具包用它描述多面体,Geomview 甚至用它描述四维对象。
OFF 从何而来
这种格式的名称和最早的说明来自 Digital Equipment Corporation。现在放在 paulbourke.net 上的说明在页眉中署名 Randi J. Rost,把这种格式介绍为一种以文本或二进制形式交换和归档 3D 对象的格式。不过,如今大多数程序读取的是 Geomview 手册中描述的那种写法。Geomview 来自 University of Minnesota 的 Geometry Center。它始于 1988 年夏天的 MinneView 查看器(由 Pat Hanrahan 开发),Geomview 的第一个版本于 1992 年 1 月完成。Geomview 至今仍以 GNU LGPL 许可证提供。
如何在 Mac 上打开 OFF
macOS 不认识 OFF。在 macOS 27.0.1 上,系统没有它的文件类型,预览、快速查看和访达都不显示它。文本编辑器显示给你的是数字,而不是形状。
- MeshLab 免费,有 Apple 芯片版和 Intel 版,能打开 OFF。
- Python 和 MATLAB。研究人员有现成的库;Princeton 在 ModelNet 旁边提供了 MATLAB 函数。
- Preview3D,我的应用,可以在 Mac 上的窗口中、在快速查看里以及作为访达缩略图打开 .off 文件。在 iPad、iPhone 和 Apple Vision Pro 上也可以。这样你不用写任何代码,就能以缩略图的形式浏览一个数据集文件夹。
Preview3D 通过 Assimp 库读取 OFF。我在应用所用的同一个构建中,用按照 Geomview 手册编写的文件试过。它能打开带或不带关键字的 OFF,COFF、NOFF、STOFF 和 4OFF 变体,坏掉的 ModelNet40 文件头,以及有五个顶点的面。它打不开二进制 OFF。应用不使用文件中的颜色;它统一用一种颜色显示几何。
有一点要当心:注释。Assimp 在读取注释时会卡在 # 字符上。在我的测试中,一个在数量行之前或在数量行上带有注释的文件没有载入——读取卡住了。顶点和面之间的一条注释则吞掉了一个面。所以目前请在打开之前删除注释:
sed -e 's/#.*//' -e '/^[[:space:]]*$/d' model.off > no-comments.off这条命令会删除从 # 到行尾的所有内容,以及空行。之后我所有的测试文件都完整载入了。
模型信息中有以文件单位表示的尺寸和三角形数量,以及网格检查。在 iPad 和 iPhone 上,它会在 AR 中把模型立在你的桌上,并按桌面大小显示,因为 OFF 没有单位。
把 OFF 转换为 STL、OBJ 或 PLY
在 Mac 上,Preview3D 通过 文件 → 导出模型为…(⌥⌘E)转换为 STL、OBJ 或 PLY,不上传任何东西。多边形会被拆分成三角形,颜色会被丢弃。OFF 没有单位,所以请在切片软件中检查尺寸。
常见问题
什么是 .off 文件?
一个包含多边形网格的文本文件:数量、顶点列表和面列表。它来自 Geomview 查看器,主要用于研究。
为什么文件头有三个数字,而第三个并不使用?
第三个数字是边数。根据 Geomview 手册,它既不使用也不检查,但必须存在,通常是 0。
如何在 Mac 上浏览 ModelNet 文件?
用 Preview3D 以访达缩略图的形式浏览,或者用 MeshLab。Preview3D 也能处理像 OFF6586 5534 0 这样坏掉的文件头。
OFF 和 OBJ 有什么不同?
OFF 从零开始给顶点计数,OBJ 从一开始。OFF 把颜色直接放在面或顶点上,每个文件只容纳一个网格;OBJ 把材质放在 .mtl 文件中,可以容纳多个对象。
Mac 不装其他应用能打开 .off 吗?
不能。macOS 27 没有 OFF 的文件类型,预览和快速查看都不显示它。
如何把 OFF 转换为 STL 或 OBJ?
在 Mac 上,用 Preview3D 的“文件 → 导出模型为…”,或者用 MeshLab。然后检查尺寸。
相关页面
资料来源
- Geomview 手册:OFF——语法、前缀、颜色、二进制变体
- Geomview 手册:历史 和 许可证
- Paul Bourke:OFF——来自 Digital Equipment Corporation 的原始说明
- Princeton Shape Benchmark:OFF 格式
- Princeton ModelNet
- 修复 ModelNet40 文件头(GitHub gist)
- Antiprism:OFF 格式——有歧义的颜色
- Assimp:读取 OFF 和 跳过行——注释
- MeshLab
你在使用 ModelNet 或其他 OFF 数据集,需要在 Mac 上快速浏览它吗?请写信到 apps@xfanta.com,告诉我什么会对你有帮助。
在 Preview3D 中打开
在 Mac、iPad、iPhone 和 Vision Pro 上打开 STEP、3MF、STL、G-code、BGCODE 等格式。一次购买,无需账户,无需联网。
App Store 上的 Preview3D