什么是 .3ds 文件?3D Studio、丢失的纹理,以及 Mac
.3ds 文件是 1990 年发布的 3D Studio for DOS 所用的格式,存储三角网格、材质、相机、灯光和简单的动画。多年来它一直是各种 3D 程序之间的通用语言,所以旧的模型合集里至今仍满是这种文件。在 Mac 上,没有任何 Apple 应用能打开它。
概览
- 扩展名
- .3ds
- 类型
- 较早的 3D 应用格式
- 创建者
- Autodesk, Yost Group
- 始于
- 1990
- 标准
- 不是正式标准
- macOS 自身(不装应用)
- 不认识:没有预览,也没有缩略图
信息核对于 2026年11月4日
由区块组成的二进制文件
3DS 是由区块(chunk)组成的二进制文件。每个区块都以一个两字节的数字开头,说明它装的是什么,后面跟着四字节的长度,所以不理解某个区块的程序可以跳过它。整个文件就是一个主区块 4D4D。里面是编辑器部分(3D3D),包含网格、材质、灯光和相机,以及关键帧部分(B000),包含动画。
Autodesk 从未发布过官方规范。程序依据在开发者之间流传的说明来读取这种格式;其中最有名的是 Jim Pitts 的 0.91 修订版,由 Paul Bourke 于 1996 年编辑。lib3ds 和 Assimp 等库就是基于这类说明构建的。
是模型,还是 Nintendo 3DS 游戏?
Nintendo 3DS 游戏机的游戏镜像也使用 .3ds 扩展名。终端可以告诉你手上的是哪一种:
head -c 2 model.3ds3D Studio 文件会输出 MM,因为它以字节 4D 4D 开头。对于大多数这类文件,file model.3ds 会显示 3D Studio model。没有任何 3D 程序能打开 Nintendo 游戏。
来自 DOS 时代的限制
3D Studio 是为 DOS 制作的,这种格式至今仍带着那时的限制。根据 Okino 转换器的说明:
- 只有三角形。多边形在导出时会被拆分。
- 每个网格最多 65,535 个顶点和面,因为数量是两字节的数字。更大的对象会被拆成几块。在我磁盘上一个从 DXF 转换来的文件中,一个对象被拆成了大约 900 个网格,最大的那个正好有 65,535 个顶点。
- 8.3 形式的纹理名称:八个字符、一个点和三个字符的扩展名,和 DOS 中一样。
- 对象、灯光和相机名称最多 10 个字符,材质名称最多 16 个字符。我磁盘上一个旧的登月舱模型中,有名为
group13 gr的对象,以及一个名为initialShadingGr的材质——这是 Maya 的initialShadingGroup截到 16 个字符后剩下的部分。 - 没有精确的法线,只有平滑组,程序据此重建法线。
- 没有平行光,而且根据 Cinema 4D 的帮助文档,每个点只有一组纹理坐标。
为什么它打开后没有纹理
纹理从来不在 .3ds 文件里。文件只记住图片的名称,程序会到它旁边去找。我手上一个 2008 年的 ZIP 中的登月舱模型就是个好例子。文件要的是 TEXTURE_.TIF、TEXTUREA.TIF 和 BOOSTER3.TIF,但同一个 ZIP 里附带的却是 textures/booster3.png、texture_lem_flag.png 和 texture_lem_unitedstates.png。扩展名不同,文件夹不同,长名称还被截成了八个字符。没有哪个程序能自己找到它们。
终端可以列出文件需要的图片:
strings model.3ds | grep -i -E '\.(tif|tga|jpg|png|bmp|gif)$'然后把图片转换或重命名为列表上的名称,并放在 .3ds 文件旁边。对于长名称,你只能猜哪张图片对应哪个缩短后的名称,所以两种对应方式都试一试。
单位和比例
3DS 并不直接说明单位,但文件可以携带一个比例(master scale)。Rhino 在导入时会据此提出重新缩放模型,Assimp 则在读取时直接应用它。在那个从 DXF 转换来的文件中,数字是 43 × 21 × 14,比例为 0.03937,载入后变成 1097 × 529 × 355——英寸被换算成了毫米。登月舱模型没有比例,尺寸是 14 × 6 × 5 个单位,没有任何信息说明是什么单位。所以打开后和转换后都请检查尺寸。
3DS 从何而来
3D Studio for DOS 于 1990 年 10 月推出。它是由一家小公司 Yost Group 为 Autodesk 编写的:Gary Yost、Tom Hudson、Jack Powell,后来还有 Dan Silva。Hudson 的渊源可以追溯到 Atari 上的 CAD-3D。在第四版之前,.3ds 一直是这个程序自己的格式。1996 年,它被面向 Windows NT 的 3D Studio MAX 取代,.3ds 在其中保留为导入和导出格式。3D Studio MAX 就是今天的 3ds Max。
如何在 Mac 上打开 3DS
macOS 不认识 3DS。在 macOS 27.0.1 上,系统没有它的文件类型,Model I/O 框架无法载入它,预览、快速查看和访达都不显示它。Autodesk 的 3ds Max 只能在 Windows 上运行。
- Blender 免费,通过“Autodesk 3D Studio (.3ds)”扩展打开和存储 3DS,包括材质、纹理、相机、灯光和动画。到 4.1 版为止它都是 Blender 的一部分;从 4.2 版起需要单独安装。
- Rhino Mac 版可以导入和导出 3DS,包括灯光,相机则作为命名视图。
- 3DS Viewer 在 Mac App Store 上售价 4.99 美元,但它的最新版本发布于 2014 年 1 月。
- Preview3D,我的应用,可以在 Mac 上的窗口中、在快速查看里以及作为访达缩略图打开 .3ds 文件。在 iPad、iPhone 和 Apple Vision Pro 上也可以。这样你不用安装 Blender,就能以缩略图的形式浏览一整个文件夹的旧模型。
Preview3D 通过 Assimp 库读取 3DS。它统一用一种颜色显示几何:不使用文件中的材质或纹理,也不播放动画。它会应用文件中的比例,如上所述。模型信息中有尺寸和三角形数量,以及网格检查。在 iPad 和 iPhone 上,它会在 AR 中把模型立在你的桌上,并按桌面大小显示。
把 3DS 转换为 STL
在 Mac 上,Preview3D 通过 文件 → 导出模型为…(⌥⌘E)转换为 STL、OBJ 或 PLY,不上传任何东西。材质、纹理、相机、灯光和动画都会被丢弃。来自游戏和可视化的模型常常由许多分开的部件组成,打印前需要修复;网格检查会显示孔洞和没有连在一起的边。然后在切片软件中检查尺寸。
常见问题
什么是 .3ds 文件?
一个采用 1990 年 3D Studio for DOS 格式的模型:三角网格、材质、相机、灯光和简单的动画。
为什么我的 .3ds 模型打开后没有纹理?
纹理是放在文件旁边的单独图片,而且它们的名称最多八个字符。strings 命令可以显示文件需要哪些图片。把图片改成同样的名称,放在文件旁边。
我的 .3ds 是 3D 模型还是 Nintendo 3DS 游戏?
对于 3D 模型,head -c 2 model.3ds 会输出 MM。输出其他任何内容,都说明它不是 3D Studio 模型。
Mac 不装其他应用能打开 .3ds 吗?
不能。macOS 27 没有 3DS 的文件类型,预览和快速查看都不显示它。
如何把 3DS 转换为 STL?
在 Mac 上,用 Preview3D 的“文件 → 导出模型为…”,或者用装了 3DS 扩展的 Blender。然后检查网格和尺寸。
为什么一个大模型散成了许多块?
3DS 中的一个网格最多只能容纳 65,535 个顶点,所以导出程序会把更大的对象拆成几块。
相关页面
资料来源
- Paul Bourke:3D Studio(.3ds)格式——区块、字节顺序、0.91 修订版
- Okino:导出为 3DS——格式的限制
- PRONOM:3D Studio——4D 4D 签名
- CGPress:3D Studio 的历史,Tom Hudson 访谈
- Rhino for Mac:3DS 导入和导出
- Cinema 4D:3D Studio 导出
- Blender:Autodesk 3D Studio 扩展
- Assimp:读取 3DS——比例、动画
- Mac App Store:3DS Viewer
你有没有一套来自光盘或旧档案的 .3ds 模型,在 Mac 上打不开?请写信到 apps@xfanta.com,告诉我它的来源。
在 Preview3D 中打开
在 Mac、iPad、iPhone 和 Vision Pro 上打开 STEP、3MF、STL、G-code、BGCODE 等格式。一次购买,无需账户,无需联网。
App Store 上的 Preview3D