Verge3D

Verge3D是一个用于创建运行于网页的3D交互式体验的实时渲染器和工具套件。

概述 
Verge3D是由位于莫斯科的Soft8Soft公司发布，该公司的创始人是 Blend4Web 框架的创始人和代码核心贡献者。 Verge3D使用户能够利用常用的三维设计工具(目前支持 Autodesk 3ds Max ， Autodesk Maya 和 Blender )创做3D交互内容，并直接转换到网络浏览器中查看。

功能 
Verge3D基于 WebGL 进行渲染，整合了 Three.js 库，并向程序开发人员公开API接口。

 Puzzles编辑器
 Puzzles编辑器是基于Google的Blockly编写的可视化编程环境。Verge3D的程序功能可直接编写代码或使用Puzzles编辑器添加 JavaScript 脚本。 Puzzles主要面向非程序员，使其可通过 拖放 操作快速创建交互场景。
 应用管理器pp Manager与网络发布
 Verge3D应用管理器p Manager是一个运行于本地开发服务器的基于网络的轻量级工具，用于创建、管理和发布Verge3D项目。 Verge3D云服务基于 亚马逊S3 和 EC2 云服务构建，内嵌于App Manager，可直接发布Verge3D应用到云端。
 PBR
 为便于编写材质，除标准着色器外一并提供了兼容GLTF 2.0的物理渲染流水线。 PBR纹理可以使用外部纹理软件（如Substance Painter）创作，Verge3D为其提供了相应的导出预设文件。最新版的Verge3D已经兼容Blender软件的eevee材质。

glTF与DCC软件集成 
 Verge3D直接与 Blender 和 Autodesk 3ds Max 集成，使用户能够在软件内部创建3D模型、材质和动画，然后导出为以JSON为基础的glTF格式。 快速预览功能允许导出和查看来自DCC工具环境的场景。
 Facebook 3D 主题
 Verge3D为Facebook 3D主题提供了一个专用的导出选项， 导出的GLB文件可在App Manager中显示和打开。
 资产压缩
 导出文件可以选择使用 LZMA 压缩，文件体积的下降率最高可达6倍。
 用户界面与网页布局
 使用外部所见既所得网页编辑器创建的页面布局可与Puzzles编辑器链接在一起编辑，以触发在浏览器中呈现的3D场景的变化，反之亦然。
 网页动画
 Verge3D支持骨骼动画，包括骨骼蒙皮和角色绑定的动画，并可以制作材质参数动画。模型部件也可以被设置为由用户拖动。
物理学
 物理模块可以单独链接，以实现碰撞检测、动态移动物体，支持角色、车辆、弹簧、绳索和布料模拟等。Verge3D的物理引擎基于跨平台的开源物理引擎Bullet创建。

虚拟现实与增强现实 

 2.10版更新增加了对WebXR的支持，这是一项正在开发的开放技术，旨在使虚拟现实和增强现实体验能够在网络浏览器中显示。它既可用于带控制器的头盔，如HTC Vive和Oculus Rift，也可用于不带控制器的头盔，如Google Cardboard等。AR/VR体验可以通过拼图编辑器或JavaScript来实现。

工作流程 
Verge3D的工作流与主流的WebGL框架有很大的不同，它追求的是一个强大的面向艺术家的方法。开发一个新的Verge3D应用开发通常是从3D对象的建模、纹理和动画开始的，在单一的*.max, *.ma或*.blend文件中组装模型完成3D场景。然后即可在App Manager调用该文件，作为初始化Verge3D项目的基础。创建交互式场景是可选流程，用户可在Puzzles编辑器中叠加创作。使用App Manager，用户可随时在浏览器中预览Verge3D应用。完成的网页应用可部署于Verge3D云服务，Facebook或用户自己的网站上。 Verge3D 2.11版本起，开放了WordPress测试沙盒，可以直接已经部署好的内容管理系统中测试前端效果。

知名用户 
Verge3D的著名案例包括来自美国国家航空航天局（NASA）的喷气推进实验室创建的火星洞察号火星探测器的互动式三维可视化。该网络应用为访问者提供了一个可以探索航天器的实时互动模型，用户通过移动不同的部件来学习了解该航天器，例如展开太阳能板，驱动摄像头转动等。

美国宇航局较早的网络交互式应用 "体验好奇号 "原本是用Blend4Web创建，但也于2018年移植到了Verge3D。该应用程序可以体验操作好奇号火星车，控制它的摄影机和机械臂，并再现了火星科学实验室任务中的一些重要事件。

相关技术 

 WebGL
 WebGL框架列表

参考文献 

三维图像软件
跨平台軟體
繪圖函式庫
JavaScript函式庫
網站開發
WebGL
3D scenegraph APIs