Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 利用ARKit和SCNKit定位虚拟资产_Ios_Xcode_Augmented Reality_Arkit_Scnnode - Fatal编程技术网

Ios 利用ARKit和SCNKit定位虚拟资产

Ios 利用ARKit和SCNKit定位虚拟资产,ios,xcode,augmented-reality,arkit,scnnode,Ios,Xcode,Augmented Reality,Arkit,Scnnode,我正试图更好地理解SCNKit和ARKit,并在我的iPhone上部署了一个barebones Xcode 9增强现实应用程序(我将其用作一个简单的测试设备) 此应用程序的源代码为 基本上,应用程序启动,相机初始化,并在场景(世界视图)中渲染3D战斗机,其方式与口袋妖怪将怪物注入相机视口(无论您将相机指向何处)的方式类似。很酷 这段代码是由Xcode为我自动生成的。因此,我试图理解决定战斗机定位/定向的逻辑所在(SCN文件名为art.scnassets/ship.SCN)。从图中我们可以看到飞机

我正试图更好地理解SCNKit和ARKit,并在我的iPhone上部署了一个barebones Xcode 9增强现实应用程序(我将其用作一个简单的测试设备)

此应用程序的源代码为

基本上,应用程序启动,相机初始化,并在场景(世界视图)中渲染3D战斗机,其方式与口袋妖怪将怪物注入相机视口(无论您将相机指向何处)的方式类似。很酷

这段代码是由Xcode为我自动生成的。因此,我试图理解决定战斗机定位/定向的逻辑所在(SCN文件名为
art.scnassets/ship.SCN
)。从图中我们可以看到飞机正在装载:

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
    ,因此如果将摄影机放置在坐标系的原点,则飞船将直接显示在摄影机前面,距离摄影机半米

  • ARKit本身定义了相对于设备初始真实世界位置/方向的场景/世界空间,该坐标系的z轴与设备的初始方向相匹配,因此,当您启动AR会话时,放置在坐标原点“前面”的任何对象都将显示在相机前面

  • 啊,谢谢@rickster(+1),当应用程序启动时,是什么决定了坐标系的原点?此外,
    .scn
    文件是否仅定义了场景中模型的默认/初始位置?是否有任何方法可以覆盖此默认/初始位置,以及在将其加载到场景后对其进行更新?再次感谢!