gpt4 book ai didi

ios - 你知道如何使用 ARKIT 旋转 3D 模型以面对相机吗?

转载 作者:可可西里 更新时间:2023-11-01 05:32:30 26 4
gpt4 key购买 nike

我有 2 个问题要放置 3D 对象。

  1. 如果创建的 3D 对象(例如汽车)面向汽车的门侧作为相机的正面,我如何旋转 3D 对象使其正常?例如,旋转汽车,使汽车的发动机侧成为相机的正面。

2.如何将 3D 对象放置在平面上,方法是将对象面向相机。移动手机摄像头以查看物体的背面。

我在 iOS 11 及更高版本、ARKIT 上使用 XCode 9.1

最佳答案

enter image description here

要旋转汽车节点,您只需调整 eulerAngles 直到汽车朝向相机。

  node?.eulerAngles = SCNVector3Make(0,Float(degToRadians(degrees:180 )),Float(degToRadians(degrees: 90)))

将这辆货车转向前方。

enter image description here

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)

您可以使用 SCNLookAtConstraint,它沿着父节点的负 z 轴跟随 pointOfView。

因此,如果汽车的负 z 轴是面向侧门的摄像头……当您围绕汽车旋转摄像头时……汽车将始终保持该视角旋转。

  let constraint = SCNLookAtConstraint(target:sceneView.pointOfView)
constraint.isGimbalLockEnabled = true
node.constraints = [constraint]

在 Xcode 中,下面的屏幕截图显示了如何使用欧拉角(以红色突出显示)更改货车的旋转。 View 应该是“前置”摄像头(也以红色突出显示)。动画也可以通过动画面板在 Xcode 中完成,选择“旋转 Action ”并拖动到底部中间的 Action 时间轴

enter image description here

关于ios - 你知道如何使用 ARKIT 旋转 3D 模型以面对相机吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48223069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com