B/S与C/S数字孪生应用架构选型
B/S架构由浏览器(Browser)和服务器(Server)两部分组成,即将用户界面放在浏览器端,应用程序的核心逻辑放在服务器端,通过网络传输实现数据交互。B/S架构的数字孪生场景渲染,常见有以下三种技术路线:基于WebGL封装的渲染库直接进行开发;基于支持H5的3D游戏引擎进行开发,开发完成后打包成WebGL;基于WebGL封装的渲染库开发适用于数字孪生项目的融合渲染引擎,再基于自研的引擎的进行开发,例如EasyTwin数字孪生融合渲染引擎。
C/S架构应用由客户端(Client)和服务器(Server)两部分组成,客户端通常是指用户端的软件程序,它们运行在本地计算机上,通过网络连接到远程服务器。C/S架构的数字孪生场景渲染,常见的有以下两种技术路线:基于游戏引擎直接进行开发,例如Unity3D、Unreal Engine;基于游戏引擎封装的适用于数字孪生项目的融合渲染引擎,再基于自研的渲染引擎的进行开发。
数字孪生应用双模式架构选型对比
C/S架构 |
B/S架构 |
|
常见技术路线 |
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) 浏览器对于硬件资源的调用有限,受限于此,场景的渲染无法更大程度的利用硬件资源; |
更多数字孪生项目咨询&低代码数字孪生平台免费试用: