ios - 在 SceneKit 中更改 "field of view"

标签 ios scenekit scnnode scncamera

我有一些带有透视投影的相机和(0,0,0)中的对象。
我根据这个相机计算了这个对象的“边界框”(屏幕上的像素大小)并缩放它以适应屏幕大小。现在它在屏幕中间。

scnView 的框架等于屏幕大小,我在这个 View 上方有一些 UI 组件(例如导航栏和 View 底部的一些大透明 View )。 scnView 有一些全屏背景,这个对象可以缩放/移动/......因此我需要 scnview 全屏。

smth like that

然后我将这个对象移动到“透明区域”(没有 UIComponents 的区域)的中间,并看到这个对象的底部(好像它在我的上方),因为我的投影是透视的。

我想把这个物体移动到清晰区域的中心,让它看起来像在我面前,没有任何扭曲。我怎样才能做到这一点?

enter image description here

我看到了 2 个解决方案。
1)在纹理中将我的对象绘制到屏幕外,然后在屏幕上所需位置绘制此纹理。
2)创建 scnView 高一点。例如将帧大小设置为 = (0, (bottomHeight - topHeight)/2, width, height + (bottomHeight - topHeight)/2) 以将 scnView 的中心移动到所需位置。

但是我不喜欢第一个解决方案,因为添加了绘制调用,而第二个解决方案甚至听起来很糟糕。

附言对不起那张照片

更新:基本上我想使用透视投影并像 SceneKit 中的 2D 图像一样移动 3D 对象。

最佳答案

抱歉,如果我没有正确理解,但是您可以将相机扫射并居中吗,还是不够清楚?

func strafeY(vAmount: XFloat)
{
  nPosition = cgVecAdd(v1: nPosition, v2: cgVecScalarMult(v: nTarget, s: vAmount))
}

关于ios - 在 SceneKit 中更改 "field of view",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50221753/

相关文章:

ios - 可以添加到 Xcode 的 dae 文件的最大大小是多少

ios - OpenGL 加载后添加顶点

swift - 如何使用 ARKit 在 ARSCNView 中正确放置 3D 对象?

添加 map View 时 iphone 应用程序崩溃

swift - 在 Swift 中扩展 SCNNode

ios - 添加一个 SKLabelNode 到 Scene Kit View

swift - SceneKit - 自定义几何体不显示

ios - 如何使用 ARKit 将 SCNNode 的方向更改为相机

ios - 在设备上反向查看 Controller

ios - 从 SOAP api 调用检索 json