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 移动相机的主要内容,如果未能解决你的问题,请参考以下文章