SceneKit 移动相机

Posted

技术标签:

【中文标题】SceneKit 移动相机【英文标题】:SceneKit Move Camera 【发布时间】:2020-06-21 23:22:17 【问题描述】:

有一个大场景,例如:一个房子,我想用 TapGes 移动相机看到不同的房间。现在我有两个问题:

1.我无法从场景中的这个tapPoint获取3D点

    还有其他方法吗?

【问题讨论】:

【参考方案1】:

以下是一些可能有所帮助的示例。

57018359 - 这篇文章告诉您如何触摸 2d 屏幕(点击)并将其转换为 3d 坐标,由您决定深度 (z),就像您想点击屏幕并将对象放置在 3d 空间中一样。

57003908 - 这篇文章告诉您如何使用 hitTest(点击)选择对象。例如,如果您显示带有门的房屋正面并点击它,那么该函数将返回您的门节点,前提是您将节点命名为“门”并在它被触摸时采取某种行动。然后您可以根据该位置重新定位您的相机。您需要遍历所有结果,因为可能存在重叠或加上 Z 节点

55129224 - 这篇文章为您提供了创建相机类的快速示例。您可以使用它来重新定位相机或前后移动相机等。

【讨论】:

感谢您的回复。这是我的代码:
- (void)tap:(UITapGestureRecognizer *)tapGes  CGPoint tapL = [tapGes locationInView:self.scnView]; SCNVector3 projectionOrigin = [self.scnView projectPoint:SCNVector3Zero]; SCNVector3 vpWithZ = SCNVector3Make(tapL.x,tapL.y,projectedOrigin.z); SCNVector3 worldPoint = [self.scnView unprojectPoint:vpWithZ]; self.camera1Node.position = worldPoint; self.lastPoint = worldPoint; 
但是我的相机不前进,请帮我检查是否有任何问题,谢谢
可能是一堆东西,我无法从中分辨出来。一个简单的方法是确保您的相机首先工作。使用固定点进行眼睛和焦点 - 确保它指向正确的位置 - 然后将眼睛位置移动到 X-15 或类似的位置,然后运行它。还要进行控制台打印以确保您的点击手势有效。

以上是关于SceneKit 移动相机的主要内容,如果未能解决你的问题,请参考以下文章

SceneKit 移动相机

SceneKit 相机没有移动到正确的位置

SceneKit 球体法线似乎随着相机移动而改变?

SceneKit:围绕任意点进行轨道运行而无需相机跳跃或将锚点移动到中心?

在 SceneKit 中禁用相机平移

如何在 SceneKit 中移动旋转的 SCNNode?