私は、希望の回転と角度に変換したSCNノードを持っています。シーンキットの変換と回転
新しいx軸で無限に回転させたいのですが、360度回転させることができないようですが、わずかにずれるだけです。
let spin = CABasicAnimation(keyPath: "rotation")
spin.fromValue = NSValue(SCNVector4: SCNVector4(x: item.rotation.x, y: item.rotation.y, z: item.rotation.z, w: item.rotation.w))
spin.toValue = NSValue(SCNVector4: SCNVector4(x: Float(2*M_PI), y: item.rotation.y, z: item.rotation.z, w: item.rotation.w))
spin.duration = 3
spin.repeatCount = .infinity
item.addAnimation(spin, forKey: "spin around")
注:以前の質問のローテーションコードが見つかりました。期待どおりに動作しますが、変換されたノードでローテーションしたい場合は動作しません。
EDIT:トランスコード:あなたのコメントと、おそらくあなたの問題への答えで
self.item.transform = SCNMatrix4Mult(SCNMatrix4Mult(SCNMatrix4MakeScale(1.1, 1.1, 1.1), SCNMatrix4MakeRotation(2.2, 228.0, 120.0, 55.2)), SCNMatrix4MakeTranslation(-2.5, 12, 6))
self.item.pivot = SCNMatrix4MakeTranslation(0, 0, 4)
self.item.transform = SCNMatrix4Mult(SCNMatrix4MakeTranslation(0, 0, 4), item.transform)
たぶんコンテナノード(ジオメトリもransformationなし)の内側にあなたの変換ノードを入れて、containterノードを回転させます。 – bpedit
それはある意味があります。アイテムはDAEファイルからロードされているので、rootNodeをどのように取るかわかりません。子ノードはコンテナノードにあり、シーンの代わりに使用します – Codermonk