ARFrame (AR 会话中的一帧数据) | 属性 (具体数据特征) | 具体参数 | 描述 |
---|---|---|---|
ARFrame | camera (相机信息) | transform (位置和方向) |
simd_float4x4 :表示相机在 3D 空间中的位置和方向,包含平移和旋转信息。 |
intrinsics (内参矩阵) |
simd_float3x3 :相机内参矩阵,描述镜头的焦距和图像中心,用于从 3D 坐标到 2D 图像的投影。 |
||
anchors (锚点信息) | count (锚点数量) |
Int :当前帧中锚点的数量,表示虚拟物体的数量,帮助开发者了解场景的复杂性。 |
|
identifier (唯一标识符) |
UUID :锚点的唯一标识符,用于区分不同的虚拟对象,使得每个对象能够被独立跟踪和管理。 |
||
transform (锚点变换) |
simd_float4x4 :表示该锚点在 3D 空间中的位置和方向,类似于相机变换。 |
||
lightEstimate (光照估计) | ambientIntensity (环境光强度) |
Float :当前环境的光照强度(以勒克斯为单位),用于调整虚拟物体的光照效果,使其看起来更加自然。 |
|
ambientColorTemperature (光色温) |
Float :环境光的色温(以开尔文为单位),影响物体的渲染色彩和真实感,帮助改善虚拟与现实的融合。 |
||
capturedImage (捕获的图像) | capturedImage (原始图像数据) |
CVPixelBuffer :当前帧的原始图像数据,包含摄像头捕获的画面,可用于进行图像处理或后续渲染。 |
|
timestamp (时间戳) | timestamp (捕获时间) |
TimeInterval :该帧捕获的时间,通常以秒为单位,方便进行时间相关的处理或同步。 |
|
worldMappingStatus (世界映射状态) | worldMappingStatus (环境理解状态) |
ARFrame.WorldMappingStatus :表示 ARKit 对环境理解的状态(如 .notAvailable 、.limited 、.extending 和 .mapped ),指示 AR 会话的质量和稳定性。 |
|
detectedBody (检测到的身体) | detectedBody (人体数据) |
ARBody2D? 或 ARBodyAnchor? :如果检测到人体骨架,返回相关数据(如身体位置和姿势),否则为 nil ,可用于与用户进行交互。 |
|
segmentationBuffer (分割图像) | segmentationBuffer (图像分割数据) |
CVPixelBuffer? :表示当前场景的分割图像,用于区分不同区域(如前景和背景),帮助提高渲染效果和视觉真实感。 |
|
depthData (深度数据) | depthData (深度信息) |
AVDepthData? :场景的深度信息,提供距离数据,用于计算虚拟物体与现实世界之间的遮挡效果,增强 AR 体验的真实感。 |
ARBody2D 的人体节点信息如下
let skeleton = body.skeleton
for na in skeleton.definition.jointNames
{
print("--->(na)")
}
空间位置信息 : skeleton.jointLandmarks
--->head_joint
--->neck_1_joint
--->right_shoulder_1_joint
--->right_forearm_joint
--->right_hand_joint
--->left_shoulder_1_joint
--->left_forearm_joint
--->left_hand_joint
--->right_upLeg_joint
--->right_leg_joint
--->right_foot_joint
--->left_upLeg_joint
--->left_leg_joint
--->left_foot_joint
--->right_eye_joint
--->left_eye_joint
--->root
--->right_ear_joint
--->left_ear_joint
以上表格json化
{
"ARFrame": {
"description": "AR 会话中的一帧数据",
"attributes": [
{
"name": "camera",
"description": "相机信息",
"subAttributes": [
{
"name": "transform",
"type": "simd_float4x4",
"description": "表示相机在 3D 空间中的位置和方向,包含平移和旋转信息。"
},
{
"name": "intrinsics",
"type": "simd_float3x3",
"description": "相机内参矩阵,描述镜头的焦距和图像中心,用于从 3D 坐标到 2D 图像的投影。"
}
]
},
{
"name": "anchors",
"description": "锚点信息",
"subAttributes": [
{
"name": "count",
"type": "Int",
"description": "当前帧中锚点的数量,表示虚拟物体的数量,帮助开发者了解场景的复杂性。"
},
{
"name": "identifier",
"type": "UUID",
"description": "锚点的唯一标识符,用于区分不同的虚拟对象,使得每个对象能够被独立跟踪和管理。"
},
{
"name": "transform",
"type": "simd_float4x4",
"description": "表示该锚点在 3D 空间中的位置和方向,类似于相机变换。"
}
]
},
{
"name": "lightEstimate",
"description": "光照估计",
"subAttributes": [
{
"name": "ambientIntensity",
"type": "Float",
"description": "当前环境的光照强度(以勒克斯为单位),用于调整虚拟物体的光照效果,使其看起来更加自然。"
},
{
"name": "ambientColorTemperature",
"type": "Float",
"description": "环境光的色温(以开尔文为单位),影响物体的渲染色彩和真实感,帮助改善虚拟与现实的融合。"
}
]
},
{
"name": "capturedImage",
"description": "捕获的图像",
"subAttributes": [
{
"name": "capturedImage",
"type": "CVPixelBuffer",
"description": "当前帧的原始图像数据,包含摄像头捕获的画面,可用于进行图像处理或后续渲染。"
}
]
},
{
"name": "timestamp",
"description": "时间戳",
"subAttributes": [
{
"name": "timestamp",
"type": "TimeInterval",
"description": "该帧捕获的时间,通常以秒为单位,方便进行时间相关的处理或同步。"
}
]
},
{
"name": "worldMappingStatus",
"description": "世界映射状态",
"subAttributes": [
{
"name": "worldMappingStatus",
"type": "ARFrame.WorldMappingStatus",
"description": "表示 ARKit 对环境理解的状态(如 .notAvailable、.limited、.extending 和 .mapped),指示 AR 会话的质量和稳定性。"
}
]
},
{
"name": "detectedBody",
"description": "检测到的身体",
"subAttributes": [
{
"name": "detectedBody",
"type": "ARBody2D? 或 ARBodyAnchor?",
"description": "如果检测到人体骨架,返回相关数据(如身体位置和姿势),否则为 nil,可用于与用户进行交互。"
}
]
},
{
"name": "segmentationBuffer",
"description": "分割图像",
"subAttributes": [
{
"name": "segmentationBuffer",
"type": "CVPixelBuffer?",
"description": "表示当前场景的分割图像,用于区分不同区域(如前景和背景),帮助提高渲染效果和视觉真实感。"
}
]
},
{
"name": "depthData",
"description": "深度数据",
"subAttributes": [
{
"name": "depthData",
"type": "AVDepthData?",
"description": "场景的深度信息,提供距离数据,用于计算虚拟物体与现实世界之间的遮挡效果,增强 AR 体验的真实感。"
}
]
}
]
}
}