(四)Unity开发Vision Pro——参考文档

news/2024/2/27 22:39:01

4.参考文档

4.1 支持的功能和组件

4.1.1 支持的 Unity 功能和组件

大多数 Unity 组件无需修改即可在此平台上运行 - 包括大多数自定义 MonoBehaviours、动画逻辑、物理、输入处理、资产管理、AI 等。然而,需要渲染的组件需要特殊的支持。因此,一些组件在此平台上提供的功能集有所减少;其他目前不支持。下表总结了该平台上各种渲染组件支持的当前状态。

有关转换旧项目的更多信息,另请参阅将 Unity 项目移植到 PolySpatial XR

4.1.2 Unity 仿真组件/系统

在此页面中不可能列出 Unity 公开的所有系统和软件包,但下表列出了对一系列 Unity 核心功能的支持状态:

成分

地位

转换

支持的

声音的

不支持空间音频

网状过滤器

支持的

动画/动画师

支持的

二维物理

支持的

3D 物理

支持的

脚本

支持的

人工智能和导航网格

支持的

地形

实验支持

MonoBehaviours预计可以工作,但它们将取决于具体情况,具体取决于您的脚本与哪些其他组件交互。

4.1.3 渲染组件/系统

成分

地位

网格渲染器

不支持“Lighting”(阴影、GI 不支持“Probes” 立即模式下不支持此组件 不支持“Additional Settings”(动态遮挡、渲染层)

蒙皮网格渲染器

仅未优化的动画(如果模型导入检查器的装备选项卡上的优化游戏对象选项出现,则必须将其勾选。)

粒子系统

部分支持;看粒子系统以下

不支持

相机

不支持

光环

不支持

镜头光晕

不支持

线条渲染

不支持

投影仪

不支持

轨迹渲染器

不支持

视觉效果

不支持

镜头光晕

不支持

细节层次 (LoD)

不支持

遮挡区域

不支持

闭塞门户

不支持

天空盒

不支持

URP 贴花投影仪

不支持

瓷砖地图渲染器

不支持

视频播放器

支持有限

图形光线投射器

不支持

Shaderlab 着色器

不支持

后处理器

不支持

光照贴图

需要手动支持

烘焙照明

不支持

开导

不支持

光探头

需要手动支持

反射探头

不支持

树木

不支持

多雾路段

不支持

其中一些功能由于平台限制而不受支持(例如,全屏图形后处理器与共享渲染系统的想法不兼容),而其他功能则属于正在进行或计划开发的领域。

4.1.4 粒子系统

PolySpatial XR 中对粒子的支持是一项正在进行的工作。下表显示了 Unity粒子系统当前支持的特定模块和设置的支持状态:

模块

地位

排放

部分支持

形状

部分支持

生命周期内的速度

部分支持

生命周期内的极限速度

部分支持

继承速度

部分支持

整个生命周期内的力

部分支持

整个生命周期的颜色

部分支持

按速度着色

不支持

使用寿命期间的尺寸

部分支持

尺寸按速度

不支持

整个生命周期内的轮换

部分支持

按速度旋转

不支持

外力

不支持

噪音

部分支持

碰撞

部分支持

触发器

不支持

子发射器

部分支持

纹理片动画

部分支持

不支持

步道

不支持

自定义数据

不支持

渲染器

部分支持

4.1.4 用户界面(UI)

Unity UI在世界空间中工作,但屏幕空间 UI 和高级视觉功能(如遮罩、阴影等)当前无法工作。下表总结了其他 UI 功能的支持状态:

成分

地位

文本网格

支持的

画布渲染器

部分支持

精灵渲染器

支持的

文本网格专业版

部分支持
仅光栅
无自定义着色器

矩形变换

没有对尺寸的具体支持

4.1.5 最后的想法

Unity 有更多组件,但本节涵盖了普通 XR 应用程序的主要部分。一般来说,您现有的 Unity 项目可能需要移植到 PolySpatial XR。

您将需要通过编写自己的 PolySpatial XR 兼容系统或找到这些限制的解决方法来实验、研究和适应 PolySpatial XR 要求和约束,以支持您现有的功能。

4.2 PolySpatial资产支持

1.网格

RealityKit 提供了一组有限的预定义顶点格式。网格可以提供位置、法线、切线、颜色、混合权重和混合索引。Unity 将为 RealityKit 提供最多 8 个纹理坐标,但请注意,在其 MaterialX 实现中只有前两个 UV 通道可用,从而限制了额外几何数据的实用性。

由于Unity和RealityKit使用不同的坐标系,因此在系统之间传递时,一些顶点属性会被修改。针对位置、法线和切线执行惯用手交换。所有 UV 通道的 UV 都会翻转。

2.材质

有关 VisionOS 上材质和着色器支持的详细信息,请参阅PolySpatial 材质支持。

Unity ShaderGraphs

请参阅Shader Graph 支持,了解有关如何将通过 Unity ShaderGraph 定义的自定义着色器转换为 MaterialX 以与 RealityKit 互操作的详细信息。

3.纹理

Unity 在 VisionOS 上提供对 2D 纹理的支持,并利用本机纹理压缩选项。

VisionOS 的 RealityKit 不支持 3D 纹理或立方体贴图,因此用户必须根据 2D 纹理重新实现这些纹理资源。

4.渲染纹理

Unity 会将渲染目标实时复制到 RealityKit,但目前只能按速度进行有限数量的提交。引入额外的渲染目标可能会与 Unity 自己的图形缓冲区提交相冲突,从而影响整体性能。

另请注意,修改 RenderTextures 后必须手动将其标记为脏;目前,不会自动发生此类脏污,并且如果纹理未脏污,则不会将其复制到 RealityKit。

5.字体

VisionOS 支持光栅化字体和 SDF 字体,但我们强烈建议使用 SDF 字体,以确保所有观看距离下的清晰度。

4.3 材质

每个管道的几个重要标准着色器已映射到最接近的可用 RealityKit 模拟。目前的支持包括:

  • 标准 URP 着色器:Lit、Simple Lit、Unlit(+TBD - 更多即将推出)
  • 标准内置着色器:标准,(+待定 - 更多即将推出)

4.3.1 自定义着色器

可以通过 Unity ShaderGraph 为 VisionOS 创作着色器和材质。在幕后,这些着色器图被转换为 MaterialX。虽然 MaterialX 非常具有表现力,但某些 ShaderGraph 节点在 MaterialX 中没有类似物。在 ShaderGraph 编辑器中,不支持的节点将通过符号来指示#,但另请参阅ShaderGraph 支持。支持点亮和未点亮根节点。

ShaderLab、Metal 和其他基于代码的着色器不可用,因为 VisionOS 的 RealityKit 目前不公开低级着色语言。

4.3.2 无光照材质

4.3.2.1 通用渲染管线/无光照

对于 URP 未光照材质,PolySpatial 支持Base Map颜色和纹理属性以及 和OpaqueTransparent使用混合模式Alpha)曲面类型。 Alpha Clipping可能已启用;如果Threshold大于零,则不会执行混合(仅进行 alpha 测试)。

4.3.2.2 无光照/彩色

对于内置渲染器管道未点亮的颜色材质,Main Color支持该属性。

4.3.2.3 无光照/纹理

对于内置渲染器管线未点亮的纹理材质,Base (RGB)支持该纹理。

4.3.2.4 无光照/透明

对于内置渲染器管道未点亮的透明材质,Base (RGBA)支持纹理。

4.3.3 光照材质

4.3.3.1 通用渲染管线/光照

对于 URP 光照材质,颜色和纹理受到尊重,选项和属性Base Map也是如此。Render FaceSurface Inputs TilingOffset

Specular工作流程中并Specular Highlights启用时,PolySpatial 支持Specular Map关联颜色的纹理或(灰度)强度。在Metallic工作流程中,PolySpatial 支持Metallic Map纹理或强度并遵循Specular Highlights切换。

对于这两个工作流程,Smoothness都会考虑强度,但Metallic Alpha不支持纹理通道(例如,来自 )的平滑度。 Normal Map支持 [^1],但不支持正常比例。同样,Occlusion Map支持,但不支持遮挡强度。 可以指定Emission颜色或纹理;如果两者都给定,则颜色会降低为灰度并充当乘数。

支持 和 (使用混合模式)曲面Opaque类型TransparentAlphaTransparent模式下,该Preserve Specular标志受到尊重。 Alpha Clipping可能已启用;如果Threshold大于零,则不会执行混合(仅进行 alpha 测试)。

4.3.3.2 通用渲染管线/简单光照

对于 URP 简单光照材质,支持的选项与光照材质相同,只是没有Metallic属性且没有Occlusion Map

4.3.3.3 通用渲染管线/复杂光照

对于 URP 复杂光照材质,支持的选项与光照材质相同,只是添加了选项Clear Coat及其Mask属性Smoothness

4.3.3.4 标准材质

内置标准光照材质的支持方式与Metallic工作流程中 URP 光照材质的支持方式大致相同。纹理Albedo和颜色同样受到尊重,Metallic贴图或强度和Smoothness强度(但不包括平滑度Source)也是如此。 支持Normal Map[^1] 和(但不支持其相应的强度),颜色或纹理、和以及标志也是如此。支持所有渲染模式:、、和。OcclusionEmissionMain Maps TilingOffsetSpecular HighlightsOpaqueTransparentFadeCutout

4.3.3.5 标准材质(镜面设置)

内置光照镜面材质的支持方式与Specular工作流程中 URP 光照材质的支持方式相同。纹理Albedo和颜色也受到类似的尊重,Specular地图或(灰度)强度和Smoothness强度(但不是平滑度Source)也是如此。 支持Normal Map[^1] 和(但不支持其相应的强度),颜色或纹理、和以及标志也是如此。支持所有渲染模式:、、和。OcclusionEmissionMain Maps TilingOffsetSpecular HighlightsOpaqueTransparentFadeCutout

[^1]:目前,非着色器图形材质中使用的法线贴图必须作为纹理Default类型(即,而不是类型Normal map)导入,并且sRGB (Color Texture)未选中该选项。

4.3.4 特殊用途材质

4.3.4.1 TextMeshPro/距离场

4.3.4.2 TextMeshPro/Mobile/距离场

TMP 距离场材质将转换为仅遵循Face ColorFace Texture属性的着色器图形材质。

4.3.4.3 用户界面/默认

UI 默认材质将转换为尊重色调和纹理属性的无光照材质。

4.3.4.4 通用渲染管线/粒子/无光照

URP 未光照粒子材质将转换为尊重Base Map纹理和颜色的未光照材质以及Surface Type.

4.3.4.5 AR/基本遮挡

4.3.4.6 AR/遮挡

遮挡材质转换为基本等效材质

4.3.5 着色器图形材质

着色器图可以使用内置或 URP 目标以及 Unlit 或 Lit 材质。支持所有输出块。有关着色器图支持的更多信息,请参阅着色器图转换说明

4.4 ShaderGraph支持

您可以使用 Unity ShaderGraph 为visionOS 创建自定义材质。这些将在 Unity 中以其编译形式进行预览,但会转换为 MaterialX 以在模拟器和设备上显示。虽然 MaterialX 非常具有表现力,但某些 ShaderGraph 节点在 MaterialX 中没有类似物。在 ShaderGraph 编辑器中,不支持的节点将通过#符号的存在来指示。

出于技术、安全和隐私原因,visionOS 不允许在使用 AR 直通时运行基于 Metal 的着色器或其他低级着色语言。

4.4.1 VisionOS 中的 Shader Graph 限制

下表显示了VisionOS 的 PolySpatial 中Shader Graph 节点的当前支持状态,包括支持的节点列表及其各种注意事项。

如果此处未出现节点,则表示当前不支持该节点。请注意,随着我们继续添加对更多节点的支持,此列表将会更新。

4.4.2 美术

部分

节点

笔记

调整

对比

颜色可能不一致。

色调

颜色可能不一致。

饱和

颜色可能不一致。

混合

混合

支持差值、减法、加深、减淡、线性减淡、叠加、滤色、覆盖、求反、乘法

筛选

抖动

- 需要模拟屏幕空间位置。
- 由于 curvelookup 节点定义存在错误,目前无法工作。

普通的

正常混合

支持

从高度看正常

支持

正常重建 Z

支持

正常强度

支持

正常拆包

支持

公用事业

色彩空间转换

不一致 - 未实现线性转换。

4.4.3 通道

部分

节点

笔记

渠道

结合

支持

分裂

支持

调配

支持

4.4.4 输入

Custom Interpolators仅限于此特定/名称类型:

  • Color:矢量4
  • UV0:矢量2
  • UV1:矢量2
  • UserAttribute:矢量4

部分

节点

笔记

基本的

布尔值

支持

颜色

支持

持续的

支持

整数

支持

滑块

支持

时间

支持

漂浮

支持

向量2

支持

矢量3

支持

矢量4

支持

几何学

双切向量

切线和视图空间选项不是标准的。

法向量

切线和视图空间选项不是标准的。

位置

切线和视图空间选项不是标准的。

屏幕位置

支持

切向量

切线和视图空间选项不是标准的。

紫外线

支持

顶点颜色

支持

顶点ID

支持

坡度

坡度

支持

样本梯度

支持

灯光

主光方向

支持

矩阵

不起作用(由于常量矩阵节点定义中的错误)

不起作用(由于常量矩阵节点定义中的错误)

矩阵构建

支持

变换矩阵

切线和视图空间选项不是标准的。

场景

相机

PositionDirection支持的输出(非标准)。

目的

支持

场景深度

平台不允许访问深度缓冲区,这只是剪辑或视图空间中的相机距离。

屏幕

支持

质地

2D 纹理示例

支持

示例纹理 2D LOD

支持

采样器状态

MirrorOnce不支持换行模式。

纹理 2D 资源

支持

纹理尺寸

支持

4.4.5 数学

部分

节点

笔记

先进的

绝对

支持

指数

支持

长度

支持

日志

支持

模块

支持

否定

支持

标准化

支持

基本的

添加

支持

划分

支持

支持

力量

支持

平方根

支持

减去

支持

插值法

逆向线性化

支持

莱普

支持

平滑步

支持

矩阵

矩阵行列式

如果使用 Matrix2,将标记为不受支持。

矩阵转置

如果使用 Matrix2,将标记为不受支持。

范围

夹钳

支持

分数

支持

最大限度

支持

最低限度

支持

一减

支持

随机范围

支持

重新映射

支持

饱和

支持

圆形的

天花板

支持

地面

支持

圆形的

支持

符号

支持

支持

三角学

反余弦

支持

反正弦

支持

反正切

支持

反正切2

支持

余弦

支持

他的

支持

切线

支持

向量

叉积

支持

距离

支持

点积

支持

菲涅耳效应

支持

反射

支持

绕轴旋转

支持

转换

有些空间是模拟的,未在测试中涵盖。

海浪

三角波

支持

4.4.6 程序

部分

节点

笔记

噪音

梯度噪声

- 无法确定目标平台噪声函数的行为是否相同。
- 频率当前关闭(比例映射到幅度而不是频率)。

沃罗诺伊

- 无法确定目标平台噪声函数的行为是否相同。

形状

椭圆

支持

4.4.7 Utility

部分

节点

笔记

Utility

预览

支持

分体式左轮

特定于 PolySpatial 的非标准着色器图形节点。实现 splitlr 函数,如中所述材质X规格.

逻辑

分支

支持

比较

支持

或者

支持

4.4.8 UV

部分

节点

笔记

紫外线

翻页书

支持

旋转

仅支持度数。

平铺和偏移

支持

三平面

支持

4.5 输入

在 VisionOS 上有两种捕获用户意图的方法:3D 触摸和骨骼手跟踪。在独占模式下,开发人员还可以访问头部跟踪数据。

4.5.1 3D Touch 和 TouchSpace

在有界和无界体积中,当用户使用输入碰撞器查看对象并执行“捏”(拇指和食指一起触摸以“点击”或“拖动”)手势时,就会提供3D触摸输入。PolySpatialTouchSpace输入设备向开发人员提供该信息。如果用户按住捏合手势,则会启动拖动,并向应用程序提供相对于原始起点的“移动”更新。如果对象在触手可及的范围内(无需特定注视),用户还可以直接在对象上执行捏合手势。

3D触摸事件通过PolySpatialTouchSpace 输入设备公开,该设备构建在封装之上com.unity.inputsystem,也称为新输入系统。绑定到触摸屏设备的现有操作应该适用于 2D 输入。对于 3D 输入,用户可以将操作绑定到特定的PolySpatialTouchSpace设备以获得 3D 位置向量。

任何可以接收 3D 触摸事件的对象都需要将碰撞遮罩设置为 PolySpatial 输入层的碰撞器。仅报告对这些事件的接触。目前,平台不会在点击手势开始时提供凝视光线。

4.5.2 骨骼手追踪

骨骼手部跟踪由XR Hands 中的手部子系统提供。使用场景中的手部可视化器组件,用户可以显示玩家手部的蒙皮网格或每关节几何体,以及基于手部物理交互的物理对象。用户可以直接针对手子系统编写 C# 脚本来推断骨骼之间的距离和关节角度。Hand Visualizer组件的代码可在XR Hands Package中找到,并且可以作为利用Hand Subsystem 代码的良好起点。

4.5.3 头部追踪

ARKit 通过VisionOS Package提供头部跟踪。这可以使用移动 AR 的创建菜单在场景中进行设置:创建 > XR > XR Origin (Mobile AR)。位姿数据来自devicePosition [HandheldARInputDevice]deviceRotation [HandheldARInputDevice]的新输入系统。

4.6 自定义 PolySpatial 组件

4.6.1 体积相机

PolySpatial 提供了一个名为 的新 Unity 组件,用于Volume Camera与visionOS 环境提供的模式和体积进行交互。体积相机与常规 Unity 相机类似,因为它们指示用户应该看到哪些内容,但不同之处在于它们捕获 3D 内容而不是 2D 图像。

将 VolumeCamera 组件添加到场景中的对象,以指定向用户呈现的内容以及内容的呈现方式。保存 VolumeCamera 的 GameObject 的变换(例如比例)会影响向用户显示的体积大小。VolumeCamera 的编辑器内预览范围可以帮助可视化应渲染的内容。

通常,然后通过相应的“体积渲染器”将该规范体积映射到主机体积渲染器自己的不同OBB,将该内容显示在主机平台上。效果是体积相机边界内的 3D 内容被变换、旋转、拉伸和/或挤压以填充体积渲染器的边界。

Mode设置为 时Unbounded,一切都与典型的 Unity 相机类似,只是体积相机和体积渲染器各自定义了无界 3 空间而不是有界

VolumeCamera组件公开以下属性

财产

描述

模式

指定音量的模式。

    有界

体积相机具有由其尺寸定义的有限边界。任意数量的体积相机都可以处于“有界”模式。

    无界

体积相机捕获所有内容,无论位置如何,并且尺寸字段被禁用和忽略。对于给定应用程序,在给定时间只能有一台卷相机处于无界模式。将体积相机的模式设置为无界相当于请求您的应用程序切换到“独占”模式。

方面

定义相机边界框的(未缩放)大小,该边界框以 VolumeCamera变换的位置为中心。世界空间维度是通过维度和变换比例的元素相乘来计算的。

剔除掩码

定义 Unity 图层的位掩码。体积相机只会显示属于指定图层的对象。对于典型的 Unity 相机和 CullingMask 工作流程,这可用于指定每个单独的体积相机可见的对象。例如,库存体积相机可用于通过定义“库存”图层来渲染一个体积内的 3D 库存,而“小地图”图层可用于渲染第二体积内整个场景的鸟瞰图。

4.6.2 PolySpatial视频组件

为了支持 VisionOS 上的视频内容,PolySpatial 目前包含一个自定义的PolySpatialVideoComponent我们预计最终会支持股票视visionOS提供关键视频功能。要使用它,请将 设置Target Material Renderer为频组件,但该组件在此期间为GameObjectMeshRenderer显示视频的资源,并设置Clip为指向要播放的视频资源,例如.mp4

当前系统的一个限制是,必须手动将剪辑复制到../StreamingAssets/PolySpatialVideoClips/文件夹中才能在 VisionOS 上实现完整功能。如果该文件夹不存在,则创建该文件夹。确保剪辑不仅移入此文件夹,而且复制到其中,以便有它的两个实例。

PolySpatialVideoComponent组件公开以下属性:

财产

描述

目标材质渲染器

引用应在其上渲染视频的 MeshRenderer。视频将覆盖该 MeshRenderer 上的当前材质。

夹子

要播放的视频资源。

正在循环

当播放到达剪辑末尾时视频是否应重复。

醒着玩

视频是否应在Awake()调用时开始播放。

沉默的

当 true 时,音频播放被抑制;如果为 false,则遵循体积值。

体积

剪辑的当前音频播放音量,范围在 0 到 1 之间。

4.6.3 PolySpatial悬停效果

向平台提供提示,以在用户将鼠标悬停在此对象上时应用系统悬停效果。这通常用于向用户提供该对象是交互式的视觉提示。这种效果可以通过凝视或用手戳来触发。该效果应用于正在悬停的对象,而不是正在悬停的对象。

出于隐私原因,visionOS 不允许应用程序直接访问用户的视线。然而,在视觉上突出显示用户正在注视的对象通常是有帮助的,以便暗示如果用户执行捏合手势,哪个对象将接收输入。为此,Unity PolySpatialPolySpatialHoverEffect为visionOS 提供了一个组件,可以将其添加到可能通过注视接收输入的游戏对象中。该组件的存在指示主机平台 (RealityKit) 在用户的凝视光线与其相应的碰撞体相交时向GameObject'应用着色效果。MeshRenderer

必须存在所有三个组件才能实现效果: 指示PolySpatialHoverEffectGameObject显示悬停,Collider组件定义凝视光线投射的碰撞形状,提供MeshRenderer将应用着色效果的网格和几何体。

4.7 PolySpatial Tooling

4.7.1 日志

PolySpatial 日志记录消息按类别和级别进行标记,以便于更有针对性的调试。从 Unity 编辑器的主菜单中,选择窗口”>“PolySpatial”>“日志记录”以打开“PolySpatial 日志记录”窗口。从这里,您可以切换启用哪些类别,是否应生成堆栈跟踪,以及对于启用堆栈跟踪的类别,哪些级别将生成跟踪。

4.7.2 多空间统计

首先,通过启用项目设置 > PolySpatial > 启用统计来启用 PolySpatial 统计跟踪。然后可以在 Unity Editor 主菜单中的Window > PolySpatial > PolySpatial Statistics下找到该编辑器。在播放模式下,此编辑器显示时间的直方图跟踪、跟踪的对象以及已复制到 PolySpatial 主机的资源。

4.7.3 调试链接

为了便于在播放模式下进行调试,PolySpatial 运行时添加了DebugPolySpatialGameObjectLinks组件,以将每个模拟游戏对象连接到Unity SceneGraph 中其相应的支持游戏对象。

4.7.4 资产查找器

在播放模式下,AssetFinder 会跟踪已复制到主机渲染器的所有资源。这对于追踪资产链接非常有用。该编辑器可以在 Unity Editor 主菜单中的PolySpatial > Asset Finder下找到。

4.7.5 录音与回放

要录制 PolySpatial 播放模式会话,请转至Windows > PolySpatial > 录制和播放。按Record进入播放模式并开始录音。正常进行交互并提供输入,然后退出播放模式以停止录制。新文件将添加到列表中;您可以通过选择该录音然后按Play按钮来重播该录音。新输入不会被处理,但原始录音中编码的输入将重播。

录音保存在Library/PolySpatialRecordings任何使用相同版本 PolySpatial 软件包的机器上,并且可以在任何机器上播放。除此之外,这些文件可以提交给 Unity 支持,使我们能够调试许多特定于项目的问题,而无需项目的完整 zip 文件。


http://www.ppmy.cn/news/1034543.html

相关文章

对自定义表格数据设计自定义查询/汇总

目录 1 前言 2 生成数据 3 设计一个汇总 4 试一下效果 5 导出为excel文件的源代码 6 后记 1 前言 对自定义表格中录入或者导入的数据,必须能定义查询和汇总,否则程序基本没什么用。就是说,程序应该具备对任意表格进行方便的查询汇总公式…

数据结构中公式前中后缀表达式-二叉树应用

目录 数据结构中公式前中后缀表达式-二叉树应用 数据结构中公式前中后缀表达式-二叉树应用 什么是前缀表达式、中缀表达式、后缀表达式 前缀表达式、中缀表达式、后缀表达式,是通过树来存储和计算表达式的三种不同方式 以如下公式为例 通过树来存储该公式&#x…

js如何判断是否在如何判断是否在iframe

1. js如何判断是否在iframe中 Js代码 //方式一 if (self.frameElement && self.frameElement.tagName "IFRAME") { alert(在iframe中); } //方式二 if (window.frames.length ! parent.frames.length) { alert(在iframe中); } //方式三 if (self ! top) {…

Spring中的接口使用

技术主题 在我们的项目中,经常会使用一些注解,注解带给我们代码简洁,本质是用于在代码中添加元数据信息,从而实现更加灵活、高效和可维护的代码结构。 技术原理 注解一@Target(ElementType.TYPE) 这个注解表示被它修饰的注解可以应用在类、接口、枚举等类型上。换句话说…

【Go 基础篇】Go语言指针解析:深入理解内存与引用的奥秘

介绍 指针是计算机编程中的重要概念,它提供了直接访问内存地址的能力,为程序的数据处理和内存管理提供了灵活性和效率。在Go语言(Golang)中,指针也是一种重要的数据类型,用于处理变量的引用和修改。本篇博…

Mybatis 初识

目录 1. MyBatis入门 1.1 MyBatis的定义 1.2 MyBatis的核心 MyBatis的核心 JDBC 的操作回顾 1.3 MyBatis的执行流程 MyBatis基本工作原理 2. MyBatis的使用 2.1 MyBatis环境搭建 2.1.1 创建数据库和表 2.1.2 添加MyBatis框架支持 老项目添加MyBatis 新项目添加MyBatis 2.1.3 设…

Verdi_traceX and autotrace

Verdi_traceX and autotrace Trace X From nWave/nTrace of from the Teporal Flow View. Show Paths on Flow ViewShow Paths on nWave 若Waveform中有X态,鼠标右键会有Trace X的选项; 会自动打开Temporal Flow View窗口,展示对应路径&am…

标准模板库STL——vector

目录 vector概述 相关操作 常用方法 代码段 相关操作 辨析reserve和resize vector概述 vector属于顺序容器,称为向量容器 底层数据结构是动态一维数组,vector的内存连续,必要时进行2倍扩容 2倍扩容的步骤依次是开辟新内存、拷贝构造新对…

印度货代专线【我国到印度专线有哪些方式】

随着全球贸易的不断发展,我国与印度之间的贸易往来也日益频繁。作为两个人口最多的国家之一,中国和印度之间的货物运输需求不断增长。为了满足这一需求,印度货代专线应运而生,为进出口商提供高效、可靠的货物运输服务。本文将探索…

C++——list的简要介绍

list的介绍 详细请看(https://cplusplus.com/reference/list/list/?kwlist) 1.list是一个可以在常数范围内在任意位置,进行插入和删除的序列式容器,并且此容器可以前后双向迭代。 2.list的底层实质是一个双向链表结构&#xf…

【C# 基础精讲】异常的类型和处理方法

异常(Exception)是在程序执行过程中发生的意外或异常情况,例如除零错误、空引用访问、文件不存在等。在C#及其他编程语言中,异常处理是一种重要的机制,用于捕获和处理程序运行时可能出现的错误,以保证程序的…

第五章 Opencv图像处理框架实战 5-10 文档扫描OCR识别

一、整体流程演示 上一篇我们进行了银行卡数字识别,这次我们利用opnecv等基础图像处理方法实现文档扫描OCR识别,该项目可以对任何一个文档,识别扫描出该文档上所有的文字信息。 为了方便后续程序运行,大家可以在Run->Edit Configuration中配置相关参数,选择相应编译器…

使用 BERT 进行文本分类 (02/3)

​ 一、说明 在使用BERT(1)进行文本分类中,我向您展示了一个BERT如何标记文本的示例。在下面的文章中,让我们更深入地研究是否可以使用 BERT 来预测文本是使用 PyTorch 传达积极还是消极的情绪。首先,我们需要准备数据…

【string】基本用法

目录 前言: string常用接口 一、string的创建,拼接与拷贝构造 1.创建 2.拼接 3.拷贝构造 二、string遍历 方式一:operator[ ]重载 方式二:迭代器 1.正向迭代器: 2.反向迭代器 3.const正向迭代器 4.const反向迭代器 方式三&#…

解析TCP/IP协议的分层模型

了解ISO模型:构建通信的蓝图 为了促进网络应用的普及,国际标准化组织(ISO)引入了开放式系统互联(Open System Interconnect,OSI)模型。这个模型包括了七个层次,从底层的物理连接到顶…

Termux SFTP 进行远程文件传输

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP(SSH File Transfer Protocol)是一种基于SSH(Secure Shell)安全协议的文件传输协议。与FTP协议相比,SFTP使用了…

Nginx的块、变量以及重定向

目录 绪论 1、location匹配 1.1 常见的Nginx正则表达式 1.2 正则表达式:匹配的是文件内容 1.3 location匹配uri 1.4 location常用的匹配规则 1.5 location优先级 1.6 匹配小结 1.7 生产环境中的匹配规则 2、nginx的内置变量 3、rewrite 3.1 rewrite作用 …

[Poetize6] IncDec Sequence

题目描述 给定一个长度为 n 的数列 a_1,a_2,...,a_n,每次可以选择一个区间[l,r],使这个区间内的数都加 1 或者都减 1。 请问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多…

ClickHouse安装步骤

文章目录 ClickHouse安装步骤背景安装启动用户相关修改密码登录验证新增用户config配置文件 基本操作服务管理 ClickHouse安装步骤 背景 经过研究ClickHouse是列式数据库,下面是在Centos7.9版本单机版的安装的演示 安装 首先安装yum-utils工具包 sudo yum inst…

图像的镜像变换之c++实现(qt + 不调包)

1.基本原理 1.水平镜像变化 设图像的宽度为width,则水平镜像变化的映射关系如下: 2.垂直镜像变化 设图像的宽度为height,则垂直镜像变化的映射关系如下: 2.代码实现(代码是我以前自学图像处理时写的,代码很…
最新文章