gpt4 book ai didi

sprite-kit - 带有 SceneKit 的 ARKit 广告牌效果

转载 作者:行者123 更新时间:2023-12-03 18:35:34 25 4
gpt4 key购买 nike

我希望添加与此应用程序类似的广告牌效果:https://twitter.com/marpi_/status/897130955105644544

我希望使用 SCNText 几何的 SCNode 始终面向相机。

我尝试过但没有成功:

  • SCNLookAtConstraint 以sceneView.pointOfView 作为目标,但这会旋转节点以背离相机,导致文本向后,并且无法更改节点位置或欧拉角。

  • 开箱即用,SKLabelNode 将始终面向 ARKit 中的相机,这正是我想要的,除了使用 SCNText。

    最佳答案

    您应该查看 SCNBillboardConstraint

    更新代码

    let textGeometry = SCNText(string: "Hello, World!", extrusionDepth: 1.0)
    textGeometry.font = UIFont(name: "Arial", size: 2)
    textGeometry.firstMaterial!.diffuse.contents = UIColor.red
    let textNode = SCNNode(geometry: textGeometry)

    // Update object's pivot to its center
    // https://stackoverflow.com/questions/44828764/arkit-placing-an-scntext-at-a-particular-point-in-front-of-the-camera
    let (min, max) = textGeometry.boundingBox
    let dx = min.x + 0.5 * (max.x - min.x)
    let dy = min.y + 0.5 * (max.y - min.y)
    let dz = min.z + 0.5 * (max.z - min.z)
    textNode.pivot = SCNMatrix4MakeTranslation(dx, dy, dz)

    textNode.scale = SCNVector3(0.01, 0.01, 0.01)

    let plane = SCNPlane(width: 0.2, height: 0.2)
    let blueMaterial = SCNMaterial()
    blueMaterial.diffuse.contents = UIColor.blue
    plane.firstMaterial = blueMaterial
    let parentNode = SCNNode(geometry: plane) // this node will hold our text node

    let yFreeConstraint = SCNBillboardConstraint()
    yFreeConstraint.freeAxes = .Y // optionally
    parentNode.constraints = [yFreeConstraint] // apply the constraint to the parent node

    parentNode.position = SCNVector3(0, 0, -0.5)
    parentNode.addChildNode(textNode)

    sceneView.scene.rootNode.addChildNode(parentNode) // add our text holder to the scene

    似乎直接将广告牌约束应用于文本节点会重置其位置和比例,因此文本节点变得很大并且相对于相机定位在 0,0,0 处。不知道为什么 :( 但是将约束应用于父节点工作正常。

    关于sprite-kit - 带有 SceneKit 的 ARKit 广告牌效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45723483/

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