引子:
因为项目原因,学习整理LabStreamingLayer (LSL),检索到了OpenSim,发现此LSL是指Linden Lab Script(LSL 语言为 Second Life 中的原语、对象和化身赋予行为)。
OpenSim 简史
Darren Guard 于 2007 年 1 月创立了 OpenSimulator 项目,尽管之前多次尝试类似项目都因同时编写服务器和客户端的挑战而失败。
多用户 3D 虚拟环境 (MUVE) 和大型多人在线角色扮演游戏 (MMORPG) 的发展始于基于文本的交互版本(称为多用户地下城或 MUD),多个用户可以在其中进行文本交互。
MUD 发展为 MOO 或 MUDS,面向对象的版本。由于先进的计算机图形技术和信息通信技术,MOO 随后发展为 MUVE。然后,它们进入了身临其境的虚拟世界或 Metaverses。
下面是通过互联网引用的OpenSim 时间线图。
备注说明
- 1999年-2003年期间,Second Life只是最著名的3D社交平台之一,但是更早期的ActiveWorld3D 现在还活着,现在元宇宙相关的应用在当时形式上非常雷同,只是当下的视觉画面效果已经跨越式的发展。
- 这段时间国内3D内容主要是VRML开发的内容,国外同时期还有基于网页wildtangent游戏3D平台。后来出现了viewpoint角色(3D QQ秀)。
- 中国虚拟现实样板式示范应用 数字故宫也在同期完成,商业级的虚拟现实应用微妙公司做的大连某漫游项目给行业价格定了标准。
- 国内相关公司,主要溯源于香港台湾的大陆商务拓展派、浙大北航的自研原创派,还有高端设备的代理贸易派。知名公司水晶石的业务也正在起步腾飞。
- 2003年的非典记忆永存。
OpenSim 背后的技术
要使用 OpenSim,需要在 Windows 和 Linux PC 上下载并安装它。在 Windows 上,它在 .NET Framework 上运行,在类 Unix 机器上在 Mono Framework 上运行。
该软件根据 Berkeley Software License 或 BSD License 发布,允许将 OpenSimulator 嵌入产品中,因为它对商业友好。
另一方面,想要访问使用 OpenSimulator 创建的 3D 内容的人需要下载并安装 OpenSim 查看器,例如 Firestorm 和 Singularity。从这里,他们可以通过插入访问 URI 来浏览任何区域或网格上的 OpenSim 内容,方法与在 Web 浏览器中使用 URL 的方式相同。
OpenSimulator 软件是用 C# 构建的,可以使用插件模块进行扩展。这些插件模块中的每一个都可以单独和独立地开发和加载,以向服务器添加功能。
该软件可以在独立模式或网格模式下运行,单个进程在单一模式下处理整个模拟,多个进程处理不同的模拟并在网格模式下在不同机器上运行。
OpenSim 建模
OpenSim 和 Second Life 中的设计师使用 3D 建模和动画程序以及 Blender 等软件插件从头开始构建网格或自定义 3D 对象和模拟。这些可以导出到 OpenSim 和 Second Life,用作 OpenSim 网格区域中的化身或其他对象。Blender 软件可用于构建 OpenSim 和 Second Life 网格模型:
Blender作为开源级的建模平台,打工人应当掌握。
Second lift 第二人生简介
Second Life 是 Linden Lab 于 2003 年 6 月开发的在线虚拟世界。Linden Lab 由 Philip Rosedale 于 1999 年成立。目的是开发能让人们沉浸在虚拟世界中的硬件。
就像 OpenSim 一样,Second Life 的用户可以在 Second Life 上购买给定大小的 3D 虚拟土地,并构建 3D 对象、场景和场所,用于娱乐、商业、非营利事务或组织事务。
Second Life 有许多由个人、团体、组织和公司构建的 3D 对象和资产,这些对象和资产免费或收费提供。个人可以按原样或定制后免费使用或购买在自己的土地上使用。
个人还可以构建、购买或免费获得化身——数字化人类表现——他们可以使用这些化身与地点、物体和其他化身进行交互。
Second Life 使用 LSL 编码或脚本语言,这是一种类 C#/Java 的语言。LSL 语言为 Second Life 中的原语、对象和化身赋予行为。
OpenSim 的属性:
- 该软件支持在线多用户 3D 环境。 它支持实时模拟器端,具有多个引擎选项的物理模拟,包括 ODE。
支持多个客户端和多种协议,允许同时访问虚拟世界。 支持可以实时创建 3D
内容的客户端。实时地形生成器和景观生成器使用强大的选择器、混合贴图和蒙版直接在 3D 视图上绘制并立即查看结果。 支持使用 Linden
脚本语言 (LSL)/OpenSimulator 脚本语言 (OSSL) 的世界脚本。无需修补 OpenSim
代码即可从区域模块添加脚本。支持 LSL 是有利的,因为大量库存已经用这种语言构建,并且可以在 OpenSim 上使用。
支持允许编辑和自定义虚拟世界应用程序的场景模块。
笔记
- 若干年之后,达索系统公司推出了企业级的应用First Life, 然后就没有然后了。
- 现在元宇宙热炒的社交功能,从统计学上说,绝大部分活不下去,时间将再次证明。
OpenSim 中的物理仿真模拟
物理模拟基于定义媒体在给定时间的状态的数学模型。数学模型中的每个变量定义整个或部分系统的状态或位置或速度。
该数学模型基于一组描述变量随时间演变的微分方程。该方程式由力和几何形状决定。
一旦一个人构造或写出方程式,下一步就是让计算机求解方程式。让计算机求解方程的过程称为数值分析。大多数选择 Runge Kutta 方法。
对于涉及碰撞的模拟,额外的步骤确保碰撞检测和及时备份到碰撞前的时刻,这允许修改速度。
其余的复杂步骤涉及在计算机图形上表示模拟对象、处理用户输入以及与实时同步。
模拟引擎或物理引擎完成整个数学运算并呈现视觉对象以供用户显示和修改。OpenSimulator 使用 OpenDynamicsEngine 或 ODE 作为默认物理引擎,尽管它也支持基本物理或 POS(简单物理)引擎。该引擎是一种对 3D OpenSim 或 Second Life 对象的行为进行建模的算法。它们作为插件添加到 OpenSim 软件中。
ODE 支持与所有立方体、球体、圆柱体等碰撞,以及所有变形组合,包括中空、锥形、扭曲、路径切割等。与 Meshmerizer 结合使用时,它还支持与雕刻棱柱体的碰撞。
和其它软件的集成应用
用于模拟工厂车间和操作的 FlexSim 软件
结论
OpenSim 可用于科研教育,无商用价值。
LabStreamingLayer
LSL是开源的网络总线系统,用于采集和同步不同生理、心理学和人机工程的软硬件设备。