Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.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 如何将ARAnchor尺寸转换为SpriteKit等效尺寸_Ios_Swift_Sprite Kit_Scenekit_Arkit - Fatal编程技术网

Ios 如何将ARAnchor尺寸转换为SpriteKit等效尺寸

Ios 如何将ARAnchor尺寸转换为SpriteKit等效尺寸,ios,swift,sprite-kit,scenekit,arkit,Ios,Swift,Sprite Kit,Scenekit,Arkit,问题: 如何创建与ARObjectAnchor.referenceObject高度和宽度相同的新SKSpritEndode 背景: 我目前正在摆弄ARKit的新对象检测功能,并且有工作代码来检测我扫描的对象。当ARKit检测到对象时,它会提供一个ArObject Anchor类型的新ARAnchor 我知道ARSCNView提供了一个projectPoint方法,但我找不到ARSKView的任何等效函数。如何将ARObjectAnchor维度映射到新的精灵 以下是我如何处理检测到的对象: fun

问题:

如何创建与ARObjectAnchor.referenceObject高度和宽度相同的新SKSpritEndode

背景:

我目前正在摆弄ARKit的新对象检测功能,并且有工作代码来检测我扫描的对象。当ARKit检测到对象时,它会提供一个ArObject Anchor类型的新ARAnchor

我知道ARSCNView提供了一个projectPoint方法,但我找不到ARSKView的任何等效函数。如何将ARObjectAnchor维度映射到新的精灵

以下是我如何处理检测到的对象:

func view(_ view: ARSKView, didAdd node: SKNode, for anchor: ARAnchor) {
    if let objectAnchor = anchor as? ARObjectAnchor {
        let width = objectAnchor.referenceObject.extent.x
        let height = objectAnchor.referenceObject.extent.y

        // How to translate above height/width to the below size? 

        let box = SKSpriteNode(color: .white, size: ???)
        node.addChild(box)
    }
} 

当我在我的图像识别应用程序中将SKScene添加到我的SCNPlane时,我会做一个*10000大小的SCNPlane(不要问我为什么是10000,我不知道),如下所示

let toto = SCNNode(geometry: SCNPlane(width: 0.3, height: 0.1))
let sk = SKScene(size: CGSize(width: 3000, height: 1000))

对我来说,它的大小是一样的,试试这个,告诉我它是否适合你

我试着把它放大10000倍,结果太大了。1000对我来说更好,但这并不能完全回答我的问题。我确信有一种正确的方法可以将三维坐标系转换为二维坐标系,但我不知道如何实现。也许是因为三维坐标系的尺寸以米为单位,而二维坐标系的尺寸以毫米为单位,x1000才有意义
let toto = SCNNode(geometry: SCNPlane(width: 0.3, height: 0.1))
let sk = SKScene(size: CGSize(width: 3000, height: 1000))