Preview3D
获取

什么是 .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 有多种编码。场景保持不变;变的只是写法:

扩展名编码如何识别
.x3dXML以 <?xml 和 <X3D 开头
.x3dvClassic VRML,看起来像 VRML 的文本第一行是 #X3D V3.3 utf8
.x3db压缩的二进制不是可读的文本
.x3djJSON以 { 开头
.x3dz、.x3dvz同上,用 gzip 打包file 显示 gzip compressed data
.wrlVRML97,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 倍。

相关页面

资料来源

你有没有一个 X3D 或 VRML 模型——比如来自某门课程或某个科学软件——在 Mac 上打不开?请写信到 apps@xfanta.com,告诉我它的编码和来源。

在 Preview3D 中打开

在 Mac、iPad、iPhone 和 Vision Pro 上打开 STEP、3MF、STL、G-code、BGCODE 等格式。一次购买,无需账户,无需联网。

App Store 上的 Preview3D