【发布时间】:2015-07-10 20:50:03
【问题描述】:
我很难理解节点的多次旋转。
首先,我创建并定位了一个平面:
SCNPlane *plane = [SCNPlane planeWithWidth:10 height:10];
SCNNode *planeNode = [SCNNode nodeWithGeometry:plane];
planeNode.rotation = SCNVector4Make(1, 0, 0, (M_PI/2 * 3));
[scene.rootNode addChildNode:planeNode];
然后我在这个平面上定位并设置聚光灯节点的方向:
SCNLight *light = [[SCNLight alloc] init];
light.type = SCNLightTypeSpot;
light.spotInnerAngle = 70;
light.spotOuterAngle = 100;
light.castsShadow = YES;
lightNode = [SCNNode node];
lightNode.light = light;
lightNode.position = SCNVector3Make(4, 0, 0.5);
lightNode.rotation = SCNVector4Make(0, 1, 0, M_PI/2);
[planeNode addChildNode:lightNode];
然后我将光照节点围绕 x 轴顺时针旋转 90 度动画:
[SCNTransaction begin];
[SCNTransaction setAnimationDuration:2.0];
lightNode.rotation = SCNVector4Make(1, 0, 0, M_PI/2);
[SCNTransaction commit];
但我很困惑为什么以下将光节点围绕同一轴旋转回原始位置:
[SCNTransaction begin];
[SCNTransaction setAnimationDuration:2.0];
lightNode.rotation = SCNVector4Make(0, 1, 0, M_PI/2);
[SCNTransaction commit];
对我来说,这意味着我们将节点绕 y 轴顺时针旋转 90 度。
谁能解释一下为什么会这样?或者,更好的是,建议一种更清晰的方法来旋转节点,然后将其返回到原始位置?
【问题讨论】:
标签: objective-c cocoa-touch rotation scenekit