我试图更好地理解SCNKit和ARKit,并部署了准系统Xcode 9 Augmented Reality应用程序并在iPhone上运行(我将其用作简单的测试设备)。
该应用程序的源代码为here。
基本上,该应用程序会启动,相机会初始化,并以与《 Pokemon Go》将怪物注入相机视口(无论您指向相机的位置)的方式类似的方式在场景(世界视图)中渲染3D战斗机。太酷了!
这段代码都是Xcode为我自动生成的。因此,我试图了解确定战斗机位置/定向位置的逻辑原理(SCN文件名为art.scnassets/ship.scn
)。从here中,我们看到喷气机正在加载:
override func viewDidLoad() {
super.viewDidLoad()
// Set the view's delegate
sceneView.delegate = self
// Show statistics such as fps and timing information
sceneView.showsStatistics = true
// Create a new scene
print("Hello there Mr. Zac")
let scene = SCNScene(named: "art.scnassets/ship.scn")!
// Set the scene to the view
sceneView.scene = scene
}
但是我不明白该应用程序如何选择将喷气机/飞船放置在何处以及如何将其定向到哪个方向。我问,因为第一步,我想尝试重新定位喷气机,然后将其换成我自己的资产文件。 最佳答案
这样的“逻辑”存在于两个地方。
ship.scn
文件不仅定义模型,而且定义模型在场景中的位置。 (也就是说,在全局“世界”坐标空间中。)在该Xcode项目模板随附的
scn
文件中,模型位于类似于0, 0, -0.5
的位置,因此,如果将相机放置在坐标系的原点,则该船将直接出现在相机的前方,相距半米。 关于ios - 使用ARKit和SCNKit定位虚拟 Assets ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46494945/