python的3D可视化库vedo-3 (visual模块)点对象的属性、光效、附注
文章目录
- 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(value=None)
c.ps(pointsize=None)
设置或获取网格顶点的点大小。
获取点大小没问题。设置点大小后,使用show呈现会把对象变为3D点阵图,见下图。
s = vedo.Sphere()
s.ps(10)
s.show()
有时不能显示点图。这个可能是系统显卡支持的OpenGL版本太低的缘故,需要更新显卡驱动或安装最新的OpenGL库。
3.1.2 复制属性
c.copy_properties_from(source, deep=True, actor_related=True)
从另一个Points
对象复制属性。
3.1.3 颜色设置
c.color(c=False, alpha=None)
c.c(color=False, alpha=None)
设置或获取网格对象的颜色。输入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_array=None
,数组名称、数组或VTK数组。其中on=''
,默认为空字符串,可填points
或cells
。把颜色映射表对应到点或单元格上的数据上。name='Scalars'
,为input_array
输入的数组设置名字。vmin=None
,把标量以给定最小值截断,小于该值的部分按这个值去查找颜色;vmax=None
,把标量以给定最大值截断,大于该值的部分按这个值去查找颜色。n_colors=256
,使用matplotlib
的线性分段颜色映射表或自定义颜色序列时,其中的不同颜色的数目;alpha=1.0
,网格的透明度。
也可以填透明度值的列表,对应到网格的每个顶点上。
填单个数值时,会先按n_colors
的值转为透明度列表,以便和颜色列表对应。因此在自定义颜色表的色数超过n_colors
的默认值256时,必须指定到n_colors
。源码中alpha列表长度与n_colors是强关联的。
logscale=False
,是否使用Logscale
。
cmap使用示例:
import vedo# 创建3个球体
s1 = vedo.Sphere(r=0.7)
s2 = vedo.Sphere(r=0.7)
s3 = vedo.Sphere(r=0.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")], interpolate=True)
# 使用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_colors=len(input_array))# 展示这3种效果
vedo.show([s1, s2, s3], N=3, 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], N=2)
渲染效果:
3.1.4透明度设置
c.alpha(opacity)
c.opacity(alpha=None)
设置网格对象的透明度。
c.force_opaque(value=True)
强制Mesh
、Line
或点云显示为不透明的;
c.force_translucent(value=True)
强制Mesh
、Line
或点云显示为半透明;
这两个强制方法对show
展示的结果没什么影响。
3.2 对象光效
3.2.1 点的形状
c.render_points_as_spheres(value=True)
使点看起来是球体的,或者是方形的。
# 随机生成10个点的坐标
pos_list = np.random.rand(10, 3)
# 创建这些点的对象
points = vedo.Points(pos_list, r=15, 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]
。ambient=None
,取值范围0-1,环境光比例;diffuse=None
,取值范围0-1,漫反射光比例;specular=None
,取值范围0-1,镜面反射光的比例;specular_power=None
,取值范围1-100,镜面反射光的强度;specular_color=None
,镜面反射的颜色。默认为对象自身的颜色。style="glossy"
时镜面反射颜色值为(1,1,0.99)
(接近白色),style="ambient"
时镜面反射颜色值为(1,1,1)
(纯白色)。metallicity=None
,取值范围0-1,金属质感系数;默认0。roughness=None
,取值范围0-1,粗糙度系数;默认0.5。
物体的光效主要通过四个参数ambient
、diffuse
、specular
、specular_power
控制。
设置style="off"
时,关闭光效,所填的参数值都不起作用。
默认style=""
时,需要使用这些参数填参数控制光效。
其他的style
分别有自己的预设参数值,把4个参数对应的值放在列表分别是:
style | ambient | diffuse | specular | specular_power |
---|---|---|---|---|
default | 0.1 | 1.0 | 0.05 | 5 |
metallic | 0.1 | 0.3 | 1.0 | 10 |
plastic | 0.3 | 0.4 | 0.3 | 5 |
shiny | 0.2 | 0.6 | 0.8 | 50 |
glossy | 0.1 | 0.7 | 0.9 | 90 |
ambient | 0.1 | 1.0 | 0.05 | 5 |
也可以在这些预设参数基础上人为调整。
下图为使用不同style
的区别:
下图左侧为ambient
和diffuse
不同值组合的效果。右侧是specular
和specular_power
不同值组合的效果(设置了specular_color="green"
)。
c.point_blurring(r=1, alpha=1.0, emissive=False)
设置点模糊。对点应用高斯卷积滤波器。在这种情况下,半径 r 以网格坐标的绝对单位表示。设置自发光后,点的光晕变为自发光。
这个方法存在BUG,暂时无法使用。
3.3 尾随线和投影
3.3.1 尾随线
c.add_trail()
为网格对象添加一条尾随线,可以通过c.trail
访问尾随线对象。参数如下:
offset=(0, 0, 0)
,从对象中心点设置一个偏移向量;n=50
,尾随线的段数。每次update_trail
后,会把上次update_trail
时的位置到当前的位置做连线,这算作一段。c=None
,尾随线颜色;alpha=1.0
,尾随线透明度;lw=2
,尾随线的宽度;
c.update_trail()
更新正在移动的物体的尾随线;
使物体运动并更新尾随线:
# 示例点,初始位置为原点
s = vedo.Point((0, 0, 0), r=10)
# 结束点,加了结束点才会展示对应长度的坐标轴
s_end = vedo.Point((20, 0, 0))
# 球体添加尾线
s.add_trail(n=100)# 控制窗口渲染的对象
plt = vedo.show(s, s_end, axes=1, interactive=False)
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)
,alpha=1
,culling=0
,
c.update_shadows()
更新正在移动的物体的影子;
还是使用上面的运动方式,在3个面上创建投影:
# 示例点对象,初始位置为原点
s = vedo.Point((0, 0, 0), r=20)
s_end = vedo.Point((10, 5, 4))
# 在x=2的平面上投影
s.add_shadow('x', 2.0)
# 在y=4的平面上投影
s.add_shadow('y', 4.0)
# 在z=3的平面上投影
s.add_shadow('z', 3.0)# 控制窗口渲染的对象
plt = vedo.show(s, s_end, axes=1, interactive=False, elevation=20)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(size=None, offset=(), scale=None)
把3D的Points
或Mesh
转为2D的演员对象Actor2D
并返回。Actor2D
对象会悬挂在窗口。
演员对象是VTK中可视化场景中的实体,代表一个可视化对象。演员包含了图形数据的表示信息,并负责在渲染器中正确显示这些数据。
size
,2D演员对象的缩放大小;替代参数scale
。offset
,演员在范围[-1, 1]
中的2d(x, y)坐标。
3.4 给对象附加文字说明
3.4.1 标注
c.labels()
为网格的单元格或点生成值或ID的标签。标签数目大时使用font="VTK"
能加快速度。
这些标签的方向和角度会随着物体转动。
参数如下:
content=None
,填"id"
、"cellid"
、数组名或数组编号。也能传递长度等于点或单元格的数目的数组。on='points'
,"points"
或"cells"
。scale=None
,设置标签的绝对大小。填None会自动确定大小。xrot=0.0
,标签绕x轴的旋转角度,单位是度。yrot=0.0
,标签绕y轴的旋转角度,单位是度。zrot=0.0
,标签绕z轴的旋转角度,单位是度。ratio=1
,跳跃比,用来减少大型网格的标签数。precision=None
,标签数值的精度。italic=False
,是否斜体;font=''
,字体;justify=''
,对齐;c='black'
,颜色;alpha=1.0
,透明度;
创建单元格的标注和点的标注,和球体一同渲染:
s1 = vedo.Sphere(res=10, c="#CC8800")
# 标注单元格,compute_normals可以让四周的对象自动对齐,而不会穿模
s1.linewidth(0.1).compute_normals()
labels1 = s1.labels("id", on="cells")s2 = vedo.Sphere(res=10, c="#00CC22")
# 标注点
s2.linewidth(0.1)
labels2 = s2.labels("id", on="points")vedo.show([(s1, labels1, vedo.Text2D("cells id")), (s2, labels2, vedo.Text2D("points id"))], N=2)
3.4.2 2D标注
c.labels2d()
为网格的单元格或点创建二维的值或ID的标签。
2D标签的方向、角度是固定的,不会随着物体的拖拽而转动。
参数如下:
content="id"
,填"id"
、"cellid"
或数组名。on='points'
,"points"
或"cells"
。scale=1.0
,设置标签的绝对大小。填None会自动确定大小。precision=4
,标签数值的精度。font='Calcao'
,字体;justify='bottom-left'
,对齐;frame=False
,是否在标签周围画框线;c='black'
,颜色;bc=None
,标签背景色;alpha=1.0
,透明度
创建2D标注:
s = vedo.Sphere(res=8, 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()
方法,让文字一直面向相机。
参数如下:
txt=None
,展示的文本。默认是文件名或对象名。point=None
,旗杆指向的的位置;offset=None
,文本相对于point
位置的偏离值。s=None
,旗杆元素的大小;font='Calco'
,字体;rounded=True
,在文本周围加圆形或方形的文本框;c=None
,文本和文本框的颜色;alpha=1.0
,文本和文本框的透明度;lw=2
,文本框宽度;italic=0.0
,文本倾斜度;padding=0.1
,边距;
3.4.4 旗标说明
c.flagpost()
生成一个用来描述对象的旗杆说明。旗杆垂直于锚点。
参数如下:
txt=None
,展示的文本。默认是文件名或对象名。point=None
,旗杆标记的锚点位置;offset=None
,3D位移或偏移;s=1.0
,文字大小;c="k9"
,文本和线的颜色;bc="k1"
,标记的背景色;alpha=1
,文本和文本框的透明度;lw=0
,文本框的粗细;font='Calco'
,文本字体justify="center-left"
,内部文本对齐方式;vspacing=1.0
,文本行间距;
3.4.5 在窗口悬挂的说明框
c.caption()
为对象创建一个2D的标题,可以随着相机移动。不支持Latex文字。
参数如下:
txt=None
,要渲染的文本,默认为文件名;point=None
,锚点;size=(0.3, 0.15)
,标题框的宽和高;padding=5
,标题框的内边距,单位为像素;font='Calco'
,字体;justify="center-right"
,内部文字对齐方式;vspacing=1.0
,行间距;c=None
,文字和标题框的颜色;alpha=1.0
,文字和标题框的透明度;lw=1
,框线宽度;ontop=True
,置顶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", c="black")
# 旗标
fp2 = s2.flagpost("flagpost")
# 悬挂说明
fp3 = s3.caption("caption", c="black")vedo.show([(s1, fp1, vedo.Text2D("flagpole", s=3)),(s2, fp2, vedo.Text2D("flagpost", s=3)),(s3, fp3, vedo.Text2D("caption", s=3))], N=3, size=(1500, 500))
相关文章:
python的3D可视化库vedo-3 (visual模块)点对象的属性、光效、附注
文章目录 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…...
llamaindex实战-ChatEngine-ReAct Agent模式
概述 ReAct 是一种基于Agent的聊天模式,构建在数据查询引擎之上。对于每次聊天交互,代理都会进入一个 ReAct 循环: 首先决定是否使用查询引擎工具并提出适当的输入 (可选)使用查询引擎工具并观察其输出 决定是否重复…...
redis快速进门
、数据库类型认识 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行…...
从0开始linux(39)——线程(2)线程控制
欢迎来到博主的专栏:从0开始linux 博主ID:代码小豪 文章目录 线程创建线程标识符线程参数多线程竞争资源 回收线程detach 线程退出pthread_cancel 线程创建 线程创建的函数为pthread_create。该函数是包含在posix线程库当中,posix线程是C语言…...
International Journal of Medical Informatics投稿经历时间节点
20240423,完成投稿 20240612,按编辑要求修改后再投, with editor 20240613,under review,completed 0, accepted 0, invitation 2. 20240620, under review,completed 0, accepted 1, invitation 2. 20240626, unde…...
BUUCTF—Reverse—Java逆向解密(10)
程序员小张不小心弄丢了加密文件用的秘钥,已知还好小张曾经编写了一个秘钥验证算法,聪明的你能帮小张找到秘钥吗? 注意:得到的 flag 请包上 flag{} 提交 需要用专门的Java反编译软件:jd-gui 下载文件,发现是个class文…...
CLIP-MMA: Multi-Modal Adapter for Vision-Language Models
当前的问题 CLIP-Adapter仅单独调整图像和文本嵌入,忽略了不同模态之间的交互作用。此外,适应性参数容易过拟合训练数据,导致新任务泛化能力的损失。 动机 图1所示。多模态适配器说明。 通过一种基于注意力的 Adapter ,作者称之…...
三维扫描仪-3d扫描建模设备自动检测尺寸
在现代工业制造领域,三维扫描仪已成为实现高精度尺寸检测的关键设备。CASAIM自动化智能检测系统以其自动化三维立体扫描技术,为产品尺寸的自动检测提供了高效、可靠的解决方案。 CASAIM自动化智能检测系统通过非接触式测量方式,通过激光扫描…...
vue3+ant design vue实现日期选择器默认显示当前年,并限制用户只能选择当前年及之前~
1、思路:之前想拿当前年直接做赋值操作,实际上是行不通的,因为组件本身有数据格式限制,会出现报错,然后索性直接获取当前日期(YYYY-MM-DD)赋值给日期组件,这样不管你用的是年&#x…...
【electron-vite】搭建electron+vue3框架基础
一、拉取项目 electron-vite 中文文档地址: https://cn-evite.netlify.app/guide/ 官网网址:https://evite.netlify.app/ 版本 vue版本:vue3 构建工具:vite 框架类型:Electron JS语法:TypeScript &…...
05《存储器层次结构与接口》计算机组成与体系结构 系列课
目录 存储器层次结构概述 层次结构的定义 存储器的排名 存储器接口 处理器与存储器的速度匹配 存储器接口的定义 存储器访问命中率 两种接口 第1种方式:并行 命中率的计算 存储器访问时间 第2种方式:逐级 结语 大家好,欢迎回来。…...
elasticsearch报错fully-formed single-node cluster with cluster UUID
1.问题描述 k8s集群内部署的es中间件起不来,查看日志发现如下警告,节点发现功能开启,但是目前我是单节点服务,所以尝试编辑sts将节点发现功能去掉或者在部署时将你的sts的yaml文件和chart文件修改重新部署以去掉该功能 {"t…...
Milvus×Florence:一文读懂如何构建多任务视觉模型
近两年来多任务学习(Multi-task learning)正取代传统的单任务学习(single-task learning),逐渐成为人工智能领域的主流研究方向。其原因在于,多任务学习可以让我们以最少的人力投入,获得尽可能多…...
DAPP
02-DAPP 1 啥是 DApp? DApp,部署在链上的去中心化的应用。 DApp 是开放源代码,能运行在分布式网络上,通过网络中不同对等节点相互通信进行去中心化操作的应用。 DAPP 开放源代码,才能获得人的信任。如比特币ÿ…...
生产环境中,nginx 最多可以代理多少台服务器,这个应该考虑哪些参数 ?怎么计算呢
生产环境中,nginx 最多可以代理多少台服务器,这个应该考虑哪些参数 ?怎么计算呢 关键参数计算方法评估步骤总结 在生产环境中,Nginx最多可以代理的服务器数量并没有一个固定的限制,它取决于多个因素,包括Ng…...
【深度学习|目标跟踪】StrongSORT 详解(以及StrongSORT++)
StrongSort详解 1、论文及源码2、DeepSORT回顾3、StrongSORT的EMA4、StrongSORT的NSA Kalman5、StrongSORT的MC6、StrongSORT的BOT特征提取器7、StrongSORT的AFLink8、StrongSORT的GSI模块 1、论文及源码 论文地址:https://arxiv.org/pdf/2202.13514 源码地址&#…...
23种设计模式-原型(Prototype)设计模式
文章目录 一.什么是原型设计模式?二.原型模式的特点三.原型模式的结构四.原型模式的优缺点五.原型模式的 C 实现六.原型模式的 Java 实现七. 代码解析八.总结 类图: 原型设计模式类图 一.什么是原型设计模式? 原型模式(Prototype…...
Qt—QLineEdit 使用总结
文章参考:Qt—QLineEdit 使用总结 一、简述 QLineEdit是一个单行文本编辑控件。 使用者可以通过很多函数,输入和编辑单行文本,比如撤销、恢复、剪切、粘贴以及拖放等。 通过改变 QLineEdit 的 echoMode() ,可以设置其属性,比如以密码的形式输入。 文本的长度可以由 m…...
go-zero使用自定义模板实现统一格式的 body 响应
前提 go环境的配置、goctl的安装、go-zero的基本使用默认都会 需求 go-zero框架中,默认使用goctl命令生成的代码并没有统一响应格式,现在使用自定义模板实现统一响应格式: {"code": 0,"msg": "OK","d…...
BUGKU printf
整体思路 实现循环-->获取libc版本和system函数地址->将strcpy的got表项修改为system并获得shell 第一步:实现循环 从汇编语句可以看出,在每次循环结束时若0x201700处的值是否大于1则会继续循环。 encode1会将编码后的结果保存至0x2015c0处&am…...
深度学习:梯度下降法
损失函数 L:衡量单一训练样例的效果。 成本函数 J:用于衡量 w 和 b 的效果。 如何使用梯度下降法来训练或学习训练集上的参数w和b ? 成本函数J是参数w和b的函数,它被定义为平均值; 损失函数L可以衡量你的算法效果&a…...
`console.log`调试完全指南
大家好,这里是 Geek技术前线。 今天我们来探讨 Console.log() 的一些优点。并分析一些基本概念和实践,这些可以让我们的调试工作变得更加高效。 理解前端 log 与后端 log 的区别 前端 log 与后端 log 有着显著的不同,理解这一点至关重要。…...
ROS VSCode调试方法
VSCode 调试 Ros文档 1.编译参数设置 cd catkin_ws catkin_make -DCMAKE_BUILD_TYPEDebug2.vscode 调试插件安装 可在扩展中安装(Ctrl Shift X): 1.ROS 2.C/C 3.C Intelliense 4.Msg Language Support 5.Txt Syntax 3.导入已有或者新建ROS工作空间 3.1 导入工作…...
16 —— Webpack多页面打包
需求:把 黑马头条登陆页面-内容页面 一起引入打包使用 步骤: 准备源码(html、css、js)放入相应位置,并改用模块化语法导出 原始content.html代码 <!DOCTYPE html> <html lang"en"><head&…...
微服务即时通讯系统的实现(服务端)----(3)
目录 1. 消息存储子服务的实现1.1 功能设计1.2 模块划分1.3 模块功能示意图1.4 数据管理1.4.1 数据库消息管理1.4.2 ES文本消息管理 1.5 接口的实现1.5.1 消息存储子服务所用到的protobuf接口实现1.5.2 最近N条消息获取接口实现1.5.3 指定时间段消息搜索接口实现1.5.4 关键字消…...
.net6.0 mvc 传递 model 实体参数(无法对 null 引用执行运行时绑定)
说一下情况: 代码没问题,能成功从数据库里查到数据,能将数据丢给ViewBag.XXXX, 在View页面也能获取到 ViewBag.XXXX的值,但是发布到线上后报这个错: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 无法对 …...
VUE 入门级教程:开启 Vue.js 编程之旅
一、Vue.js 简介 Vue.js 是一套构建用户界面的渐进式 JavaScript 框架。它专注于视图层的开发,能够轻松地与其他库或现有项目进行整合。Vue.js 的核心库只关注视图层,通过简洁的 API 实现数据绑定和 DOM 操作的响应式更新,让开发者可以高效地…...
Ubantu系统docker运行成功拉取失败【成功解决】
解决docker运行成功拉取失败 失败报错 skysky-Legion-Y7000-IRX9:~$ docker run hello-world docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head “http://%2Fvar%2Frun%2Fdocker.sock/_ping”: dial uni…...
mvn-mac操作小记
1.安装brew 如果报错,Warning: /opt/homebrew/bin is not in your PATH. vim ~/.zshrc,最后一行追加 export PATH“/opt/homebrew/bin:$PATH” source ~/.zshrc 2.安装brew install maven mvn -version查看路径 Maven home: /opt/homebrew/Cellar/mav…...
机器学习——生成对抗网络(GANs):原理、进展与应用前景分析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一. 生成对抗网络的基本原理二. 使用步骤2.1 对抗性训练2.2 损失函数 三. GAN的变种和进展四. 生成对抗网络的应用五. 持续挑战与未来发展方向六. 小结 前言 生…...
wordpress优秀中文主题/怎样做一个网页
直播概要 直播演讲主题:远程办公有点上头?解锁云上应用现代化的奥秘 直播时间:5月31日19:00 直播地址:微信视频号、哔哩哔哩、知乎搜索亚马逊云科技,三大平台同步直播。 话题介绍 在新挑战频发的动荡变革时期&…...
建设网站要学什么/seo投放
hive的tar包下载地址:链接:https://pan.baidu.com/s/1m3VKT2-kIgR1QyjmfnWvGw?pwdr45r 提取码:r45rmysql的tar包:链接:https://pan.baidu.com/s/1--s1m3hfNNKEVGkFEqi5iA?pwdb7h4 提取码:b7h4由于hive的元…...
网站做百度竞价/信息流广告接单平台
点击打开链接 在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。 事件概述 事件具有以下特点: l 发行者确…...
重庆网站建设哪家专业/郑州seo招聘
很多朋友对于IBM海量的描述信息感觉到束手无策,以下信息均可以在www.unix360.com 中使用快查功能查询到,另外可以查看到具体的配件对应的PN号,查询可以适用于哪些整机,这是单纯本文档无法实现的功能。更多详情请移步www.unix360.c…...
建设网站需要什么设施/seo企业优化方案
终端进入工程Runner目录 执行 pod setup 编辑PodFile文件 新增 #必须集成 //由原来的UMCCommon变为UMCommonpod UMCommonpod UMDevice 具体位置如下 终端执行命令 pod install 安装好后 因为我的工程是Flutter接入友盟,原生桥接文件 flutter 种sdk已经有了 新…...
wordpress降级/百度快照入口官网
1.使类和成员的可访问性最小化 封装(数据私有化,方法公开化)/对外提供可调用的,稳定的功能可访问性应该明确修饰符本类同包类子类其他类public√√√√protected√√√默认√√private√实例域绝不能是公有的包级私有的…...