X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSlicer.cxx;h=26d2ac254b2b4ee41139e9dae963db7c70cce882;hb=35b59943e3ff753d6bb85429a1fe7f01cee75530;hp=d1b6252056adc2b0dca70be2e008aeee76b7d0b6;hpb=7615e289788483e21028050638195e29c4e34321;p=clitk.git diff --git a/vv/vvSlicer.cxx b/vv/vvSlicer.cxx index d1b6252..26d2ac2 100644 --- a/vv/vvSlicer.cxx +++ b/vv/vvSlicer.cxx @@ -359,6 +359,7 @@ void vvSlicer::SetImage(vvImage::Pointer image) mConcatenatedTransform->Concatenate(mImage->GetTransform()[0]); mConcatenatedTransform->Concatenate(mSlicingTransform); mImageReslice->SetResliceTransform(mConcatenatedTransform); + //mImageReslice->SetResliceAxes(mConcatenatedTransform->GetMatrix()); #if VTK_MAJOR_VERSION <= 5 mImageReslice->SetInput(0, mImage->GetFirstVTKImageData()); #else @@ -1006,7 +1007,7 @@ void vvSlicer::SetSliceOrientation(int orientation) if (this->Renderer && this->GetInput()) { double scale = this->Renderer->GetActiveCamera()->GetParallelScale(); - this->Renderer->ResetCamera(); + ResetCamera(); this->Renderer->GetActiveCamera()->SetParallelScale(scale); } @@ -1238,7 +1239,15 @@ void vvSlicer::UpdateDisplayExtent() if (this->Renderer) { if (this->InteractorStyle && this->InteractorStyle->GetAutoAdjustCameraClippingRange()) { + double positionCamera[3], originTemp[3]; + this->Renderer->GetActiveCamera()->GetPosition(positionCamera); this->Renderer->ResetCameraClippingRange(); + originTemp[0] = mImage->GetVTKImages()[mCurrentTSlice]->GetOrigin()[0]; + originTemp[1] = mImage->GetVTKImages()[mCurrentTSlice]->GetOrigin()[1]; + originTemp[2] = mImage->GetVTKImages()[mCurrentTSlice]->GetOrigin()[2]; + mConcatenatedTransform->GetInverse()->TransformPoint(originTemp, originTemp); + positionCamera[this->SliceOrientation] = originTemp[this->SliceOrientation]-1; + this->Renderer->GetActiveCamera()->SetPosition(positionCamera); } else { vtkCamera *cam = this->Renderer->GetActiveCamera(); if (cam) { @@ -1400,7 +1409,6 @@ void vvSlicer::SetRenderWindow(int orientation, vtkRenderWindow * rw) this->GetRenderer()->AddActor(pdmA); this->GetRenderer()->AddActor(ca); - this->GetRenderer()->ResetCamera(); //this is just a mapping between the labeling of the orientations presented to the user and //the one used by vtk @@ -1664,12 +1672,12 @@ void vvSlicer::Render() double Y = (pt[1] - mImage->GetVTKImages()[mCurrentTSlice]->GetOrigin()[1])/mImage->GetVTKImages()[mCurrentTSlice]->GetSpacing()[1]; double Z = (pt[2] - mImage->GetVTKImages()[mCurrentTSlice]->GetOrigin()[2])/mImage->GetVTKImages()[mCurrentTSlice]->GetSpacing()[2]; #if VTK_MAJOR_VERSION <= 5 - if (X >= this->GetInput()->GetWholeExtent()[0]-0.5 && - X <= this->GetInput()->GetWholeExtent()[1]+0.5 && - Y >= this->GetInput()->GetWholeExtent()[2]-0.5 && - Y <= this->GetInput()->GetWholeExtent()[3]+0.5 && - Z >= this->GetInput()->GetWholeExtent()[4]-0.5 && - Z <= this->GetInput()->GetWholeExtent()[5]+0.5) { + if (X >= mImage->GetVTKImages()[mCurrentTSlice]->GetWholeExtent()[0]-0.5 && + X <= mImage->GetVTKImages()[mCurrentTSlice]->GetWholeExtent()[1]+0.5 && + Y >= mImage->GetVTKImages()[mCurrentTSlice]->GetWholeExtent()[2]-0.5 && + Y <= mImage->GetVTKImages()[mCurrentTSlice]->GetWholeExtent()[3]+0.5 && + Z >= mImage->GetVTKImages()[mCurrentTSlice]->GetWholeExtent()[4]-0.5 && + Z <= mImage->GetVTKImages()[mCurrentTSlice]->GetWholeExtent()[5]+0.5) { #else if (X >= mImage->GetVTKImages()[mCurrentTSlice]->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[0]-0.5 && X <= mImage->GetVTKImages()[mCurrentTSlice]->GetInformation()->Get(vtkDataObject::DATA_EXTENT())[1]+0.5 &&