前言
本文讲述如何改变rviz::VisualizationManager类中3D视图的背景颜色。
实现效果:
1、背景全黑
2、背景蓝色
实现
诚然,在命令端口输入rviz,在程序里面改变背景颜色是十分便捷的,但是如果编程中需要用到QT+RVIZ,就需要通过程序实现改变背景的颜色。
特别的,对于rviz::VisualizationManager,翻看API参考文档可以发现这个类有一个成员变量是rviz::ColorProperty * background_color_property_,但是很不巧,它是protected变量,再看看,它有一个成员函数updateBackgroundColor (),也很不巧,它是一个私有槽函数。
再点进去看看这个函数说的是什么
void VisualizationManager::updateBackgroundColor()
{
render_panel_->setBackgroundColor( qtToOgre( background_color_property_->getColor() ));
queueRender();
}
很简单,调用成员rener_panel_ 的成员函数setBackgroundColor(其实是rviz::RenderPanel的父类rviz::QtOgreRenderWindow的公开成员函数)来设置背景颜色,再调用queueRender()。
那么一个很自然的想法就是直接调用上述的函数,把想要的颜色替换掉上述参数就可以。
#include "rviz/visualization_manager.h"
#include "rviz/render_panel.h"
#include "rviz/properties/parse_color.h"
...
render_panel_->setBackgroundColor( rviz::qtToOgre(QColor(Qt::white)));
queueRender();
其中关于如何使用QT+RVIZ可以到官网查看或者看我的另一篇博文,里面也有官文的链接。