200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Mlab - 改变物体外观及鼠标选取操作

Mlab - 改变物体外观及鼠标选取操作

时间:2021-04-19 22:12:55

相关推荐

Mlab - 改变物体外观及鼠标选取操作

Python科学计算三维可视化

黄天羽、嵩天

Mlab 基础

MLab reference

改变物体的外观

改变颜色

colormap 定义的颜色,也叫 LUT(Look Up Table)

常见的 colormaps

import numpy as npfrom mayavi import mlab#建立数据x, y = np.mgrid[-10:10:200j, -10:10:200j]z = 100 * np.sin(x * y) / (x * y)# 对数据进行可视化mlab.figure(bgcolor=(1, 1, 1))surf = mlab.surf(z, colormap='cool')# 更新视图并显示出来mlab.show()

from mayavi import mlabimport numpy as npx, y = np.mgrid[-10:10:200j, -10:10:200j]z = 100 * np.sin(x*y) / (x*y)mlab.figure(bgcolor=(1,1,1))surf = mlab.surf(z, colormap = 'cool')# 访问surf对象的LUT# LUT是一个255*4的数组,列向量表示RGBA,每个值的范围是0~255lut = surf.module_manager.scalar_lut_manager.lut.table.to_array()# 增加透明度,修改alpha通道(透明度)lut[:, -1] = np.linspace(0, 255, 256)surf.module_manager.scalar_lut_manager.lut.table = lutmlab.show()

鼠标选取操作

on_mouse_pick(callback, type=‘point’,Button=‘Left’,Remove=False)

Type:’point’,’cell’or ‘world’Button:’Left’,’Middle’or ‘Right’Remove: 如果值为True,则callback函数不起作用返回:一个 vtk picker 对象

import numpy as npfrom mayavi import mlab######场景初始化######figure = mlab.gcf() figure.scene.disable_render = True# 用mlab.points3d建立红色和白色小球的集合x1, y1, z1 = np.random.random((3, 10))red_glyphs = mlab.points3d(x1, y1, z1, color=(1, 0, 0),resolution=10)x2, y2, z2 = np.random.random((3, 10))white_glyphs = mlab.points3d(x2, y2, z2, color=(0.9, 0.9, 0.9),resolution=10) # 绘制选取框,并放在第一个小球上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()# 当选取事件发生时调用此函数def picker_callback(picker):if picker.actor in red_glyphs.actor.actors:# 计算哪个小球被选取point_id = int(picker.point_id / glyph_points.shape[0]) # int向下取整 if point_id != -1:# 如果没有小球被选取,则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(picker_callback)mlab.title('Click on red balls')mlab.show()

picker.tolerance = 0.01 # 设置tolerance参数,提高选取精度!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。