void LinkEvaluatorCameraId::eval(Property* src, Property* dst) throw (VoreenException) { CameraProperty* dstCast = static_cast<CameraProperty*>(dst); CameraProperty* srcCast = static_cast<CameraProperty*>(src); tgt::Camera cam = dstCast->get(); tgt::Camera srcCam = srcCast->get(); cam.setPosition(srcCam.getPosition()); cam.setFocus(srcCam.getFocus()); cam.setUpVector(srcCam.getUpVector()); cam.setFrustum(srcCam.getFrustum()); cam.setProjectionMode(srcCam.getProjectionMode()); cam.setStereoEyeMode(srcCam.getStereoEyeMode(), false); cam.setStereoEyeSeparation(srcCam.getStereoEyeSeparation(), false); cam.setStereoAxisMode(srcCam.getStereoAxisMode(), false); cam.enableOffset(srcCam.isOffsetEnabled()); cam.setOffset(srcCam.getOffset()); dstCast->setMinValue(srcCast->getMinValue()); dstCast->setMaxValue(srcCast->getMaxValue()); dstCast->setAdaptOnChange(srcCast->getAdaptOnChange()); dstCast->setTrackballCenterBehaviour(srcCast->getTrackballCenterBehaviour()); dstCast->getTrackball().setCenter(srcCast->getTrackball().getCenter()); dstCast->setSceneBounds(srcCast->getSceneBounds()); // order is important: only now set cam and cause further link execution dstCast->set(cam); }
void LinkEvaluatorCameraFrustumId::eval(Property* src, Property* dst) throw (VoreenException) { CameraProperty* srcProp = dynamic_cast<CameraProperty*>(src); CameraProperty* dstProp = dynamic_cast<CameraProperty*>(dst); tgt::Camera cam = dstProp->get(); cam.setFrustum(srcProp->get().getFrustum()); dstProp->set(cam); }
void LinkEvaluatorCameraOrientationId::eval(Property* src, Property* dst) throw (VoreenException) { CameraProperty* dstCast = static_cast<CameraProperty*>(dst); CameraProperty* srcCast = static_cast<CameraProperty*>(src); tgt::Camera cam = dstCast->get(); tgt::Camera srcCam = srcCast->get(); cam.positionCamera(cam.getFocus() - cam.getFocalLength() * srcCam.getLook(), cam.getFocus(), srcCam.getUpVector()); dstCast->set(cam); }
//----------------------------------------------------------------------------- // void LinkEvaluatorCameraPosId::eval(Property* src, Property* dst) throw (VoreenException) { bool camToProp = true; CameraProperty* camProp = dynamic_cast<CameraProperty*>(src); FloatVec3Property* vecProp = dynamic_cast<FloatVec3Property*>(dst); if(!camProp) { camToProp = false; camProp = dynamic_cast<CameraProperty*>(dst); vecProp = dynamic_cast<FloatVec3Property*>(src); } tgt::Camera cam = camProp->get(); if(camToProp) vecProp->set(cam.getPosition()); else { cam.setPosition(vecProp->get()); camProp->set(cam); } }
void LinkEvaluatorCameraId::eval(Property* src, Property* dst) throw (VoreenException) { CameraProperty* dstCast = static_cast<CameraProperty*>(dst); CameraProperty* srcCast = static_cast<CameraProperty*>(src); tgt::Camera cam = dstCast->get(); tgt::Camera srcCam = srcCast->get(); cam.setPosition(srcCam.getPosition()); cam.setFocus(srcCam.getFocus()); cam.setUpVector(srcCam.getUpVector()); cam.setFrustum(srcCam.getFrustum()); cam.setProjectionMode(srcCam.getProjectionMode()); cam.setStereoEyeMode(srcCam.getStereoEyeMode(), false); cam.setStereoEyeSeparation(srcCam.getStereoEyeSeparation(), false); cam.setStereoAxisMode(srcCam.getStereoAxisMode()); dstCast->set(cam); dstCast->getTrackball()->setMoveCenter(srcCast->getTrackball()->getMoveCenter()); dstCast->getTrackball()->setCenter(srcCast->getTrackball()->getCenter()); dstCast->setMaxValue(srcCast->getMaxValue()); }
void LinkEvaluatorCameraLookId::eval(Property* src, Property* dst) throw (VoreenException) { bool camToProp = true; CameraProperty* camProp = dynamic_cast<CameraProperty*>(src); FloatVec3Property* vecProp = dynamic_cast<FloatVec3Property*>(dst); if(!camProp) { camToProp = false; camProp = dynamic_cast<CameraProperty*>(dst); vecProp = dynamic_cast<FloatVec3Property*>(src); } tgt::Camera cam = camProp->get(); if(camToProp) vecProp->set(cam.getLook()); else { if(length(vecProp->get()) == 0.f) { LERRORC("voreen.LinkEvaluatorCameraLookId", "Can not use 0 vector to set look vector of camera"); return; } cam.setFocus(cam.getPosition() + cam.getFocalLength() * normalize(vecProp->get())); camProp->set(cam); } }