C++版例子:

https://lorensen.github.io/VTKExamples/site/Cxx/PolyData/SelectVisiblePoints/

优点:

  • Simple to use
  • Can be implemented easily in object or image sapce
  • Can be executed quickly, even with many polygons

缺点

  • Takes up a lot of memory
  • Can't do transparent surfaces without additional code

示例用法:

自定义输入资源,左键旋转,右键显示当前可见点。

 import vtk

 # 自定义动作
class MyInteractor(vtk.vtkInteractorStyleTrackballCamera):
def __init__(self, parent=None):
self.AddObserver("RightButtonPressEvent", self.RightButtonPressEvent) def SetVisibleFilter(self, vis):
self.VisibleFilter = vis def RightButtonPressEvent(self, obj, event):
self.VisibleFilter.Update() print("number of visible points: ", self.VisibleFilter.GetOutput().GetNumberOfPoints()) mapper = vtk.vtkPolyDataMapper()
mapper.SetInputData(self.VisibleFilter.GetOutput())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
actor.GetProperty().SetPointSize(2)
actor.GetProperty().SetColor(1, 0, 0)
self.GetDefaultRenderer().AddActor(actor) self.OnRightButtonDown()
return def CreateScene(mesh):
renWin = vtk.vtkRenderWindow()
ren = vtk.vtkRenderer() # 设置背景颜色
ren.GradientBackgroundOn()
ren.SetBackground(0.1, 0.1, 0.1)
ren.SetBackground2(0.8, 0.8, 0.8) # 设置窗口大小
renWin.SetSize(600, 600)
renWin.AddRenderer(ren) iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin) # 添加自定义动作
style = MyInteractor()
style.SetDefaultRenderer(ren)
iren.SetInteractorStyle(style) mapper = vtk.vtkPolyDataMapper()
mapper.SetInputData(mesh)
actor = vtk.vtkLODActor()
actor.SetMapper(mapper)
ren.AddActor(actor) visPts = vtk.vtkSelectVisiblePoints()
visPts.SetInputData(mesh)
visPts.SetRenderer(ren)
style.SetVisibleFilter(visPts) renWin.Render()
iren.Initialize()
iren.Start() if __name__ == "__main__":
filename = "xxxx.obj"
reader = vtk.vtkOBJReader()
reader.SetFileName(filename)
reader.Update()
mesh = reader.GetOutput()
CreateScene(mesh)

vtk-py z-Buffer可见算法的更多相关文章

  1. Z-buffer算法

    1.Z缓冲区(Z-Buffer)算法 1973年,犹他大学学生艾德·卡姆尔(Edwin Catmull)独 立开发出了能跟踪屏幕上每个像素深度的算法 Z-buffer Z-buffer让计算机生成复杂 ...

  2. 大整数算法[09] Comba乘法(原理)

    ★ 引子          原本打算一篇文章讲完,后来发现篇幅会很大,所以拆成两部分,先讲原理,再讲实现.实现的话相对复杂,要用到内联汇编,要考虑不同平台等等. 在大整数计算中,乘法是非常重要的,因为 ...

  3. TensorFlow利用A3C算法训练智能体玩CartPole游戏

    本教程讲解如何使用深度强化学习训练一个可以在 CartPole 游戏中获胜的模型.研究人员使用 tf.keras.OpenAI 训练了一个使用「异步优势动作评价」(Asynchronous Advan ...

  4. DRL 教程 | 如何保持运动小车上的旗杆屹立不倒?TensorFlow利用A3C算法训练智能体玩CartPole游戏

    本教程讲解如何使用深度强化学习训练一个可以在 CartPole 游戏中获胜的模型.研究人员使用 tf.keras.OpenAI 训练了一个使用「异步优势动作评价」(Asynchronous Advan ...

  5. 采样方法(二)MCMC相关算法介绍及代码实现

    采样方法(二)MCMC相关算法介绍及代码实现 2017-12-30 15:32:14 Dark_Scope 阅读数 10509更多 分类专栏: 机器学习   版权声明:本文为博主原创文章,遵循CC 4 ...

  6. 浅析敏感词过滤算法(C++)

    为了提高查找效率,这里将敏感词用树形结构存储,每个节点有一个map成员,其映射关系为一个string对应一个TreeNode. STL::map是按照operator<比较判断元素是否相同,以及 ...

  7. berkeley db 内存池 LRU算法

    priority based lru in src/mp/mp_fget.c, __memp_fget(), 初始化 一个page buffer时, 设置其 priority: bhp->pri ...

  8. 【风马一族_Python】 实施kNN算法

    一.在PyCharm 5.0.4(编写python程序的IDE) 编写kNN.py文件的代码 -------------------------- 1. kNN.py  运算符模块 --------- ...

  9. 算法导论学习-RED-BLACK TREE

    1. 红黑树(RED-BLACK TREE)引言: ------------------------------------- 红黑树(RBT)可以说是binary-search tree的非严格的平 ...

  10. 测试不同格式下depth buffer的精度

    这篇文章主要是参考MJP的“Attack of The Depth Buffer”,测试不同格式下depth buffer的精度. 测试的depth buffer包含两类: 一是非线性的depth b ...

随机推荐

  1. java基础练习。。replaceall

    总结:方法不是别人告诉你的.再与你的手 package com.bc; public class gdfk { public static void main(String[] args) { Str ...

  2. Python的IDE:Eclipse+PyDev配置

    最近准备学习python的开发了,当然主要先尝试web方面的开发,个人所学的主要就是javaweb方面,出去了一趟,感觉到了自己的狠多不足,当然也想对自己重新定位一下,不想以后出去只是码畜级别的.想学 ...

  3. linux命令-vim

    vim是vi的升级版 //////////////////////////////////////////////////////////////////////////////// 首先安装vim ...

  4. Java 对密码MD5

    MD5,即"Message-Digest Algorithm 5(信息-摘要算法)": MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算 ...

  5. python学习笔记(1)python下载及运行

    进入https://www.python.org/官网下载python,根据需要选择2.*或3.*版本 安装完将安装目录添加到环境变量path中 运行cmd,输入python出现版本号即配置成功 下载 ...

  6. cfree使用cygwin编译程序出现计算机丢失cygwin1.dll解决办法

    这种情况多是环境没配好,我的是64位cygwin C:\cygwin64\bin 加入到环境变量中,重打开cfree就可以解决.

  7. 数据库理论-范式(1NF、2NF、3NF)

    范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”. 第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项.(每个属性不可分割)第二范式(2NF)要求数据 ...

  8. 解决ftp无法连接登录linux的办法

    1. 首先安装vsftpd 命令:yum -y install vsftpd 之后开启服务:service vsftpd start 2.关闭防火墙 1) 重启后生效 开启: chkconfig ip ...

  9. C++——static

    1.第一条也是最重要的一条:隐藏.(static函数,static变量均可) 所有未加static前缀的全局变量和函数都具有全局可见性:加static前缀的全局变量和函数只有有局部可见性: //a.c ...

  10. bluebird 开发文档链接

    参考文献:http://bluebirdjs.com/docs/api/promise.mapseries.html