Я работаю с изображениями глаз и хочу, чтобы я взял одно из этих изображений и применил его в качестве текстуры для сферы.Тем не менее, у меня есть небольшие проблемы с масштабированием, вот как это выглядит сейчас:
А вот изображение I 'я работаю с:
До сих пор я пробовал различные методы, но у меня все еще нет желаемого результата.
Вот код, над которым я работаю:
#include <vtkSmartPointer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkActor.h>
#include <vtkPolyDataMapper.h>
#include <vtkTransformTextureCoords.h>
#include <vtkTexture.h>
#include <vtkTextureMapToSphere.h>
#include <vtkImageReader2Factory.h>
#include <vtkImageReader.h>
#include <vtkTexturedSphereSource.h>
#include <vtkSphereSource.h>
int main(int argc, char *argv[])
{
std::string fileName = "C:\\VTK\\eyeTextureNew2.jpg";
//Create sphere
vtkSmartPointer<vtkTexturedSphereSource> source =
vtkSmartPointer<vtkTexturedSphereSource>::New();
source->SetPhiResolution(100);
source->SetThetaResolution(100);
// Read texture file
vtkSmartPointer<vtkImageReader2Factory> readerFactory =
vtkSmartPointer<vtkImageReader2Factory>::New();
vtkImageReader2 *imageReader = readerFactory->CreateImageReader2(fileName.c_str());
imageReader->SetFileName(fileName.c_str());
// Create texture
vtkSmartPointer<vtkTexture> texture =
vtkSmartPointer<vtkTexture>::New();
texture->SetInputConnection(imageReader->GetOutputPort());
vtkSmartPointer<vtkTransformTextureCoords> transformTexture =
vtkSmartPointer<vtkTransformTextureCoords>::New();
transformTexture->SetInputConnection(source->GetOutputPort());
vtkSmartPointer<vtkPolyDataMapper> mapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(transformTexture->GetOutputPort());
vtkSmartPointer<vtkActor> actor =
vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
actor->SetTexture(texture);
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(actor);
renderer->SetBackground(.1, .2, .3);
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renWinInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renWinInteractor->SetRenderWindow(renderWindow);
renderWindow->Render();
renWinInteractor->Start();
imageReader->Delete();
return EXIT_SUCCESS;
}
Есть идеи о том, что я могу делать неправильно или пропустить?Заранее спасибо!