300{
301 if (
m_d->ui.pushButton_addCurrentView==sender()) {
302 VP1CustomTourFrameWidget * frame =
new VP1CustomTourFrameWidget(
m_d->viewer->currentCamIsPerspective(),
303 m_d->viewer->currentCameraState());
304 m_d->addFrame(frame);
305 m_d->updateFrameSnapshot(frame);
306 m_d->updateFrameListVisuals();
307 }
else if (
m_d->ui.pushButton_refreshPreviews==sender()) {
308 for (VP1CustomTourFrameWidget*frame :
m_d->frames)
309 m_d->updateFrameSnapshot(frame);
310 }
else if (
m_d->ui.pushButton_execute==sender()) {
311 m_d->viewer->startCustomTour();
312 }
else if (
m_d->ui.pushButton_utilityZoomShow==sender()) {
313 SoCamera * cam =
m_d->viewer->getCamera();
314 SoNode *
root =
m_d->viewer->getSceneGraph();
315 if (!cam||!root||!
root->getTypeId().isDerivedFrom(SoGroup::getClassTypeId()))
316 return;
317
318 double r(
m_d->ui.doubleSpinBox_radius->value()*1000.0);
319 double theta(
m_d->ui.doubleSpinBox_theta->value()/180.0*
M_PI);
323 double a(
r/sqrt(3.0));
324 SbBox3f box(-
a,-
a,-
a,
a,
a,
a);
326 SbVec3f upvec = SbVec3f(0,1,0);
327 bool notifyenabled = cam->enableNotify(false);
328 m_d->viewer->resetCamera();
330 box, 0.0, 100.0, 1.0,lookat,upvec);
331 if (notifyenabled)
332 cam->enableNotify(true);
333
334
335 }
336}
Scalar theta() const
theta method
static VP1CameraHelper * animatedZoomToBBox(SoCamera *camera, SoGroup *sceneroot, const SbBox3f &box, double duration_in_secs=1.0, double clipVolPercent=100.0, double slack=1.0, const SbVec3f &lookat=SbVec3f(999, 999, 999), const SbVec3f &upvec=SbVec3f(999, 999, 999), bool varySpeed=true, bool forceCircular=false)