- 博客(160)
- 收藏
- 关注
原创 鸿蒙多线程应用-taskPool
当前鸿蒙ArkTS提供了TaskPool和Worker两种并发能力,TaskPool和Worker都基于Actor并发模型实现。
2024-11-27 16:40:02
1357
原创 RTMP协议
与RTSP 不同,RTSP(Real-Time Streaming Protocol)是一个控制协议,负责控制媒体流的传输,但不传输媒体数据本身。RTSP 可以通过 TCP 或 UDP 传输 RTP 包来传输音视频数据。 RTMP(Real-Time Messaging Protocol)是一个综合性的协议,不仅可以传输音视频数据,还可以...
2024-07-02 20:42:00
546
原创 Swift宏
Swift 宏在 WWDC 2023 的 Swift 5.9 版本中引入,简单来说它允许我们在编译时生成重复代码,它还允许我们在编译之前动态地操作项目的 Swift 代码,从而允许我们在编译时注入额外的功能,使我们的应用程序的代码库更易于阅读且更高效地编码。
2024-06-30 14:27:59
777
原创 iOS使用webSocket通信
webSocket是HTML5开始提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。
2024-05-07 16:29:09
1490
原创 【iOS ARKit】Web 网页中嵌入 AR Quick Look
除了显示支付图标按钮,也可以显示自定义的文字按钮,显示自定义文字按钮的方法是将文字作为模型文件的 callToAction 参数传递,代码中为显示“go to pay”的示例。注意附加于模型地址后的参数都需要以 URL 编码的方式对特殊字符进行编码,如空格的编不编码则会导致传输错误而无法解析,在使用汉字时,也需要对汉字进行 URL编码。
2024-04-10 18:09:31
1543
原创 【iOS ARKit】App 中嵌入 AR Quick Look
ARQuickLookFreviewltem 类继承自 QLPreviewItem类,是专为AR 展示定制的类型,该类提供了两个 AR 专用属性:allowsContentScaling 和 canonical WebPageURL,其中 allowsContentScaling 为布尔值,用于设置是否允许缩放模型,这在一些实物展示类应用场合会比较有用 如家具展示,一般没有必要允许使用者缩放模型;(1) 新建一个 SwiftUI View 文件,命名为 ARQuickLookView,具体代码如下。
2024-04-10 16:42:26
823
原创 【iOS ARKit】AR Quick Look 概述
AR Quick Look 更像是一个 AR浏览器,它可以直接使用 AR 方式浏览 USDZ 和 Reality 格式文件,对外封装了所有的技术细节,并提供了非常简洁便捷的使用接口,简单到只需要提供文件路径。对集成该框架的应用,如iMessage,直接单击USDZ 文件就可以启动AR体验模式。
2024-04-09 16:44:49
1617
原创 【iOS ARKit】USDZ文件
ARKit 支持 USDZ(Universal Scene Description Zip,通用场景描述文件包)、Reality 两种格式的模型文件,得益于 USDZ的强大描述能力与网络传输便利性,使得iOS 设备能够在其信息(Message)、邮件(Mail)、浏览器(Safari)等多种应用中实现 AR功能,AR 体验的共享传播也变得前所未有地方便。
2024-04-09 16:20:24
1336
原创 【iOS ARKit】3D 视频
在AR 中播放视频也是一种常见的需求,如在一个展厅中放置的虚拟电视上播放宣传视频,或者在游戏中为营造氛围而设置的虚拟电视视频播放,或者在识别的2D个人名片上播放自我介绍视频,因视频具有静态图像无法比拟的综合信息展示能力,采用视频比单纯使用图像表达上更充分,本节我们将学习如何在AR场景中播放视频。
2024-04-01 15:52:36
1462
原创 【iOS ARKit】播放3D音频
ARKit 通过世界跟踪功能定位声源位置,然后根据用户与声源的相对位置和方向自动混音,将3D音频技术带人 AR中。在 AR场景中放置一个声源,当用户接近或远离时,声音音量大小会自动增加或减弱,当用户围绕声源旋转时,声音也会呈现沉浸式的3D效果
2024-03-25 16:06:25
1167
原创 【iOS ARKit】3D文字
在 RealityKit 中,开发人员可以程序化地生成立方体、球体、圆柱体等3D虚拟对象,这个过程其实就是利用算法生成立方体、球体、圆柱体的网格信息、法线信息、UV坐标信息的过程,有了这些基础信息,CPU与 GPU 就知道如何将虚拟对象渲染出来。
2024-03-25 15:31:09
1412
原创 【iOS ARKit】触发器与触发域
但在一些应用中,我们物理模拟,同时又需要了解是否有物体与它们发生了碰撞。如在 AR场景中,当角色靠近一散门时,我们并不希望因为角色与门发生碰撞而导致门移动,但又需要了解是否有角色与门发生了碰撞并以此为依据决定是否打开门。在这种应用场合中,使用触发器是最好的选择。
2024-03-19 15:18:16
1611
原创 【iOS ARKit】PhysicsMotionComponent
使用 Physics BodyComponent 组件,通过设置物理参数、物理材质、施加作用力,能完全模拟物体在真实世界中的行为,这种方式的优点是遵循物理学规律、控制精确,但缺点是不直观。使用 PhysicsMotion Component组件则可以通过直接设置速度进行物理模拟,但需要明白的是,对物体施加力与设置物体速度是两种完全不同且不相容的操作,无法混合使用。
2024-03-15 17:25:26
530
原创 【iOS ARKit】PhysicsBodyComponent
使用 PhysicsBodyComponent 组件进行物理模拟演示,主要代码如下所示
2024-03-15 17:18:24
808
原创 【iOS ARKit】RealityKit 中的物理组件
在 RealityKit 中,对虚拟物体进行物理模拟时需要在该物体实体对象上挂载物理组件,物理引擎会忽略所有未挂载物理组件的物体,RealityKit 包含两个跟物理相关的组件:PhysicsBodyComponent 和PhysicsMotionComponent,ModelEntity 实体类默认带有这两个组件,即使用 ModelEntity 类创建的实体都会参与物理模拟。
2024-03-13 17:43:42
1460
1
原创 【iOS ARKit】RealityKit 同步机制
协作 Session 可以很方便地实现多用户之间的AR体验实时共享,但开发者需要自行负责并确保AR场景的完整性,自行负责虚拟物体的创建与销毁。为简化同步操作,RealityKit 内建了同步机制,RealityKit 同步机制基于 Multipeer Connectivity,当设置好 MultipeerConnectivityService 属性之后,RealityKit 会自动在参与者之间同步实体对象(Entity)。
2024-02-29 20:08:50
1582
1
原创 【iOS ARKit】协作 Session 实例
协作 Session 是在 ARWorldMap 基础上发展起来的技术,ARWorldMap 包含了一系列的地标、ARAnchor 及在观察这些地标和 ARAnchor 时摄像机的视场(View)。如果用户在某一个位置新创建了一个 ARAnchor,这时这个 ARAnchor位置并不是相对于公共世界坐标系的(实际上此时用户根本就不知道是否还有其他参与者),而是被存储成离这个 ARAnchor 最近视场的相对坐标,这些信息也会一并存入到用户的ARWorldMap 中并被发送到其他用户。
2024-02-29 19:19:06
1086
原创 【iOS ARKit】协作Session
使用 ARWorldMap,能解决使用者再次进入同一物理空间时的AR 场景恢复问题,也能在多人之间共桌AR 体验,但这种共享并不是实时的,在载入ARWorldMap 后,设备新检测到的环境信息和使用者所做操作不会实时共享,即在载入ARWorldMap后,用户A 所做的操作或者添加的虚拟物体不会在用户B的设备上体现。
2024-02-27 16:22:32
1427
1
原创 【iOS ARKit】网络传输 ARWorldMap
ARKit 可以利用 ARWorldMap 在应用中断后进行状态恢复、继续AR 进程。一个用户也可以将ARWorldMap 发送给其他用户,当其他用户接收并加载 ARWorldMap 后,就可以在相同的物理环境看到同样的虚拟元素,达到共享 AR体验的目的。
2024-02-27 11:46:09
1315
原创 【iOS ARKit】ARWorldMap
持久化地存储应用进程数据,ARKit 提供了 ARWorldMap 功能,ARWorldMap 本质是将 AR 场景状态信息转换为可存储可传输的形式(即序列化)保存到文件系统或者数据库中,当使用者再次加载这些景状态信息后即可恢复应用进程。ARWorldMap 不仅保存了应用进程状态信息,还保存了场景特征点云息,在使用者再次加载这些状态数据后,ARKit 可通过保存的特征点云信息与当前用户摄像头获取的特点云信息进行对比匹配从而更新当前用户的坐标,确保两个坐标系的匹配。
2024-02-26 17:22:04
1641
1
原创 【iOS ARKit】存储与共享
AR数据持久化存储与体验共享是一个庞大的主题,ARKit 提供了目前业内最好的解决方案。为解决数据持久化存储的问题,ARKit 提供了 ARWorldMap 技术;为解决体验共享的问题,ARKit 提供了协作Session (Collaborative Session)技术,通过这两种技术手段将复杂的技术简单化,并给予了开发者良好的支持。在 RealityKit 中,每一个实体对象都包含一个Synchronization 组件用于同步通信,通过内建的同步支持,实现 AR体验共享更便捷。
2024-02-26 11:56:48
955
1
原创 【iOS ARKit】人形提取
为解决人形分离和深度估计问题,ARKit 新增加了 Segmentation Buffer(人体分隔缓冲区)和Estimated Depth Data Buffer(深度估计缓冲区)两个缓冲区。人体分隔缓冲区作用类似于图形渲染管线中的 Stencil Buffer(模板缓冲区),用于区分人形区域与背景区域,它是一个像素级的缓冲区,用于精确地描述人形区域。
2024-02-06 19:24:00
1319
2
原创 【iOS ARKit】人形遮挡
正确实现虚拟物体与真实环境的遮挡关系,需要基于对真实环境3D结构的了解,感知真实世界的3D结构、重建真实世界的数字3D模型,然后基于深度信息实现正确的遮挡。但真实世界是一个非常复杂的3D 环境,精确快速地感知周围环境,建立一个足够好的真实世界3D模型非常困难,特别是在不使用其他传感器的情况下(如结构光、TOF、双目、激光等)。
2024-02-06 17:49:46
2648
1
原创 【iOS ARKit】3D人体姿态估计实例
与2D人体姿态检测一样,在ARKit 中,我们不必关心底层的人体骨骼关节点检测算法,也不必自己去调用这些算法,在运行使用 ARBodyTrackingConfiguration 配置的 ARSession 之后,基于摄像头图像的3D人体姿态估计任务也会启动,我们可以通过 session(_ session: ARSession, didUpdate anchors:[ARAnchor])代理方法直接获取检测到的ARBodyAnchor。
2024-02-04 16:17:41
1907
2
原创 【iOS ARKit】3D 人体姿态估计
与基于屏幕空间的 2D人体姿态估计不同,3D人体姿态估计是尝试还原人体在三维世界中的形状与姿态,包括深度信息。绝大多数的现有3D人体姿态估计方法依赖2D人体姿态估计,通过获取 2D人体姿态后再构建神经网络算法,实现从 2D 到 3D人体姿态的映射。
2024-02-04 14:37:16
1458
1
原创 【iOS ARKit】2D肢体动作捕捉
ARKit 配置类 ARBodyTrackingConfiguration 专用于 2D、3D人体肢体检测捕捉,同时,该配置类也可以设置实现 2D 图像检测和平面检测,构建对现实环境的跟踪。为更真实地渲染虚拟元素,ARBodyTrackingConfiguration 还支持 HDR(High Dynamic Range Imaging,高动态范围成像)环境反射功能。
2024-02-02 15:27:35
1616
原创 【iOS ARKit】手动配置环境探头
在使用自动环境反射时,开发人员无须进行有关环境反射的任何操作,只需要设置自动环境反射即可,其余工作完全由 RealityKit 自动完成,这适用于基本的常见环境反射。但这种环境反射方案是一种普适性的反射,并没有专门针对某特定虚拟元素进行优化,在某些情况下效果并不精细,并且我们也无法进行干预调优,如一辆行驶的赛车对环境的反射就需要更精细的控制,这时就需要手动控制环境探头的生成及更新。
2024-01-31 17:53:19
1404
原创 【iOS ARKit】环境反射
在使用 iOS AR中 渲染虚拟物体时,RealityKit 默认使用了一个简单的天空盒(Skybox,即IBL环境资源贴图),所有带反射材质的物体默认会对天空盒产生反射。
2024-01-31 16:35:09
1389
原创 【iOS ARKit】光照估计
ARKit 支持对用户所处环境光照信息的估计,在 ARConfiguration 类中定义了 isLightEstimationEnabled 布尔属性用于开启和关闭光照估计,该功能默认为启用状态。由于 ARConfiguration 是所有其他配置类的父类,因此 ARKit所有的配置类都支持光照估计功能。
2024-01-29 17:16:38
1013
原创 iOS ARKit 光照效果之光源
光照 在现实世界中,光扮演了极其重要的角色,没有光万物将失去色彩,没有光世界将一片漆黑。在3D数字世界中亦是如此,3D数字世界本质上是一个使用数学精确描述的真实世界复本,光照计算是影响这个数字世界可信度的极其重要的因素。光源 顾名思义,光源即是光的来源,常见的光源有阳光、月光、星光、灯光等。光的本质其实很复杂,它是一种电磁辐射但却有波粒二象性(我们不会深入研究光学,...
2024-01-29 15:13:00
790
原创 【iOS ARKit】光照效果--光源
iOS Reality Kit 支持3种光源类型:平行光(DirectionalLight)、点光(PointLigbt)、聚光(SpotLight),分别同于模拟太阳光、普通灯泡类灯光、手电筒类灯光,组合使用这3种光源类型可以实现绝大部分光照效果道染需求。实际上,RealityRit还支持环境光,但 RealityKit 中的环境光照并不直接来自光源,而是使用IBL(Image Based Lighting,基于图像的光照)技术从背景图像中提取。
2024-01-29 15:02:48
985
原创 【iOS ARKit】同时开启前后摄像头BlendShapes
iOS设备使用 ARFaceTrackingConfiguration配置可以实时进行人脸检测跟踪,实现人脸姿态和表情的捕捉,还可以同时开启设备前后摄像头,即同时进行人脸检测和世界跟踪。这是一项非常有意义且实用的功能,意味着使用者可以使用表情控制场景中的虚拟物体,实现除手势与语音之外的另一种交互方式。
2024-01-26 15:07:35
1907
1
原创 【iOS ARKit】BlendShapes
ARKit 提供了一种更加抽象的表示面部表情的方式,这种表示方式叫作 BlendShapes,BlendShapes 可以翻译成形状融合,在3ds Max 中也叫变形器,这个概念原本用于描述通过参数控制模型网格的位移,苹果公司借用了这个概念,在ARKit 中专门用于表示通过人脸表情因子驱动模型的技术。
2024-01-26 11:51:40
2064
1
原创 【iOS ARKit】人脸追踪之挂载虚拟元素
在iOS Realitykit 中,在检测到的人脸面部挂载虚拟元素的实现方式有两种:一种是通过遵循ARSesionDelegate 协议,执行 session(_ session: ARSession, didAdd anchors: LARAnchor」)方法,在获取的ARPaceAnchor 上挂载虚拟元素;另一种是与 Reality Composer结合使用。在使用第一种方式时,可以利用 ARFaceAnchor 初始化一个 AnchorEntity 类型实例,这样,ARFaceAnehor的姿态信息
2024-01-25 16:27:03
1208
1
原创 【iOS ARKit】人脸检测追踪基础
在 AR 应用运行时,ARKit 会根据检测到的人脸方向、表情实时更新人脸网格,寸变化,我们使用 renderer(_:didUpdate:for:)代理方法对人脸网格进行了实时更新检测到的人脸网格不仅包括几何顶点信息,也包括 UV 坐标信息,因此,我们不1习格,还可以使用静态、动态的纹理贴图进行渲染,
2024-01-25 15:14:23
3400
原创 ARKit 3D 物体检测跟踪
3D 物体检测跟踪 3D物体检测跟踪技术,是指通过计算机图像处理和人工智能技术对摄像机拍摄到的3D物体识别定位并对其姿态进行跟踪的技术。3D物体跟踪技术的基础也是图像识别,但比前述2D 图像检测、识别、跟踪要复杂得多,原因在于现实世界中的物体是三维的,从不同角度看到的物体形状、纹理都不一样,在进行图像特征值对比时需要的数据和计算比2D 图像大得多。 在 ARKit 中,...
2024-01-23 14:25:00
1666
2
原创 ARKit 图像检测
2D 图像检测跟踪 图像跟踪技术,是指通过图像处理技术对摄像机中拍摄到的2D 图像进行检测、识别、定位,并对其姿态进行跟踪的技术。图像跟踪技术的基础是图像识别,图像识别是指检测和识别出数字图像或视频中的对象或特征的技术,图像识别技术是信息时代的一门重要技术,其产生的目的是为了让计算机代替人类处理大量的图形图像及真实物体信息,是其他众多技术的基础。 ARKit 具备对2D 图像...
2024-01-22 16:14:00
1145
原创 iOS ARKit 动画
动画是增强虛拟元素真实感和生动性的重要方面,RealityKit 支持变換动面(Transform Animation)和骨骼动画(Skeletal Animation)两种动面模式。变换动画一般程序化地执行,支持基本的平移、旋转、缩放,更复杂的动画通常由第三方模型制作软件采用骨骼绑定的方式生成,独立或者内置于模型文件中。USDZ和 Reality 文件格式都支持动画,在使用...
2024-01-18 11:20:00
416
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人