45 const QColor& qcolor = color_property->
getColor();
46 std_msgs::ColorRGBA color;
47 color.r = qcolor.redF();
48 color.g = qcolor.greenF();
49 color.b = qcolor.blueF();
50 color.a = (alpha_property ==
nullptr) ? 1.0 : alpha_property->
getFloat();
55 : scene_manager_(scene_manager), scene_node_(scene_node)
75 manual_object_->begin(
"BaseWhiteNoLighting", Ogre::RenderOperation::OT_LINE_STRIP);
76 for (
const nav_2d_msgs::Point2D& msg_point : polygon.points)
85 const std::string& material_name)
86 : scene_manager_(scene_manager), scene_node_(scene_node), material_name_(material_name)
107 nav_2d_msgs::ComplexPolygon2D complex;
108 complex.outer = polygon;
116 if (vertices.empty())
120 unsigned int vertex_count = vertices.size();
136 for (
unsigned int i = 0; i < vertex_count; i += 3)
138 std::vector<Ogre::Vector3> corners(3);
139 for (
size_t c = 0; c < 3; c++)
141 corners[c] = Ogre::Vector3(vertices[i + c].x, vertices[i + c].y, z_offset);
143 Ogre::Vector3 normal = (corners[1] - corners[0]).crossProduct(corners[2] - corners[0]);
146 for (
size_t c = 0; c < 3; c++)
158 static uint32_t count = 0;
160 ss <<
"PolygonMaterial" << count++;
163 Ogre::MaterialManager::getSingleton().create(
name_, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
165 material_->setCullingMode(Ogre::CULL_NONE);
167 Ogre::Technique* technique =
material_->getTechnique(0);
168 technique->setLightingEnabled(
false);
169 technique->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);
170 technique->setDepthWriteEnabled(
false);
176 Ogre::MaterialManager::getSingleton().remove(
name_);
182 "Draw the outline, the filled-in polygon, or both", parent, changed_slot);