////////////////////////////////////////////////////////////////////////////////////////
| 2176 | |
| 2177 | ///////////////////////////////////////////////////////////////////////////////////////////// |
| 2178 | void |
| 2179 | pcl::visualization::PCLVisualizer::resetCameraViewpoint (const std::string &id) |
| 2180 | { |
| 2181 | vtkSmartPointer<vtkMatrix4x4> camera_pose; |
| 2182 | const auto it = cloud_actor_map_->find(id); |
| 2183 | if (it != cloud_actor_map_->end ()) |
| 2184 | camera_pose = it->second.viewpoint_transformation_; |
| 2185 | else |
| 2186 | return; |
| 2187 | |
| 2188 | // Prevent a segfault |
| 2189 | if (!camera_pose) |
| 2190 | return; |
| 2191 | |
| 2192 | // set all renderer to this viewpoint |
| 2193 | rens_->InitTraversal (); |
| 2194 | vtkRenderer* renderer = nullptr; |
| 2195 | while ((renderer = rens_->GetNextItem ())) |
| 2196 | { |
| 2197 | vtkSmartPointer<vtkCamera> cam = renderer->GetActiveCamera (); |
| 2198 | cam->SetPosition (camera_pose->GetElement (0, 3), |
| 2199 | camera_pose->GetElement (1, 3), |
| 2200 | camera_pose->GetElement (2, 3)); |
| 2201 | |
| 2202 | cam->SetFocalPoint (camera_pose->GetElement (0, 3) - camera_pose->GetElement (0, 2), |
| 2203 | camera_pose->GetElement (1, 3) - camera_pose->GetElement (1, 2), |
| 2204 | camera_pose->GetElement (2, 3) - camera_pose->GetElement (2, 2)); |
| 2205 | |
| 2206 | cam->SetViewUp (camera_pose->GetElement (0, 1), |
| 2207 | camera_pose->GetElement (1, 1), |
| 2208 | camera_pose->GetElement (2, 1)); |
| 2209 | |
| 2210 | renderer->SetActiveCamera (cam); |
| 2211 | renderer->ResetCameraClippingRange (); |
| 2212 | } |
| 2213 | win_->Render (); |
| 2214 | } |
| 2215 | |
| 2216 | ////////////////////////////////////////////////////////////////////////////////////////////// |
| 2217 | bool |
no test coverage detected