首页 > 其他分享 >数字孪生云渲染整体架构设计

数字孪生云渲染整体架构设计

时间:2024-04-21 17:55:40浏览次数:27  
标签:架构设计 孪生 渲染 js 编辑器 引擎 Web3D

大家好,本文在我开发的多个项目的基础上,提出了应用于数字孪生的云渲染整体架构设计,分析了其中的关键点,感谢大家~

数字孪生现状

数字孪生是将物理世界映射到数字世界,1比1还原真实场景,具有场景大、数据大、还原真实场景等特点。

数字孪生行业市场大,预计2025年可达到300亿元的市场规模

为什么使用云渲染?

目前数字孪生一般有2种渲染方式:

  • 客户端渲染
    使用UE、Unity引擎来渲染
  • Web端渲染
    基于WebGL/WebGPU,使用Three.js等开源引擎来渲染

其中,前者渲染效果较好、开发成本较低(因为有成熟引擎,很多都不需要开发),但是不如后者跨平台和轻量;
后者的主要问题是WebGL/WebGPU不够成熟,缺少很多高级图形特性(如Ray Tracing Pipeline),并且暂不能直接调用NPU来进行深度学习计算(WebNN目前还不成熟)

这两种渲染方式存在的问题是都依赖用户的硬件条件,如果是移动端的话就不能渲染出高质量的场景;并且存在适配各种硬件等问题。

因此,我们选择使用云渲染的方式,主要的好处是能够使用高级图形特性和NPU,并且能够使用集群来渲染,从而能渲染出高质量的场景。又因为网络传输的速度越来越快,所以可以实时渲染

架构

云渲染整体架构如下图所示:
image

架构一共有三个部分,其中用户的硬件(如手机、平板、PC等)是前端,云端GPU服务器集群是后端,而前端和后端都是基于Meta3D(Web3D低代码开发平台)来开发的

特点

本文提出的云渲染架构有下面的特点:

  • 核心组件都是自研的
    前端的Web3D引擎、Web3D编辑器和后端的云端渲染引擎以及Meta3D等都是自研产品

  • 技术前沿
    云端渲染引擎使用了最新的深度学习技术和最新的图形API,实现了最先进的实时路径追踪渲染,渲染效果可以超过UE渲染

  • 基于统一的平台来高效开发
    基于Meta3D平台,一站式、积木式开发编辑器和引擎

  • 提供个性化的Web3D编辑器给用户,实现模型搭建、数据绑定等可视化操作

下面,我们来分析下架构中的关键点:

后端

网络传输

这部分包括编码、解码,基于WebRTC来传输指令和像素流,其中像素流类似于UE的像素流

云端渲染引擎

使用Ray Tracing Pipeline、ReSTIR、DLSS、NRC(Real-time Neural Radiance Caching for Path Tracing)、WSPK等技术来实现实时路径追踪渲染。具体方案可参考实时渲染前沿研究:开篇介绍

使用Node.js,从而能够用js来调用本地能力(如Nvdia NPU、Ray Tracing Pipeline)

使用的第三方库主要是:

集群调度

根据前端的需求,动态调度合适的GPU服务器来渲染

需要实现异步队列等技术

GPU服务器集群

配备RTX显卡,提供Ray Pipeline Tracing、NPU等功能

前端

浏览器

用户打开浏览器,在有良好的网络时,即可接收到后端传来的实时像素流

Web3D编辑器

这是提供给有开发能力的用户的定制编辑器,使用户可以快速开发、修改数字孪生应用,从而解决数字孪生应用维护困难(现在用户可以通过低门槛的编辑器来维护应用,无需修改源代码)等问题

Web3D引擎

Web3D编辑器和数字孪生应用会在前端(也就是用户的硬件上)使用该引擎。

对于渲染部分,简易渲染引擎用于渲染编辑器的编辑场景,而编辑器的运行场景和数字孪生应用的场景则由云端渲染引擎来渲染;
对于其它部分(如物理、粒子等),则由Web3D引擎负责在前端来计算

数字孪生应用

数字孪生应用包括智慧城市、智慧仓库、3D展馆、VR/AR应用等,是交付给最终用户的产品。它的场景由云端渲染引擎来渲染

Meta3D

Meta3D是自研的Web3D低代码平台,一条龙可视化搭建编辑器、引擎,共建开放互助的web3d生态

前端的Web3D引擎、Web3D编辑器和后端的云端渲染引擎都是在Meta3D平台中一站式搭建

实现步骤

结合我的情况,预计通过下面的步骤,来实现云渲染:

1.基于WebNN,实现Real-time Neural Radiance Caching for Path Tracing的Demo
2.跑通TensorFlow.js的Node.js backend,使用NVIDIA GPU drivers(NPU?)
3.使用TensorFlow.js的Node.js backend替代WebNN,重写深度学习的Demo,并进行性能比较
4.将以前基于WebGPU-Node实现的路径追踪渲染器(详见WebGPU+光线追踪Ray Tracing 开发三个月总结),结合NRC来降噪
5.使Meta3D支持Node.js,从而能够开发 云端渲染引擎 包
6.结合WSPK来降噪
7.结合DLSS来渲染高分辨率
8.用最简单的实现,快速跑通整个架构
其中集群调度的实现可参考GPU Accelerated Path Tracing of Massive Scenes
9.交付给内测用户使用

参考资料

137页完整版《2023数字孪生世界白皮书》场景渲染能力篇:实时云渲染

3DCAT实时云渲染助力数字孪生检修车间建设,为智能制造赋能!

实时云渲染在数字孪生、虚拟仿真领域的优势有哪些?

标签:架构设计,孪生,渲染,js,编辑器,引擎,Web3D
From: https://www.cnblogs.com/chaogex/p/18149254

相关文章

  • threejs - 渲染第一个3D场景 - 旋转的正方体
    1.安装threejs&使用2.创建三要素 场景scene相机camera渲染器render 3.场景newTHREE.Scene()  相机分为2种 1.透视相机2.正交相机 渲染器的使用 把canvas标签渲染到body页面document.body.appendChild(renderer.doLement); // 渲染canvasre......
  • 原生js图片截取并渲染页面
    一、将海报大图截屏部分图片并渲染页面二、实现代码如下<!DOCTYPEhtml><htmllang="zh"> <head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width,initial-scale=1.0"> <title>Do......
  • 106.React SSR(服务器端渲染)实践指南
    106.ReactSSR(服务器端渲染)实践指南极客前端探索者前沿技术的探索者,编码艺术的实践者​关注他 1人赞同了该文章随着前端技术的发展,单页应用(SPA)已经成为了前端开发的主流形式。然而,在某些场景下,如首屏加载速度、SEO优化等方面,SPA仍然存在着一些......
  • 什么是云渲染?云渲染平台怎么使用?云渲染怎么收费?
    什么是云渲染?云渲染是一种利用云计算技术提供的云端服务,用户可以将本地任务递交到远程服务器上,由远程计算集群协调和完成渲染,并将结果返回本地,最后用户可以在本地下载渲染结果。而实时云渲染则是云渲染的一种形式,它既保证了渲染质量,还可以实现实时渲染,使用户能够实时观察渲染效......
  • 3dmax材质编辑器崩溃怎么解决?3dmax渲染崩溃解决方法
    许多用户在更新版本后遭遇了一个共同的问题:一旦打开3dsMax的材质编辑器,程序就会崩溃。对此,众多用户感到困扰,不知道如何解决。下面我们以起来看看解决方法吧。3dmax材质编辑器崩溃解决方法1、登录到3dmax中,先开启渲染设置。2、选择【公用】【指定渲染器】,点击产品级,选择【V-R......
  • blender python api 使用脚本批量对obj物体进行渲染(obj所在目录要有与之对应的mtl文件
     代码:importbpy#导入Blender的PythonAPI接口importpathlib#导入pathlib模块,用于操作文件路径#设置OBJ文件所在的目录路径obj_root=pathlib.Path('D:\\ceshi')#注意Windows路径中的斜杠需要转义#取消选择场景中的所有物体,以便导入时不会与已选择的物体冲......
  • blender python api 使用脚本对所有帧 进行全方位渲染
    代码:importbpy#定义要使用的物体placement_ob=bpy.context.scene.objects['Sphere']#'Sphere'是要渲染的物体名称camera_ob=bpy.context.scene.objects['Camera']#'Camera'是摄像机的名称render=bpy.context.scene.render#获取渲染场景的引......
  • blender python api 使用脚本对一个静帧 进行全方位渲染
     代码:importbpy#Definewhichobjectstouseplacement_ob=bpy.context.scene.objects['Sphere']camera_ob=bpy.context.scene.objects['Camera']render=bpy.context.scene.render#Settherenderpathrender_path='renders\......
  • 软件体系架构课堂测试07 –逻辑架构设计
    某大银行的一位银行卡办公室的收账经理Liz遇到了一个问题。她每周都收到一份过期未付款的账户名单。这份报告已经从两年前的250个账户增加到现在的1250个账户。为了确定那些严重拖欠债务的账户,Liz需要通读这份报告。严重拖欠债务的账户由几个不同的规则确定,每个规则都要求Liz检查......
  • 软件体系架构课堂测试07 –逻辑架构设计
    班级:   学号:    姓名:某大银行的一位银行卡办公室的收账经理Liz遇到了一个问题。她每周都收到一份过期未付款的账户名单。这份报告已经从两年前的250个账户增加到现在的1250个账户。为了确定那些严重拖欠债务的账户,Liz需要通读这份报告。严重拖欠债务的账户由几个不同......