VTK 读取STL文件并且显示
2013-12-31 10:22
696 查看
#include "stdafx.h"
#include "vtkCamera.h"
#include "vtkGenericRenderWindowInteractor.h"
#include "vtkInteractorStyleJoystickCamera.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include "vtkLODActor.h"
#include "vtkLight.h"
#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
#include "vtkPropPicker.h"
#include "vtkProperty.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
#include "vtkSTLReader.h"
#include "vtkShrinkPolyData.h"
int main( int argc, char *argv[] ) {
//创建绘制器对象
vtkRenderer *ren1 = vtkRenderer::New();
//设置相机
ren1->GetActiveCamera()->SetClippingRange(0.294421 , 29.4421);
ren1->GetActiveCamera()->SetDistance(7.94348);
ren1->GetActiveCamera()->SetFocalPoint(-66.9367 , -49.4539 , 258.453);
ren1->GetActiveCamera()->SetPosition(-67.8091 , -57.3489 , 258.377);
ren1->GetActiveCamera()->SetViewAngle(20);
ren1->GetActiveCamera()->SetViewUp(-0.82718 , 0.0860684 , 0.555306);
ren1->GetActiveCamera()->SetParallelProjection(0);
ren1->GetActiveCamera()->SetUseHorizontalViewAngle(0);
ren1->SetBackground(0.1 , 0.2 , 0.4);
ren1->SetLightFollowCamera(1);
//创建绘制窗口
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(ren1);
renWin->SetSize(1134 , 624);
//创建交互器
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
iren->SetLightFollowCamera(1);
//读源对象读取stl数据文件
vtkSTLReader *part = vtkSTLReader::New();
part->SetOutput(part->GetOutput());
part->SetFileName("42400-IDGH.stl");
//创建过滤器对象,该对象将输入数据集的每个单元向单元质心收缩
//将会导致相邻单元之间出现裂缝
vtkShrinkPolyData *shrink = vtkShrinkPolyData::New();
//将源对象和过滤器连接
shrink->SetInput((vtkPolyData *) part->GetOutput());
//设置收缩系数,如果为1,不收缩
shrink->SetShrinkFactor(0.9);
//创建映射器对象
vtkPolyDataMapper *partMapper = vtkPolyDataMapper::New();
partMapper->SetInput((vtkPolyData *) shrink->GetOutput());
partMapper->SetNumberOfPieces(1);
partMapper->SetScalarRange(0 , 1);
partMapper->SetColorMode(0);
partMapper->SetResolveCoincidentTopology(0);
partMapper->SetScalarMode(0);
partMapper->SetImmediateModeRendering(0);
partMapper->SetScalarVisibility(1);
partMapper->SetUseLookupTableScalarRange(0);
//创建Props对象(Actor)
vtkLODActor *partActor = vtkLODActor::New();
partActor->SetMapper(partMapper);
partActor->GetProperty()->SetAmbientColor(0.8275 , 0.8275 , 0.8275);
partActor->GetProperty()->SetColor(0.8275 , 0.8275 , 0.8275);
partActor->GetProperty()->SetDiffuseColor(0.8275 , 0.8275 , 0.8275);
partActor->GetProperty()->SetOpacity(1);
partActor->GetProperty()->SetInterpolation(1);
partActor->GetProperty()->SetRepresentation(2);
partActor->GetProperty()->SetBackfaceCulling(0);
partActor->GetProperty()->SetEdgeVisibility(0);
partActor->GetProperty()->SetFrontfaceCulling(0);
partActor->SetOrigin(0 , 0 , 0);
partActor->SetPosition(0 , 0 , 0);
partActor->SetScale(1 , 1 , 1);
partActor->SetVisibility(1);
//将Actor对象添加到绘制器中
ren1->AddActor( partActor );
//绘制
ren1->ResetCamera();
ren1->ResetCameraClippingRange();
renWin->Render();
iren->Initialize();
iren->Start();
//删除对象
iren->Delete();
part->Delete();
partActor->Delete();
partMapper->Delete();
ren1->Delete();
renWin->Delete();
shrink->Delete();
return 0;
#include "vtkCamera.h"
#include "vtkGenericRenderWindowInteractor.h"
#include "vtkInteractorStyleJoystickCamera.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include "vtkLODActor.h"
#include "vtkLight.h"
#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
#include "vtkPropPicker.h"
#include "vtkProperty.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
#include "vtkSTLReader.h"
#include "vtkShrinkPolyData.h"
int main( int argc, char *argv[] ) {
//创建绘制器对象
vtkRenderer *ren1 = vtkRenderer::New();
//设置相机
ren1->GetActiveCamera()->SetClippingRange(0.294421 , 29.4421);
ren1->GetActiveCamera()->SetDistance(7.94348);
ren1->GetActiveCamera()->SetFocalPoint(-66.9367 , -49.4539 , 258.453);
ren1->GetActiveCamera()->SetPosition(-67.8091 , -57.3489 , 258.377);
ren1->GetActiveCamera()->SetViewAngle(20);
ren1->GetActiveCamera()->SetViewUp(-0.82718 , 0.0860684 , 0.555306);
ren1->GetActiveCamera()->SetParallelProjection(0);
ren1->GetActiveCamera()->SetUseHorizontalViewAngle(0);
ren1->SetBackground(0.1 , 0.2 , 0.4);
ren1->SetLightFollowCamera(1);
//创建绘制窗口
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(ren1);
renWin->SetSize(1134 , 624);
//创建交互器
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
iren->SetLightFollowCamera(1);
//读源对象读取stl数据文件
vtkSTLReader *part = vtkSTLReader::New();
part->SetOutput(part->GetOutput());
part->SetFileName("42400-IDGH.stl");
//创建过滤器对象,该对象将输入数据集的每个单元向单元质心收缩
//将会导致相邻单元之间出现裂缝
vtkShrinkPolyData *shrink = vtkShrinkPolyData::New();
//将源对象和过滤器连接
shrink->SetInput((vtkPolyData *) part->GetOutput());
//设置收缩系数,如果为1,不收缩
shrink->SetShrinkFactor(0.9);
//创建映射器对象
vtkPolyDataMapper *partMapper = vtkPolyDataMapper::New();
partMapper->SetInput((vtkPolyData *) shrink->GetOutput());
partMapper->SetNumberOfPieces(1);
partMapper->SetScalarRange(0 , 1);
partMapper->SetColorMode(0);
partMapper->SetResolveCoincidentTopology(0);
partMapper->SetScalarMode(0);
partMapper->SetImmediateModeRendering(0);
partMapper->SetScalarVisibility(1);
partMapper->SetUseLookupTableScalarRange(0);
//创建Props对象(Actor)
vtkLODActor *partActor = vtkLODActor::New();
partActor->SetMapper(partMapper);
partActor->GetProperty()->SetAmbientColor(0.8275 , 0.8275 , 0.8275);
partActor->GetProperty()->SetColor(0.8275 , 0.8275 , 0.8275);
partActor->GetProperty()->SetDiffuseColor(0.8275 , 0.8275 , 0.8275);
partActor->GetProperty()->SetOpacity(1);
partActor->GetProperty()->SetInterpolation(1);
partActor->GetProperty()->SetRepresentation(2);
partActor->GetProperty()->SetBackfaceCulling(0);
partActor->GetProperty()->SetEdgeVisibility(0);
partActor->GetProperty()->SetFrontfaceCulling(0);
partActor->SetOrigin(0 , 0 , 0);
partActor->SetPosition(0 , 0 , 0);
partActor->SetScale(1 , 1 , 1);
partActor->SetVisibility(1);
//将Actor对象添加到绘制器中
ren1->AddActor( partActor );
//绘制
ren1->ResetCamera();
ren1->ResetCameraClippingRange();
renWin->Render();
iren->Initialize();
iren->Start();
//删除对象
iren->Delete();
part->Delete();
partActor->Delete();
partMapper->Delete();
ren1->Delete();
renWin->Delete();
shrink->Delete();
return 0;
相关文章推荐
- 利用VTK显示文件读取进度模态对话框
- Json文件放入Assets文件,读取解析并且放入listview中显示。
- java 读取并且显示 txt 文件
- 利用python读取xml布局文件下面使用中文或者引用资源文件里面的中文,并且显示行号
- {学海无涯}【基于VTK的三维建模】——1.Dicom文件的读取与显示
- 利用VTK显示文件读取进度模态对话框
- vtk读取文件并显示的几种方法
- ITK、VTK、Qt读取与显示DICOM文件------代码部分
- 3 vtk读取并显示dicom文件
- ITK读取图片, 并重新写入图片文件, VTK显示
- STL文件的读取与显示
- 获取文件夹大小并且显示为易于读取的文件单位
- ios 使用NSURlSession 下载文件并且使用进度条进行文件下载进度读取以及打开附件(word,excel,ppt,pdf)显示
- VTK实现Dicom文件的读取及显示
- 用Delphi如何读取Wav文件的波形,并且显示?
- VTK中导入并显示STL、3DS文件
- C#读取srt字幕格式文件显示字幕
- 位图文件的读取显示
- android应用面试宝典(下);用自定义组件控制循环组件使用bug还添加标志显示答案标志位;通过包名读取配置文件AndroidManifest.xml
- FileReader:读取本地图片文件并显示