the android VolumeRender disable to display
vtk:8.2.0 https://github.com/Kitware/VTK/tree/master/Examples/Android/VolumeRender I download the demo code from the url,but it could not rightly run,don'nt know why?
vtkRenderWindow* renWin = vtkRenderWindow::New();
char jniS[4] = { 'j', 'n', 'i', 0 };
renWin->SetWindowInfo(jniS); // tell the system that jni owns the window not us
renWin->SetSize(width, height);
vtkNew<vtkRenderer> renderer;
renWin->AddRenderer(renderer.Get());
vtkNew<vtkAndroidRenderWindowInteractor> iren;
iren->SetRenderWindow(renWin);
vtkNew<vtkOpenGLGPUVolumeRayCastMapper> volumeMapper;
vtkNew<vtkPiecewiseFunction> pwf;
#ifdef SYNTHETIC
vtkNew<vtkRTAnalyticSource> wavelet;
wavelet->SetWholeExtent(-63, 64, -63, 64, -63, 64);
wavelet->SetCenter(0.0, 0.0, 0.0);
vtkNew<vtkImageCast> ic;
ic->SetInputConnection(wavelet->GetOutputPort());
ic->SetOutputScalarTypeToUnsignedChar();
volumeMapper->SetInputConnection(ic->GetOutputPort());
pwf->AddPoint(0, 0);
pwf->AddPoint(255, 0.1);
#else
vtkNew<vtkNrrdReader> mi;
mi->SetFileName(jstringToChar(path));
mi->Update();
double range[2];
vtkPointData* pd = mi->GetOutput()->GetPointData();
pd->GetRange(pd->GetScalars()->GetName(), range);
LOGI("Min %f Max %f type %s", range[0], range[1], mi->GetOutput()->GetScalarTypeAsString());
volumeMapper->SetInputConnection(mi->GetOutputPort());
double tweak = 80.0;
pwf->AddPoint(0, 0);
pwf->AddPoint(255 * (67.0106 + tweak) / 3150.0, 0);
pwf->AddPoint(255 * (251.105 + tweak) / 3150.0, 0.3);
pwf->AddPoint(255 * (439.291 + tweak) / 3150.0, 0.5);
pwf->AddPoint(255 * 3071 / 3150.0, 0.616071);
#endif
volumeMapper->SetAutoAdjustSampleDistances(1);
volumeMapper->SetSampleDistance(0.5);
vtkNew<vtkVolumeProperty> volumeProperty;
volumeProperty->SetShade(1);
volumeProperty->SetInterpolationTypeToLinear();
vtkNew<vtkColorTransferFunction> ctf;
ctf->AddRGBPoint(0, 0, 0, 0);
ctf->AddRGBPoint(255 * 67.0106 / 3150.0, 0.54902, 0.25098, 0.14902);
ctf->AddRGBPoint(255 * 251.105 / 3150.0, 0.882353, 0.603922, 0.290196);
ctf->AddRGBPoint(255 * 439.291 / 3150.0, 1, 0.937033, 0.954531);
ctf->AddRGBPoint(255 * 3071 / 3150.0, 0.827451, 0.658824, 1);
volumeProperty->SetColor(ctf.GetPointer());
volumeProperty->SetScalarOpacity(pwf.GetPointer());
vtkNew<vtkVolume> volume;
volume->SetMapper(volumeMapper.GetPointer());
volume->SetProperty(volumeProperty.GetPointer());
renderer->SetBackground2(0.2, 0.3, 0.4);
renderer->SetBackground(0.1, 0.1, 0.1);
renderer->GradientBackgroundOn();
renderer->AddVolume(volume.GetPointer());
renderer->ResetCamera();
// renderer->GetActiveCamera()->Zoom(1.4);
renderer->GetActiveCamera()->Zoom(0.7);
struct userData* foo = new struct userData();
foo->RenderWindow = renWin;
foo->Renderer = renderer.Get();
foo->Interactor = iren.Get();
renWin->Render();
return (jlong)foo;`
Edited by Mathieu Westphal (Kitware)