识别鼠标选中actor_vtkInteractorStyleTrackballActor
开发环境:
- Windows 11 家庭中文版
- Microsoft Visual Studio Community 2019
- VTK-9.3.0.rc0
- vtk-example
- 参考代码
- 目的:学习与总结
demo解决问题:通过自定义vtkInteractorStyle类中成员函数OnLeftButtonDown,判断鼠标当前选中的是哪个actor;同理可自定义鼠标右键、滚轮、键盘等事件
关键类:vtkInteractorStyleTrackballActor允许用户与场景中彼此独立的对象进行交互(旋转、平移等);根据实际应用场景有如下常见替换对象:
| vtkInteractorStyleTrackballActor | 作用对象:actor; 形式:Trackball |
| vtkInteractorStyleTrackballCamera | 作用对象:Camera; 形式:Trackball |
| vtkInteractorStyleJoystickActor | 作用对象:actor; 形式:Joystick |
| vtkInteractorStyleJoystickCamera | 作用对象:Camera; 形式:Joystick |
| vtkInteractorStyleImage | 作用对象:vtkImageActor; 形式:绑定使相机的视图平面垂直于x-y平面 |
| … | … |
参考:vtkInteractorStyle详细介绍
#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCubeSource.h>
#include <vtkInteractorStyleTrackballActor.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkSphereSource.h>namespace {// Handle mouse events.
class MouseInteractorStyle5 : public vtkInteractorStyleTrackballActor
{
public:static MouseInteractorStyle5* New();vtkTypeMacro(MouseInteractorStyle5, vtkInteractorStyleTrackballActor);virtual void OnLeftButtonDown() override{// Forward events.vtkInteractorStyleTrackballActor::OnLeftButtonDown();if (this->InteractionProp == this->Cube){std::cout << "Picked cube." << std::endl;}else if (this->InteractionProp == this->Sphere){std::cout << "Picked sphere." << std::endl;}}vtkActor* Cube;vtkActor* Sphere;
};vtkStandardNewMacro(MouseInteractorStyle5);} // namespaceint main(int, char*[])
{vtkNew<vtkNamedColors> colors;// Create a cube.vtkNew<vtkCubeSource> cubeSource;cubeSource->Update();vtkNew<vtkPolyDataMapper> cubeMapper;cubeMapper->SetInputConnection(cubeSource->GetOutputPort());vtkNew<vtkActor> cubeActor;cubeActor->SetMapper(cubeMapper);cubeActor->GetProperty()->SetColor(colors->GetColor3d("MistyRose").GetData());// Create a sphere.vtkNew<vtkSphereSource> sphereSource;sphereSource->SetCenter(2, 0, 0);sphereSource->Update();// Create a mapper.vtkNew<vtkPolyDataMapper> sphereMapper;sphereMapper->SetInputConnection(sphereSource->GetOutputPort());// Create an actor.vtkNew<vtkActor> sphereActor;sphereActor->SetMapper(sphereMapper);sphereActor->GetProperty()->SetColor(colors->GetColor3d("LightGoldenrodYellow").GetData());// A renderer and render window.vtkNew<vtkRenderer> renderer;vtkNew<vtkRenderWindow> renderWindow;renderWindow->AddRenderer(renderer);renderWindow->SetWindowName("SelectAnActor");// An interactor.vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;renderWindowInteractor->SetRenderWindow(renderWindow);// Set the custom stype to use for interaction.vtkNew<MouseInteractorStyle5> style;style->SetDefaultRenderer(renderer);style->Cube = cubeActor;style->Sphere = sphereActor;renderWindowInteractor->SetInteractorStyle(style);renderer->AddActor(cubeActor);renderer->AddActor(sphereActor);renderer->SetBackground(colors->GetColor3d("SlateGray").GetData());renderer->ResetCamera();renderer->GetActiveCamera()->Zoom(0.9);// Render and interact.renderWindow->Render();renderWindowInteractor->Initialize();renderWindowInteractor->Start();return EXIT_SUCCESS;
}相关文章:
识别鼠标选中actor_vtkInteractorStyleTrackballActor
开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码目的:学习与总结 demo解决问题:通过自定义vtkInteractorStyle类中成员函数OnLeftButtonDown,判断鼠标当前选中的是哪个…...
C++ Qt关于启动可执行文件存在的问题
如果软件具有管理员权限。请略过 使用QProcess 如果不具有管理员权限 启动可执行文件,在Debug和Release中没有问题,但是如果可执行文件启动需要管理员权限,调用函数startDetached,win10/11去要在点击用户账户控制弹窗 当使用I…...
微信定时发圈,快人一步不落索
现在的社交媒体运营已经成为了私域流量获取的重要手段,而微信作为最大的社交平台之一,更是吸引了众多使用者。但是,你是否曾经感叹过每天手动发朋友圈的繁琐?是否希望能够事先设置好定时发送的功能,让你的朋友圈自动更…...
数据分析在程序员职业中的重要性及实践应用
一、引言 在当今信息化社会的快速发展中,数据分析已经成为一项重要的职业技能。不论是从事哪个行业,都需要具备一定的数据分析能力。对于程序员而言,掌握数据分析技能不仅能够提升自身在职场中的竞争力,更能够在职业生涯中获得更…...
计算机网络_04_传输层
文章目录 1.什么是传输层2.传输层提供了什么服务3.传输层协议TCP 1.什么是传输层 传输层是OSI七层体系架构中的第四层, TCP/IP四层体系架构中的第二层, 从通信和信息处理两方面来看,“传输层”既是面向通信部分的最高层,与下面的三层一起共同构建进行网…...
3 ALS算法的优化
3.1引入时间遗忘曲线 3.2引入物品特征 3.3时间特征和物品特征加权融合 ALS优化算法的执行步骤 将式(12)对原始评分矩阵进行优化,再代入 式(3)得到了优化后的ALS算法。该算法步骤如下: 第一步:读取数据集,初始化用户-物品评分...
lvsDR模式
LVS-DR模式 是最常用的LVS负载方式 直接路由模式 Lvs调度器 只负责请求和转发 转发到真实服务器 但是响应结果 由后端服务器直接转发给客户端 不需要经过调度器处理 可以减轻Lvs调度器的负担 提高系统性能和稳定性 工作原理: 客户端发送请求到vipLVS调度器接受请求…...
Linux系统下配置王爽汇编语言环境
【步骤一】 先打开命令行,进入root模式,输入如下语句: sudo apt-get install dosbox 该语句的作用主要是安装dosbox 【步骤二】 安装完成之后,命令行输入dosbox 会进入dosbox页面: 【步骤三】 在你的主机中&…...
scss下解决父组件中使用::v-deep修改样式穿透到子组件的问题
开发中经常会用到深度选择器来修改第三方组件库等子组件的样式,这时候就用到样式穿透(style Penetration) 样式穿透的方式有:>>>、 /deep/、::v-deep这三种 使用中发现了一个问题,就是当在父组件使用了v-deep修改自身组件或者第三方…...
Redis的瓶颈在哪里?
Redis是一个开源的非常快速且高效的内存键值存储数据库,常用作缓存、消息队列、会话存储等。 Redis之所以被认为是一个快速的数据库,主要是由于以下几个方面的设计和实现: 基于内存存储: Redis是一个基于内存存储的数据库&#x…...
如何在spark中使用scikit-learn和tensorflow等第三方python包
目录 1 打包需要的python包2 修改spark配置文件 1 打包需要的python包 首先我们用conda包管理工具对我们需要的python包进行虚拟环境创建: conda create -n python37 --copy -y -q python3.7 --prefix /your/workspace/path scikit-learn tensorflow下面是对每个参…...
JS中call()、apply()、bind()改变this指向的原理
大家如果想了解改变this指向的方法,大家可以阅读本人的这篇改变this指向的六种方法 大家有没有想过这三种方法是如何改变this指向的?我们可以自己写吗? 答案是:可以自己写的 让我为大家介绍一下吧! 1.call()方法的原理…...
BUUCTF 镜子里面的世界 1
BUUCTF:https://buuoj.cn/challenges 题目描述: 下载附件,解压得到一张.png图片。 密文: 解题思路: 1、材料只有一张图片,题目提示“镜子里面的世界”结合图片中的英文“look very closely”(翻译为“仔…...
【MySQL--->内置函数】
文章目录 [TOC](文章目录) 一、日期函数二、字符串函数三、数学函数四、其他函数 一、日期函数 current_date();当前日期 current_time();当前时间 current_timestamp();当前时间戳 now();当前时间 date(‘date’);日期 date_sub(date,interval number second/minute/hour/d…...
FFmpeg 从视频流中抽取图片
抽取单个图片 使用 FFmpeg 进行截图:在终端或命令提示符下,使用以下命令进行截图: ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 output.jpg其中, -i input.mp4:指定输入的 H.264 文件路径和名称。 -ss 00:00:05&a…...
Oracle RU 19.21及 datapatch -sanity_checks
参考文档: Oracle Database Patch 35643107 - Database Release Update 19.21.0.0.231017 Datapatch User Guide (Doc ID 2680521.1) datapatch fails with ORA-04061/ORA-4065/ORA-04045/ORA-04067 due to Golden Gate triggers. (Doc ID 2301658.1) 在19.21的…...
云原生周刊:ingress2gateway 发布 | 2023.10.30
开源项目推荐 m9sweeper m9sweeper 是一个免费且简单的 Kubernetes 安全平台。它将行业标准的开源实用程序集成到一站式 Kubernetes 安全工具中,该工具可以帮助大多数 Kubernetes 管理员保护 Kubernetes 集群以及集群上运行的应用程序。 Kairos Kairos 是在 Kub…...
YOLOv8如何关闭AMP混合精度训练?
如果你是使用命令行运行的话,只需要在训练参数中添加–unamp即可.如果你是直接代码运行的话,找到这个参数parser.add_argument(‘–unamp’, action‘store_true’, help‘Unuse Automatic Mixed Precision (AMP) training’),修改为parser.add_argument(‘–unamp’, action‘…...
k8s、kubeadm安装
master(2C/4G,cpu核心数要求大于2) 192.168.86.11 docker、kubeadm、kubelet、kubectl、flannel node01(2C/2G) 192.168.86.22 docker、kubeadm、kubelet、kubectl、flannel node02(2C/2G) 1…...
kinect v2获取人体骨骼数据
#include <iostream> #include <string> #include <WS2tcpip.h> #pragma comment (lib, "ws2_32.lib") #include <chrono> #include <opencv2/opencv.hpp> #include <opencv2/core.hpp> // 核心功能,包括矩阵…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
