admin 管理员组文章数量: 1184232
视框控件
在视窗的基础上,可选择添加控制组件用于完成操作。基础的控件有按钮、滑条、单选框、字符串信息等。
构建相机
首先,构建一个Pangolin相机对象:
#include<string>#include<iostream>#include"main.h"intmain(){
/*-------- 构建Pangolin相机 --------*/// 视窗
pangolin::CreateWindowAndBind("Viewer",640,480);// 启动深度测试glEnable(GL_DEPTH_TEST);// 相机
pangolin::OpenGlRenderState s_cam(
pangolin::ProjectionMatrix(640,480,420,420,320,240,0.1,1000),
pangolin::ModelViewLookAt(-1,1,-1,0,0,0, pangolin::AxisY));while(!pangolin::ShouldQuit()){
// 清空颜色、深度缓存区glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// 背景颜色glClearColor(0.1f,0.2f,0.3f,0.3f);// 激活相机对象
d_cam.Activate(s_cam);// 帧循环
pangolin::FinishFrame();}return0;}构建控制面板、交互视图
控制面板的构建使用如下语句进行:
pangolin::CreatePanel(const std::string& name).SetBounds(Attach bottom, Attach top, Attach left, Attach right);name:控制面板的Tag名称panel_tagSetBounds:设置控制面板的大小、位置
一般将控制面板放置在视窗的左侧,而将交互式图放置在视窗的右侧:
// 交互视图同控制面板分界constint UI_WIDTH =180;// 右侧:交互视图
pangolin::View& d_cam = pangolin::CreateDisplay().SetBounds(0.0,1.0, pangolin::Attach::Pix(UI_WIDTH),1.0,-640.0f/480.0f).SetHandler(new pangolin::Handler3D(s_cam));// 左侧:控制面板
pangolin::CreatePanel("ui").SetBounds(0.0,1.0,0.0, pangolin::Attach::Pix(UI_WIDTH));
此处,定义一个常量
UI_WITH
作为两者的分界面,随后使用
pangolin::Attach::Pix()
获得对应的像素信息。设置控制面板Tag名称为
ui
,实现效果如下:
构建基础控件
Pangolin将所有“控件”视为一个对象
pangolin::Var
,可用于构建按钮、滑条、控制对象、信息显示等内容:
按钮
按钮控件为Bool类型,无法反转的控件:
pangolin::Var<bool>Button(const std::string& name,constbool& value,bool toggle);name:按钮控件的Tag,填写格式:panel_tag.controller_tagvalue:控件默认值toggle:控件是否可以反转,按钮控件应填写false
例如,实现一个按钮:
pangolin::Var<bool>A_Button("ui.a_button",false,false);效果如下:
版权声明:本文标题:从新手到高手:Pangolin库的控制面板艺术与实践 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1770838201a3538143.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论