什么是HOOPS 3D图形系统?
HOOPS 3D图形系统(HOOPS/3DGS)是一款高性能3D图形工具包,可供开发人员为Windows和UNIX操作系统以及互联网构建应用程序。HOOPS/3DGS高度优化的数据结构和算法大大简化了2D和3D、交互式、矢量和光栅图形CAD/CAM/CAE、科学可视化和地理信息系统(GIS)应用程序的开发。
HOOPS/3DGS包含:
- 提供创建、管理、查询和编辑应用程序图形信息的子程序库,并与应用程序的目标代码相链接。这些库可以动态或静态链接。
- 大量支持演示和集成代码,帮助开发人员了解HOOPS/3DGS并将其合并到他们的应用程序中。
- 应用程序开发人员将其核心应用程序逻辑与HOOPS/3DGS和用户界面相结合,以开发交互式图形应用程序。
1、HOOPS/3DGS架构
HOOPS/3DGS是一种具有数据库架构的保留模式图形系统。HOOPS/3DGS提供用于创建、编辑、操作和查询存储在数据库中的图形信息的算法。这将图形数据封装在HOOPS中,并将其与接口层耦合。这种数据结构与算法的耦合是面向对象设计的基本原则。
数据封装、消息传递、实例化和属性继承也是HOOPS/3DGS的基本设计元素。虽然HOOPS/3DGS不是作为类库实现的,但其架构采用了面向对象设计的这些基本方面。
HOOPS/3DGS库直接集成到应用程序的构建过程中,即与应用程序的其他目标代码链接以生成可执行映像。开发人员使用HOOPS/3DGS API从其应用程序的其他组件中创建和管理几何对象。
如下图所示的HOOPS/3DGS图形系统由两个主要子组件组成:称为HOOPS/3DGS线段树的图形对象数据库和称为HOOPS/3DGS结构化设备接口的渲染管道。
HOOPS/3DGS线段树和渲染管道
2、保留模式图形系统
立即渲染图元而不将其存储在显示列表中的图形系统称为立即模式系统。将图形信息存储在专门为图形显示设计的数据结构中的系统称为保留模式图形库。HOOPS/3DGS是一个保留模式图形库。在保留模式系统中保留图形图元具有显著的优势:
性能:如果图形系统(而非应用程序)保留了所有基元的副本,它就可以更快地修改和遍历图形信息,并进行优化,从而加快渲染场景的速度。例如,图形系统可以计算边界体积,该边界体积存储一组基元的位置和大致范围。在渲染过程中,许多基元可能在屏幕上不可见。边界体积允许系统快速确定一组基元是否在屏幕上,以便只有实际可见的图形基元才会发送到显示硬件进行渲染。
选择:图形系统的一个重要功能是执行选择(也称为“拾取”),其中图形系统确定用户用光标指向哪个图形基元。如果没有显示列表,图形系统执行选择的唯一方法是让应用程序重新发送所有基元,因为它们未被图形系统保留。显示列表允许图形系统更快地执行选择,通常快一个数量级。
窗口系统支持:如果包含场景的窗口被另一个窗口部分遮挡,然后又被移到前面,则需要重新绘制窗口新暴露的区域。如果图形系统将图元存储在显示列表中,则可以重新绘制窗口而无需返回应用程序。(窗口的图像也可以存储为位图,从而允许立即重新绘制受损区域。HOOPS/3DGS也支持这种方法。)
全局渲染算法:许多类型的渲染器都需要所有图形基元的副本。例如,对于光线追踪和辐射度,一个对象的颜色会受到其他对象的影响,因此渲染器需要所有基元的数据才能开始绘制其中任何一个。这种高级渲染算法需要使用显示列表来存储基元。
3、对象数据库
HOOPS/3DGS数据库将图形数据存储在称为“段”的对象中。将段视为几何图形和描述如何绘制几何图形的属性的容器。段与段之间的关系是分层的,被描述为“父子”配对,或者一个段“拥有”其他段(其子段)。映射是一对多的;也就是说,一个父段可能有许多子段,但每个子段都有一个唯一的父段。
段可以多次实例化并插入到树的多个位置。此过程称为包含,如“一个段包含另一个段”。通常,只需要实例化段的属性集并将其供其他段使用;此过程称为样式化。样式段部分下面将更详细地讨论包含和样式化。
这些段与段之间的关系形成了分层树结构,更具体地说,是有向无环图。此结构支持属性继承。子段具有与其父段相同的属性值,除非它们对某些属性有自己的本地设置。
HOOPS/3DGS数据库结构通过将几何数据划分为具有同类属性的对象来确保最佳速度。这最大限度地减少了在绘制图形信息期间更改硬件显示上下文的需要,并优化了显示列表吞吐量。
4、坐标和坐标系
在HOOPS/3DGS中,与大多数图形系统一样,空间中的点使用笛卡尔坐标指定。HOOPS/3DGS例程始终采用三个x、y和z坐标;这意味着HOOPS/3DGS中的所有点都是三维的。但是,z值为零表示二维对象,因此HOOPS/3DGS会根据需要使用更优化的二维渲染例程。
HOOPS/3DGS中的坐标使用单精度浮点数指定。但是,默认情况下,C和C++使用双精度(64位)数字执行浮点运算。这些双精度数字在传递给HOOPS/3DGS调用时会转换为单精度。
HOOPS/3DGS包含一个双精度模块,允许在创建和查询几何图形时使用双精度浮点值。它通过提供所有HOOPS/3DGS例程的变体来实现这一点,这些例程用于创建、编辑和查询几何图形,以及多个坐标系转换例程。
5、通过引用插入几何图形
当几何图形插入HOOPS/3DGS数据库时,HOOPS/3DGS会复制所提供的数据;这对于保留模式系统来说是正常的,并且对于数据封装是必要的。对于某些类型的几何图形,这些数据可能非常大。制作副本会浪费空间,并使应用程序比需要的更大、更慢。
为了避免这个问题,HOOPS/3DGS允许通过引用插入网格、壳和图像。通过引用插入几何图形会告诉HOOPS/3DGS可以不复制数据。对于网格,此数据是点列表。对于壳,它是点列表和面列表。对于图像,它是图像数据。
6、接口
HOOPS/3DGS可以从C、C++、C#和Java调用。
↓ 席位有限,立即扫码报名 ↓
会务专线|18166486035(微信同号)
1月15日(星期三)上午10:00-11:00
2024 HOOPS Luminate专场峰会 • 中国场期待您的莅临!
慧都科技已经为100+企业提供一站式的3D开发解决方案,负责3D ACIS Modeler、Parasolid、HOOPS & CEETRON等3D产品的销售、试用、技术支持,赋能航空航天、建筑工程、船舶制造、机械加工、汽车等客户成功构建工程应用!欢迎咨询:023-6866168
↓↓扫码关注“HOOPS技术”,及时获取更多3D资讯↓↓
发表评论