什么是 .x3d 文件?X3D、VRML,以及如何在 Mac 上打开它
X3D(Extensible 3D)是 Web3D Consortium 制定的开放 ISO 3D 场景标准,也是 20 世纪 90 年代 VRML 的继任者。.x3d 文件是描述形状、材质、灯光、视点和动画的 XML。不过同一个场景可以有好几种写法,并不是每个程序都能全部读取。macOS 自己打不开 X3D。
概览
- 扩展名
- .x3d, .x3dv, .x3db, .x3dz
- 类型
- 3D 场景
- 创建者
- Web3D Consortium
- 始于
- 2004
- 标准
- ISO/IEC 19775-1:2023
- macOS 自身(不装应用)
- 不认识:没有预览,也没有缩略图
信息核对于 2026年11月4日
可以阅读的 XML
.x3d 文件是可读的文本。下面是我为测试写的一个小场景:一个由两个三角形组成的红色正方形,旁边是一个蓝色立方体。
<?xml version="1.0" encoding="UTF-8"?>
<X3D profile="Interchange" version="3.3">
<Scene>
<Shape>
<Appearance><Material diffuseColor="1 0 0"/></Appearance>
<IndexedFaceSet coordIndex="0 1 2 -1 0 2 3 -1">
<Coordinate point="0 0 0 1 0 0 1 1 0 0 1 0"/>
</IndexedFaceSet>
</Shape>
<Transform translation="3 0 0">
<Shape><Appearance><Material diffuseColor="0 0 1"/></Appearance><Box size="1 1 1"/></Shape>
</Transform>
</Scene>
</X3D>profile 说明场景需要哪一组功能。Interchange 足以用于交换几何;其他配置文件(profile)包括 Interactive、Immersive、Full 和 CADInterchange。version 是 X3D 的版本。每个 Shape 把一个外观(Appearance,这里是 Material 中的一种颜色)和一个几何配成一对。第一个形状是一个网格,以点(Coordinate)和顶点编号写出,其中 -1 表示一个面的结束。第二个是 Box 基本体:立方体并没有写成三角形——由读取文件的程序来构建它。Transform 把它向右移动 3 个单位。
一个场景,多种编码
X3D 有多种编码。场景保持不变;变的只是写法:
| 扩展名 | 编码 | 如何识别 |
|---|---|---|
| .x3d | XML | 以 <?xml 和 <X3D 开头 |
| .x3dv | Classic VRML,看起来像 VRML 的文本 | 第一行是 #X3D V3.3 utf8 |
| .x3db | 压缩的二进制 | 不是可读的文本 |
| .x3dj | JSON | 以 { 开头 |
| .x3dz、.x3dvz | 同上,用 gzip 打包 | file 显示 gzip compressed data |
| .wrl | VRML97,X3D 的前身 | 第一行是 #VRML V2.0 utf8 |
终端可以告诉你手上的是哪一种:
file model.x3d对于我的测试文件,macOS 对 XML 的回答是 XML 1.0 document text,对 Classic VRML 是 X3D (Extensible 3D) model, VRML format,对打包的文件是 gzip compressed data。
编码之所以重要,是因为程序常常只能读取其中几种。比如我的应用就只读取 XML。打包的文件要先解压:
gzip -dc model.x3dz > model.x3d单位:米,Y 轴朝上
根据 X3D 规范,长度的基本单位是米。坐标系是右手坐标系,默认视图沿 Z 轴看向原点,X 朝右,Y 朝上。自 3.3 版起,文件可以用 UNIT 语句更改单位,在 XML 中是这样写的:
<head><unit category="length" name="millimetre" conversionFactor="0.001"/></head>并不是每个程序都会读取它。我的应用用来读取 X3D 的 Assimp 库在我的测试中忽略了它:一个以毫米为单位、边长 10 个单位的立方体仍然是 10。所以打开后和转换后都请检查尺寸。
X3D 和 VRML
VRML(Virtual Reality Modeling Language,虚拟现实建模语言)于 1997 年成为 ISO/IEC 14772-1 标准,其文件使用 .wrl 扩展名。Web3D 现在把 X3D 描述为“第四代 VRML”(4th-generation VRML),并且是它的直接超集:凡是能用 VRML 写的,都能用 X3D 写,而 Classic VRML 编码看起来几乎一样。反过来则不行。根据 Web3D 邮件列表上的一次讨论,把 X3D 转换为 VRML 可能会丢失部分场景,因为较旧的 VRML 无法表达许多 X3D 功能。按照 Web3D 的说法,限于 Immersive 配置文件范围内的场景可以顺利转换。
X3D 用来做什么
- 直接放在网页中的 3D,无需插件,借助 X3DOM 和 X_ITE 库实现。
- 科学和工程可视化,包括医学和体数据(MedicalInterchange 配置文件)。
- CAD 的归档和移交。Library of Congress 在其 Recommended Formats Statement 中把 X3D 列为可接受的 CAD 格式,美国国家档案馆(NARA)则把它列为移交 CAD 模型的首选格式。
X3D 从何而来
Web3D Consortium 把 X3D 作为 VRML 的继任者来开发。它最早以 ISO/IEC 19775:2004 发布,随后是 2006 年(3.1)、2008 年(3.2)和 2013 年(3.3,带来了 UNIT 语句)的版本。4.0 版以 ISO/IEC 19775-1:2023 发布,Web3D 于 2024 年初宣布了这一消息。它增加了直接嵌入 HTML 的场景、与 glTF 模型的配合、基于物理的(PBR)材质、Web Audio 声音和 HAnim 2.0 角色动画。4.1 版仍是草案。
如何在 Mac 上打开 X3D
macOS 不认识 X3D。在 macOS 27.0.1 上,系统没有它的文件类型,Apple 的预览指南也没有把它列在 3D 格式中,快速查看和访达都不显示它。
- Castle Model Viewer 免费,能读取 X3D、VRML、glTF 和其他格式,还能把它们转换为 X3D 或 STL。稳定版 5.2.0 在 Mac 上只支持 Intel;对于 Apple 芯片,目前只有 5.3.0 开发快照。这个应用没有签名,所以 macOS 会在你第一次运行时阻止它。它的作者在页面上说明了如何允许它运行。
- Sunrize 是 X_ITE 的开发者制作的 X3D 编辑器,Mac 版以 ZIP 形式在 GitHub 上提供。它同样没有签名。
- Blender 从 4.2 版起通过“Web3D X3D/VRML2 format”扩展导入 X3D 和 VRML。到 4.1 版为止,这一功能都是 Blender 的一部分。
- X_ITE 和 X3DOM 可以在网页中显示 X3D。它们是给网页作者用的库,而不是可以把文件拖进去的查看器。X_ITE 能读取 XML、JSON、Classic VRML 和 VRML97,gzip 压缩的也可以。
- Preview3D,我的应用,可以在 Mac 上的窗口中、在快速查看里以及作为访达缩略图打开 .x3d 文件。在 iPad、iPhone 和 Apple Vision Pro 上也可以。
Preview3D 通过 Assimp 库读取 X3D。我在应用所用的同一个构建中试过。它能打开 3.3 和 4.0 版的 XML,包括基本体(立方体、球体、圆柱体、圆锥体)、由面或三角形组成的网格,以及重复使用的形状(DEF 和 USE)。它只显示几何,统一用一种颜色:不使用文件中的材质或纹理,也不运行动画、传感器或脚本。模型信息中有以文件单位表示的尺寸和三角形数量,以及网格检查。在 iPad 和 iPhone 上,它会在 AR 中把模型立在你的桌上,并按桌面大小显示,因为它不读取文件的单位。
Preview3D 打不开的有:
- .x3dv、.x3db 和 .x3dj 编码,以及较旧的 .wrl;
- 打包的 .x3dz 文件——请先解压(见上文);
- 使用 X3D 4 基于物理的材质
PhysicalMaterial的场景:在我的测试中,整个场景都导入失败; - 按照规范的写法(
url='"part.x3d"')通过Inline引入其他文件的场景:在我的测试中同样失败了。
把 X3D 转换为 STL
在 Mac 上,Preview3D 通过 文件 → 导出模型为…(⌥⌘E)转换为 STL、OBJ 或 PLY,不上传任何东西。颜色、纹理、灯光、动画和交互都会被丢弃。基本体在读取文件时就被转换成三角形,所以球体在 STL 中会变成多面体。还要注意单位:X3D 以米为单位,而切片软件通常把 STL 中的数字当作毫米。如果模型在切片软件中看起来很小,就把它放大 1000 倍。
常见问题
什么是 .x3d 文件?
一个采用 X3D 标准、以 XML 写成的 3D 场景:形状、材质、灯光、视点和动画。X3D 是 VRML 的继任者,也是 ISO/IEC 19775 标准。
X3D 和 VRML 有什么区别?
X3D 是较新的标准。它包含 VRML 的全部内容,并增加了更多功能和编码。VRML 文件使用 .wrl 扩展名。
什么是 .x3dv 和 .x3dz 文件?
.x3dv 是采用 Classic VRML 编码的同一个场景。扩展名末尾的 z 表示文件用 gzip 打包过;用 gzip -dc 解压即可。
Mac 不装其他应用能打开 X3D 吗?
不能。macOS 27 没有 X3D 的文件类型,预览和快速查看都不显示它。
如何把 X3D 转换为 STL?
在 Mac 上,用 Preview3D 的“文件 → 导出模型为…”,或者用 Castle Model Viewer。然后在切片软件中检查尺寸。
为什么我的 X3D 模型在切片软件中很小?
X3D 以米为单位,而切片软件把数字当作毫米。请把模型放大 1000 倍。
相关页面
- .dae 文件——另一种以 XML 写成的 3D 场景
- .gltf 和 .glb 文件——当今网页 3D 的格式,X3D 4 可以与之配合
- .stl 文件——X3D 要转换成的打印格式
资料来源
- Web3D:什么是 X3D——与 VRML 的关系、编码
- Web3D:X3D 标准的各个版本——标准编号和日期
- Web3D:X3D 4.0 成为 ISO/IEC 标准
- X3D 4.0 规范:单位和坐标
- Library of Congress:X3D——编码,LoC 和 NARA 的推荐
- Web3D 邮件列表:把 X3D 转换为 VRML(2012)
- X_ITE:支持的格式
- Castle Model Viewer
- Blender:Web3D X3D/VRML2 扩展
- Apple:预览中的 3D 格式
你有没有一个 X3D 或 VRML 模型——比如来自某门课程或某个科学软件——在 Mac 上打不开?请写信到 apps@xfanta.com,告诉我它的编码和来源。
在 Preview3D 中打开
在 Mac、iPad、iPhone 和 Vision Pro 上打开 STEP、3MF、STL、G-code、BGCODE 等格式。一次购买,无需账户,无需联网。
App Store 上的 Preview3D