代码之家  ›  专栏  ›  技术社区  ›  jbrennan

在不更改轴的情况下更改SCNNode原点

  •  0
  • jbrennan  · 技术社区  · 6 年前

    Im正在尝试将节点的原点从节点中心更改为位于节点的左上角(Im使用正交项目并尝试使用节点重新实现2D视图,因此Im只显示平面的一个面)。

    根据 SCNNode docs ,更改节点 pivot 点允许您更改子节点的原点。然而,它 更改旋转和缩放子节点的原点,这不是我要做的。我希望原点位于左上角,但我希望能够围绕节点的中心点旋转/缩放节点。

    (0, 0, 0) 我希望它出现在节点的左上角。有办法吗?

    0 回复  |  直到 6 年前
        1
  •  0
  •   Andy Jazz    6 年前

    使用 辅助的 emptyNode 仅用于设置轴的偏移,但旋转和缩放将使用另一个节点围绕几何体的中心进行。

    let sphereGeo = SCNSphere(radius: 2)
    sphereGeo.segmentCount = 4
    sphereGeo.materials.first?.diffuse.contents = NSColor.lightGray
    let sphereNode = SCNNode(geometry: sphereGeo)
    
    let emptyNode = SCNNode()
    scene.rootNode.addChildNode(emptyNode)
    emptyNode.addChildNode(sphereNode)
    
    emptyNode.simdPivot.columns.3.x = 5
    
    let action = SCNAction.repeatForever(SCNAction.rotate(by: .pi, 
                                                      around: SCNVector3(0,1,0), 
                                                    duration: 1))
    sphereNode.runAction(action)