相关疑难解决方法(0)

如何使用ARKit Swift将物体附加到相机位置?

我有移动的物体,我希望能够与玩家碰撞.我有能力通过获取我当前的位置/方向来启动我的物体,但我不明白如何将物体附加到我身上,这将随时跟随我的位置.

xcode augmented-reality swift arkit

6
推荐指数
2
解决办法
1万
查看次数

SceneKit - 获取相机的方向

我需要找到一个摄像头正在注视哪个方向,例如,如果它的望着Z+,Z-,X+,或X-.

我已经尝试过使用了eulerAngles,但偏航的范围是0- > 90- > 0- > -90- > 0这意味着我只能检测相机是否正在朝向,Z或者X不是在向这些轴的正方向或负方向看.

camera direction scenekit swift arkit

4
推荐指数
1
解决办法
2920
查看次数

旋转我的SceneKit材质

我正在拍摄图像,AVCapturePhotoOutput然后使用他们的JPEG表示作为SceneKit上的纹理SCNPlane,与图像的纵横比相同:

let image = UIImage(data: dataImage!)
let rectangle = SCNPlane(width:9, height:12)
let rectmaterial = SCNMaterial()
rectmaterial.diffuse.contents = image
rectmaterial.isDoubleSided = true
rectangle.materials = [rectmaterial]
let rectnode = SCNNode(geometry: rectangle)
let pos = sceneSpacePosition(inFrontOf: self.pictCamera, atDistance: 16.5)  // 16.5 is arbitrary, but makes the rectangle the same size as the camera
rectnode.position = pos
rectnode.orientation = self.pictCamera.orientation
pictView.scene?.rootNode.addChildNode(rectnode)
Run Code Online (Sandbox Code Playgroud)

sceneSpacePosition是一些可以在SO找到的代码,它将CoreMotion映射到SceneKit方向.它用于放置矩形,确实出现在正确的位置,大小合适.一切都很酷.

问题是图像旋转90度到矩形.所以我明白了:

rectmaterial.diffuse.contentsTransform = SCNMatrix4MakeRotation(Float.pi / 2, 0, 0, 1)
Run Code Online (Sandbox Code Playgroud)

这不起作用; 生成的图像无法识别.看起来图像的一小部分已被拉伸到一个巨大的尺寸.我认为它可能是轴,但我尝试了所有三个相同的结果.

有任何想法吗?

ios scenekit

2
推荐指数
1
解决办法
1655
查看次数

标签 统计

arkit ×2

scenekit ×2

swift ×2

augmented-reality ×1

camera ×1

direction ×1

ios ×1

xcode ×1