点信息标注_BillboardTextActor3D


开发环境:

  1. Windows 11 家庭中文版
  2. Microsoft Visual Studio Community 2019
  3. VTK-9.3.0.rc0
  4. vtk-example
  5. 参考代码

demo解决问题:点附近创建左边或其他信息,且信息面板显示状态不受相机缩放、旋转影响
在这里插入图片描述


prj name: BillboardTextActor3D

#include <vtkActor.h>
#include <vtkBillboardTextActor3D.h>
#include <vtkMinimalStandardRandomSequence.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>
#include <vtkTextProperty.h>#include <iostream>
#include <sstream>
#include <string>namespace {
void ActorCallback(vtkObject* caller, long unsigned int vtkNotUsed(eventId),void* clientData, void* vtkNotUsed(callData))
{auto textActor = static_cast<vtkBillboardTextActor3D*>(clientData);auto actor = static_cast<vtkActor*>(caller);std::ostringstream label;label << std::setprecision(3) << actor->GetPosition()[0] << ", "<< actor->GetPosition()[1] << ", " << actor->GetPosition()[2]<< std::endl;textActor->SetPosition(actor->GetPosition());textActor->SetInput(label.str().c_str());
}void RandomPosition(double p[3], double const& min_r, double const& max_r,vtkMinimalStandardRandomSequence* rng);} // namespaceint main(int, char*[])
{vtkNew<vtkNamedColors> colors;// For testingvtkNew<vtkMinimalStandardRandomSequence> rng;// rng->SetSeed(8775070);rng->SetSeed(5127);// Create a renderervtkNew<vtkRenderer> renderer;renderer->SetBackground(colors->GetColor3d("DarkSlateGray").GetData());// Create a render windowvtkNew<vtkRenderWindow> renderWindow;renderWindow->AddRenderer(renderer);renderWindow->SetWindowName("BillboardTextActor3D");// Create an interactorvtkNew<vtkRenderWindowInteractor> renderWindowInteractor;renderWindowInteractor->SetRenderWindow(renderWindow);// Create a spherevtkNew<vtkSphereSource> sphereSource;//公用一个data sourcesphereSource->SetCenter(0.0, 0.0, 0.0);sphereSource->SetRadius(1.0);auto min_r = -10.0;auto max_r = 10.0;for (auto i = 0; i < 10; ++i){if (i == 0){// Create an actor representing the originvtkNew<vtkPolyDataMapper> mapper;mapper->SetInputConnection(sphereSource->GetOutputPort());vtkNew<vtkActor> actor;actor->SetMapper(mapper);actor->SetPosition(0, 0, 0);actor->GetProperty()->SetColor(colors->GetColor3d("Peacock").GetData());renderer->AddActor(actor);}// Create a mappervtkNew<vtkPolyDataMapper> mapper;mapper->SetInputConnection(sphereSource->GetOutputPort());// Create an actorvtkNew<vtkActor> actor;actor->SetMapper(mapper);actor->SetPosition(0, 0, 0);actor->GetProperty()->SetColor(colors->GetColor3d("MistyRose").GetData());// Setup the text and add it to the renderervtkNew<vtkBillboardTextActor3D> textActor;textActor->SetInput("");textActor->SetPosition(actor->GetPosition());textActor->GetTextProperty()->SetFontSize(12);textActor->GetTextProperty()->SetColor(colors->GetColor3d("Gold").GetData());textActor->GetTextProperty()->SetJustificationToCentered();renderer->AddActor(actor);renderer->AddActor(textActor);// If you want to use a callback, do this:// vtkNew<vtkCallbackCommand> actorCallback;// actorCallback->SetCallback(ActorCallback);// actorCallback->SetClientData(textActor);// actor->AddObserver(vtkCommand::ModifiedEvent, actorCallback);// Otherwise do this:double position[3];RandomPosition(position, min_r, max_r, rng);//随机生成坐标actor->SetPosition(position);std::ostringstream label;label << std::setprecision(3) << actor->GetPosition()[0] << ", "<< actor->GetPosition()[1] << ", " << actor->GetPosition()[2]<< std::endl;textActor->SetPosition(actor->GetPosition());textActor->SetInput(label.str().c_str());}renderWindow->Render();renderWindow->SetWindowName("BillboardTextActor3D");renderWindowInteractor->Start();return EXIT_SUCCESS;
}namespace {void RandomPosition(double p[3], double const& min_r, double const& max_r,vtkMinimalStandardRandomSequence* rng)
{for (auto i = 0; i < 3; ++i){p[i] = rng->GetRangeValue(min_r, max_r);rng->Next();}
}} // namespace

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

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

相关文章

2022最新版-李宏毅机器学习深度学习课程-P34 自注意力机制类别总结

在课程的transformer视频中&#xff0c;李老师详细介绍了部分self-attention内容&#xff0c;但是self-attention其实还有各种各样的变化形式&#xff1a; 一、Self-attention运算存在的问题 在self-attention中&#xff0c;假设输入序列&#xff08;query&#xff09;长度是N…

2023 electron最新最简版windows、mac打包、自动升级详解

这里我将讲解一下从0搭建一个electron最简版架子&#xff0c;以及如何实现打包自动化更新 之前我有写过两篇文章关于electron框架概述以及 常用api的使用&#xff0c;感兴趣的同学可以看看 Electron桌面应用开发 Electron桌面应用开发2 搭建electron 官方文档&#xff1a;ht…

Vscode Vim自动切换

在VsCode里安装了Vim插件&#xff0c;由于Vim插件存在Normal和Insert两种模式&#xff0c;会需要经常性的按shift切换中英文&#xff0c;太过麻烦&#xff0c;本文介绍一下如何通过im-select来解决。 首先先确保自己的电脑里装有英文语言包&#xff0c;win10系统下可以使用Win…

【机器学习4】降维

常见的降维方法有主成分分析、 线性判别分析、 等距映射、 局部线性嵌入、 拉普拉斯特征映射、 局部保留投影等。 1 PCA最大方差角度理解 PCA无监督学习算法。 PCA的目标&#xff0c; 即最大化投影方差&#xff0c; 也就是让数据在主轴上投影的方差最大。 在黄线所处的轴上&…

Windows环境下编译OLLVM源码(VS2022)

windows环境下编译OLLVM 13.x VisualStudio配置下载OLLVM13.xollvm的使用 网上关于windows环境编译ollvm信息比较杂乱&#xff0c;在此编译成功的基础上做一下总结&#xff01; VisualStudio配置 1&#xff0c;正常配置C桌面环境 2&#xff0c;在单个组件中选择用于Windows得C…

【算法与数据结构】77、LeetCode组合

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;如果k是固定的&#xff0c;最直接的方法就是建立k个for循环&#xff0c;将结果全部压入result容器中。…

3、FFmpeg基础

1、FFmpeg 介绍 FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库。 2、FFmpeg 组成 - libavformat&#xff1a;用于…

改进YOLO系列:12.Repulsion损失函数【遮挡】

1. RepLoss论文 物体遮挡问题可以分为类内遮挡和类间遮挡两种情况。类间遮挡产生于扎堆的同类物体,也被称为密集遮挡(crowd occlusion)。Repulsion损失函数由三个部分构成,yolov5样本匹配,得到的目标框和预测框-一对应第一部分主要作用:预测目标框吸引IOU最大的真实目标框,…

论文阅读——InternImage(cvpr2023)

arxiv&#xff1a;https://arxiv.org/abs/2211.05778 github&#xff1a;https://github.com/OpenGVLab/InternImage 一、介绍 大部分大模型都是基于transformer的&#xff0c;本文是一个基于CNN的视觉基础模型。使用可变性卷积deformable convolution作为核心操作&…

「Verilog学习笔记」多功能数据处理器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 注意题目要求输入信号为有符号数&#xff0c;另外输出信号可能是输入信号的和&#xff0c;所以需要拓展一位&#xff0c;防止溢出。 timescale 1ns/1ns module data_…

Scala爬虫如何实时采集天气数据?

这是一个基本的Scala爬虫程序&#xff0c;使用了Scala的http library来发送HTTP请求和获取网页内容。在爬取天气预报信息时&#xff0c;我们首先需要创建一个代理对象proxy&#xff0c;并将其用于发送HTTP请求。然后&#xff0c;我们使用http库的GET方法获取网页内容&#xff0…

后入能先出,一文搞懂栈

目录 什么是栈数组实现链表实现栈能这么玩总结 什么是栈 栈在我们日常编码中遇到的非常多&#xff0c;很多人对栈的接触可能仅仅局限在 递归使用的栈 和 StackOverflowException&#xff0c;栈是一种后进先出的数据结构(可以想象生化金字塔的牢房和生化角斗场的狗洞)。 栈&…

Python Collections:解放你的数据处理能力

导语&#xff1a; Python中的collections模块为我们提供了丰富的数据结构和高效的操作方法&#xff0c;让我们能够更轻松地处理各种数据。本文将详细介绍Python collections的高端操作使用教程&#xff0c;帮助你更好地利用这些强大的工具&#xff0c;提升数据处理的效率和质量…

cortex-A7核 中断实验(按键中断实验)

1.选择按键触发方式 下降沿 2.解决消抖的方法 1&#xff09;ARM中&#xff1a;延时消抖 2&#xff09;linux驱动开发&#xff1a;定时器函数 3.框图 内部流程框图&#xff1a; 需要RCC GPIO EXTI GIC章节 中断触发流程&#xff1a; 4.RCC 章节 1&#xff09;使能GPIOF组 …

医院检验信息管理系统源码 医院LIS系统源码 云LIS源码 区域LIS源码

医院检验信息管理系统源码 医院LIS系统源码 云LIS源码 区域LIS源码 医院检验信息管理系统&#xff0c;利用计算机网络技术、数据存储技术、快速处理技术&#xff0c;对检验科进行全方位信息化管理&#xff0c;使检验科达到自动化运行&#xff0c;信息化管理和无纸化办公的目的…

2023年腾讯云双11活动入口在哪里?

2023年双11腾讯云推出了11.11大促优惠活动&#xff0c;下面给大家分享腾讯云双11活动入口、活动时间、活动详情&#xff0c;希望可以助力大家轻松上云&#xff01; 一、腾讯云双11活动入口 活动地址&#xff1a;点此直达 二、腾讯云双11活动时间 腾讯云双11活动时间跨度很长…

Leetcode—226.翻转二叉树【简单】

2023每日刷题&#xff08;二十四&#xff09; Leetcode—226.翻转二叉树 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* …

facebook分享-错误记录

无法拉起分享 "code":30000,"msg":"fail:API_ERROR: API_ERROR" 1.确认facebook的app_id是否一致 2.确认是否在app_id应用的白名单里&#xff0c;注册meta开发者&#xff0c;然后把主页的user_id给管理员加 A ContentProvider for this app was…