我在努力理解節點的多次旋轉。在SceneKit中旋轉節點
首先,我創建和定位的平面:
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度。
任何人都可以解釋爲什麼這個工程?或者,更好的是,建議一個更清晰的方法來旋轉節點,然後將其返回到原來的位置?
感謝您的回覆,雖然我覺得我現在比以前更困惑:(我根本不知道什麼是絕對旋轉與我在此嘗試做的比較(只需旋轉光節點我想我的問題基本上是這樣的:我怎樣才能以一種方式旋轉一個節點,然後返回到原來的位置,這兩個時間都是與同一個軸相關的?如果我做了什麼導致了絕對的輪換(我猜測是錯誤的),是否有另一種方法可以用來實現我的目標? – bcl
我編輯了我的答案。 – mnuages
再次感謝您的回覆。不知道這是我所追求的。因爲我不希望SceneKit爲我的動畫選擇旋轉軸;我需要在給定方向上進行非常具體的運動。它看起來像我eulerAngles給了我這個級別的控制加上它不會混淆m e通過切換我需要使用的旋轉軸。 – bcl