ios - SCNNode 枢轴更改节点位置是否正常?

标签 ios objective-c macos scenekit

我试图通过将其枢轴点设置为任何角来旋转 block ,但似乎设置枢轴点实际上重新定位了节点,使该点保持在原来的位置......

例如

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 的情况下,我会想象这个方 block 位于地板上方 1 个单位...如果你不这样做的话设置枢轴。

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

最佳答案

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

关于ios - SCNNode 枢轴更改节点位置是否正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28552004/

相关文章:

ios - 为什么我的核心数据保存缓慢?

ios zbar位代码启用

c++ - 在 Cocoa 项目中使用 C++ 类时找不到标准 C++ 包含

iphone - 分配给 'UILabel *__weak' 到 'NSString *__strong' 的不兼容指针类型?

ios - Swift 中的初始化和作用域

c++ - 识别 macOS 当前进程中的堆栈和堆段

ios - 如何在 xcode 和 swift 中使用不受支持的类(新功能)构建项目

ios - 如何解析不同的字符串日期

c++ - 从 Objective-C 类调用 C++ 构造函数

objective-c - 以编程方式从 iPhoto 图库中读取