ios - 在 ARKit 中获取相机的向上向量
<p><p>我正在尝试在ARKit中获取构成截锥体边界的四个向量,我想出的解决方案如下:</p>
<ul>
<li>找出相机的视野角度</li>
<li>然后找到相机的方向和向上向量</li>
<li>使用这些信息,使用叉积和旋转找到四个向量</li>
</ul>
<p>这可能是一种草率的做法,但它是迄今为止我得到的最好的方法。 </p>
<p>我能够从 <code>ARCamera.intrinsics</code> 和 <code>ARCamera.transform</code> 属性中获取 FOV 角度和方向矢量。但是,我现在不知道如何获取相机的向上向量。</p>
<p>下面是我用来查找 FOV 角度和方向矢量的一段代码:</p>
<pre><code>func session(_ session: ARSession, didUpdate frame: ARFrame) {
if xFovDegrees == nil || yFovDegrees == nil {
let imageResolution = frame.camera.imageResolution
let intrinsics = frame.camera.intrinsics
xFovDegrees = 2 * atan(Float(imageResolution.width) / (2 * intrinsics)) * 180 / Float.pi
yFovDegrees = 2 * atan(Float(imageResolution.height) / (2 * intrinsics)) * 180 / Float.pi
}
let cameraTransform = SCNMatrix4(frame.camera.transform)
let cameraDirection = SCNVector3(-1 * cameraTransform.m31,
-1 * cameraTransform.m32,
-1 * cameraTransform.m33)
}
</code></pre>
<p>我也愿意接受有关如何找到我想要获得的四个向量的建议。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我不明白这条线是如何工作的:</p>
<pre><code>let cameraDirection = SCNVector3(-1 * cameraTransform.m31,
-1 * cameraTransform.m32,
-1 * cameraTransform.m33)
</code></pre>
<p>这给出了相机的方向向量,因为变换矩阵的第 3 行给出了变换后的相机的新 z 方向指向的位置。我们将它乘以 -1,因为相机的默认方向是负 z 轴。</p>
<p>考虑到这些信息以及相机的默认向上向量是正 y 轴这一事实,变换矩阵的第 2 行为我们提供了相机的向上向量。下面的代码给了我我想要的:</p>
<pre><code>let cameraUp = SCNVector3(cameraTransform.m21,
cameraTransform.m22,
cameraTransform.m23)
</code></pre></p>
<p style="font-size: 20px;">关于ios - 在 ARKit 中获取相机的向上向量,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/47719468/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/47719468/
</a>
</p>
页:
[1]