#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
#include <vtkSmartPointer.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkCamera.h>
#include <vtkInteractorStyle.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRendererCollection.h>
#include <thread>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkSphereSource.h>
#include <vtkLight.h>
#include <vtkProperty.h>
#include <vtkSTLReader.h>
#include <vtkAnimationScene.h>
#include <vtkAnimationCue.h>
#include <vtkLightCollection.h>
#include <vtkPointSource.h>
#include <vtkPolyVertex.h>
#include <vtkVertexGlyphFilter.h>
#include <array>
#include <filesystem>
#include <vtkPolyDataNormals.h>
#include <vtkWindowedSincPolyDataFilter.h>
#include <vtkPolyDataWriter.h>
#include <vtkPolyDataReader.h>
bool readVtk(std::string vtk_name, vtkSmartPointer<vtkPolyData>& polydata)
{
vtkSmartPointer<vtkPolyDataReader> reader = vtkSmartPointer<vtkPolyDataReader>::New();
reader->SetFileName(vtk_name.c_str());
reader->Update();
polydata->DeepCopy(reader->GetOutput());
return true;
}
void test_new()
{
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
std::vector<std::array<double, 3>> data;
std::string vtk_file = "./eg2.vtk";
double color[3] = { 230.0 / 255, 100.0 / 255, 95.0 / 255 };
double back_color[3] = { 0,0,0 };
vtkSmartPointer< vtkPolyData> smoothSurface = vtkPolyData::New();
readVtk(vtk_file, smoothSurface);
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputData(smoothSurface);
vtkSmartPointer<vtkActor> actor =
vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
vtkSmartPointer<vtkProperty> property = vtkSmartPointer<vtkProperty>::New();
property->SetColor(color);
property->ShadingOff();
actor->SetProperty(property);
// Add the actor to the scene
renderer->AddActor(actor);
renderer->SetBackground(back_color); // Background color green
renderer->SetAmbient(1, 1, 1);
renderer->SetLightFollowCamera(true);
renderer->SetTwoSidedLighting(false);
renderer->SetAutomaticLightCreation(false);
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->SetSize(400, 400);
renderWindow->AddRenderer(renderer);
// An interactor
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
#if 1
vtkCamera* camera = renderer->GetActiveCamera();
double position[3] = { 0.0,0.0,0.0 };
double focalPoint[3] = { 0.0,0.0,0.0 };
double viewAngle = 0;
#if 1
position[0] = -0.292;
position[1] = -160.3;
position[2] = -519.8;
focalPoint[0] = -0.292;
focalPoint[1] = -160.3;
focalPoint[2] = -521.8;
#endif
//camera->SetUseHorizontalViewAngle(true);
camera->SetPosition(position);
camera->SetFocalPoint(focalPoint);
viewAngle = 115;
camera->SetViewAngle(viewAngle);
camera->SetViewUp(0, -1, 0);
#endif
#if 1
vtkSmartPointer<vtkLight> localLight = vtkSmartPointer<vtkLight>::New();
localLight->SetPosition(position);
localLight->SetFocalPoint(focalPoint);
localLight->SetConeAngle(115);
localLight->SetIntensity(1);
//localLight->SetDiffuseColor(1,1,1);
//localLight->SetAttenuationValues(0.05, 0, 0.01);
localLight->SwitchOn(); //打开或关闭光源
//localLight->SetLightTypeToHeadlight();
localLight->SetLightTypeToSceneLight();
localLight->PositionalOn();
renderer->AddLight(localLight);
#endif
renderWindow->Render(); // 重新渲染场景
renderWindowInteractor->Initialize();
renderWindowInteractor->Start();
}
int main()
{
test_new();
return 0;
}
10-19
916
04-15
1271