【问题标题】:Is it normal for an SCNNode pivot to change the nodes position?SCNNode 枢轴更改节点位置是否正常?
【发布时间】:2015-04-17 14:07:08
【问题描述】:

我正在尝试通过将块的轴心点设置为任何角来旋转块,但似乎设置轴心点实际上会重新定位节点,将点保持在原来的位置......

例如

SCNBox *box = [SCNBox boxWithWidth:1 height:2 length:1 chamferRadius:0];
SCNNode *node = [SCNNode nodeWithGeometry:box];

node.position = SCNVector3Make(0, 0, 0);
[self.scene.rootNode addChildNode:node];

node.pivot = SCNMatrix4MakeTranslation(0.5, -1, 0.5);

[node runAction:[SCNAction rotateByAngle:GLKMathDegreesToRadians(90) 
                              aroundAxis:SCNVector3Make(0, 0, 1) 
                                duration:2]];

如果 node.position 为 0,0,0,盒子几何形状为 1,2,1,我会想象这个块位于地板上方 1 个单位......如果你不这样做的话设置枢轴。

真正的问题是,你将如何设置这个节点的枢轴位置,而不影响它的位置,所以如果我按下右键,它会在 z 轴上围绕右下角最点旋转,如果我按下左键,它将围绕最左下角的点旋转,上下方向相同,但在 x 轴上。

【问题讨论】:

    标签: ios objective-c macos scenekit


    【解决方案1】:

    SCNNodepivot 属性类似于CALayeranchorPoint(请参阅Anchor Points Affect Geometric Manipulations)。如果您希望更改pivot 属性而不产生任何视觉效果,您还必须更改其transform(或position)属性。

    【讨论】:

    • 谢谢,现在说得通了
    猜你喜欢
    • 2019-05-02
    • 2019-06-10
    • 2016-11-18
    • 1970-01-01
    • 2016-12-17
    • 2015-07-14
    • 2023-04-07
    • 2020-06-11
    • 2017-04-20
    相关资源
    最近更新 更多