巴中微网站建设,做网站公司怎么找,网站建设如何设置登录页面,十个有趣又好玩的网页文章目录 4 Plotter类的方法4.1 访问Plotter信息4.1.1 实例信息4.1.2 演员对象列表 4.2 渲染器操作4.2.1 选择渲染器4.2.2 更新渲染场景 4.3 控制渲染效果4.3.1 渲染窗格的背景色4.3.2 深度剥离效果4.3.3 隐藏线框的线条4.3.4 改为平行投影模式4.3.5 添加阴影4.3.6 环境光遮蔽4… 文章目录 4 Plotter类的方法4.1 访问Plotter信息4.1.1 实例信息4.1.2 演员对象列表 4.2 渲染器操作4.2.1 选择渲染器4.2.2 更新渲染场景 4.3 控制渲染效果4.3.1 渲染窗格的背景色4.3.2 深度剥离效果4.3.3 隐藏线框的线条4.3.4 改为平行投影模式4.3.5 添加阴影4.3.6 环境光遮蔽4.3.7 添加景深 vedo是Python实现的一个用于辅助科学研究的3D可视化库。 vedo的plotter模块是管理对象和控制3D渲染的模块。
Plotter实例可以用于显示3D图形对象、控制渲染器行为、操控相机、创建事件以及导出3D数据。几乎所有关于3D图形的操作都是在Plotter渲染的窗口进行的。
按照功能对Plotter的方法进行分组以下是操作渲染器的方法。
参考vedo官方文档 4 Plotter类的方法
4.1 访问Plotter信息
4.1.1 实例信息
plt.print() 打印当前Plotter实例的信息。
plt vedo.Plotter()
plt.print()结果如下
vedo.plotter.Plotter at (0x22f4b4c16f0)
window title : vedo
window size : (960, 960), full_screen(1707, 1067)
activ renderer: nr.0 (out of 1 renderers)
n. of objects : 0
axes style : [None]4.1.2 演员对象列表
plt.actors 返回actors列表。全部被展示的对象中拥有actor属性的对象的actor组成这个列表。 4.2 渲染器操作
4.2.1 选择渲染器
plt.at(nren, yrenNone) 使当前渲染器变为编号指定的渲染器返回绘制器本身。 也可以通过[nx, ny]格式选择第几行第几列的渲染器。 vedo模块的类的方法被调用时大部分会返回实例本身所以可以很方便地在同一行连用多个方法进行操作。在vedo的官方示例中经常这么使用。 s vedo.Sphere(r0.7)
c vedo.Cube()plt vedo.Plotter(N2)
# 在两个窗格分别展示球体和立方体
plt.at(0).add(s)
plt.at(1).add(c)
plt.show(interactiveTrue)4.2.2 更新渲染场景
plt.render(resetcamFalse) 已有窗口展示的情况下改变场景中的元素后需要手动渲染场景更新变化。 一般在循环或回调函数中使用。
plt vedo.Plotter()cs [green, red, blue]
# 窗口展示(未定义交互事件因此不需要交互)
plt.show(interactiveFalse)
for i in range(10):i i % 3# 改变背景颜色plt.background(c1cs[i])# 渲染plt.render()time.sleep(1)每秒变一次背景色 4.3 控制渲染效果
4.3.1 渲染窗格的背景色
plt.background() 为指定渲染器设置背景颜色。参数如下
c1None主要背景色c2None窗口上面部分的背景色会和c1设置的颜色形成渐变。atNone渲染器的索引。mode0背景渐变的方式(需要vtk版本在9.3或以上)。必须c1和c2都填了才可用。 0为垂直从下到上渐变 1为水平从左到右渐变 2为从中央向四周辐射渐变 3为从四周向中央辐射渐变。
背景色设置
plt vedo.Plotter(N2)
# 设置背景色
plt.background(green, at0)
plt.background(green, red, at1)
# 展示
plt.show(vedo.Text2D(c1green\nc2None, s3), at0)
plt.show(vedo.Text2D(c1green\nc2red, s3), at1)
plt.show(interactiveTrue)4种渐变方式
plt vedo.Plotter(shape(1, 4))
plt.background(green, red, at0, mode1)
plt.background(green, red, at1, mode0)
plt.background(green, red, at2, mode2)
plt.background(green, red, at3, mode3)
plt.show(interactiveTrue)4.3.2 深度剥离效果
plt.use_depth_peeling(atNone, valueTrue) 是否在指定的渲染器上使用深度剥离算法。 深度剥离是一种半透明渲染算法。进行n次绘制每次绘制离相机的第n近的层最后按顺序把剥离出的层按透明度混合到屏幕缓冲中。 需要在第一次渲染之前调用。
# 有一部分重叠在一起的两个图形
s vedo.Sphere(pos(0, 0, 0), r0.7, alpha0.7)
c vedo.Cube(pos(0, 0, 1), alpha0.7)
plt vedo.Plotter(N2)
# 使用深度剥离和不使用的效果
plt.at(0).use_depth_peeling(valueTrue).add(s, c)
plt.at(1).use_depth_peeling(valueFalse).add(s, c)
plt.show(interactiveTrue)可以看到使用深度剥离算法可以正确渲染半透明物体的远近关系。
4.3.3 隐藏线框的线条
plt.render_hidden_lines(valueTrue) 在wireframe模式下移除背后的线条。
s vedo.Sphere(pos(0, 0, 0), r0.7).wireframe()
plt vedo.Plotter(N2)
plt.at(0).add(s).render_hidden_lines(True)
plt.at(1).add(s).render_hidden_lines(False)
plt.show(interactiveTrue)4.3.4 改为平行投影模式
plt.parallel_projection(valueTrue, atNone) 对指定的渲染器使用平行投影。 输入value-1可以切换该选项的开关。
# 创建两个有距离的立方体
c1 vedo.Cube(pos(3, 3, 3))
c2 vedo.Cube(pos(0, 0, 0))
plt vedo.Plotter(N2, sharecamFalse, resetcamTrue)
# 启用平行投影
plt.at(0).add(c1, c2).parallel_projection(valueTrue)
# 不启用平行投影
plt.at(1).add(c1, c2).parallel_projection(valueFalse)
plt.show(interactiveTrue)在交互页面拖动使两个立方体靠近可以发现 不启用平行投影3D图像会有近大远小的效果平行投影是以平行的视线看向对象会移除任何透视效果。
4.3.5 添加阴影
plt.add_shadows() 为当前渲染器添加阴影。需要与光源和放置阴影的物体配合。
s vedo.Sphere(r0.7)
# 简易光源
lit vedo.addons.Light((-3, 0, 0))
# 创建墙面
wall vedo.Box((3, 0, 0), length0.1, width10, height10)
plt vedo.Plotter(N2)
plt.at(0).add(s, lit, wall)
plt.at(1).add(s, lit, wall).add_shadows()
plt.show(interactiveTrue)4.3.6 环境光遮蔽
plt.add_ambient_occlusion() 屏幕空间环境光遮蔽。基于屏幕空间像素着色器都会对所有像素周围的深度值采样并计算所有采样点的遮蔽率。 参数及说明如下
radius计算遮蔽率的影响半径。bias0.01法线的偏差。blurTrue向采样位置添加模糊效果。samples100采样数。
# 两个相连的球体连接处光线遮蔽效果更明显
s1 vedo.Sphere(pos(0, 0.6, 0), r0.7)
s2 vedo.Sphere(pos(0, -0.6, 0), r0.7)
plt vedo.Plotter()
plt.add(s1, s2)
plt.add_ambient_occlusion(2)
plt.show(interactiveTrue)4.3.7 添加景深
plt.add_depth_of_field(autofocusTrue) 在场景中添加景深效果。
plt vedo.Plotter(N2)
plt.at(0).add(s1, s2).add_depth_of_field()
plt.at(1).add(s1, s2)
plt.show(interactiveTrue)景深效果类似相机对焦的效果焦点图像清晰其余图像被模糊处理。 以整理了绘制器类Plotter中渲染操作相关的方法。
更多关于数据可视化的内容参考Python数据可视化笔记