VTK图形处理之剪裁
来源:互联网 发布:手机mac地址不可用 编辑:程序博客网 时间:2024/06/06 02:34
剪裁
剪裁的操作基本上和剪切一样,需要使用一把“刀”(隐函数)并设置剪裁值。输入的数据集被分成了两部分:裁下的部分和裁掉的部分。默认只产生裁下的部分这个输出。
示例演示
CMakeLists.txt文件代码如下:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)PROJECT(ClipExample)FIND_PACKAGE(VTK REQUIRED)INCLUDE(${VTK_USE_FILE})ADD_EXECUTABLE(ClipExample Clip.cpp)TARGET_LINK_LIBRARIES(ClipExample ${VTK_LIBRARIES})
C++代码:
#include "vtkActor.h"#include "vtkXMLPolyDataReader.h"#include "vtkClipPolyData.h"#include "vtkPlane.h"#include "vtkPolyData.h"#include "vtkPolyDataMapper.h"#include "vtkPolyDataNormals.h"#include "vtkProperty.h"#include "vtkRenderWindow.h"#include "vtkRenderWindowInteractor.h"#include "vtkRenderer.h"#include "vtkSmartPointer.h"#include "vtkInteractorStyleTrackballCamera.h"int main(){ //read input data vtkSmartPointer<vtkXMLPolyDataReader> reader = vtkSmartPointer<vtkXMLPolyDataReader>::New(); reader->SetFileName("E:\\TestData\\cow.vtp"); vtkSmartPointer<vtkPolyDataNormals> cow_normals = vtkSmartPointer<vtkPolyDataNormals>::New(); cow_normals->SetInputConnection(reader->GetOutputPort()); vtkSmartPointer<vtkPlane> plane = vtkSmartPointer<vtkPlane>::New(); plane->SetOrigin(0.25, 0.0, 0.0); plane->SetNormal(-1, -1, 0); vtkSmartPointer<vtkClipPolyData> clipper = vtkSmartPointer<vtkClipPolyData>::New(); clipper->SetInputConnection(cow_normals->GetOutputPort()); clipper->SetClipFunction(plane); clipper->GenerateClipScalarsOn(); clipper->GenerateClippedOutputOn(); clipper->SetValue(0.5); vtkSmartPointer<vtkPolyDataMapper> clip_mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); clip_mapper->SetInputConnection(clipper->GetOutputPort()); clip_mapper->ScalarVisibilityOff(); vtkSmartPointer<vtkProperty> backProp = vtkSmartPointer<vtkProperty>::New(); backProp->SetDiffuseColor(1.00, 0.388, 0.278); vtkSmartPointer<vtkActor> clip_actor = vtkSmartPointer<vtkActor>::New(); clip_actor->SetMapper(clip_mapper); clip_actor->GetProperty()->SetColor(.200, .631, .788); clip_actor->SetBackfaceProperty(backProp); vtkSmartPointer<vtkPolyDataMapper> rest_mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); rest_mapper->SetInputConnection(clipper->GetClippedOutputPort()); rest_mapper->ScalarVisibilityOff(); vtkSmartPointer<vtkActor> rest_actor = vtkSmartPointer<vtkActor>::New(); rest_actor->SetMapper(rest_mapper); rest_actor->GetProperty()->SetRepresentationToWireframe(); vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); renderer->AddActor(clip_actor); renderer->AddActor(rest_actor); renderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New(); renWin->AddRenderer(renderer); renWin->SetSize(640, 480); renWin->Render(); renWin->SetWindowName("ClipExample"); vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New(); iren->SetRenderWindow(renWin); vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New(); iren->SetInteractorStyle(style); iren->Initialize(); iren->Start(); return EXIT_SUCCESS;}
运行结果:
图中颜色显示部分是裁下的部分PolyData数据,而裁掉的部分以线框的形式显示。
阅读全文
0 0
- VTK图形处理之剪裁
- VTK图形处理之vtkTriangleFilter
- VTK图形处理之剪切
- VTK图形处理之封闭性检测
- VTK图形处理之抽取轮廓
- VTK图形处理之颜色映射
- VTK图形处理之自定义纹理映射Filter
- VTK图像处理之vtkImageMapToColors
- VTK图像处理之vtkImageReslice
- 图片剪裁之图形圆形和方形选择框
- VTK图像处理之图像数据结构
- VTK修炼之道45:图形进阶_vtkPolyData属性数据
- 图形处理之 OpenGL
- C#图片处理之:图片缩放和剪裁
- C#图片处理之:图片缩放和剪裁
- C#图片处理之:图片缩放和剪裁
- C#图片处理之:图片缩放和剪裁
- C#图片处理之:图片缩放和剪裁
- python里为什么需要使用装饰器(decorator)
- 迁移学习 transfer learning
- 从ViewRootImpl类分析View绘制的流程
- 4种OSS的应用架构及核心技术帮助
- 二叉树中和为某一值的路径
- VTK图形处理之剪裁
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 H. A Cache Simulator
- 启动plsql登录界面很慢,要大概十分钟才显示,但是一打开进程是有的
- leetcode_链表总结
- 第四周 项目三 单链表应用 1.
- nio基本使用一
- EasyNVR无插件直播服务器如何使用ffmpeg实现摄像机快照功能的
- HashMap实现原理
- Spring Security3.1登陆验证