2015-05-03 54 views
1

我無法保留移除的子節點的位置並將其添加到根節點。父節點和子節點都有一個樞軸翻譯,我認爲這是問題的一部分。我已嘗試將變換爲屬性屬性,然後刪除並重新連接到根。但是這個位置略有移動。我嘗試刪除主元轉換,將worldtransform添加到根節點並恢復關鍵點。有時我認爲我已經解決了它,然後當作爲根節點重新連接時,特定節點將跳轉。將子SCNNode移動到根節點,同時保留位置

看來子節點的支點和父節點影響worldtransform。因此,將父節點排除在等式之外似乎改變了最終的立場。

有沒有一種方法可以將子節點添加到根節點,同時保持其物理位置/旋轉。

任何指針,將不勝感激。

回答

1

有沒有API來做到這一點。但是SceneKit公開轉換實用程序,如-[SCNNode convertTransform:toNode:]-[SCNNode convertPosition:toNode:]

以下可能是你想要什麼:

node.transform = [node.parentNode convertTranform:node.transform toNode:nil]; 
[node removeFromParentNode]; 
[scene.rootNode addChildNode:node]; 
+0

謝謝您的回答,只有當父節點樞軸SCNMatrix4Identity工作。如果父級具有數據透視轉換,則重新連接的節點將移位。 – BassetMan

1

我也不知道爲什麼worldTransforms或worldPosition結合樞軸這是一種內幕信息的節點。

不管怎樣,我的解決方案:

MoveNode.transform = [newParentNode convertTransform:MoveNode.transform fromNode:[MoveNode parentNode]]; 
相關問題