3D Web轻量引擎HOOPS Communicator如何实现对大模型的渲染支持?

除了读取轻松外,HOOPS Communicator对超大模型的支持效果也非常好,它可以支持30GB的包含70万个零件和3.5亿个三角面的Catia装配模型!

那么它是如何来实现对大模型的支持呢?

我们将从以下几个方面与大家分享:最低帧率控制、增量更新、截流等级、边界预览、内存限制以及破碎模式轻量化。

HOOPS_HOOPS试用_3D软件开发工具_HOOPS中国区指定经销商_慧都科技-HOOPS_HOOPS试用_3D软件开发工具_慧都科技慧都科技是HOOPS全套产品中国地区指定授权经销商,提供3D软件开发工具HOOPS售卖、试用、中文试用指导服务、中文技术支持。icon-default.png?t=N7T8http://techsoft3d.evget.com/

1 最低帧率

渲染场景时,HOOPS Communicator将按投影屏幕大小对可见对象进行排序,并首先渲染最大的项目。

系统旨在通过中断渲染和将控件返回给用户来保持最小的交互式帧率,以便他们可以继续与查看器进行交互。

您可以使用WebViewer.setMinimumFrame函数设置系统将维护的帧率。

但是,通过设置更高的最小帧率获得更高的性能是有代价的。

与系统交互时,将渲染较少的场景,以保持交互性。下图演示了在模型中飞行时以不同的最小帧率渲染相同视图的效果。

将最小帧速率设置为 15 的室内场景渲染

将最小帧速率设置为 30 的室内场景渲染

2 增量更新

场景将增量渲染,以保持与大型场景的交互性。从上面的示例中,当用户停止与模型交互时,场景将增量渲染其余对象,而无需执行完全重绘,直到渲染整个场景。

当交互恢复时,增量更新将中断,并再次保持最小帧率。

您可以使用WebViewer.setDisplayCompletFrames方法启用或禁用增量更新。

默认情况下,增量更新处于启用状态,在呈现包含许多部分的非常大的模型时非常有用。此功能可防止系统在渲染过程中产生明显的暂停,并允许用户在所有的时间移动摄像机。

3 截流等级

HOOPS Communicator的默认行为是剔除视图中显示非常小的项目。目的是避免在对当前场景没有明显影响的几何图形上花费带宽和渲染资源。

使用此技术剔除对象的判断条件是通过将其投影边界直径视为屏幕空间的百分比而做出。如果此百分比小于截流值,则剔除对象,并且不进行绘制调用。

默认流截止值为0.0125。这意味着要渲染对象时,这意味着要渲染的对象,其投影屏幕空间边界直径(占屏幕空间的百分比)必须至少为该值。

您可以通过使用WebViewer.setStreamCutoffScale方法将比例因子应用于此值来调整应用程序中的性能。传递给此方法的值标识了一个介于0.0和2.0之间的比例,该比例将应用于默认值。

将比例因子设置为0将完全禁用流截止选择。

下图显示了在部件的一部分上设置streamCutoffScale的效果:

*注意机器外壳周围细节的变化

StreamCutoffScale: 0 (disabled)

StreamCutoffScale: 1

StreamCutoffScale: 1

4 边界预览

加载非常大的模型时,将需要一些时间才能将相关数据从服务器流式传输到客户端。 边界预览提供了可视化的模型中正在等待数据到达的部分。 下图显示了部分加载的飞机模型的边界预览。

部分加载模型的边界预览

在启动查看器之前,应设置边界预览模式。

边界预览可以与OnDemand加载模式一起使用,以在处理大型模型时提高性能。 它们还可以用于提供有关加载部分如何适合模型的整个上下文。 您可以使用Communicator.StreamingMode设置OnDemand。

5 内存限制

内存限制使您可以对给定时间在客户端上使用的GPU资源量进行某种控制。

当试图在图形资源有限的模型上查看具有大量几何图形的模型时,这很有用。

要启用内存限制,请在创建WebViewer对象时指定memoryLimit选项。

以下代码显示了创建一个Web浏览器的示例,该示例施加了256 MB的限制:

启动查看器后,数据将正常开始流式传输。

如果系统检测到流传输到服务器的其他数据将超出限制,则现有数据将从客户端弹出,为新的、更相关的数据腾出空间。

弹出顺序由当前加载的网格投影边界信息的优先级队列控制。 如果弹出的数据再次变得相关,它将根据需要从服务器重新传输。

6 显示帧率

您可以使用setStatisticsDisplayVisibility方法启用实时渲染统计信息。 统计信息可帮助您深入了解模型的性能。

统计信息显示在 WedViewer 的左上角

下表描述了统计信息显示面板中包含的数据:

>>>点击申请HOOPS试用icon-default.png?t=N7T8http://x7pfmmn259623uby.mikecrm.com/l9292M9     如果您当前也有3D模型格式转换、3DWEB轻量化或数据发布的需求,欢迎留言~

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

os.walk()遍历文件夹/文件

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Backend - Dbeaver

目录 一、说明 二、下载并安装 (一)官网下载 (二)安装 三、使用 (一)操作步骤 (二)相关问题:无法加载驱动类oracle.jdbc.oracledriver 1. 新建驱动 2. 再重新连接数据库 …

VR全景对旅游业有什么帮助,如何助力旅游业实现新的旅游形式

引言: 旅游业是一个充满机遇的行业,而虚拟现实(VR)全景技术正逐渐改变着旅游业的面貌,通过提供身临其境的体验,VR全景成为了旅游业的新宠,将旅游带入了一个全新的数字化时代。 一、打破地域限制…

AI智能降重软件大全,免费最新AI智能降重软件

在当今信息爆炸的时代,内容创作者们面临着巨大的写作压力,如何在保持高质量的前提下提高效率成为摆在许多人面前的难题。AI智能降重软件因其独特的算法和功能逐渐成为提升文案质量的得力助手。本文将专心分享一些优秀的AI智能降重软件。 147SEO改写软件 …

Vue3+ts----根据配置项,动态生成表单

这里使用的UI框架是ElementPlus,更换其他组件直接更换constant.ts中的type配置和对应的Form组件即可. 大家可以npm install elementplus_dy_form来体验。 思路: 1.这里需要使用h函数方便控制要渲染的表单 2.传递type作为组件或html元素进行渲染&#xff…

NestJs的基础使用

初始化项目 创建项目 // 安装脚手架(只需要安装一次,因为这个是全局的) npm i -g nestjs/cli // 创建项目 nest new project-name // (该过程有个选择包管理工具的,我选的yarn)启动项目 yarn run start:dev // 可以在浏览器访问localhost:3000 输出helloWorld控制器和路由 …

MDK官网如何下载stm32支持包

网站:https://www.keil.com/demo/eval/arm.htm 1 2 3点这个下载

4.Java程序设计-基于springboot得在线考试系统

编程技术交流、源码分享、模板分享、网课分享 企鹅🐧裙:772162324 摘要: 本文设计并实现了一款基于Spring Boot框架的在线考试系统小程序。随着远程学习和在线教育的普及,对于灵活、便捷的在线考试系统的需求逐渐增加。该小程序…

视频推拉流直播点播EasyDSS平台点播文件加密存储的实现方法

视频推拉流直播点播系统EasyDSS平台,可提供流畅的视频直播、点播、视频推拉流、转码、管理、分发、录像、检索、时移回看等功能,可兼容多操作系统,还能支持CDN转推,具备较强的可拓展性与灵活性,在直播点播领域具有广泛…

低代码与MES:智能制造的新篇章

一、引言 随着工业4.0和智能制造的兴起,企业对于生产过程的数字化、智能化需求日益迫切。制造执行系统(MES)作为连接计划层与控制层的关键信息系统,在提升生产效率、优化资源配置、保障产品质量等方面发挥着重要作用。然而&#…

微信小程序 - 创建 ZIP 压缩包

微信小程序 - 创建 ZIP 压缩包 场景分享代码片段导入 JSZip创建ZIP文件追加写入文件测试方法参考资料 场景 微信小程序只提供了解压ZIP的API,并没有提供创建ZIP的方法。 当我们想把自己处理好的保存,打包ZIP保存下来时就需要自己实现了。 分享代码片段…

2024 IEEE Fellow名单出炉(附部分华人获奖理由)

11月22日,美国电子电气工程师学会(IEEE)公布了 2024 年新晋 Fellow 名单。因为这些学术大咖也是访问学者、博士后研究人员及联合培养博士心仪的目标导师,故知识人网小编特编辑此文以飨读者。 IEEE,全称Institute of El…