南昌大学南昌网站建设公司,团队建设海报网站,网站建设实验七,钢铁网站建设初衷文章目录 1. visual模块的继承关系2. 基类CommonVisual的方法2.1 获取对象信息2.1.1 对象本身信息2.1.2 对象的查找表2.1.3 对象标量范围2.1.4 对象缩略图 2.2 呈现对象2.2.1 在窗口显示1.2.2 对象可见性 2.2.3 对象颜色2.2.4 对象透明度 2.3 添加标度条2.3.1 2D标度条2.3.2 3D… 文章目录 1. visual模块的继承关系2. 基类CommonVisual的方法2.1 获取对象信息2.1.1 对象本身信息2.1.2 对象的查找表2.1.3 对象标量范围2.1.4 对象缩略图 2.2 呈现对象2.2.1 在窗口显示1.2.2 对象可见性 2.2.3 对象颜色2.2.4 对象透明度 2.3 添加标度条2.3.1 2D标度条2.3.2 3D标度条 2.4 未实装或阉割的功能2.4.1 鼠标操作性2.4.2 事件2.4.3 相机设置 1. visual模块的继承关系
visual子模块包含了管理对象及其属性的可视化和外观的基类。 这些类可以单独实例化但是没有用处。一般是由子类的实例调用它们封装的方法。
以下是继承自这个模块的类的子类 #mermaid-svg-meau7MHBbuXK6oyH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-meau7MHBbuXK6oyH .error-icon{fill:#552222;}#mermaid-svg-meau7MHBbuXK6oyH .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-meau7MHBbuXK6oyH .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-meau7MHBbuXK6oyH .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-meau7MHBbuXK6oyH .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-meau7MHBbuXK6oyH .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-meau7MHBbuXK6oyH .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-meau7MHBbuXK6oyH .marker{fill:#333333;stroke:#333333;}#mermaid-svg-meau7MHBbuXK6oyH .marker.cross{stroke:#333333;}#mermaid-svg-meau7MHBbuXK6oyH svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-meau7MHBbuXK6oyH .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-meau7MHBbuXK6oyH .cluster-label text{fill:#333;}#mermaid-svg-meau7MHBbuXK6oyH .cluster-label span{color:#333;}#mermaid-svg-meau7MHBbuXK6oyH .label text,#mermaid-svg-meau7MHBbuXK6oyH span{fill:#333;color:#333;}#mermaid-svg-meau7MHBbuXK6oyH .node rect,#mermaid-svg-meau7MHBbuXK6oyH .node circle,#mermaid-svg-meau7MHBbuXK6oyH .node ellipse,#mermaid-svg-meau7MHBbuXK6oyH .node polygon,#mermaid-svg-meau7MHBbuXK6oyH .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-meau7MHBbuXK6oyH .node .label{text-align:center;}#mermaid-svg-meau7MHBbuXK6oyH .node.clickable{cursor:pointer;}#mermaid-svg-meau7MHBbuXK6oyH .arrowheadPath{fill:#333333;}#mermaid-svg-meau7MHBbuXK6oyH .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-meau7MHBbuXK6oyH .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-meau7MHBbuXK6oyH .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-meau7MHBbuXK6oyH .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-meau7MHBbuXK6oyH .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-meau7MHBbuXK6oyH .cluster text{fill:#333;}#mermaid-svg-meau7MHBbuXK6oyH .cluster span{color:#333;}#mermaid-svg-meau7MHBbuXK6oyH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-meau7MHBbuXK6oyH :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} pointcloud grids volume shapes mesh assembly visual CellCenters Points TetMesh UnstructuredGrid RectilinearGrid StructuredGrid Volume many shapes Text2D Mesh Assembly PointsVisual ImageVisual VolumeVisual CommonVisual MeshVisual Actor2D 创建一个球体和立方体用于后续测试
import vedo
# 半径为0.7的球体
s vedo.Sphere(r0.7)
# 立方体
c vedo.Cube()
# 使用窗口展示图形N表示渲染空间的数目size控制窗口大小
vedo.show([s, c], N2, size(800, 300))后面使用c或s来表示这些类或其子类实例化的对象。 2. 基类CommonVisual的方法
CommonVisual封装的可视化相关的函数和属性可以用来管理所有对象。
2.1 获取对象信息
2.1.1 对象本身信息
c.print() 打印对象本身
s.print()
c.print()2.1.2 对象的查找表
c.LUT 以numpy格式返回对象的查找表。 查找表是VTK中用于将标量和颜色对应的映射表。 会返回一个列表列表的长度表示设定的颜色数列表中每个元素是颜色的rgb值和透明度值范围在[0, 1]。
# 含有红、绿、黄3个颜色的LUT值透明度值都是1(不透明)
[[1. 0. 0. 1.][0. 1. 0. 1.][1. 1. 0. 1.]]LUT是内部的颜色映射器的数组展示虽然可以使用数组直接给LUT赋值但是没有意义。一般在使用cmap或build_lut时会在内部自动改写LUT。
2.1.3 对象标量范围
c.scalar_range() 设置或获取对象可视化的标量范围。 跟LUT一样可以设置但是没实用。一般用来获取标量范围然后据此进行相关操作。
2.1.4 对象缩略图
c.thumbnail() 创建对象的缩略图并以数组的形式返回。 缩略图相当于展示窗口的截图返回的数组表示这个截图的每个点的rgb颜色值。 具体参数
zoom1.25指定窗口缩放大小。size(200, 200)指定截图的宽、高像素值。bgwhite指定物体空间的背景颜色。azimuth0截图时相机旋转的方位角。elevation0截图时相机提升的高度。axesFalse截图是否带坐标系。
// 生成大小为5x5像素的缩略图数组
print(s.thumbnail(size5, 5))[[[255 255 255][223 223 223][196 192 193][255 255 255][255 255 255]]...[[255 255 255][223 223 223][191 191 191][255 255 255][255 255 255]]]展示用的原图和生成的缩略图转为像素图之后的图片
2.2 呈现对象
2.2.1 在窗口显示
c.show(**options) 创建一个Plotter类的实例或者使用现存的最后一个实例来显示单个对象。 这个方法是vedo.plotter.show的快捷方式。如果有超过一个对象需要显示就得使用show(c1, c2, ..., options)。 返回使用的Plotter类的实例。
1.2.2 对象可见性
c.on() 打开对象的可见性。 c.off() 关掉对象的可见性。 c.toggle() 切换对象的可见性。
2.2.3 对象颜色
c.color() 设置一个颜色或沿着标度值变化的一组颜色。 参数说明
col颜色或颜色组alphaNone列表用于指定沿着标量范围变化的透明度vminNone指定标量范围的最小值vmaxNone指定标量范围的最大值
目前只有PointsVisual子类继承了这个方法并且实现时只能直接指定一个颜色和透明度无法设置颜色组。
2.2.4 对象透明度
c.alpha(alpha, vminNone, vmaxNone) 沿着标度值范围分配一系列的透明度。
当alpha(0.0, 0.3, 0.9, 1)且标量范围在-10到150时所有单元格的标量值在接近-10的都会变透明在1/4范围处的透明度是0.3值接近150时不透明。 设置alpha[(-5, 0), (35, 0.4), (123, 0.9)]时单元格值低于-5是透明的高于123时是90%的不透明度。
只有PointsVisual子类和ImageVisual子类继承了这个方法且只能指定或获取透明度无法设置渐变的透明度。
2.3 添加标度条
2.3.1 2D标度条
c.add_scalarbar() 为对象附加一个2D的标度条。
2D标度条是画在窗口上的不会随物体转动。 只有在对象颜色映射器不为空时才能成功创建2D标度条表示标量值对应的颜色变化。
具体参数如下
title标度条的标题pos(0.775 0.05)标度条左下角的位置坐标。也可以是[0, 1]范围内的一对(x, y)坐标分别表示左下角和右上角的位置。title_yoffset15标题和颜色标度条在垂直方向上的偏移值。size(80, 400)像素值(宽, 高)表示标量条的尺寸。font_size12标题和数值标签使用的字体大小。nlabelsNone数值标签的数目。cNone标度条文字的颜色。horizontalFalse是否水平放置标量条。use_alphaTrue颜色栏本身的透明度。label_format:6.3g 数字标签的格式字符串C格式。
# 按球体的y坐标的大小设定不同的颜色
s.cmap([red, yellow, green], s.vertices[:,1])
print(s.LUT)
s.add_scalarbar()
s.show()输出LUT
[[0.99607843 0.11764706 0.12156863 1. ][1. 1. 0.21176471 1. ][0.01568627 0.49803922 0.0627451 1. ]]展示图
2.3.2 3D标度条
c.add_scalarbar3d() 与对象关联一个3D的标度条并加到场景中。3D标度条可以随物体转动。 可以使用c.scalarbar访问这个标度条。
具体参数如下
title标度条的标题posNone参数未说明size(0, 0)标度条的(厚度, 长度)title_font标题字体title_xoffset-1.2标题和颜色标度条之间的水平间距title_yoffset0.0标题和颜色标度条之间的垂直间距title_size1.5参数未说明title_rotation0.0标题的旋转角度nlabels9数字标签的个数label_font标签的字体label_size1标签的缩放比例label_offset0.375数字标签和刻度之间的间隔label_rotation0标签旋转的角度label_format浮点值和整值标签的格式italic0标签数字斜体cNone标签数字颜色draw_boxTrue在颜色条周围绘制边框above_textNone参数未说明below_textNone参数未说明nan_textNaN参数未说明categoriesNone制作类别标度条输入列表的格式为[value, color, alpha, textlabel]
2.4 未实装或阉割的功能
2.4.1 鼠标操作性
c.pickable(valueNone) 设置或访问对象的可选取性(是否可以被鼠标选择)。 c.draggable(valueNone) 设置或访问对象的可拖拽性。
这两个值可以设置和获取成功但是展示时没有实际效果。
2.4.2 事件
c.add_observer(event_name, func, priority) 添加一个回调函数事件触发时被调用。 c.invoke_event(event_name) 主动触发事件。
通过add_observer添加事件绑定回调函数后可以通过invoke_event触发这个事件。
事件名称可以任意填。但是它会发出警告事件名称不合法应该用VTK规定的事件名。 VTK中事件名是根据触发条件起的如KeyPress、MouseMove。但是即使填这些名字在演示的窗口无法通过鼠标和键盘的操作触发事件。
2.4.3 相机设置
c.use_bounds(valueNone) 设置当前相机在重置时是否忽略对象边界。 设定这个选项并变换相机位置后再使用plotter.reset_camera在展示窗口无实际效果。