---
title: "检查、编辑和验证 .x3d 文件"
date: "2020-08-21"
categories: 
  - "applications"
  - "json"
  - "xml"
  - "xsl"
tags: 
  - "industry-standards"
  - "json-editor"
  - "x3d"
  - "xml-editor"
  - "xslt"
description: 探索.x3d文件格式，了解其在三维建模中的应用，以及如何使用XMLSpy工具和技术来检查、编辑和验证这些文件。
---
Status: #blog

Tags:  #industry-standards #json-editor #x3d #xml-editor #xslt

Categories: [development](/blog/zh/category/development.md) | [json](/blog/zh/category/json.md) | [xml](/blog/zh/category/xml.md) | [xsl](/blog/zh/category/xsl.md)
# 检查、编辑和验证 .x3d 文件

.x3d 文件格式是一种基于 XML 的国际标准（ISO/IEC），用于表示三维图像。该格式，也称为 X3D，最初是为了在计算机图形领域表示三维图像而开发的。 随着时间的推移，其应用范围不断扩大，从虚拟现实（VRML）发展到 CAD 设计、建筑渲染、3D 打印、医学和解剖成像、分子化学结构表示、人体动画等。

[Web3D 联盟](https://www.web3d.org/x3d/what-x3d/) 维护着 X3D 标准，相关 XML 模式的文档[在此处提供](http://www.web3d.org/specifications/X3dSchemaDocumentation3.3/x3d-3.3.html)。当前版本包含了超过 250 个 XML 元素、超过 100 种简单类型、70 种复杂类型，以及超过 40 组定义的节点。

要准确地描述任何事物，从精密制造的机器零件到细节丰富的虚拟环境，都需要相当的复杂性，尤其是在考虑光照、纹理和视角时！XMLSpy是全球最受欢迎的用于[建模、编辑、转换和调试](https://www.altova.com/zh/xmlspy-xml-editor) XML和JSON相关技术的工具，它支持.x3d文件。XMLSpy为所有可能需要检查、交换、使用或验证.x3d文件的用户提供符合标准的工具。下面我们来看一些例子。

![](/blog/images/draft_x3d_01.png)

<!--more-->

首先，我们可以自定义 XMLSpy 工具菜单，创建一个新的菜单项，以便方便地从 .x3d 文件中渲染 3D 图像。我们安装了两个在 web3d.org 上的 [X3D 资源](https://www.web3d.org/x3d/content/examples/X3dResources.html) 页面上列出的 X3D 播放器，以便我们可以比较它们的结果。这样，我们就可以创建以下用户自定义的菜单选项：

[![](/blog/images/tools-menu-1a-1.png)](tools-menu-1a-1.png)

现在我们需要一个 .x3d 文件。网上有很多示例可供参考。美国国立卫生研究院 (NIH) 维护着一个 [.x3d 文件库](https://3dprint.nih.gov/) 这些文件包括各种X3D应用，例如化学结构模型、可3D打印的物体，以及细胞组织和生物体的实际渲染图像，您可以在他们的网站上找到这些文件。

我们先从一个可3D打印的形状开始。在下面的截图所示，我们打开了一个文件，并使用“工具”菜单将其也打开在H3DViewer应用程序中：

[![XMLSpy 在打开 .x3d 文件时，会自动进行验证](/blog/images/Capture-earsaver-1.png)](Capture-earsaver-1.png)

请注意位于主文本显示区域下方的消息窗口。当您打开 .x3d 文件时，XMLSpy 会自动验证这些文件。在 H3D 视图器中，我们可以拖动图像并旋转，以便更好地观察

[![](/blog/images/Capture-earsaver-2-1.png)](Capture-earsaver-2-1.png)

这款产品是一种用于口罩的耳部保护装置，可以通过3D打印机制作。它的设计目的是为了减轻佩戴口罩时耳朵后部可能产生的刺激感。

正如我们在第一个截图中所看到的，该文件的大部分内容包含坐标定义，从第14行开始。如果我们要编辑该文件，例如更改对象的颜色，我们可以切换到 XMLSpy 的网格编辑器视图。网格编辑器视图通过一系列嵌套的容器，展示了 XML 文档和 DTD 的层级结构，这些容器可以轻松展开和折叠。为了专注于文档的其他特性，并避免意外更改任何形状的值，我们将包含所有形状坐标的容器保持折叠状态。

以下截图展示了在网格编辑器中，当我们双击“形状”元素时会发生的情况：

[![](/blog/images/Capture-earsaver-2a.png)](Capture-earsaver-2a.png)

XMLSpy 会弹出一个窗口，显示所有其他与当前文件位置的 Group 元素相对应的、在 schema 中定义的有效子元素。 如果您需要创建或修改用于 CAD 软件或第一人称沉浸式游戏场景的 .x3d 样板文件，了解这些信息会很有帮助。

让我们修改这个文件中定义的对象的颜色。当我们点击编辑“Material”元素中“diffuseColor”属性的值时，XMLSpy会根据XML Schema提供默认值。我们可以选择接受默认值，也可以输入新的数值。

[![在 XMLSpy 的网格视图中编辑 .x3d 文件](/blog/images/Capture-earsaver-3-1.png)](Capture-earsaver-3-1.png)

XMLSpy 软件提供了一个选项，可以在编辑过程中验证 .x3d 文件。如果我们在文件中输入 "3 3 3" 并尝试保存，XMLSpy 会立即检测到错误：

[![验证 .x3d 文件，并提供详细的错误说明信息](/blog/images/Capture-earsaver-4.png)](Capture-earsaver-4.png)

该属性的值必须都小于1。我们可以输入0.3、0.2和0.1，然后在H3D查看器中重新加载图像

[![](/blog/images/Capture-earsaver-5-1.png)](Capture-earsaver-5-1.png)

现在，这个物件的颜色已经变成了青铜色，而不是蓝色。

美国国立卫生研究院（NIH）网站和其他地方的资料展示了其他X3D应用。以下展示的是瑞德西韦的化学模型，这是一种可能的埃博拉和新冠病毒治疗药物。与耳罩模型不同，该模型的形状定义方式截然不同

[![一个.x3d文件，其中包含了瑞德西韦的化学结构描述](/blog/images/Capture-remdesivir.png)](Capture-remdesivir.png)

如果您足够勇敢，甚至可以直面所有人类的共同敌人：

[![](/blog/images/Capture-covid-19.png)](Capture-covid-19.png)

### 将 .x3d 文件转换为 JSON 格式

Web3D 联盟正在完成一项关于以 JSON 格式存储 X3D 数据的标准，并已发布了一份 XSL 样式表 [将 .x3d 文件转换为 JSON 格式](https://www.web3d.org/x3d/stylesheets/X3dToJson.html). XMLSpy 包含非常快速的 RaptorXML XSLT 3.0 处理器，您可以将其与 Web3D XSL 样式表结合使用，以尝试文件转换。

首先，我们可以在 XMLSpy 的“选项”对话框中更改 XSLT 处理的默认文件扩展名：

[![XMLSpy 中用于 XSL 转换的选项对话框](/blog/images/Capture-XSL-options.png)](Capture-XSL-options.png)

我们还取消了“验证 XML 文件”的选项，因为我们在编辑过程中一直在进行验证。

然后，打开一个 .x3d 文件后，您可以按 F10 键，或者在“XSL/XQuery”菜单下选择“XSL 转换”选项。

转换完成后，生成的 JSON 文件将在新窗口中打开。下图展示了从 NIH 面罩耳挂转换而成的 JSON 文档，分别以 XMLSpy 的文本视图和 JSON 网格编辑器视图显示：

[![](/blog/images/json-output.png)](json-output.png)

如果您需要检查、编辑或验证 .x3d 文件，请访问 [XMLSpy 演示](https://www.altova.com/zh/xmlspy-xml-editor/demos) 页面，那里有更多视频和深入教程，内容涵盖网格编辑器以及 XMLSpy 的许多其他功能。 当您准备好沉浸在由 .x3d 文件定义的 3D 环境中时，可以下载 XMLSpy 的免费 [30 天试用版](https://www.altova.com/zh/xmlspy-xml-editor/download)。
