WebXR 开发
空间 Web 应用的组成部分
XR/空间应用程序由一组通常通过网络服务器提供的文件组成。 网络浏览器可以解析这些文件并运行相应的 Web 应用程序。
常见文件
以下列出了需要了解的最重要的文件及其扩展名:
扩展名 | 描述 |
---|---|
index.html | 空间 Web 应用的主 HTML 页面。 |
.js | 包含 JavaScript 代码。 |
.ts | 包含 TypeScript 代码,发布空间 Web 应用之前会被转换为 .js。 |
.wasm | WebAssembly,由 C++ 或 Rust 等语言编译而成。 |
.glb | 3D 模型文件格式,可能还嵌入纹理。 |
.gltf | 基于文本的 3D 模型文件格式。 |
.bin | 通常由 .gltf 引用,包含二进制 3D 模型数据。 |
.obj | 较简单的文本格式模型文件。 |
.mtl | 通常由 .obj 文件引用的材质文件。 |
.json | 应用程序使用的任意数据。 |
.css | “层叠样式表”,用于调整 HTML 元素的外观。 |
此外,空间 Web 应用还使用音频文件(.mp3, .wav, .ogg 等)、图像文件(.webp, .png, .jpg)以及视频文件(.webm, .mp4, .mov)等。
3D 模型
VR 和 AR 应用可以是从完全沉浸式环境到简单浮动 UI 面板的任何事物。 在大多数情况下,应用至少需要一些 3D 模型(在应用中使用时也称为“资产”)。
平台
在 Sketchfab、TurboSquid 和 itch.io 等平台上可以找到许多免费和付费的资产。
也有一些完全免费的 3D 模型来源,例如 Quaternius、Kenney.nl 和 Poly Haven。
同时,你也可以使用 Unity 或 Unreal Engine 的资产包。
3D 扫描
将真实世界物体的照片转换为 3D 模型的过程被称为“摄影测量”或 3D 扫描。
诸如 RealityScan 的手机应用或类似 Reality Capture 的软件可以帮助你将真实世界的模型导入到你的空间 Web 应用中。
创建
手动创建 3D 模型可能费时较多。3D 建模师使用像 Blender 或 Maya 这样的软件根据需求定制 3D 模型。
如果 3D 建模不适合你,你可以在 ArtStation 上找到可供雇佣的 3D 艺术家。
优化
空间 Web 应用的所有资产通常通过网络传输,这会影响加载时间,因此对资产进行压缩和优化是十分重要的。
代码
空间 Web 应用的代码可以用 TypeScript、JavaScript、C++、Rust 等多种语言编写。 JavaScript 可以直接执行,而诸如 C++ 之类的语言则编译为 WebAssembly。
在空间 Web 应用中,代码负责多项任务:
- 渲染: 负责创建展示在智能手机或 VR 设备上的图像。计算机图形是计算机科学的一个复杂领域。为了简化管理,WebXR 开发人员使用渲染框架来处理常见任务。
- 加载资产: 在需要时加载 3D 模型、纹理、音频、视频和其他数据。框架通常提供从不同 3D 文件格式读取数据的功能,而在网络环境中,浏览器能够处理图像和音频文件格式的加载。
- 用户交互: 响应用户输入,提供反馈,并根据用户的操作实施响应动作。
- 应用逻辑: 处理应用程序的计算、处理和数据交互,包括数据库查询和数据生成等。
像 Wonderland Engine 这样的库、框架和 3D 引擎帮助完成所有这些任务,并提供常用功能,提高空间 Web 开发人员的开发效率。
网络服务
应用程序可能需要与在线服务互动,比如处理账户信息、存储个人数据、查询大型数据库或进行流媒体传输等。