按钮旋转 3D 对象 ARKit 2
Posted
技术标签:
【中文标题】按钮旋转 3D 对象 ARKit 2【英文标题】:Button Rotation 3D Objects ARKit 2 【发布时间】:2019-01-02 23:36:06 【问题描述】:我有由图像检测触发的 3D 对象。我添加了按钮,以便用户可以在不同的视图中查看对象,例如左、右、上、下等。我的代码有一个缺陷,因为旋转点是从最后一次触摸设置的。例如,如果你按右,它会变成 .pi/2,然后当你按左时它会变成 -.pi/2,将它重置回前视图而不是左视图。我如何能够设置一个原始的前原点,以便在每次按下后旋转“重置”并进入相应的视图?谢谢。
@IBAction func leftSideRotate(_ sender: UIButton)
let rotate = SCNAction.rotateBy(x: 0, y: -.pi/2, z: 0, duration: 0.5)
sender.isEnabled = false
toggleButton = sender
activeNode?.runAction(rotate,completionHandler: enableButtonn)
func enableButtonn ()
toggleButton?.isEnabled = true
@IBAction func upSole(_ sender: UIButton)
let rotate = SCNAction.rotateBy(x: -.pi/2, y: 0, z: 0, duration: 0.5)
sender.isEnabled = false
toggleButton = sender
activeNode?.runAction(rotate,completionHandler: enableButtonnn)
func enableButtonnn ()
toggleButton?.isEnabled = true
【问题讨论】:
【参考方案1】:解决此问题的一种方法是在加载后立即保存场景中对象的原始坐标。然后,使用rotateTo 方法(而不是rotateBy)来实现所需的旋转。
例子:
let originalPosition = activeNode?.position
let rotate = SCNAction.rotateTo(x: originalPosition.x, y: (originalPosition.y - .pi/2), z: originalPosition.z, duration: 0.5)
【讨论】:
我在“let zPosition = activeNode?.zPosition”这一行遇到如下错误:“SCNNode”类型的值没有成员“zPosition”;你的意思是“位置”吗? 请查看我更新的答案,如果您仍有任何问题,请告诉我。以上是关于按钮旋转 3D 对象 ARKit 2的主要内容,如果未能解决你的问题,请参考以下文章
iOS-ARKit扫描和检测3D对象-Scanning and Detecting 3D Objects
iOS-ARKit扫描和检测3D对象-Scanning and Detecting 3D Objects
是否可以像在 Vuforia 中一样在 ARKit 中跟踪对象?
unity 3d实例:创建游戏对象旋转的立方体Unity3D Button图片按钮Box控件Label控件Background ColorColor