hoops编程指南:04.4用户交互突出显示

news2025/7/19 8:15:55

user interaction highlighting

1.突出显示

在执行选择之后,通常需要向用户提供关于所选内容的视觉反馈。例如,场景可能包含由多个几何体表示的飞机机翼的图片。然而,HOOPS Visualize对飞机机翼这一独特概念一无所知。因此,如果要在用户选择整个机翼的任何部分后高亮显示整个机翼,则需要找出所有相关的几何图形并将其全部高亮显示。根据模型的复杂性,这可能是一项非常重要的任务。

本节将重点介绍几何图形的一些突出显示方式以及轻松管理突出显示的策略。如何表示高亮显示的细节取决于开发人员。可以选择修改对象的颜色、线宽、面图案、可见性、着色模式或这些属性和其他属性的任意组合。您还必须选择高亮显示算法,这将在下面讨论。

1.1定义命名样式

在HOOPS Visualize中,样式是应用于段的属性集合。样式应用于几何体以在场景中区分几何体。这也是应用高亮效果的推荐方法。在复杂的段树中,可能有一些段没有层次关系,但却共享公共属性。应用样式的一种方法是根据需要为每个段单独设置属性。然而,这不仅效率低,而且不方便——尤其是当修改涉及大量段时。相反,定义和使用样式提供了一种获取一组属性并将其应用于许多线段的便捷方式。可以在线段上设置的任何属性也可以在样式中设置。

创建样式的推荐方法是创建一个新段(可能在样式库中),并在该段上设置定义样式的属性。可以为样式段指定名称。如果要将该样式应用于高亮显示的几何图形,可以调用Define_Highlight,引用样式段的名称。UnDefine_Higlight将删除样式。

1.2突出显示线段

在段级别高亮显示只需打开段并使用先前命名的样式调用Define_Higlight即可。请注意,这将影响打开的段,以及对要修改属性没有自己选项的任何子段。如果希望所有子分段都具有相同的高亮显示属性,而不考虑本地显式设置,则可以使用属性attribute lock选项:

HC_Set_Rendering_Options("attribute lock = color"); /* lock the value of color down the tree */

当您想要高亮显示整个段树时,这非常有用。例如,假设数据库表示具有多个图层的图形,其中包含各种系统,例如HVAC、管道和电气系统。如果GUI处于“图层高亮显示”模式,则可以通过在顶层父段设置所需的高亮显示属性,然后在该段中设置attribute lock来高亮显示选定的图层。

1.2.1选择高亮算法

高亮算法的选择应基于您希望高亮显示的方式。有三种模式可供选择:“InPlace”、“Overlay”和“Spriting”。该模式在Define_Higlight参数中的“quick moves”选项设置。

InPlace

如果要使用部分透明的高亮显示样式,则使用“InPlace”高亮显示选项。InPlace将导致Visualize不绘制高亮显示的几何体本身,因为这样做会导致几何体的颜色与透明高亮显示的颜色混合。因此,根本不绘制几何图形-highlightingj就是“在其位置”的绘制。使用这种高亮显示方法的一个缺点是,当几何体最终取消高亮显示时,必须重新绘制场景。这与“overlay”或“spriting”高亮显示选项形成对比,这些选项可以取消高亮显示而无需重新绘制场景。

Overlay

覆盖高光绘制在场景中所有其他几何体的顶部。这意味着,如果高亮显示部分被遮挡的几何体,则覆盖高亮显示将导致该几何体在视觉上“弹出”,忽略z值。取消高亮显示不会触发重画。

Spriting

Spriting是默认的高光算法。在这种高亮显示模式中,z值被保留,因此您不会得到覆盖高亮显示的弹出效果。它也相当快,尽管与“InPlace”不同,它确实需要绘制两次几何体-一次用于几何体本身,一次用于高光。

1.2.2 Fine-tuning highlight behavior

使用Define_Higlight时,可以使用各种选项来实现所需的高亮显示行为。例如,“passive”选项意味着锁定的属性不会被覆盖。“append”选项将覆盖以前高亮显示定义的任何冲突样式。有关Define_Higlight的详细信息,请参阅API参考手册。

Example

下面是一个突出显示段的示例。为了找到命名样式,必须在最终使用该样式的段或祖先段中定义该样式:

// creating the highlight style, in this case a root segment contains the highlight attributes which are simply yellow for all geometry
HC_KEY styleKey = HC_Open_Segment("/style");
    HC_Set_Color("geometry=yellow");
HC_Close_Segment();
// inserting the shell and setting initial attributes
HC_Open_Segment_By_Key(sceneKey);
    HC_Insert_Shell(pcount, pts, flist_count, faces);
    HC_Set_Color("faces=white, edges=black, windows=white");
    HC_Set_Visibility("edges=on");
    // here is where the style is defined
    HC_Define_Named_Style("myHighlightStyle", "/style");
HC_Close_Segment();

设置场景后,实际高亮显示将按以下方式进行:

HC_Define_Highlight(1, &sceneKey, "myHighlightStyle", "quick moves=overlay");

在这里插入图片描述

1.3突出显示一个对象

段通常包含表示模型离散部分的图形图元。假设我们有一个“小行星”段,每个小行星都有一个外壳。如果GUI处于“单个小行星选择模式”,那么我们需要突出显示单个小行星。在分段级别设置高亮显示属性将不起作用,因为所有小行星都将受到该新属性的影响。因此,我们需要修改数据库,以便只使用新的高亮属性绘制选定的对象。
实现此目的的一种强力方法是将对象(move_By_Key)移动到高亮显示段,然后将其移回原始段以取消高亮显示。然而,这对性能有很大影响,因为更改片段的内容会导致HOOPS触发全屏重绘。为了避免这种全屏重画并提供非常快速的高亮显示/取消高亮显示,应使用一种称为“quickmoves include/reference highlighting”的方法。

1.3.1 quickmoves include/reference highlighting

1.4突出显示查找

1.5HOOPS/MVO Highlighting example

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

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

相关文章

ES6 入门教程 28 异步遍历器 28.1 同步遍历器的问题 28.2 异步遍历的接口 28.3 for await...of

ES6 入门教程 ECMAScript 6 入门 作者:阮一峰 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录ES6 入门教程28 异步遍历器28.1 同步遍历器的问题28.2 异步遍历的接口28.3 for await...of28 异步遍历器 28.1 同步遍历器的问题 Itera…

【教学类-16-02】20221125《世界杯七巧板A4整页-随机参考图七巧板 3份一页》(大班)

效果展示: 单页效果 多页效果 预设样式: 背景需求: 2022年11月24日,大1班随机抽取的9位幼儿制作了9张拼图,发现以下三个问题: 1、粉红色辅助纸选择量多——9份作业有4位幼儿的七巧板人物是粉红色的 2、…

【计算机网络】以太网供电PoE - Power over Ethernet

.5BG? ?: J^ ~P YG: ~5PY^ 5&Y^ .#&J. 7&G7^. ~##?. :Y##PY?!~^:... .5#Y^ .7P&&&##BBBBB#B^ …

神经网络和深度学习-均方误差Mean Square Error

均方误差Mean Square Error 测量预测值Ŷ与某些真实值匹配程度。MSE 通常用作回归问题的损失函数。 由单个样本训练损失来推导出整个训练集的MSE MSE1n∑i1n(Yi−Y^i)2\mathrm{MSE}\frac{1}{n} \sum_{i1}^{n}\left(Y_{i}-\hat{Y}_{i}\right)^{2} MSEn1​i1∑n​(Yi​−Y^i​)…

02. Docker安装记录卸载

notice: 本文所有内容参考文档,具体没有任何价值 Linux(CentOS 7 ) 1. 安装 查看系统信息: # 系统版本是3.0以上的; [rootVM-8-4-centos /]# uname -r 3.10.0-1160.76.1.el7.x86_64 [rootVM-8-4-centos /]# cat /et…

nrComm Lib组件以及串行通信任务的类

nrComm Lib组件以及串行通信任务的类 nrCommLib被描述为VCL例程的一组Delphi组件以及串行通信任务的类。该库能够帮助用户和开发人员访问不同的设备,包括数据和语音调制解调器、条形码扫描仪、蓝牙、人机接口设备、串行端口、USB、GSM、GPS、LPT SS等。它能够为几乎…

LabVIEW为可执行文件构建安装程序时找不到运行引擎

LabVIEW为可执行文件构建安装程序时找不到运行引擎 在为可执行文件构建安装程序时包含一个特定的运行时引擎安装程序,但找不到它。已经检查了运行时引擎是否使用NI-MAX安装。 “运行时引擎”字段下列出的项目未在“选择源”对话框中显示任何项目。 解决方案 有时运…

看透react源码之感受react的进化

写在前面 网上有许多关于react源码解读的文章,其中有很多都只是单纯贴源码,罗列变量名。其实大家都知道这个英文怎么读,直译也大概知道意思,但是这个英文在react中起到什么作用,并没有说的很通俗明白。 对于刚刚接触…

推荐系统常见算法分类

文章目录1.基本分类2.基于算法思想的分类3.基于应用问题的分类该系列历史文章: 1.推荐系统最通俗介绍 资料整理,来源于北大刘宏志教授讲座内容。 1.基本分类 常见的推荐系统算法分类如下: 算法思想 基于人口统计学、基于内容、协同过滤、基…

Django练习

目录 基础命令 一、新建项目 二、配置 三、运行 Bootstrap下载 jQuery下载 基础命令 #创建项目 django-admin startproject [项目名称] #创建app应用 python manage.py startapp [app名称] #运行 python manage.py runserver [端口号] #创建数据模型和数据表结构 python…

HTML PDF 查看器--RAD PDF 3.33 FOR ASP.NET

RAD PDF 的主要特点 基于 HTML 的 PDF 阅读器 客户端 PDF 编辑器 功能丰富的 PDF 表单填写器 交互式 PDF 表单设计器 保护 PDF 内容 签署和认证 PDF 文件 广泛的兼容性 & 在您的服务器上 将 PDF 集成到您的工作流程中 使用 ASP.NET 或 ASP.NET Core / 5 / 6 破解版RAD PDF…

pytorch深度学习实战lesson27

第二十七课 批量归一化 下面来讲批量归一化,现在几乎所有主流的卷积神经网络都是或多或少的用了批量归一化这个层。虽然我们之前看到的那些层比如 pooling 或 convolution,其实他们在80年代就出现过了,只是现在我们把它做得更深更大。批量归一…

Kanzi Shader入门

1. 版本 kanzi默认支持Opengl ES 2.0,在qnx平台可以支持到ES 3.0 2. 着色器 kanzi只支持【顶点着色器】和【片段着色器】 3. kanzi studio 无法直接使用shader,需要通过画刷和材质间接使用 在【普通节点】上设置背景画刷-【材质画刷】在【材质画刷…

原生Android 以面向对象的方式操作canvas

Android 自定义view 用canvas去画图形, 都是以面向过程的方式去一笔一笔的画, 而且画的图形也不能支持添加事件, 而html, js在这方面有大量的封装好的canvas框架, 很奇怪的是android上我也没有搜到类似的封装框架, 我只是个web前端开发者, 可能是我对android不了解没有搜索到&a…

Nodejs中包的介绍及npm安装依赖包的多种方法

文章目录1 包的介绍1.1 什么是包1.2 包的来源1.3 为什么需要包1.4 从哪里下载包1.5 如何下载包2 npm2.1 npm安装依赖包2.2 装包后多了哪些文件2.3 安装指定版本的包1 包的介绍 1.1 什么是包 Nodejs中的第三方模块又叫做包 就像电脑和计算机指的是相同的东西,第三…

Wireshark Ethernet and ARP 实验—Wireshark Lab: Ethernet and ARP v7.0

Wireshark Lab: Ethernet and ARP v7.0 1. Capturing and analyzing Ethernet frames 清除浏览器缓存 使用wireshark抓包并请求网页 修改“捕获数据包列表”窗口,仅显示有关 IP 以下协议的信息。 抓包干扰较多,故分析作者的数据包回答下列问题 包含…

Apollo 应用与源码分析:Monitor监控 - 基本概念与入口分析

Monitor 系统监控 目录 基本概念 代码结构分析 整体逻辑分析 基本概念 整体分类 该模块包含用于检查硬件状态和监视系统运行状况的代码等系统级软件。 在Apollo 5.5中,监视模块现在执行以下检查: 运行模块状态监控数据完整性监控数据频率监视系统运行状况(例…

springboot 点滴(3)springboot ThreadLocal实现单机权限认证

Springboot中权限认证的基本方案: 可以对URL进行HandlerInterceptor拦截,然后权限验证。 Client登录成功后,每次发送请求时,会将token等信息存放到header中。 Server收到请求,在HandlerInterceptor中从header获取用户…

3.4、可靠传输

3.4、可靠传输 3.4.1、基本概念 使用差错检测技术\color{red}差错检测技术差错检测技术(例如循环冗余校验 CRC ),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码\color{red}误码误码(比特错误)。 数据链路层向上层提供的服务类…

hive中连续N天登录问题、topN问题、拉链表实现

一、连续N天登录问题 一般采用开窗函数来实现 首先需要用到窗口函数的向下取值 窗口函数lead 功能:用于从当前数据中基于当前行的数据向后偏移取值 语法:lead(colName,N,defautValue) colName:取哪一列的值 N&#xf…