我有两个问题需要放置3D对象。
2.如何通过将物体朝向相机放置在平面上。移动手机摄像头以查看对象的背面。
我正在使用XCode 9.1和iOS 11及更高版本,ARKIT
答案 0 :(得分:3)
要旋转汽车节点,您只需调整eulerAngles直到汽车朝向摄像头。
node?.eulerAngles = SCNVector3Make(0,Float(degToRadians(degrees:180 )),Float(degToRadians(degrees: 90)))
将这辆面包车转向前方。
eulerAngles以弧度为单位,因此可以方便地转换为度数:
public func degToRadians(degrees:Double) -> Double
{
return degrees * (M_PI / 180);
}
您还可以使用动画
在van节点上执行相同的旋转 let rotate = SCNAction.rotateBy(x: CGFloat(degToRadians(degrees: -90)), y: 0, z: 0, duration: 1)
node.runAction(rotate)
你可以使用沿着parentNode的负z轴的pointOfView之后的SCNLookAtConstraint。
因此,如果汽车的负Z轴是面向侧门的摄像机......当您旋转摄像机时,在汽车周围......汽车将旋转始终保持该视野。
let constraint = SCNLookAtConstraint(target:sceneView.pointOfView)
constraint.isGimbalLockEnabled = true
node.constraints = [constraint]
在Xcode中,下面的屏幕截图显示了如何使用欧拉角(以红色突出显示)更改货车的旋转。视图应为“前置”摄像头(也以红色突出显示)。动画也可以通过动画面板在Xcode中完成,选择“旋转动作”&拖入底部中间的动作时间轴