iOS TrueDepth 帧到点云

iOS TrueDepth frame to point cloud

我正在尝试从 iOS 中的单个 TrueDepth 帧 (AVDepthData / CVPixelBuffer) 获取 3D 点云。 我看到了官方文档,但是我似乎找不到最后遗漏的部分:Streaming Depth Data from the TrueDepth Camera

这段代码完美地呈现了我感兴趣的点云,但我无法找到如何从中获取以米为单位的世界坐标并将它们存储为 pcd 文件。

有没有办法读出金属深度纹理的所有 3D 点,或者这是错误的方法? 如果是这样,我从哪里开始?

感谢您的帮助!

在着色器函数中vertexShaderPoints看看下面的内容:

uint2 pos;
pos.y = vertexID / depthTexture.get_width();
pos.x = vertexID % depthTexture.get_width();

// depthDataType is kCVPixelFormatType_DepthFloat16
float depth = depthTexture.read(pos).x * 1000.0f;

float xrw = (pos.x - cameraIntrinsics[2][0]) * depth / cameraIntrinsics[0][0];
float yrw = (pos.y - cameraIntrinsics[2][1]) * depth / cameraIntrinsics[1][1];

float4 xyzw = { xrw, yrw, depth, 1.f };

为您的点云编写器重构此计算,我想您会找到想要的东西。