快速模仿一个网站,wordpress 图片名乱码,大岭山网站仿做,织梦 商城网站文章目录 3 PointsVisual的方法3.1 对象属性3.1.1 顶点大小3.1.2 复制属性3.1.3 颜色设置3.1.4透明度设置 3.2 对象光效3.2.1 点的形状3.2.2 点的表面光效 3.3 尾随线和投影3.3.1 尾随线3.3.2 投影 3.4 给对象附加文字说明3.4.1 标注3.4.2 2D标注3.4.3 气泡说明3.4.4 旗标说明3… 文章目录 3 PointsVisual的方法3.1 对象属性3.1.1 顶点大小3.1.2 复制属性3.1.3 颜色设置3.1.4透明度设置 3.2 对象光效3.2.1 点的形状3.2.2 点的表面光效 3.3 尾随线和投影3.3.1 尾随线3.3.2 投影 3.4 给对象附加文字说明3.4.1 标注3.4.2 2D标注3.4.3 气泡说明3.4.4 旗标说明3.4.5 在窗口悬挂的说明框 visual子模块包含了管理对象及其属性的可视化和外观的基类。 visual模块的
PointsVisual是点对象
Points和网格可视化对象
MeshVisual的基类。 本文对
PointsVisual类的方法做了整理和测试。 3 PointsVisual的方法
PointsVisual用于控制Points对象的可视化。
3.1 对象属性
3.1.1 顶点大小
c.point_size(valueNone) c.ps(pointsizeNone) 设置或获取网格顶点的点大小。
获取点大小没问题。设置点大小后使用show呈现会把对象变为3D点阵图见下图。
s vedo.Sphere()
s.ps(10)
s.show()有时不能显示点图。这个可能是系统显卡支持的OpenGL版本太低的缘故需要更新显卡驱动或安装最新的OpenGL库。 3.1.2 复制属性
c.copy_properties_from(source, deepTrue, actor_relatedTrue) 从另一个Points对象复制属性。
3.1.3 颜色设置
c.color(cFalse, alphaNone) c.c(colorFalse, alphaNone) 设置或获取网格对象的颜色。输入None时会根据活动标量确定颜色。
# 获取颜色返回RGB颜色数组值范围0-1。
print(s.color(), c.color())
# 设置颜色
s.color(#00FF00)
c.color(#00FFFF)
print(s.color(), c.color())代码运行结果
[0.8627451 0.20784314 0.27058824] [0.13333333 0.54901961 0.22745098]
[0. 1. 0.] [0. 1. 1.]c.cmap() 提供标量列表和颜色映射表为每个点或单元格设置颜色。 参数如下
input_cmap颜色映射表用于将实数转成颜色。 可以填三类数据 VTK的查找表可直接使用matplotlib的线性分段颜色映射表或等价的字符串表示会先按input_array提供的数值转为对应的颜色查找颜色数由n_colors决定自定义的颜色序列自己给定每个颜色颜色数如果超过256需要把n_colors改为给定的颜色数。 自定义颜色序列如果想实现渐变色可以借用colors模块的build_lut或build_palette方法。 input_arrayNone数组名称、数组或VTK数组。其中on默认为空字符串可填points或cells。把颜色映射表对应到点或单元格上的数据上。nameScalars为input_array输入的数组设置名字。vminNone把标量以给定最小值截断小于该值的部分按这个值去查找颜色vmaxNone把标量以给定最大值截断大于该值的部分按这个值去查找颜色。n_colors256使用matplotlib的线性分段颜色映射表或自定义颜色序列时其中的不同颜色的数目alpha1.0网格的透明度。 也可以填透明度值的列表对应到网格的每个顶点上。 填单个数值时会先按n_colors的值转为透明度列表以便和颜色列表对应。因此在自定义颜色表的色数超过n_colors的默认值256时必须指定到n_colors。 源码中alpha列表长度与n_colors是强关联的。 logscaleFalse是否使用Logscale。
cmap使用示例
import vedo# 创建3个球体
s1 vedo.Sphere(r0.7)
s2 vedo.Sphere(r0.7)
s3 vedo.Sphere(r0.7)# 取顶点坐标的y坐标可以使颜色从下到上变化
input_array s1.vertices[:, 1]
a, b min(input_array), max(input_array)# 创建vtk查找表其中的颜色数等于输入颜色数的8倍
vtklut vedo.colors.build_lut([(a, #FF0000), (b, #00FF00)], interpolateTrue)
# 使用vtk查找表上色
s1.cmap(vtklut, input_array)# 使用表示matplotlib内部的颜色映射表的字符串
s2.cmap(hot, input_array)# 创建自定义的渐变色列表颜色数是球体的点数
palette vedo.build_palette(#FFFF00, #00FFFF, len(input_array))# 使用自定义颜色上色注意需要指明颜色数
s3.cmap(palette, input_array, n_colorslen(input_array))# 展示这3种效果
vedo.show([s1, s2, s3], N3, size(900, 300))展示的效果 c.lut_color_at(value) 查看给定值在查找表上对应的颜色和透明度。 cmap操作之后对象的LUT列表已有内容因此可以使用这个方法查找颜色。
print(s1.lut_color_at(0.3))
print(s1.lut_color_at(-0.3))返回颜色格式是numpy数组4个值代表rgb值和透明度。
[0.26666667 0.73333333 0. 1. ]
[0.73333333 0.26666667 0. 1. ]c.cellcolors 设置或获取网格的每个单元格的颜色。 通过赋值为[R,G,B]或[R,G,B,A]形式的颜色列表可以改变单元格颜色。列表中的颜色数需要等于网格中的单元格数。颜色和透明度值的取值范围都是[0,255]。 也可以赋值为一个颜色字符串或RGBA值。 赋值时会自动创建一个名为CellsRGBA的单元格数组可以通过c.celldata[CellsRGBA]访问。
c.pointcolors 设置或获取每个点(网格的每个顶点)的颜色。 也是通过赋值设置颜色具体要求和c.cellcolors一致。 会自动创建PointsRGBA数组通过c.pointdata[PointsRGBA]访问。
通过对cellcolors和pointcolors赋值改变球体的面和点的颜色
from itertools import cycle, isliceimport vedo# 创建测试球
s1 vedo.Sphere()
s2 vedo.Sphere()
# 三种颜色循环产出的迭代器
color_cycle cycle([(255, 0, 0), (0, 255, 0), (0, 0, 255)])
# 长度等于单元格数的颜色列表
color_list list(islice(color_cycle, s1.ncells))
s1.cellcolors color_list# 长度等于点数的颜色列表
color_list list(islice(color_cycle, s2.npoints))
s2.pointcolors color_listvedo.show([s1, s2], N2)渲染效果
3.1.4透明度设置
c.alpha(opacity) c.opacity(alphaNone) 设置网格对象的透明度。
c.force_opaque(valueTrue) 强制Mesh、Line或点云显示为不透明的 c.force_translucent(valueTrue) 强制Mesh、Line或点云显示为半透明 这两个强制方法对show展示的结果没什么影响。
3.2 对象光效
3.2.1 点的形状
c.render_points_as_spheres(valueTrue) 使点看起来是球体的或者是方形的。
# 随机生成10个点的坐标
pos_list np.random.rand(10, 3)
# 创建这些点的对象
points vedo.Points(pos_list, r15, c(1,0,0))
# 设置光效这样看起来是3D的
points2.lighting(metallic)
# 默认即为球状的False可以设置为方形的
points.render_points_as_spheres(False)
points.show()注意下图右侧的方形不是正方体。
3.2.2 点的表面光效
c.lighting() 控制物体的表面光效。具体参数如下
style预设风格可选[, default, metallic, plastic, shiny, glossy, ambient, off]。ambientNone取值范围0-1环境光比例diffuseNone取值范围0-1漫反射光比例specularNone取值范围0-1镜面反射光的比例specular_powerNone取值范围1-100镜面反射光的强度specular_colorNone镜面反射的颜色。默认为对象自身的颜色。styleglossy时镜面反射颜色值为(1,1,0.99)(接近白色)styleambient时镜面反射颜色值为(1,1,1)(纯白色)。metallicityNone取值范围0-1金属质感系数默认0。roughnessNone取值范围0-1粗糙度系数默认0.5。
物体的光效主要通过四个参数ambient、diffuse、specular、specular_power控制。 设置styleoff时关闭光效所填的参数值都不起作用。 默认style时需要使用这些参数填参数控制光效。 其他的style分别有自己的预设参数值把4个参数对应的值放在列表分别是
styleambientdiffusespecularspecular_powerdefault0.11.00.055metallic0.10.31.010plastic0.30.40.35shiny0.20.60.850glossy0.10.70.990ambient0.11.00.055
也可以在这些预设参数基础上人为调整。 下图为使用不同style的区别 下图左侧为ambient和diffuse不同值组合的效果。右侧是specular和specular_power不同值组合的效果(设置了specular_colorgreen)。 c.point_blurring(r1, alpha1.0, emissiveFalse) 设置点模糊。对点应用高斯卷积滤波器。在这种情况下半径 r 以网格坐标的绝对单位表示。设置自发光后点的光晕变为自发光。 这个方法存在BUG暂时无法使用。
3.3 尾随线和投影
3.3.1 尾随线
c.add_trail() 为网格对象添加一条尾随线可以通过c.trail访问尾随线对象。参数如下
offset(0, 0, 0)从对象中心点设置一个偏移向量n50尾随线的段数。每次update_trail后会把上次update_trail时的位置到当前的位置做连线这算作一段。cNone尾随线颜色alpha1.0尾随线透明度lw2尾随线的宽度
c.update_trail() 更新正在移动的物体的尾随线
使物体运动并更新尾随线
# 示例点初始位置为原点
s vedo.Point((0, 0, 0), r10)
# 结束点加了结束点才会展示对应长度的坐标轴
s_end vedo.Point((20, 0, 0))
# 球体添加尾线
s.add_trail(n100)# 控制窗口渲染的对象
plt vedo.show(s, s_end, axes1, interactiveFalse)
for i in np.arange(0, 20, 0.01):# 新位置为x轴上下往复运动new_pos (i, np.sin(i), 0)# 改变物体位置s.pos(new_pos)# 更新尾随线s.update_trail()# 使上述变化在窗口展现plt.render()
# 不自动关闭窗口
plt.interactive()
print(s.trail)效果图 代码打印的s.trail信息
3.3.2 投影
c.add_shadow() 在三个笛卡尔平面之一上生成网格的影子。 输出一个代表影子的新的网格可以通过c.shadow访问。 默认会把影子放在边界框的底部的面上。 参数如下
plane投影的平面可以是字符串x、y、z之一分别表示x截面、y截面和z截面。也可以是一个vedo.shapes.Plane平面实例。point如果plane是字符串point就得填一个表示截距的浮点值。否则point需要填透视投影的相机位置。direction斜投影的方向。c(0.6, 0.6, 0.6)alpha1culling0
c.update_shadows() 更新正在移动的物体的影子
还是使用上面的运动方式在3个面上创建投影
# 示例点对象初始位置为原点
s vedo.Point((0, 0, 0), r20)
s_end vedo.Point((10, 5, 4))
# 在x2的平面上投影
s.add_shadow(x, 2.0)
# 在y4的平面上投影
s.add_shadow(y, 4.0)
# 在z3的平面上投影
s.add_shadow(z, 3.0)# 控制窗口渲染的对象
plt vedo.show(s, s_end, axes1, interactiveFalse, elevation20)for i in np.arange(0, 8, 0.01):# 沿x轴上下往复运动new_pos (i, np.sin(i), 0)s.pos(new_pos)s.update_shadows()plt.render()plt.interactive()3个平面投影效果 c.clone2d(sizeNone, offset(), scaleNone) 把3D的Points或Mesh转为2D的演员对象Actor2D并返回。Actor2D对象会悬挂在窗口。 演员对象是VTK中可视化场景中的实体代表一个可视化对象。演员包含了图形数据的表示信息并负责在渲染器中正确显示这些数据。 size2D演员对象的缩放大小替代参数scale。offset演员在范围[-1, 1]中的2d(x, y)坐标。
3.4 给对象附加文字说明
3.4.1 标注
c.labels() 为网格的单元格或点生成值或ID的标签。标签数目大时使用fontVTK能加快速度。 这些标签的方向和角度会随着物体转动。 参数如下
contentNone填id、cellid、数组名或数组编号。也能传递长度等于点或单元格的数目的数组。onpointspoints或cells。scaleNone设置标签的绝对大小。填None会自动确定大小。xrot0.0标签绕x轴的旋转角度单位是度。yrot0.0标签绕y轴的旋转角度单位是度。zrot0.0标签绕z轴的旋转角度单位是度。ratio1跳跃比用来减少大型网格的标签数。precisionNone标签数值的精度。italicFalse是否斜体font字体justify对齐cblack颜色alpha1.0透明度
创建单元格的标注和点的标注和球体一同渲染
s1 vedo.Sphere(res10, c#CC8800)
# 标注单元格compute_normals可以让四周的对象自动对齐而不会穿模
s1.linewidth(0.1).compute_normals()
labels1 s1.labels(id, oncells)s2 vedo.Sphere(res10, c#00CC22)
# 标注点
s2.linewidth(0.1)
labels2 s2.labels(id, onpoints)vedo.show([(s1, labels1, vedo.Text2D(cells id)), (s2, labels2, vedo.Text2D(points id))], N2)3.4.2 2D标注
c.labels2d() 为网格的单元格或点创建二维的值或ID的标签。 2D标签的方向、角度是固定的不会随着物体的拖拽而转动。 参数如下
contentid填id、cellid或数组名。onpointspoints或cells。scale1.0设置标签的绝对大小。填None会自动确定大小。precision4标签数值的精度。fontCalcao字体justifybottom-left对齐frameFalse是否在标签周围画框线cblack颜色bcNone标签背景色alpha1.0透明度
创建2D标注
s vedo.Sphere(res8, c#CC8800)
s.linewidth(0.1)
labels s.labels2d(id)
vedo.show(s, labels, size(500, 500))c.legend(txt) 预设一个图例文本。效果未知。
3.4.3 气泡说明
c.flagpole() 生成一个用来描述对象的气泡说明。 文字默认会随着物体而转动。可以使用flagpole.follow_camera()方法让文字一直面向相机。 参数如下
txtNone展示的文本。默认是文件名或对象名。pointNone旗杆指向的的位置offsetNone文本相对于point位置的偏离值。sNone旗杆元素的大小fontCalco字体roundedTrue在文本周围加圆形或方形的文本框cNone文本和文本框的颜色alpha1.0文本和文本框的透明度lw2文本框宽度italic0.0文本倾斜度padding0.1边距
3.4.4 旗标说明
c.flagpost() 生成一个用来描述对象的旗杆说明。旗杆垂直于锚点。 参数如下
txtNone展示的文本。默认是文件名或对象名。pointNone旗杆标记的锚点位置offsetNone3D位移或偏移s1.0文字大小ck9文本和线的颜色bck1标记的背景色alpha1文本和文本框的透明度lw0文本框的粗细fontCalco文本字体justifycenter-left内部文本对齐方式vspacing1.0文本行间距
3.4.5 在窗口悬挂的说明框
c.caption() 为对象创建一个2D的标题可以随着相机移动。不支持Latex文字。 参数如下
txtNone要渲染的文本默认为文件名pointNone锚点size(0.3, 0.15)标题框的宽和高padding5标题框的内边距单位为像素fontCalco字体justifycenter-right内部文字对齐方式vspacing1.0行间距cNone文字和标题框的颜色alpha1.0文字和标题框的透明度lw1框线宽度ontopTrue置顶2D标题
对比上述3种风格
# 3个示例球体
s1 vedo.Sphere(c#CCCC00).compute_normals()
s2 vedo.Sphere(c#AA00AA).compute_normals()
s3 vedo.Sphere(c#00DD00).compute_normals()
# 气泡
fp1 s1.flagpole(flagpole, cblack)
# 旗标
fp2 s2.flagpost(flagpost)
# 悬挂说明
fp3 s3.caption(caption, cblack)vedo.show([(s1, fp1, vedo.Text2D(flagpole, s3)),(s2, fp2, vedo.Text2D(flagpost, s3)),(s3, fp3, vedo.Text2D(caption, s3))], N3, size(1500, 500)) 文章转载自: http://www.morning.fxwkl.cn.gov.cn.fxwkl.cn http://www.morning.chtnr.cn.gov.cn.chtnr.cn http://www.morning.qxxj.cn.gov.cn.qxxj.cn http://www.morning.hlshn.cn.gov.cn.hlshn.cn http://www.morning.tfznk.cn.gov.cn.tfznk.cn http://www.morning.csdgt.cn.gov.cn.csdgt.cn http://www.morning.hkswt.cn.gov.cn.hkswt.cn http://www.morning.kqpsj.cn.gov.cn.kqpsj.cn http://www.morning.qxmpp.cn.gov.cn.qxmpp.cn http://www.morning.rhmpk.cn.gov.cn.rhmpk.cn http://www.morning.wphfl.cn.gov.cn.wphfl.cn http://www.morning.zrdhd.cn.gov.cn.zrdhd.cn http://www.morning.zbjfq.cn.gov.cn.zbjfq.cn http://www.morning.pfjbn.cn.gov.cn.pfjbn.cn http://www.morning.nqbs.cn.gov.cn.nqbs.cn http://www.morning.cwgfq.cn.gov.cn.cwgfq.cn http://www.morning.slnz.cn.gov.cn.slnz.cn http://www.morning.rryny.cn.gov.cn.rryny.cn http://www.morning.nytqy.cn.gov.cn.nytqy.cn http://www.morning.wmdbn.cn.gov.cn.wmdbn.cn http://www.morning.hwtb.cn.gov.cn.hwtb.cn http://www.morning.ypzsk.cn.gov.cn.ypzsk.cn http://www.morning.djxnw.cn.gov.cn.djxnw.cn http://www.morning.pcxgj.cn.gov.cn.pcxgj.cn http://www.morning.pgkpt.cn.gov.cn.pgkpt.cn http://www.morning.gyjld.cn.gov.cn.gyjld.cn http://www.morning.myrmm.cn.gov.cn.myrmm.cn http://www.morning.znknj.cn.gov.cn.znknj.cn http://www.morning.bfgpn.cn.gov.cn.bfgpn.cn http://www.morning.gbfzy.cn.gov.cn.gbfzy.cn http://www.morning.bfjyp.cn.gov.cn.bfjyp.cn http://www.morning.hhxpl.cn.gov.cn.hhxpl.cn http://www.morning.nflpk.cn.gov.cn.nflpk.cn http://www.morning.plkrl.cn.gov.cn.plkrl.cn http://www.morning.jqkrt.cn.gov.cn.jqkrt.cn http://www.morning.jxfmn.cn.gov.cn.jxfmn.cn http://www.morning.lxyyp.cn.gov.cn.lxyyp.cn http://www.morning.thwhn.cn.gov.cn.thwhn.cn http://www.morning.nnwpz.cn.gov.cn.nnwpz.cn http://www.morning.byywt.cn.gov.cn.byywt.cn http://www.morning.dnconr.cn.gov.cn.dnconr.cn http://www.morning.drkk.cn.gov.cn.drkk.cn http://www.morning.mwrxz.cn.gov.cn.mwrxz.cn http://www.morning.lkhfm.cn.gov.cn.lkhfm.cn http://www.morning.jhxdj.cn.gov.cn.jhxdj.cn http://www.morning.ydnx.cn.gov.cn.ydnx.cn http://www.morning.phlrp.cn.gov.cn.phlrp.cn http://www.morning.kdnrc.cn.gov.cn.kdnrc.cn http://www.morning.jfqqs.cn.gov.cn.jfqqs.cn http://www.morning.zpkfb.cn.gov.cn.zpkfb.cn http://www.morning.wfykn.cn.gov.cn.wfykn.cn http://www.morning.blqmn.cn.gov.cn.blqmn.cn http://www.morning.hdrsr.cn.gov.cn.hdrsr.cn http://www.morning.cljpz.cn.gov.cn.cljpz.cn http://www.morning.grxyx.cn.gov.cn.grxyx.cn http://www.morning.hlnrj.cn.gov.cn.hlnrj.cn http://www.morning.xscpq.cn.gov.cn.xscpq.cn http://www.morning.wffxr.cn.gov.cn.wffxr.cn http://www.morning.bwhcl.cn.gov.cn.bwhcl.cn http://www.morning.dfkmz.cn.gov.cn.dfkmz.cn http://www.morning.ktmbp.cn.gov.cn.ktmbp.cn http://www.morning.prlgn.cn.gov.cn.prlgn.cn http://www.morning.rlxg.cn.gov.cn.rlxg.cn http://www.morning.syxmx.cn.gov.cn.syxmx.cn http://www.morning.knqck.cn.gov.cn.knqck.cn http://www.morning.hbfqm.cn.gov.cn.hbfqm.cn http://www.morning.jrqcj.cn.gov.cn.jrqcj.cn http://www.morning.fbmjw.cn.gov.cn.fbmjw.cn http://www.morning.kbyp.cn.gov.cn.kbyp.cn http://www.morning.zxhhy.cn.gov.cn.zxhhy.cn http://www.morning.xckrj.cn.gov.cn.xckrj.cn http://www.morning.qbrdg.cn.gov.cn.qbrdg.cn http://www.morning.rkmhp.cn.gov.cn.rkmhp.cn http://www.morning.hcszr.cn.gov.cn.hcszr.cn http://www.morning.ssgqc.cn.gov.cn.ssgqc.cn http://www.morning.bpmmq.cn.gov.cn.bpmmq.cn http://www.morning.darwallet.cn.gov.cn.darwallet.cn http://www.morning.pluimers.cn.gov.cn.pluimers.cn http://www.morning.hxxyp.cn.gov.cn.hxxyp.cn http://www.morning.bpzw.cn.gov.cn.bpzw.cn