0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何选择最合适的数字孪生引擎?B/S架构还是C/S架构?

jf_00255370 来源:jf_00255370 作者:jf_00255370 2023-06-25 13:41 次阅读

上一期讲了什么是3D引擎以及3D引擎的发展史,本期回到数字孪生引擎:

什么是B/S架构和C/S架构?

WebGL与WebGPU又有什么关系?

开发数字孪生必须要用数字孪生引擎吗?游戏引擎不是也可以开发数字孪生吗?

什么是B/S与C/S架构?

常见的3D引擎可以分成两大类,一类是Native3D引擎(客户端),这类引擎以Unity、UE4等游戏引擎为主,另一类是Web3D引擎(浏览器),以ThingJS 3D等基于WebGL和WebGPU开发的渲染引擎为主。

wKgaomSX05aAVb-hAAOtv2Bkd7I32.webp

所以,目前数字孪生市场上有两种技术路线,一个是基于游戏3D引擎的走C/S架构的,一个是基于Web 3D引擎的走B/S架构。

先来说说什么是C/S架构,C/S架构是第一种比较早的软件架构,主要用于局域网内,分为客户机和服务器两层。C/S架构软件有一个特点,就是如果用户要使用的话,需要下载一个客户端,安装后就可以使用。例如,Office、QQ等软件。

B/S架构的全称为Browser/Server,即浏览器/服务器结构,Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现,分为表现层、逻辑层和数据层三层。B/S架构的系统无需特别安装,只用Web浏览器即可。

C/S架构数字孪生系统缺点显而易见,它只能安装在局域网中,需要下载才能使用,一般规模的数字孪生系统都得十几个甚至几十个G,每次升级都要更新所有客户端,优点就是效果足够精美,且只有一层交互,因此响应速度较快。B/S架构数字孪生系统效果可能不如C/S架构效果那么好,优点是无需安装,可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。

WebGL与WebGPU的区别与联系

提到WebGL与WebGPU,必须要提OpenGL图形渲染接口,了解的朋友可能比较熟悉,OpenGL是一个跨平台的行业标准,可以部署在Windows、MacOS、Linux、Andriod和iOS上,而且学习门槛很低,使用场景更加广泛,除游戏外,大量的工业设计、仿真和数字孪生应用都在使用OpenGL。

wKgZomSX05eAWC95AAF6mnWena864.webp

OpenGL是一个很大的家族,最早的OpenGL1.0是1991年发布的,后来每隔几年都会更新一个版本。到了2012年WebGL才发布。WebGL天然是拥抱浏览器的,它以OpenGL ES为基础,做了一些API裁剪和浏览器适配。

WebGL诞生的背景是因为互联网的高速发展,基于浏览器的Web应用越来越广泛。程序员们就想,安装那么多插件实在太麻烦,能否用浏览器直接访问3D应用呢?而且C++C#太难学,能不能直接用JavaScript开发3D应用程序呢?于是,WebGL在千呼万唤中应运而生。

而WebGPU是GPU显卡硬件向浏览器开放的低级应用程序接口,底层是基于 Vulkan、Metal和DirectThingJS 3D 12,是WebGL的升级版,更好地支持和开放了GPU显卡的最新技术,能提供更好的性能,更好地支持多线程,更好地使用GPU实现很多渲染和计算上的优化,并采用了面向对象的编程风格。

为什么说游戏引擎并不是做数字孪生的最佳选择?

为什么游戏引擎不是做数字孪生的最佳选择?其实《游戏引擎架构》这本书中给出了答案:在游戏领域,没有所谓最好的引擎,只有最合适的引擎,这句话同样适用于数字孪生领域。

那回到本文的主题,如何选择最合适数字孪生项目的引擎呢?在思考这个问题前,我们先要搞清楚数字孪生场景和游戏场景的区别。

做数字孪生,主要的业务场景是城市、园区、楼宇和数据中心的运营管理,业务价值是帮助人们更好地认知和管理现实世界。所以,这种业务场景和游戏有很大的区别。游戏大都是封闭的虚拟世界,里面出现的人物、事件和地点都是事先设计好的,游戏中做出的决策也不会影响现实世界。

而数字孪生是用来管理现实世界的,现实世界有大量的工具平台需要兼容和集成、有大量的实时数据需要接入和处理,这些都是传统游戏引擎难以适应的。

另外,现实世界的管理需求在不断演变,数字孪生应用就需要不停地迭代,甚至以周为单位交付新的管理功能。如果用游戏引擎来做数字孪生应用开发周期长且不说,而且迭代起来非常麻烦。因此就需要一个低门槛、易调试、高性能的引擎来开发数字孪生应用。

所以数字孪生的最佳引擎应该具备以下特点:

1️⃣支持海量实时数据驱动现实世界有大量的传感器,这就需要数字孪生体是能够被实时数据驱动的,能够根据数据状态的变化而变化

2️⃣支持与第三方物联系统的无缝整合目前物联网领域已经有众多的楼宇监控系统、资产管理系统和物联控制系统存在,数字孪生系统并非要取代这些系统工具,而是实现数据互通和界面整合,而且大部分已有系统都是Web应用,所以数字孪生引擎必须兼容Web应用

3️⃣更快的需求响应速度和适变能力对于一个现实世界的管理系统而言,管理场景会不断演进,功能需求也会不断变化,系统要发挥价值,就必须不断地优化,叠加新功能,所以开发的效率十分重要。要提升开发效率,最好的办法是采用前端编程语言,Javascript是前端开发者使用最广泛的语言,学习门槛低,开发效率远远高于传统游戏引擎。

为数字孪生而生的渲染引擎——ThingJS 3D

UINO优锘的ThingJS 3D渲染引擎是一款Web 3D渲染引擎。很多伙伴可能想问,Web平台有很多的开源引擎,如:three.js,BabylonJS,PlayCanvas,ClayGL,Oasis等,以及在CS端也有,如:Unity、UE、CryEngine、Ogre等引擎,为什么UINO优锘要开发自己的引擎呢?

UINO优锘自2012年创立之初,就在项目中对一些引擎做了较深入的研究和实践,发现这些引擎并不能完全满足我们所面对的领域的需求。

这种情况下,我们结合了之前使用C++开发的引擎经验、WebGL的开发经验、上述引擎的使用经验、以及项目中的实践经验,开发了WebGL版的ThingJS 3D引擎,以便更好地服务于Web平台的3D渲染。

wKgaomSX05iAVjvUAAlRzXz6hAQ13.webp

ThingJS 3D渲染效果

在ThingJS 3D渲染引擎的框架设计中,主要分为四层:标准封装层,渲染逻辑层,场景资源层和扩展层。标准封装层,渲染逻辑层,场景资源层构成核心库 ThingJS 3D。

核心库是一个Web优先的,最小可运行的通用图形渲染库。Web优先指的是ThingJS 3D主要基于WebGL和WebGPU作为底层绘图标准。通用图形渲染库指的是ThingJS 3D并不限定图形渲染以外的其它逻辑,适用性与扩展性比较好。另外,UINO优锘官方提供常用需求的扩展,作为第二方库供开发者使用。至于定制化的需求,支持由开发者基于ThingJS 3D开发第三方库。

wKgZomSX05mAR-bvAAK2fO3gxZo14.webp

ThingJS 3D渲染引擎架构

渲染引擎封装的功能,从大的分类来说,可以分为:场景树,几何体,材质,渲染管线,下面简要介绍一下ThingJS 3D在这些方面的改进:

1️⃣场景树

改进了场景树矩阵更新的逻辑,基于内置的矩阵标脏系统,可以进行触发式更新。简单理解就是,有改变再更新,不改变不更新,在大多数项目中,可以极大提高矩阵更新效率,从而提升渲染帧率。

优化Uniform的预处理,场景中全局参数,灯光参数,可以单独进行更新并cache,提高Uniform上传效率。

可扩展的渲染层级列表,更方便地渲染排序。基于渲染层级,可方便地实现背景,场景,覆盖物的排序分离,并基于深度缓冲分层,满足特定渲染需求。能一定程度上解决透明图标遮挡问题,满足alwaysOnTop,Overlay的需求等等。

wKgaomSX05mAAY2bAACf5el_f4A15.webp

2️⃣几何体

核心库提供Geometry,Attribute,Buffer类,提供逐顶点的几何体描述。同时支持Instance绘制。基于几何体的封装,我们可以接收多种类型的数据进行渲染:

模型加载器,例如核心库示例部分提供的GLTFLoader,VoxLoader等

程序生成,例如:点,线,面,管,挤出等

自定义数据,例如第三方GIS数据,实时传输数据等

wKgZomSX05qAYhLCAAN5q3PB3eg01.webp

在点线面的扩展上,ThingJS 3D的官方示例部分,会提供业务场景(ThingJS)中常用的几何体生成计算模块。

wKgaomSX05qAcnqaAAE0SDGR-yE40.webp

3️⃣材质

一般的Web渲染引擎中,很难基于内置材质进行扩展。例如three.js,材质的Uniform上传与材质类型是深度耦合的,因此很难基于Standard材质实现扫光等材质特效。ThingJS 3D提供了材质继承机制,只需要简单插入着色器逻辑,即可实现对PBR材质的快捷修改。

wKgZomSX05uAIF_jAAXJ8Zd05Nc91.webp

4️⃣渲染管线

常见的WebGL引擎中,渲染器的渲染功能容易是过度耦合的。ThingJS 3D面向基于GPU加速的图形接口,即WebGL与WebGPU,基于这样的思路,我们抽离出RenderPass的概念。

目前我们提供WebGLRenderPass作为默认的渲染通道,未来,几乎可以无缝切换到WebGPURenderPass。这样在我们推出WebGPU渲染器后,不需要改变上层代码逻辑,即可直接实现WebGPU的渲染。

wKgaomSX05uAIao4AABSl4OcEMk51.webp

另外,ThingJS 3D提供的接口可以单独处理“场景图信息的收集”与“渲染列表的生成”,并可以执行力度更低的渲染命令。便于实现高性能的后处理流程扩展。在实际渲染中,物体勾边,发光等后期,往往需要多通道的渲染。在下图中,同样是执行两通道的渲染,ThingJS 3D执行的流程,能避免很多冗余的逻辑。

wKgZomSX05uAV-7YAAFgZ11OUd885.webp

基于这样的设计,我们提供了高级渲染器(EffectComposer)的扩展。高级渲染器是一个后期混合器,并内置了常用的后期处理模块。高级渲染器为ThingJS提供了丰富的后期特效支持。

wKgaomSX05yALCPaAAUoxoTIv0g26.webp

除了全屏幕的后期处理效果,EffectComposer还提供逐物体的特效解决方案。未来,ThingJS 3D还在快速迭代中,未来我们还要做:

基于Transform Feedback特性的更强大的粒子系统

节点式材质系统

更加强大的WebGPURenderPass

综上所述,ThingJS 3D为Web平台提供强大的3D渲染能力。基于ThingJS 3D引擎,能实现丰富的几何体定制,材质定制和渲染管线定制。未来ThingJS 3D将本着开放,共享的原则,不断演进,为用户提升渲染效果和渲染性能,保证ThingJS在Web端优异的渲染能力。

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 3D引擎
    +关注

    关注

    0

    文章

    6

    浏览量

    8116
  • 数字孪生
    +关注

    关注

    4

    文章

    994

    浏览量

    11806
收藏 人收藏

    评论

    相关推荐

    MySQL的整体逻辑架构

    支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一。如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心基础架构
    的头像 发表于 04-30 11:14 38次阅读
    MySQL的整体逻辑<b class='flag-5'>架构</b>

    数字孪生关键技术及体系架构

    的可行思路。首先介绍了数字孪生的演进与价值,然后给出了数字孪生典型特征及其体系架构,并基于该架构
    的头像 发表于 04-02 14:21 264次阅读

    浅谈基于数字孪生的配电室关键技术研究

    的应用可强化机器人巡检,AI识别和终端设备控制等手段,能够*大程度地提升配电室总体工作效率。 5数字孪生关键技术在配电室中的应用 5.1智慧云平台建设 基于当前主流微服务开放源代码架构的“数字
    发表于 01-09 15:49

    智慧储能数字孪生:能源未来的智慧引擎

    在清洁能源崛起和智能科技飞速发展的背景下,图扑软件通过自研 HT for Web 成功打造了先进的压缩空气储能监控系统,推动了数字孪生技术在储能领域的全面应用。本文将深入探讨图扑数字孪生
    的头像 发表于 12-11 15:56 339次阅读
    智慧储能<b class='flag-5'>数字</b><b class='flag-5'>孪生</b>:能源未来的智慧<b class='flag-5'>引擎</b>

    PCB表面处理的选择和优化,如何选择最合适的工艺?

    PCB表面处理的选择和优化,如何选择最合适的工艺?
    的头像 发表于 11-24 17:16 374次阅读

    为您的应用选择合适数字电位计

    电子发烧友网站提供《为您的应用选择合适数字电位计.pdf》资料免费下载
    发表于 11-23 10:09 0次下载
    为您的应用<b class='flag-5'>选择</b><b class='flag-5'>合适</b>的<b class='flag-5'>数字</b>电位计

    基于EA的企业数字化转型架构的设计

    数字化转型的定义上看,至少包含两个方面:一方面是商业模式的转型,一方面是技术的升级。因此,数字化转型架构是由业务架构、技术架构两条螺旋组成
    的头像 发表于 10-29 14:51 816次阅读
    基于EA的企业<b class='flag-5'>数字</b>化转型<b class='flag-5'>架构</b>的设计

    为什么说没有完美的PLC,只有最合适的PLC?

    ,但在其他方面可能不够适用。因此,选择最合适的PLC意味着满足特定应用的功能需求。 (2)成本因素:PLC的价格和成本也是选择的重要考虑因素之一。有时,最适合的PLC可能是在可接受的成本范围内提供所需功能的PLC,而不一定是最昂
    的头像 发表于 10-14 08:15 248次阅读

    有适合自动识别是risc-v架构还是arm架构的烧录器吗?

    目前市面上有自动能识别出被烧录MCU是risc-v架构还Arm架构的烧录器吗?无需用户手动切换模式,能够自动识别到被烧录MCU的内核架构
    发表于 09-14 17:40

    数字孪生”十问十答

    文|北京航空航天大学,自动化科学与电气工程学院,数字孪生研究组来源|先进制造业本文对以下十个问题进行了深入分析与思考,以期抛砖引玉,为研究者更好理解数字孪生,为决策者理性和正确对待
    的头像 发表于 09-13 08:32 539次阅读
    “<b class='flag-5'>数字</b><b class='flag-5'>孪生</b>”十问十答

    如何选择最合适的网络拓扑方式呢?如何解决CAN总线故障?

    CAN总线的应用越来越广泛,工程师在各种不同工况下,如何选择最合适的网络拓扑方式呢?本篇文章将介绍主流的几种总线拓扑方式,以及如何解决CAN总线故障。
    发表于 08-28 14:57 284次阅读

    工厂数字孪生系统的特点与结构

    工厂数字孪生系统包括智能实体工厂、工厂数字孪生体和孪生服务系统,工厂数字
    的头像 发表于 08-16 10:47 657次阅读
    工厂<b class='flag-5'>数字</b><b class='flag-5'>孪生</b>系统的特点与结构

    基于Kaldi的语音识别引擎架构设计方案

    58自研语音识别引擎,最初是基于Kaldi框架进行开发,在自研初期上线了架构1.0版本,后续以降低机器资源、提升资源利用率、优化性能为目标进行了升级重构,上线了架构2.0版本。
    发表于 07-23 14:59 349次阅读
    基于Kaldi的语音识别<b class='flag-5'>引擎</b>的<b class='flag-5'>架构</b>设计方案

    合适架构才是最好的架构

    书并没有详细阐述微服务和单体架构的方方面面,但它也提供了足够多的信息 —— 甚至可以说是全部信息 —— 帮助我们做出最好的,或者说是最务实的决定,来构建软件。仅仅是目录本身就值得称赞!但是,即使过去了 25 年,这个行业似乎仍未领会到其最基本的教诲 —— 那就是,根据实际情况选择
    的头像 发表于 05-30 09:55 291次阅读

    特斯拉电子电气架构路线图

    特斯拉及蔚小理选择自研电子电气架构,目前特斯拉已研发出域集中式E/E架构并引领行业变革。四家车企在选择与百度、高德、谷歌、腾讯等地图企业合作而非自研。在转向和制动系统方面,博世和布雷博
    的头像 发表于 05-11 16:54 1607次阅读
    特斯拉电子电气<b class='flag-5'>架构</b>路线图