4 3d object augmented-reality ios arkit
我有2个要放置3D对象的问题。
2.如何通过将3D对象面向相机放置在平面上。移动手机摄像头以查看对象的背面。
我在iOS 11及更高版本,ARKIT上使用XCode 9.1
要旋转汽车节点,您只需调整eulerAngles,直到汽车面向摄像机即可。
node?.eulerAngles = SCNVector3Make(0,Float(degToRadians(degrees:180 )),Float(degToRadians(degrees: 90)))
Run Code Online (Sandbox Code Playgroud)
旋转这辆货车到前面。
eulerAngles以弧度表示,因此方便地转换为度:
public func degToRadians(degrees:Double) -> Double
{
return degrees * (M_PI / 180);
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用动画在van节点上进行相同的旋转
let rotate = SCNAction.rotateBy(x: CGFloat(degToRadians(degrees: -90)), y: 0, z: 0, duration: 1)
node.runAction(rotate)
Run Code Online (Sandbox Code Playgroud)
您可以使用SCNLookAtConstraint,它沿着parentNode的负z轴跟随pointOfView。
因此,如果汽车的负Z轴是摄像头面向侧门,则……在旋转摄像头时,它绕着汽车……会旋转,从而始终保持该视图不变。
let constraint = SCNLookAtConstraint(target:sceneView.pointOfView)
constraint.isGimbalLockEnabled = true
node.constraints = [constraint]
Run Code Online (Sandbox Code Playgroud)
在Xcode内部,下面的屏幕截图显示了如何使用欧拉角(以红色突出显示)更改货车的旋转。视图应为“前置”相机(也以红色突出显示)。也可以通过动画面板在Xcode内完成动画,选择“旋转动作”并拖动到底部中间的“动作”时间轴中
| 归档时间: |
|
| 查看次数: |
1952 次 |
| 最近记录: |