void QGLGraphicsViewportItemPrivate::changeCamera(QGLCamera *c)
{
    disconnect(camera, SIGNAL(projectionChanged()),
               this, SLOT(cameraChanged()));
    disconnect(camera, SIGNAL(viewChanged()),
               this, SLOT(cameraChanged()));
    camera = c;
    connect(camera, SIGNAL(projectionChanged()),
            this, SLOT(cameraChanged()));
    connect(camera, SIGNAL(viewChanged()),
            this, SLOT(cameraChanged()));
}
void MagnifyingGlassTool::enableConnections(bool enable)
{
    if (enable)
    {
        connect(m_2DViewer, SIGNAL(volumeChanged(Volume*)), SLOT(removeMagnifiedRenderer()));
        connect(m_2DViewer, SIGNAL(sliceChanged(int)), SLOT(updateMagnifiedView()));
        connect(m_2DViewer, SIGNAL(cameraChanged()), SLOT(update()));
    }
    else
    {
        disconnect(m_2DViewer, SIGNAL(volumeChanged(Volume*)), this, SLOT(removeMagnifiedRenderer()));
        disconnect(m_2DViewer, SIGNAL(sliceChanged(int)), this, SLOT(updateMagnifiedView()));
        disconnect(m_2DViewer, SIGNAL(cameraChanged()), this, SLOT(update()));
    }
}
示例#3
0
int main(int argc, char** argv)
{
  QApplication application(argc,argv);

  // Instantiate the two viewers.
  StandardCamera* sc = new StandardCamera();
  Viewer viewer(sc);
  CameraViewer cviewer(sc);

  // Make sure every v camera movement updates the camera viewer
  QObject::connect(viewer.camera()->frame(), SIGNAL(manipulated()), &cviewer, SLOT(updateGL()));
  QObject::connect(viewer.camera()->frame(), SIGNAL(spun()), &cviewer, SLOT(updateGL()));
  // Also update on camera change (type or mode)
  QObject::connect(&viewer, SIGNAL(cameraChanged()), &cviewer, SLOT(updateGL()));

#if QT_VERSION < 0x040000
  application.setMainWidget(&viewer);
#else
  viewer.setWindowTitle("standardCamera");
  cviewer.setWindowTitle("Camera viewer");
#endif

  cviewer.show();
  viewer.show();

  return application.exec();
}
示例#4
0
    void MultimediaConnection::changeCamera(const QString &name, const QCameraData::QCameraDetails &details)
    {
        if (!qtCameraData()->cameras.contains(name))
            return;

        qtCameraData()->cameras[name] = details;
        emit cameraChanged(name, details);
    }
示例#5
0
void CameraModeControl::setCamera(QObject *const &camera)
{
    if(camera != m_camera)
    {
        m_camera = camera;

        emit cameraChanged(m_camera);
    }
}
示例#6
0
void TabbedOptionsDialog::openFromXML() {
    QString fileName = QFileDialog::getOpenFileName(this,"Open plant","","Plants (*.plant);;XML files (*.xml)");
    if (!(fileName.isEmpty() || fileName.isNull())) {
            Plant::activePlant = PersistenceManager::readPlant(fileName);
            Scene::activeScene->initScene();
            reloadTabs();
            emit cameraChanged(Plant::activePlant->movement.x(), Plant::activePlant->movement.y(),
                               Plant::activePlant->movement.z());
    }
}
示例#7
0
void Viewport::setCamera(QGLCamera *value)
{
    if (d->camera != value) {
        if (d->camera) {
            disconnect(d->camera, SIGNAL(projectionChanged()),
                       this, SLOT(cameraChanged()));
            disconnect(d->camera, SIGNAL(viewChanged()),
                       this, SLOT(cameraChanged()));
        }
        d->camera = value;
        if (d->camera) {
            connect(d->camera, SIGNAL(projectionChanged()),
                    this, SLOT(cameraChanged()));
            connect(d->camera, SIGNAL(viewChanged()),
                    this, SLOT(cameraChanged()));
        }
        cameraChanged();
    }
}
示例#8
0
void ObjectViewer::setLinkedTo(ObjectViewer * new_var)
{
  if(new_var != m_linkedTo)
  {
    if(m_linkedTo)
    {
      disconnect(m_linkedTo, SIGNAL(cameraChanged()),
	         this, SLOT(cameraChangedIn()));
    }

    m_linkedTo = new_var;
    if(m_linkedTo)
    {
      connect(m_linkedTo, SIGNAL(cameraChanged()),
	      this, SLOT(cameraChangedIn()));
      updateCameraLink();
      emit changedViewer();
    }
  }
}
示例#9
0
void TabbedOptionsDialog::newPlant()
{
    NewDialog *newDialog = new NewDialog;
    newDialog->setModal(true);
    int result = newDialog->exec();
    if (result == QDialog::Accepted) {
        reloadTabs();
        emit cameraChanged(Plant::activePlant->movement.x(), Plant::activePlant->movement.y(),
                           Plant::activePlant->movement.z());
    }
}
示例#10
0
void QgsCameraController::setCamera( Qt3DRender::QCamera *camera )
{
  if ( mCamera == camera )
    return;
  mCamera = camera;

  mCameraPose.updateCamera( mCamera ); // initial setup

  // TODO: set camera's parent if not set already?
  // TODO: registerDestructionHelper (?)
  emit cameraChanged();
}
示例#11
0
void QgsCameraController::setCameraPose( const QgsCameraPose &camPose )
{
  if ( camPose == mCameraPose )
    return;

  mCameraPose = camPose;

  if ( mCamera )
    mCameraPose.updateCamera( mCamera );

  emit cameraChanged();
}
示例#12
0
/*!
    Sets the camera parameters to \a value.  The camera defines the
    projection to apply to convert eye co-ordinates into window
    co-ordinates, and the position and orientation of the viewer's eye.

    If \a value is null, then the default camera object will be used.

    This function will call update() to force the view to
    update with the new camera parameters upon the next event loop.

    \sa camera()
*/
void QGLView::setCamera(QGLCamera *value)
{
    if (!value)
        value = d->defaultCamera;

    if (d->camera == value)
        return;

    disconnect(d->camera, SIGNAL(projectionChanged()),
               this, SLOT(cameraChanged()));
    disconnect(d->camera, SIGNAL(viewChanged()),
               this, SLOT(cameraChanged()));

    d->camera = value;

    connect(d->camera, SIGNAL(projectionChanged()),
            this, SLOT(cameraChanged()));
    connect(d->camera, SIGNAL(viewChanged()),
            this, SLOT(cameraChanged()));

    cameraChanged();
}
示例#13
0
    QGLViewPrivate(QGLView *parent)
        : view(parent), mainSurface(parent)
    {
        options = QGLView::CameraNavigation;
        fbo = 0;
        leftSurface = 0;
        rightSurface = 0;

        if (parent->format().stereo())
            stereoType = QGLView::Hardware;
        else
            stereoType = QGLView::RedCyanAnaglyph;

        pickBufferForceUpdate = true;
        pickBufferMaybeInvalid = true;
        updateQueued = false;

        pressedObject = 0;
        pressedButton = Qt::NoButton;
        enteredObject = 0;

        defaultCamera = new QGLCamera(parent);
        camera = defaultCamera;

        panning = false;
        startPan = QPoint(-1, -1);
        lastPan = QPoint(-1, -1);
        panModifiers = Qt::NoModifier;
        QObject::connect(defaultCamera, SIGNAL(projectionChanged()),
                         parent, SLOT(cameraChanged()));
        QObject::connect(defaultCamera, SIGNAL(viewChanged()),
                         parent, SLOT(cameraChanged()));

        logTime.start();
        lastFrameTime.start();
        QByteArray env = qgetenv("Quick3D_LOG_EVENTS");
        if (env == "1")
            options |= QGLView::PaintingLog;
    }
示例#14
0
文件: window.cpp 项目: ahmidou/aphid
Window::Window()
{
	m_shouldDisplayFeather = true;
	std::cout<<"Initializing Mallard main window ";
    glWidget = new GLWidget;
	m_tools = new ToolBox;
	m_barbEdit = new BarbEdit(this);
	m_renderEdit = new RenderEdit(this);
	
	glWidget->setInteractContext(m_tools);
	m_brushControl = new BrushControl(glWidget->brush(), this);
	m_featherEdit = new FeatherEdit(this);
	FeatherExample::FeatherLibrary = glWidget;
	m_timeControl = new TimeControl(this);
	glWidget->setPlayback(m_timeControl);
	
	m_sceneEdit = new SceneEdit(glWidget, this);
	
	addToolBar(m_tools);

	setCentralWidget(glWidget);
    setWorkTitle(tr("untitled"));
	createActions();
	createMenus();
    
	connect(m_tools, SIGNAL(contextChanged(int)), this, SLOT(receiveToolContext(int)));
	connect(m_tools, SIGNAL(contextChanged(int)), m_brushControl, SLOT(receiveToolContext(int)));
    connect(m_tools, SIGNAL(actionTriggered(int)), this, SLOT(receiveToolAction(int)));
	connect(m_tools, SIGNAL(stateChanged(int)), this, SLOT(receiveToolState(int)));
	connect(m_brushControl, SIGNAL(brushChanged()), glWidget, SLOT(receiveBrushChanged()));
	connect(m_brushControl, SIGNAL(paintModeChanged(int)), glWidget, SLOT(receivePaintMode(int)));
	connect(glWidget, SIGNAL(sceneNameChanged(QString)), this, SLOT(setWorkTitle(QString)));
	connect(glWidget, SIGNAL(sendMessage(QString)), this, SLOT(showMessage(QString)));
	connect(m_featherEdit, SIGNAL(textureLoaded(QString)), glWidget, SLOT(receiveFeatherEditBackground(QString)));
	connect(m_featherEdit, SIGNAL(featherAdded()), glWidget, SLOT(receiveFeatherAdded()));
	connect(glWidget, SIGNAL(sendFeatherEditBackground(QString)), m_featherEdit, SLOT(receiveTexture(QString)));
	connect(m_timeControl, SIGNAL(currentFrameChanged(int)), glWidget, SLOT(updateOnFrame(int)));
	connect(m_featherEdit->uvView(), SIGNAL(selectionChanged()), m_barbEdit->barbControl(), SLOT(receiveSelectionChanged()));
	connect(glWidget, SIGNAL(featherSelectionChanged()), m_barbEdit->barbControl(), SLOT(receiveSelectionChanged()));
	connect(m_featherEdit->uvView(), SIGNAL(shapeChanged()), m_barbEdit->barbView(), SLOT(receiveShapeChanged()));
	connect(glWidget, SIGNAL(renderResChanged(QSize)), m_renderEdit, SLOT(resizeRenderView(QSize)));
	connect(glWidget, SIGNAL(renderEngineChanged(QString)), m_renderEdit, SLOT(setRenderEngine(QString)));
	connect(glWidget, SIGNAL(renderStarted(QString)), m_renderEdit, SLOT(startRender(QString)));
	connect(m_renderEdit, SIGNAL(cancelRender()), glWidget, SLOT(receiveCancelRender()));
	connect(m_barbEdit->barbControl(), SIGNAL(shapeChanged()), glWidget, SLOT(receiveBarbChanged()));
	connect(glWidget, SIGNAL(sceneOpened()), m_sceneEdit, SLOT(reloadScene()));
	connect(m_sceneEdit->model(), SIGNAL(cameraChanged()), glWidget, SLOT(receiveCameraChanged()));
	
	std::cout<<"Ready\n";
	statusBar()->showMessage(tr("Ready"));
}
示例#15
0
void MainWindow::createDockWindows()
{
    QDockWidget *dock = new QDockWidget("Viewer Settings", this);
    dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

    _cameraWidget = new CameraWidget(dock);
    connect(_viewerWidget, SIGNAL(cameraChanged(osg::Matrixd)),
            _cameraWidget, SLOT(onCameraChanged(osg::Matrixd)));
    connect(_cameraWidget, SIGNAL(dataChanged(double, double, double)),
            _viewerWidget, SLOT(setCameraPosition(double, double, double)));

    dock->setWidget(_cameraWidget);
    addDockWidget(Qt::LeftDockWidgetArea, dock);
}
示例#16
0
void RayTracer::setCameraSpherical(gmtl::Point3f const &target, float elevationDeg, float azimuthDeg, float distance)
{
  /*
   * 
   */
  gmtl::Quatf rotation;
  gmtl::setRot(rotation, gmtl::EulerAngle<float, gmtl::ZYX>(0.0f, -D2R(azimuthDeg) + M_PI, -D2R(elevationDeg)));
  gmtl::Vec3f position(0.0f, 0.0f, distance);
  position *= rotation;

  gmtl::setRot(viewMatrix, rotation);
  gmtl::setTrans(viewMatrix, position + target);

  cameraChanged();
}
示例#17
0
文件: camerawidget.cpp 项目: Vaub/uGL
void CameraWidget::changeCameraType()
{
	if (ui.cameraTypeChoice->currentIndex() == 0)
	{
		currentCamera = perspectiveCamera;
		updatePerspectiveCameraUiValues();
	}
	else if (ui.cameraTypeChoice->currentIndex() == 1)
	{
		currentCamera = orthogonalCamera;
		updateOrthographicCameraUiValues();
	}

	emit cameraChanged(currentCamera);
}
ProjectItem::ProjectItem(QObject *obj)
    : obj(obj)
{
	if(const Camera *cam = qobject_cast<const Camera *>(obj)) {
		connect(cam, SIGNAL(nameChanged(QString)), SLOT(update()));
	} else if(const ImageSet *imageSet = qobject_cast<const ImageSet *>(obj)) {
		connect(imageSet, SIGNAL(nameChanged(QString)), SLOT(update()));
		connect(imageSet, SIGNAL(nameChanged(QString)), SLOT(update()));
		connect(imageSet, SIGNAL(nameChanged(QString)), SLOT(update()));
	} else if(const ProjectImage *image = qobject_cast<const ProjectImage *>(obj)) {
		connect(image, SIGNAL(fileChanged(QString)), SLOT(update()));
		connect(image, SIGNAL(cameraChanged(CameraPtr,CameraPtr)), SLOT(update(CameraPtr,CameraPtr)));
		if(CameraPtr cam = image->camera())
			connect(cam.get(), SIGNAL(nameChanged(QString)), SLOT(update()));
	}

	// XXX Does this remove me from tree widget?
	connect(obj, SIGNAL(destroyed()), SLOT(deleteLater()));

	update();
}
示例#19
0
void QgsCameraController::updateCameraFromPose( bool centerPointChanged )
{
  if ( std::isnan( mCameraPose.centerPoint().x() ) || std::isnan( mCameraPose.centerPoint().y() ) || std::isnan( mCameraPose.centerPoint().z() ) )
  {
    // something went horribly wrong but we need to at least try to fix it somehow
    qDebug() << "camera position got NaN!";
    mCameraPose.setCenterPoint( QgsVector3D( 0, 0, 0 ) );
  }

  if ( mCameraPose.pitchAngle() > 180 )
    mCameraPose.setPitchAngle( 180 );  // prevent going over the head
  if ( mCameraPose.pitchAngle() < 0 )
    mCameraPose.setPitchAngle( 0 );   // prevent going over the head
  if ( mCameraPose.distanceFromCenterPoint() < 10 )
    mCameraPose.setDistanceFromCenterPoint( 10 );

  if ( mCamera )
    mCameraPose.updateCamera( mCamera );

  if ( mCamera && mTerrainEntity && centerPointChanged )
  {
    // figure out our distance from terrain and update the camera's view center
    // so that camera tilting and rotation is around a point on terrain, not an point at fixed elevation
    QVector3D intersectionPoint;
    QgsRayCastingUtils::Ray3D ray = QgsRayCastingUtils::rayForCameraCenter( mCamera );
    if ( mTerrainEntity->rayIntersection( ray, intersectionPoint ) )
    {
      float dist = ( intersectionPoint - mCamera->position() ).length();
      mCameraPose.setDistanceFromCenterPoint( dist );
      mCameraPose.setCenterPoint( QgsVector3D( intersectionPoint ) );
      mCameraPose.updateCamera( mCamera );
    }
  }

  emit cameraChanged();
}
void VisionWindow::changeToHorizontalBlobTop() {
    emit cameraChanged(Camera::TOP);
    changeBigImage(HORIZONTAL_BLOB_IMAGE, IMAGE_TOP);
}
void VisionWindow::changeToHorizontalBlobBottom() {
    emit cameraChanged(Camera::BOTTOM);
    changeBigImage(HORIZONTAL_BLOB_IMAGE, IMAGE_BOTTOM);
}
示例#22
0
void RayTracer::setCameraMatrix(gmtl::Matrix44f const &mat) 
{
  viewMatrix = mat;
  cameraChanged();
}
void VisionWindow::changeToVerticalBlobTop() {
    emit cameraChanged(Camera::TOP);
    changeBigImage(VERTICAL_BLOB_IMAGE, IMAGE_TOP);
}
void VisionWindow::changeToVerticalBlobBottom() {
    emit cameraChanged(Camera::BOTTOM);
    changeBigImage(VERTICAL_BLOB_IMAGE, IMAGE_BOTTOM);
}
void VisionWindow::changeToObjTop() {
    emit cameraChanged(Camera::TOP);
    changeBigImage(OBJ_IMAGE, IMAGE_TOP);
}
void VisionWindow::changeToTransformedTop() {
    emit cameraChanged(Camera::TOP);
    changeBigImage(TRANSFORMED_IMAGE, IMAGE_TOP);
}
void VisionWindow::changeToTransformedBottom() {
    emit cameraChanged(Camera::BOTTOM);
    changeBigImage(TRANSFORMED_IMAGE, IMAGE_BOTTOM);
}
void VisionWindow::changeToRawBottom() {
    emit cameraChanged(Camera::BOTTOM);
    changeBigImage(RAW_IMAGE, IMAGE_BOTTOM);
}
示例#29
0
void ObjectViewer::notifyCameraChanged()
{
  emit cameraChanged();
}
void VisionWindow::changeToRawTop() {
    emit cameraChanged(Camera::TOP);
    changeBigImage(RAW_IMAGE, IMAGE_TOP);
}