SCNLookAtConstraint,指定节点如何查看目标节点?

zum*_*zum 6 scenekit

我有一个文本节点.我告诉节点总是这样看相机节点:

let lookAt = SCNLookAtConstraint(target: cameraNode)
textNode.constraints = [lookAt]
Run Code Online (Sandbox Code Playgroud)

在应用该约束之前,文本如下所示:(见图片) 在此输入图像描述

如果我应用该约束,则节点看起来像在图像中一样翻转(参见图像).因此,文本始终保持该方向并正确查看相机节点,因此约束正在起作用.

在此输入图像描述

我试图了解节点如何"看"目标节点.我显然希望文本在摄像机四处移动时保持在第一张图像中显示.

我试图对文本应用旋转来纠正我在应用约束时得到的行为但是没有用.

那么,我怎样才能让文本看到另一个节点但不像第二张图像那样被翻转?

Eri*_*oss 7

SCNLookAtConstraint笔记文档:

当SceneKit评估一个look-at约束时,它会更新受约束节点的transform属性,以便节点的负z轴指向约束的目标节点.

但是SCNText几何体沿着 z轴向前创建,因此约束系统需要以某种方式解释它.我建议使用SCNBillboardConstraint,这是为这种情况设计的.它的文件说:

一个SCNBillboardConstraint让本地的z轴始终朝指向对象自动调整节点的方向pointOfView目前正用于渲染场景节点.

有了这个,您不需要重新显示节点.

  • SCNBillboardConstraint 完美运行。我这样做了: node.constraints = [SCNBillboardConstraint()] (2认同)

Aar*_*sen 5

“SCNBillboardConstraint 对象会自动调整节点的方向,使其局部 z 轴始终指向当前用于渲染场景的 pointOfView 节点。”

textNode.constraints = [SCNBillboardConstraint()]
Run Code Online (Sandbox Code Playgroud)