feat (wip): implementing camera zooming and panning functionality
This commit is contained in:
1 parent
cd87f383c9
commit
4d743a42c1
14 files changed
+180
-22
No files matched your search
@@ -3,6 +3,7 @@
|
||||
#include <vtkImageActor.h>
|
||||
#include <vtkImageData.h>
|
||||
#include <vtkImageReader2.h>
|
||||
#include <vtkTransformFilter.h>
|
||||
|
||||
using std::string;
|
||||
|
||||
@@ -24,6 +25,13 @@ void BackgroundImage::updateImage() {
|
||||
imageReader->Update();
|
||||
imageData = imageReader->GetOutput();
|
||||
|
||||
// TODO: transform the iamge to the range [-1,1] and center it on (0,0)/
|
||||
// This will allow the backgorundImage to share a camera with our other layers.
|
||||
// Facilitating the cameraMovement callback.
|
||||
|
||||
// vtkSmartPointer<vtkTransformFilter> transformFilter = createCartographicTransformFilter();
|
||||
// transformFilter->SetInputData(imageData);
|
||||
|
||||
vtkNew<vtkImageActor> imageActor;
|
||||
imageActor->SetInputData(imageData);
|
||||
|
||||
@@ -60,3 +68,8 @@ void BackgroundImage::setImagePath(string imagePath) {
|
||||
this->imagePath = imagePath;
|
||||
updateImage();
|
||||
}
|
||||
|
||||
|
||||
void BackgroundImage::setCamera(vtkCamera *cam) {
|
||||
// TODO: fix the camera for this layer so this intentionally empty override can be removed.
|
||||
}
|
||||
@@ -32,6 +32,9 @@ public:
|
||||
* @param imagePath : String to the path of the new image to use.
|
||||
*/
|
||||
void setImagePath(std::string imagePath);
|
||||
|
||||
|
||||
void setCamera(vtkCamera *cam) override;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -65,13 +65,13 @@ void EGlyphLayer::readCoordinates() {
|
||||
this->direction->SetNumberOfTuples(numLats*numLons);
|
||||
points->Allocate(numLats*numLons);
|
||||
|
||||
auto camera = createNormalisedCamera();
|
||||
ren->SetActiveCamera(camera);
|
||||
// auto camera = createNormalisedCamera();
|
||||
// ren->SetActiveCamera(camera);
|
||||
|
||||
int i = 0;
|
||||
for (double lat : lats) {
|
||||
for (double lon : lons) {
|
||||
cout << "lon: " << lon << " lat: " << lat << endl;
|
||||
// cout << "lon: " << lon << " lat: " << lat << endl;
|
||||
direction->SetTuple3(i, 0.45, 0.90, 0); //FIXME: read this info from file
|
||||
points->InsertPoint(i++, lon, lat, 0);
|
||||
// see also https://vtk.org/doc/nightly/html/classvtkPolyDataMapper2D.html
|
||||
|
||||
@@ -42,7 +42,8 @@ LGlyphLayer::LGlyphLayer() {
|
||||
auto camera = createNormalisedCamera();
|
||||
ren->SetActiveCamera(camera);
|
||||
|
||||
auto transform = createCartographicTransformFilter();
|
||||
// TODO: this line seemed to do nothing?
|
||||
// auto transform = createCartographicTransformFilter();
|
||||
|
||||
vtkSmartPointer<vtkTransformFilter> transformFilter = createCartographicTransformFilter();
|
||||
transformFilter->SetInputData(data);
|
||||
|
||||
@@ -15,3 +15,8 @@ void Layer::updateData(int t) {
|
||||
void Layer::addObservers(vtkSmartPointer<vtkRenderWindowInteractor> interactor) {
|
||||
// By default, do nothing
|
||||
}
|
||||
|
||||
|
||||
void Layer::setCamera(vtkCamera *camera) {
|
||||
this->getLayer()->SetActiveCamera(camera);
|
||||
}
|
||||
@@ -27,6 +27,11 @@ public:
|
||||
* @param interactor : pointer to the interactor that observers can be added to.
|
||||
*/
|
||||
virtual void addObservers(vtkSmartPointer<vtkRenderWindowInteractor> interactor);
|
||||
|
||||
/** Sets the active camera for the vtkRenderer associated with this layer.
|
||||
* Used to share one camera between multiple layers.
|
||||
*/
|
||||
virtual void setCamera(vtkCamera *camera);
|
||||
};
|
||||
|
||||
#endif
|
||||