level 3
彀音
楼主
利用vtktransform对相机进行位移变换或者旋转时,调试是成功的,但无法显示只有黑屏一闪而过,代码如下,想求教一下大家怎么修改。![[委屈]](/static/emoticons/u59d4u5c48.png)
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkProperty.h>
#include <vtkParametricFunctionSource.h>
#include <vtkParametricTorus.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include<vtkTransform.h>
#include<vtkCamera.h>
#include<vtkHomogeneousTransform.h>
#include <vtkMatrix4x4.h>
int main(int, char *argv[])
{
vtkSmartPointer<vtkParametricTorus> parametricObject = vtkSmartPointer<vtkParametricTorus>::New();
vtkSmartPointer<vtkParametricFunctionSource> parametricFunctionSource =vtkSmartPointer<vtkParametricFunctionSource>::New();
parametricFunctionSource->SetParametricFunction(parametricObject);
parametricFunctionSource->Update();
vtkSmartPointer<vtkPolyDataMapper> mapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(parametricFunctionSource->GetOutputPort());
vtkSmartPointer<vtkActor> actor =
vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
//Create a renderer, render window, and interactor
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
renderer->SetBackground(.1, .3, .2); // Background color dark green
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
int i;
for (i = 0; i < 360; ++i)
{
renderWindow->Render();
renderer->AddActor(actor);
vtkSmartPointer<vtkCamera> cam = vtkSmartPointer<vtkCamera>::New();
vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();
transform->PostMultiply();
transform->RotateZ(1);
cam->ApplyTransform(transform);
renderer->SetActiveCamera(cam);
}
return EXIT_SUCCESS;
}
2016年08月28日 18点08分
1
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkProperty.h>
#include <vtkParametricFunctionSource.h>
#include <vtkParametricTorus.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include<vtkTransform.h>
#include<vtkCamera.h>
#include<vtkHomogeneousTransform.h>
#include <vtkMatrix4x4.h>
int main(int, char *argv[])
{
vtkSmartPointer<vtkParametricTorus> parametricObject = vtkSmartPointer<vtkParametricTorus>::New();
vtkSmartPointer<vtkParametricFunctionSource> parametricFunctionSource =vtkSmartPointer<vtkParametricFunctionSource>::New();
parametricFunctionSource->SetParametricFunction(parametricObject);
parametricFunctionSource->Update();
vtkSmartPointer<vtkPolyDataMapper> mapper =
vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(parametricFunctionSource->GetOutputPort());
vtkSmartPointer<vtkActor> actor =
vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
//Create a renderer, render window, and interactor
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
renderer->SetBackground(.1, .3, .2); // Background color dark green
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
int i;
for (i = 0; i < 360; ++i)
{
renderWindow->Render();
renderer->AddActor(actor);
vtkSmartPointer<vtkCamera> cam = vtkSmartPointer<vtkCamera>::New();
vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();
transform->PostMultiply();
transform->RotateZ(1);
cam->ApplyTransform(transform);
renderer->SetActiveCamera(cam);
}
return EXIT_SUCCESS;
}