mayavi.mlab鼠标交互选取

参考链接:科学计算三维可视化—Mlab基础(鼠标选取交互操作)
mayavi.mlab官方例子:mlab: Python scripting for 3D plotting

import numpy as np
from mayavi import mlabfigure = mlab.gcf() #获取当前窗口指针figure.scene.disable_render = True
#1.小球场景初始化建立
# 用mlab.points3d建立红色和白色小球的集合
x1, y1, z1 = np.random.random((3,10))   #3行10列分给三个元素,每个都是以为数组含10元素
red_glyphs = mlab.points3d(x1,y1,z1,color=(1,0,0),resolution=10)    #创建10个红球,位置为x1,y1,z1,分辨率为10的小球x2, y2, z2 = np.random.random((3,10))   #3行10列分给三个元素,每个都是以为数组含10元素
white_glyphs = mlab.points3d(x2,y2,z2,color=(0.9,0.9,0.9),resolution=10)    #创建10个白球# 2.选取框初始化建立
outline = mlab.outline(line_width=3)
outline.outline_mode = "cornered"
outline.bounds = (x1[0]-0.1,x1[0]+0.1,y1[0]-0.1,y1[0]+0.1,z1[0]-0.1,z1[0]+0.1,)figure.scene.disable_render = False#获取一个红色小球的所有顶点,我们只是想要知道每个小球的顶点数目而已,所以不用考虑其他
glyph_points = red_glyphs.glyph.glyph_source.glyph_source.output.points.to_array()#3.选取回调函数的结构
def piker_callback(picker): #当鼠标点击会返回一个vtk picker对象,我们将对该对象进行处理判断if picker.actor in red_glyphs.actor.actors:# 确定该小球的ID,point_id = int(picker.point_id/glyph_points.shape[0])   #picker.point_id是picker对象选取的顶点ID,glyph_points.shape[0]记录了82这个值,通过这个计算出小球的IDif point_id != -1:  #表示有红色小球被选取了#计算与此红色小球相关的坐标x,y,z = x1[point_id],y1[point_id],z1[point_id]#将外框移动到小球上outline.bounds = (x - 0.1, x + 0.1,y - 0.1, y + 0.1,z - 0.1, z + 0.1,)picker = figure.on_mouse_pick(piker_callback)
picker.tolerance = 0.01     #设置tolerance参数提高精确度mlab.title("Click on red balls")    #设置窗口的标题文字mlab.show()

mayavi.mlab鼠标交互选取相关推荐

  1. OpenGL学习笔记3 —— 绘制3D物体、鼠标交互、反向变换

    /* reference http://nehe.gamedev.net/article/using_gluunproject/16013/ */#include <windows.h> ...

  2. python xycoords_python可视化节点关系(三):matplotlib(2)鼠标交互

    实现鼠标交互 1. 实现鼠标点击节点高亮 直接上代码: # -*- coding: utf-8 -*- # -*- coding: utf-8 -*- import matplotlib.pyplot ...

  3. OpenCV中鼠标交互-绘制矩形框

    OpenCV中鼠标交互-绘制矩形框 ·具体流程: 1.绑定回调函数 2.在回调函数中检测触发的事件 3.根据不同事件做出不同动作 一.绑定回调函数 cv2.setMouseCallback('orig ...

  4. python opencv 截取矩形区域_python+OpenCV 鼠标交互图片切割矩形区域

    about 本文参考了: 不用鼠标交互,手动设参 先来个热身运动的先,直接手动设参选择.一个要点就是把一个RGB图片看成一个3维的数组. import cv2 def main(): org = cv ...

  5. Unity 进阶 之 简单模仿鼠标交互(场景:手机屏幕当做触摸板Touch Pad,移动鼠标,鼠标确定等操作)

    Unity 进阶 之 简单模仿鼠标交互(场景:手机屏幕当做触摸板Touch Pad,移动鼠标,鼠标确定等操作) 目录 Unity 进阶 之 简单模仿鼠标交互(场景:手机屏幕当做触摸板Touch Pad ...

  6. 计算机图形学实验四 OpenGL的鼠标交互绘制

    一.实验目的 1.掌握OpenGL的鼠标按钮响应函数. 2.掌握OpenGL的鼠标移动响应函数. 3.进一步巩固OpenGL的基本图元绘制基础. 二.实验内容 1.鼠标画草图--实现鼠标点到哪,线就画 ...

  7. 鼠标交互的使用与优化

    无论是PC端的鼠标交互还是移动端的触摸交互,我们暂且都泛称为鼠标交互.这是游戏引擎实现人机交互的基础.本文从LayaAir引擎鼠标交互的基础使用开始(包括2D与3D),到进阶级的使用,进行全面介绍,希 ...

  8. python桌面壁纸键盘鼠标交互

    1.灵感来源 最近想起来之前看见过的一个桌面宠物,会在屏幕的一小部分区域显示一只猫,当用户点击键盘和鼠标的时候,那只猫也会有相应的动作.百般搜索找到那个桌宠软件的名字叫Bongo Cat Mver.回 ...

  9. QT+OpenGL导入STL文件(二进制/ascll码格式),鼠标交互实现缩放旋转

    碎碎念 由于课设和大创涉及到了模型的旋转,因此专门去学习了模型的导入,也是废了不少心思,现在总结一下两种格式的简单导入,以及对stl模型两种格式的简单介绍.网上有很多大佬都有详细的解答,结尾附上链接: ...

最新文章

  1. 数学仍然是人类的“火炬”
  2. _网站建站基础第十一课(域名解析服务器环境linux安装宝塔)
  3. 【随感】看老科和当当的回眸相视
  4. 获取物料的103待检库存
  5. [Vue.js]跨域访问四种解决方法
  6. 如何在报表中实现算法的可挂接需求
  7. 如果Python对于磁盘没有写入权限,还会运行吗?
  8. 垂涎欲滴!30个美味的食品类移动应用程序【下篇】
  9. Lvs+Keepalived高可用负载均衡配置
  10. vs怎么把文字超链接_「Excel技巧」Excel表格如何制作带超链接的导航目录
  11. 计算机组成一简化模型
  12. return,continue的示例
  13. 通过V90PN通讯故障实例来看线路干扰与线路错误的区别
  14. CoffeeScript基础
  15. 前端程序员成长的记录及被某IT外包公司套路的经历
  16. 编写一个方法,将一段文本中的各个单词的字母顺序翻转题
  17. Android冒险之旅-14-RecycleView(线性,网格,瀑布流)
  18. 三国演义人物词频统计-4
  19. macOS长按键盘重复输入
  20. Spring Beans 自动装配 使用XML配置列子(带源码)

热门文章

  1. 清华NLP机器翻译论文精华汇总
  2. 统信UOS使用sendKey关联微信及企业微信全局快捷键(其他软件可参考)
  3. 即将加入IT民工行列,毕业年找工作的一些经历和经验
  4. 基于联盟链的分布式数字证书管理系统
  5. python列表的添加操作_python3_列表(修改,添加和删除元素操作)
  6. SQL组合查询:(字段1, 字段2) in ((v1, v2),(v3, v4))
  7. linux提示两个文档正在编辑器,实验2 Linux的基本操作与 使用vi编辑器 (2011-9).doc...
  8. 人血馒头还能吃?咪蒙微博永久关闭,公众号停更60天
  9. php phar 反序列化,利用 phar 拓展 php 反序列化漏洞攻击面
  10. 常见服务器性能指标:QPS、TPS、RT、Load、PV、UV、带宽