数字孪生场景渲染能力中的WebGL技术路线

news2024/9/20 18:44:07

使用三维建模技术构建出的虚拟现实场景后,需要通过渲染引擎实现场景的高精度、高保真和实时渲染。同时,需要将现实场景中的数据信息融合到虚拟场景中,实现对现实情况的监测和控制。

目前大多数数字孪生城市项目在三维渲染引擎的技术选型上通常是2种方案,一种是基于C/S架构的主流游戏引擎技术路线(Unreal Engine、Unity3D等),另外一种是基于B/S架构的WebGL技术路线。

数字孪生场景渲染能力是当下数字孪生项目实际交付过程中的核心关注能力之一,本节将基于B/S和C/S两种技术架构以及云渲染技术架构分别介绍。

1、WebGL技术路线
1)基于WebGL的三大数字孪生技术路线
A. 基于WebGL纯代码开发

使用基于WebGL封装的渲染库直接进行开发,例如three.js、babylon.js。适用于体量较小、开发周期短而效果相求不高的项目

优势:

灵活性高:根据业务需求进行深度定制,且易于其他业务系统通信或集成;代码冗余少:代码体量小,易于问题排查;建设成本低;

劣势:

复用性低:由于根据业务需求进行深度定制可复用的代码少,难以模块化以至于无法通过该路线批量化交付项目;

效果较差:能支撑的三维场景体量小,能达到的渲染效果比较有限,难以实现中大型场景或较为写实的场景风格;

B. 支持H5的游戏引擎打包WebGL

使用C/S的游戏引擎开发场景后打包成WebGL,例如Cocos、Egret、Unity3D。适用于业务特点上偏向于游戏,且无需于其他业务系统集成、通信的项目。

优势:

建设成本较低:C/S的游戏引擎提供了较为成熟完善的编辑器和工具,能够低成本实现高质量效果和高性能;复用性高;三维渲染效果好;

劣势:

灵活性低:难以嵌入其他业务系统或通信;实现专业领域下的特有业务成本高或不可实现; 难以基于场景进行二次开发;学习成本高;

代码冗余多:游戏场景中场景和逻辑同等重要,逻辑上多为事件驱动。且游戏场景对动画、特效、性能、包体和UI要求都很高。而数字孪生重场景、轻逻辑、以数据驱动为主,由于业务差异导致打包的WebGL代码冗余过多;

维护成本高:封装度过高,做后期优化空间小,bug难排查;每次场景修改都需要重新打包WebGL;

C. 自研B/S低代码融合渲染引擎

基于WebGL封装的渲染库开发适用于数字孪生项目的融合渲染引擎,再基于自研的引擎的进行开发,例如EasyTwin数字孪生融合渲染引擎。适用于有大量中大型数字孪生需求,项目间具有一定的可复制性且有与别的业务系统耦合的需求。

优势:

灵活性高:可根据通用业务自由定制;

学习成本较低:低代码化开发过程,开发人员无需熟知WebGL等技术栈;

代码体量合适:完全根据业务确定引擎功能;可深入到引擎底层做性能以及渲染效果的优化;排查bug高效、解决问题彻底;

复用性高:业务的可复用点可得到引擎层的支持;

维护成本低:低代码化、配置化实现孪生场景,业务的修改以及场景上的修改不需要修改代码;

效果较好:可开发各种通用或定制的编辑器,实现技术与美术的结合;

劣势

渲染引擎的研发成本高:需要较强的技术能力通用化、组态化引擎的场景编辑能力、渲染效果、以及业务逻辑开发能力;

2)基于WebGL的数字孪生场景实践

以自然场景中的植被为例进行介绍,基于WebGL在地形模型上刷出符合自然环境的植被,并控制性能消耗。

准备工作:
在这里插入图片描述

① 根据地形网格生成地形高度图(中间图),白色表示最高点,黑色表示最低点,通过山的高度校对植被的垂直方向坐标;

② 在现有地形模型的基础上,把相机放到模型正上方,范围覆盖整个地形,渲染一帧导出深度缓存;

③ 在PS中处理成一个黑白图片,白色表示”种树”,黑色表示“不种树”(左图);

④ 计算生成植被点位的世界坐标;

生成植被示例:

① 生成噪声图,用于给定植被的XY坐标、种类、色调、大小一个有规律的随机(右图);

② 为了生成的植被具备上下的空间层次,植被会包括以下表现方式:土壤纹理、草地纹理、草、灌木、树木;

③ 为了生成的植被具备远近的空间层次,会有以下实现植被的方式:模型、广告牌、ViewBillboard;

性能优化:

① 视锥体剔除;

② 遮挡剔除;

③ 实例化渲染;

④ LOD;

⑤ GPU Drvien;

生成效果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/691102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高性能哈希算法MurmurHash

参考链接: https://blog.51cto.com/u_15127622/3264772 md5算法_十分钟掌握高性能哈希算法MurmurHash_weixin_39616339的博客-CSDN博客 Murmur哈希算法 一种非加密型哈希算法,适用于一般的哈希检索操作,由Austin Appleby创建于2008年。 …

Nat.Commun.:展示了首个硅量子光源!

光子盒研究院 量子技术有望通过启用全新的通信、传感和计算方法来彻底改变社会。例如,量子密码学如果能够实现,将为抵御黑客提供无与伦比的数据安全水平:这是因为量子信息可以在光子(单个光粒子)中进行编码、无法被复制…

以数为帆,乘风破浪!数据治理与应用沙龙在广州成功举办

DCMM作为国家第一个数据管理领域标准,是企业落实数据驱动战略、实现数字化转型的重要抓手。当下每个企业都必须有自己的数字化转型战略,而数据治理和数字化转型是同生共伴的,DCMM可以为企业进行数据治理提供全面的模型指导和方法体系。 6月2…

精选Golang高频面试题和答案汇总

大家好,我是阳哥。 之前写的《 GO必知必会面试题汇总》,已经阅读破万,收藏230。 也欢迎大家收藏、转发本文。 这篇文章给大家整理了17道Go语言高频面试题和答案详解,每道题都给出了代码示例,方便大家更好的理解。 1…

输入数据时全连接层计算量是多少

假设是这样的 那么计算公式是这样的 [ a 1 a 2 a 3 ] [ W 11 W 12 W 21 W 22 W 31 W 32 ] [ x 1 x 2 ] [ b 1 b 2 b 3 ] \left[\begin{array}{l} a_1 \\ a_2 \\ a_3 \end{array}\right]\left[\begin{array}{ll} W_{11} & W_{12} \\ W_{21} & W_{22} \\ W_{31} &…

关于uCOSiii使用__get_MSP()返回主堆栈指针的当前值出现的问题

关于uCOSiii使用__get_MSP()返回主堆栈指针的当前值出现的问题 我的uCOSiii的版本是: V3.03.01 void STACK_Init(void) { Used_STACK_SIZE0; STACK_BOTTOM*(vu32 *)STM32_FLASH_BASE_ADDRESS1;//取APP的SP初值 STACK_TOP1STACK_BOTTOM; } //函数功能:在中断函数…

cookies、localStorage 、sessionStorage 的区别

共同点:三者都是浏览器的本地存储。 区别: 存储位置:cookie是由服务器端写入的,而SessionStorage、LocalStorage都是由前端写入的; 存储大小:cookie的存储空间比较小,大概4KB,而SessionStorag…

webpack编译微信小程序

微信小程序开发目前主要还是依赖小程序原生开发者工具,但开发者工具目前还不支持常用的less、sass样式编译,以及环境变量配置等功能。使用webpack就可以弥补这些问题。 思路 webpack启动后,通过webpack-shell-plugin-next包执行启动后的一些…

沉浸式翻译

chrome沉浸式翻译插件 网页双语翻译,完全免费使用,支持Deepl/Google/Bing/腾讯/有道等。 一款免费、用户友好、简洁、革命性、广受好评的人工智能双语网络翻译扩展程序,可帮助您有效地弥合信息差距,也可在移动设备上使用&#xff…

【ArcGIS Pro二次开发】(44):属性结构描述表【Excel】转空库(批量)

随着县级国土空间总体规划数据库规范的下发,建立标准空库是一项马上就要着手的工作。国空的数据库体量很大,单是要素类就有100多个,不是以前村规数据库能比的,手动建库是不可能的,工具自动建库就是一个很合理的选择。 …

短视频seo矩阵系统源码开发思路

短视频SEO矩阵系统源码开发,需要遵循一下步骤: 1. 确定需求和功能:明确系统的主要目标和需要实现的功能,包括关键词研究、短视频制作、外链建设、数据分析、账号设置优化等方面。 2. 设计系统架构:根据需求和功能确定…

2023第二届中国汽车碳中和国际峰会 嘉宾更新

The 2nd China Automotive Carbon Neutral Summit 2023 2023第二届中国汽车碳中和国际峰会 嘉宾更新 Event Background会议背景 As the world increasingly recognizes the devastating impact of climate change, governments, organizations, and individuals are taking a…

如何安装微信小程序开发工具

1、点击进入微信开发者工具(稳定版 Stable Build)下载地址,选择Win64的版本下载。 2、运行exe程序,可能会出现微软商城安全提醒,不用理睬,直接点运行。 3、点击“下一步”。 4、点击“我接受”。 5、选择安…

vant-weapp源码解析(一)

想每天做点新东西,因此有此记录 这是进入的第一个页面,里面有引入list,page。 config.js:这是路径配置文件 page.js,外层配置文件 options,就算引入这个page.js页面所传递的数据 点击进入导航,看第一个按钮组件 button…

秋招二本4年Java经验,五面字节(定薪45K)

前段时间刚面试上岸,先后面试了各大小公司,拿了一些 offer,有阿里,滴滴,快手,达达,得物等公司。面试的公司大部分都能过,所以这里给大家分享下自己的经验,也给自己做个归…

学习Vue3——生命周期

简单来说就是一个组件从创建到销毁的过程称为生命周期 Vue 2 生命周期钩子函数Vue 3 生命周期钩子函数含义beforeCreatesetup在实例初始化之后、数据观测 (data observer) 和 event/watcher 事件配置之前被调用createdsetup在实例创建完成后被立即调用。在这一步,实…

手机信号老是卡,问题可能出在这四个原因上!

换手机的速度肯定是赶不上换卡的速度,当手机使用了一定的年限之后,不少小伙伴发现信号网速是越来越差,如果是到“五杀暴走” 的关键时刻,突然的卡顿能让你的心降到冰点! 这都是小编和小伙伴们在交流心得的时候得到的一…

uniapp打包app后,微信授权登录

官方文档:App端OAuth(登录鉴权)模块 关键配置项说明: 1、appid 微信开放平台申请应用的AppID值。 2、appSecret(HBuilderX3.4.18 不再提供此参数的可视化配置) 微信开放平台申请应用的AppSecret值。 找到manifest.json文件&am…

VR全景编辑器v1.0版本上线,为企业提供沉浸式全景可视化服务。

随着物联网技术的迅速发展,可视化技术在物联网中起到越来越重要的作用,当康科技经过不懈努力,研发了自己的一款基于物联网VR全景可视化的编辑器,为企业助力可视化服务。 部分源代码:: // 基础图标图库 ex…

几千万记录,数据库表结构如何平滑变更?

回答知识星球水友“逆光下的微笑”提问。 问题域:数据量大、并发量高场景,如何在流量低峰期,平滑实施表结构变更? 画外音,一般来说,是指增加表的属性,因为:(1&#xff09…