自助建站源码下载,棋牌游戏平台,自定义wordpress维护页面,六安网络推广一#xff1a;主要的知识点
1、说明
本文只是教程内容的一小段#xff0c;因博客字数限制#xff0c;故进行拆分。主教程链接#xff1a;vtk教程——逐行解析官网所有Python示例-CSDN博客
2、知识点纪要
本段代码主要涉及的有①vtkTriangleFilter三角面化#xff0c;②…一主要的知识点1、说明本文只是教程内容的一小段因博客字数限制故进行拆分。主教程链接vtk教程——逐行解析官网所有Python示例-CSDN博客2、知识点纪要本段代码主要涉及的有①vtkTriangleFilter三角面化②布尔运算二代码及注释import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkFiltersCore import vtkCleanPolyData, vtkTriangleFilter from vtkmodules.vtkFiltersGeneral import vtkBooleanOperationPolyDataFilter from vtkmodules.vtkFiltersSources import vtkSphereSource from vtkmodules.vtkRenderingCore import ( vtkActor, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) if __name__ __main__: colors vtkNamedColors() operation intersection # intersection difference # 没有找到示例代码中示意图的mesh模型故采用球体去生成展示模型 # 展示vtkTriangleFilter和vtkCleanPolyData的用法 poly1 ReadPolyData(fn1) tri1 vtkTriangleFilter() tri1.SetInputData(poly1) clean1 vtkCleanPolyData() clean1.SetInputConnection(tri1.GetOutputPort()) clean1.Update() input1 clean1.GetOutput() vtkTriangleFilter把 vtkPolyData 中所有的多边形四边形、多边形等统一转换成三角形 vtkCleanPolyData 作用主要是 清理 / 合并重复或无效的几何数据让 vtkPolyData 更加规整 sphereSource1 vtkSphereSource() sphereSource1.SetCenter(0.25, 0, 0) sphereSource1.SetThetaResolution(21) sphereSource1.SetPhiResolution(21) sphereSource1.Update() input1 sphereSource1.GetOutput() sphereSource2 vtkSphereSource() sphereSource2.Update() input2 sphereSource2.GetOutput() input1Mapper vtkPolyDataMapper() input1Mapper.SetInputData(input1) input1Mapper.ScalarVisibilityOff() input1Actor vtkActor() input1Actor.SetMapper(input1Mapper) input1Actor.GetProperty().SetDiffuseColor(colors.GetColor3d(Tomato)) input1Actor.GetProperty().SetSpecular(0.6) input1Actor.GetProperty().SetSpecularPower(20) input1Actor.SetPosition(input1.GetBounds()[1] - input1.GetBounds()[0], 0, 0) input2Mapper vtkPolyDataMapper() input2Mapper.SetInputData(input2) input2Mapper.ScalarVisibilityOff() input2Actor vtkActor() input2Actor.SetMapper(input2Mapper) input2Actor.GetProperty().SetDiffuseColor(colors.GetColor3d(Mint)) input2Actor.GetProperty().SetSpecular(0.6) input2Actor.GetProperty().SetSpecularPower(20) input2Actor.SetPosition(-(input1.GetBounds()[1] - input1.GetBounds()[0]), 0, 0) booleanOperation vtkBooleanOperationPolyDataFilter() if operation union: booleanOperation.SetOperationToUnion() elif operation intersection: booleanOperation.SetOperationToIntersection() else: booleanOperation.SetOperationToDifference() booleanOperation.SetInputData(0, input1) booleanOperation.SetInputData(1, input2) booleanOperationMapper vtkPolyDataMapper() booleanOperationMapper.SetInputConnection(booleanOperation.GetOutputPort()) booleanOperationMapper.ScalarVisibilityOff() booleanOperationActor vtkActor() booleanOperationActor.SetMapper(booleanOperationMapper) booleanOperationActor.GetProperty().SetDiffuseColor(colors.GetColor3d(Banana)) booleanOperationActor.GetProperty().SetSpecular(0.6) booleanOperationActor.GetProperty().SetSpecularPower(20) renderer vtkRenderer() renderer.AddViewProp(input1Actor) renderer.AddViewProp(input2Actor) renderer.AddViewProp(booleanOperationActor) renderer.SetBackground(colors.GetColor3d(Silver)) renderWindow vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindow.SetSize(640, 480) renderWindow.SetWindowName(BooleanOperationPolyDataFilter) viewUp [0.0, 0.0, 1.0] position [0.0, -1.0, 0.0] renderer.GetActiveCamera().SetViewUp(viewUp) renderer.GetActiveCamera().SetPosition(position) renderer.ResetCamera() renderer.GetActiveCamera().Dolly(1.4) renderer.ResetCameraClippingRange() renWinInteractor vtkRenderWindowInteractor() renWinInteractor.SetRenderWindow(renderWindow) renderWindow.Render() renWinInteractor.Start()