B/S 架构由浏览器(Browser)和服务器(Server)两部分组成,即将用户界面放在浏览器端,应用程序的核心逻辑放在服务器端,通过网络传输实现数据交互。B/S 架构的数字孪生场景渲染,常见有以下三种技术路线:基于 WebGL 封装的渲染库直接进行开发;基于支持 H5 的 3D 游戏引擎进行开发,开发完成后打包成 WebGL;基于 WebGL 封装的渲染库开发适用于数字孪生项目的融合渲染引擎,再基于自研的引擎的进行开发,例如EasyTwin 数字孪生融合渲染引擎。
C/S 架构应用由客户端(Client)和服务器(Server)两部分组成,客户端通常是指用户端的软件程序,它们运行在本地计算机上,通过网络连接到远程服务器。C/S 架构的数字孪生场景渲染,常见的有以下两种技术路线:基于游戏引擎直接进行开发,例如 Unity3D、Unreal Engine;基于游戏引擎封装的适用于数字孪生项目的融合渲染引擎,再基于自研的渲染引擎的进行开发。
1. 基于游戏引擎直接进行开发,例:Unity3D、Unreal Engine;
2. 基于游戏引擎封装适用于数字孪生项目的融合渲染引擎,再基于自研的渲染引擎的进行开发;
1. 基于 WebGL 封装的渲染库直接进行开发;
2. 基于支持 H5 的 3D 游戏引擎进行开发,开发完成后打包成 WebGL;
3. 基于WebGL封装的渲染库开发适用于数字孪生项目的融合渲染引擎,再基于自研的引擎的进行开发,例:EasyTwin;
1. 开发效率高:
(1) 已有 Unity3D、Unreal Engine 这样非常成熟、强大的游戏引擎,提供了成熟的三维渲染能力、场景编辑能力和脚本编程能力,可以帮助数字孪生场景的开发者快速创建、编辑和调整 3D 场景,从而降低了开发成本;
(2) 游戏引擎有庞大的用户社区和插件库,这意味着开发者可以利用社区资源快速构建、优化和发布数字孪生场景,减少了开发风险和成本;
2. 资源包体大小的要求低:资源的读取可以不依赖网络;
3. 性能表现相对良好:
(1) 数字孪生场景通常包含大量的模型、纹理、光源和特效等等,这些要素需要在渲染时同时被处理。游戏引擎在处理大规模场景方面具有很强的优势,它们使用了许多优化技术,如 LOD(Level of Detail,多级细节)和遮挡剔除(Occlusion Culling),可以根据场景中物体的距离和可见性来自动调整渲染的精细度和数量,从而在不影响渲染质量的前提下,提高渲染速度和性能;
(2) 游戏引擎本身具备许多性能优化技术,如批处理(Batching)和 GPU 实例化(GPU Instancing),可以将多个物体合并成一个批次来减少 CPU 和 GPU 的开销,从而提高渲染效率;
(3) 可更高效的利用客户端的硬件资源进行加速,从而提高渲染速度;
1. 可跨平台性:由于只需要使用浏览器就可以访问场景,因此具备很好的可跨平台性;
2. 高可扩展性:
(1) 数字孪生建设中,除去孪生场景的开发外,UI 的还原以及其他 2D 模块的研发也是项目建设的重要部分。这一部分在 Web 具备更高的研发效率,且实现效果更好。尤其结合EasyV,将数据接入、事件交互以及场景通讯配置化,进一步提升建设效率、降低维护成本。
(2) 在一个数字化转型项目中,数字孪生很可能只是项目当中的一部分,并且需要与其他业务系统配合,最终集成其他业务系统或是被集成在其他业务系统中,B/S 架构的在这一环节的实现成本更低。
3. 维护成本低:
(1) 由于应用程序的核心逻辑在服务器端,进行统一管理和维护,减少了客户端的更新和维护工作量。
(2) 可以方便地进行远程协作和数据共享,利于协同。
1. 不利于项目协同:通常情况下工程文件包体量大, 大部分项目所需资源在本地,协同受限;
2. 用人成本高:
(1) 完整的团队构建需要:模型师、地编、技术美术、游戏引擎开发工程师;
(2) 客户端开发工程师相较于前端开发工程师数量少;
3. 维护成本高:场景的更新都需要重新打包输出 exe文件;
4. 对硬件设备有要求:最终输出的 exe 文件仅支持windows 系统运行;
5. 跨平台访问成本高:
(1) 需通过云渲染实现跨平台,会产生额外成本;
(2) 云渲染效果也受网络带宽影响大。
1. 资源包体大小要求高:由于数据传输需要通过网络,包体的加载受制于网络带宽,包体大小直接影响渲染效果与整体性能;
2. 实现与游戏引擎等同的渲染效果成本更高:
(1) 经过 OpenGL ES 和 WebGL 的两重能力删减,渲染效果表现力下降以及性能优化手段受限;
(2) 由于 JS 与 WebGL 通信成本较高,优化 Draw Call 的成本更高。Draw Call 对图形渲染性能的影响非常重要。因为每个 Draw Call 都需要一定的 CPU 开销,例如调用 API 函数、设置渲染状态等。在大型场景中,如果存在大量的 Draw Call,则会降低渲染帧率,导致游戏或应用程序变得卡顿;
(3) 市面上未有像 Unity3D、Unreal Engine 具备非常成熟的三维渲染能力、场景编辑能力和脚本编程能力的 B/S 渲染引擎;
3. 性能整体不佳:
(1) JS 语言性能较差,影响业务逻辑的性能;
(2) 浏览器对于硬件资源的调用有限,受限于此,场景的渲染无法更大程度的利用硬件资源;
文章
10.54W+人气
19粉丝
1关注
©Copyrights 2016-2022 杭州易知微科技有限公司 浙ICP备2021017017号-3 浙公网安备33011002011932号
互联网信息服务业务 合字B2-20220090