vtkImageData数据,显示的时候只有100*100*1一层数据,我想的是100层数据显示,检查不出问题,求大神看看我的小实例。在这先感谢大家的帮忙!
vtkSmartPointer<vtkRenderer> render = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> window =vtkSmartPointer<vtkRenderWindow>::New();
window->AddRenderer(render); vtkSmartPointer<vtkRenderWindowInteractor> iren =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(window);
int datasize =100*100*100;
unsigned char* testshortarr = new unsigned char[datasize];
for(int i=0;i<datasize;i++)
testshortarr[i]=i%100;
//for(int i=0; i<datasize; i++){
// testshortarr[i] = temparr->GetComponent(i,0);
AfxMessageBox(testshortarr[0]);
vtkSmartPointer<vtkUnsignedCharArray>tempimarr2 = vtkSmartPointer<vtkUnsignedCharArray>::New();
tempimarr2->SetArray(testshortarr,datasize,1);//SetVoidArray(testshortarr,datasize,1);
// temparr->GetData(0,datasize-1,0,0,tempimarr2);
vtkSmartPointer<vtkImageData>testimdata = vtkSmartPointer<vtkImageData>::New();
testimdata->SetDimensions(100,100,100);
testimdata->SetSpacing(1.0,1.0,1.5);
testimdata->GetPointData()->SetScalars(tempimarr2);
testimdata->Modified();
vtkSmartPointer<vtkImageActor> actor =vtkSmartPointer<vtkImageActor>::New();
actor->SetInput(testimdata);
//double viewport[4] = {0,0,1,1};
vtkSmartPointer<vtkCamera> aCamera =
vtkSmartPointer<vtkCamera>::New();
aCamera->SetViewUp (0, 0, -1);
aCamera->SetPosition (0, 1, 0);
aCamera->SetFocalPoint (0, 0, 0);
aCamera->ComputeViewPlaneNormal();
aCamera->Azimuth(30.0);
aCamera->Elevation(30.0);
//render->SetViewport(viewport);
render->AddActor(actor);
render->SetBackground(1,1,1);
render->SetActiveCamera(aCamera);
render->ResetCamera ();//慢
aCamera->Dolly(1.5);
window->AddRenderer(render);
window->SetSize(640,480);
window->SetWindowName("CreateVTKImageData");
render->ResetCameraClippingRange ();
iren->Initialize();
iren->Start(); delete[]testshortarr;
vtkSmartPointer<vtkRenderer> render = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> window =vtkSmartPointer<vtkRenderWindow>::New();
window->AddRenderer(render); vtkSmartPointer<vtkRenderWindowInteractor> iren =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(window);
int datasize =100*100*100;
unsigned char* testshortarr = new unsigned char[datasize];
for(int i=0;i<datasize;i++)
testshortarr[i]=i%100;
//for(int i=0; i<datasize; i++){
// testshortarr[i] = temparr->GetComponent(i,0);
AfxMessageBox(testshortarr[0]);
vtkSmartPointer<vtkUnsignedCharArray>tempimarr2 = vtkSmartPointer<vtkUnsignedCharArray>::New();
tempimarr2->SetArray(testshortarr,datasize,1);//SetVoidArray(testshortarr,datasize,1);
// temparr->GetData(0,datasize-1,0,0,tempimarr2);
vtkSmartPointer<vtkImageData>testimdata = vtkSmartPointer<vtkImageData>::New();
testimdata->SetDimensions(100,100,100);
testimdata->SetSpacing(1.0,1.0,1.5);
testimdata->GetPointData()->SetScalars(tempimarr2);
testimdata->Modified();
vtkSmartPointer<vtkImageActor> actor =vtkSmartPointer<vtkImageActor>::New();
actor->SetInput(testimdata);
//double viewport[4] = {0,0,1,1};
vtkSmartPointer<vtkCamera> aCamera =
vtkSmartPointer<vtkCamera>::New();
aCamera->SetViewUp (0, 0, -1);
aCamera->SetPosition (0, 1, 0);
aCamera->SetFocalPoint (0, 0, 0);
aCamera->ComputeViewPlaneNormal();
aCamera->Azimuth(30.0);
aCamera->Elevation(30.0);
//render->SetViewport(viewport);
render->AddActor(actor);
render->SetBackground(1,1,1);
render->SetActiveCamera(aCamera);
render->ResetCamera ();//慢
aCamera->Dolly(1.5);
window->AddRenderer(render);
window->SetSize(640,480);
window->SetWindowName("CreateVTKImageData");
render->ResetCameraClippingRange ();
iren->Initialize();
iren->Start(); delete[]testshortarr;