swipe gestures
を使用して作成したSCNBox
を回転しようとしています。たとえば、右にスワイプすると、ボックスは左にスワイプするとY-axis
と-90degsの90度回転します。これを達成するために、ノードのSCNAction.rotateByX
メソッドを使用して回転アニメーションを実行しています。今私が持っている問題は、Y-axis
の回転の後にまたはZ-axis
のいずれかに沿って回転するとき、そしてその逆が軸の位置が変わるということです。SCNBoxを回転させる方法
私が気づいているのは、X軸、Y軸、Z軸のいずれかで回転を実行すると、他の軸が指す方向が変わるということです。
例:デフォルトの位置Z-axis
で回転させた後次に
:
もちろん私はswipe left or right
私はもはや取得しない場合は、この今ため、問題を提起しますとY-axis
が現在位置を入れ替えたためです。私が知りたいのは、なぜこれが起こるのかということです。とにかく他の軸に影響を与えずに回転アニメーションを実行することができますか?
これは私の最初の3Dグラフィックスであるため、この件に関する私の理解の欠如についてお詫び申し上げます。
ソリューション:私はまだ何の問題に遭遇していないが、Xに変更を確実にするために、完了ハンドラを使用する方が安全かもしれ
func swipeRight(recognizer: UITapGestureRecognizer) {
// rotation animation
let action = SCNAction.rotateByX(0, y: CGFloat(GLKMathDegreesToRadians(90)), z: 0, duration: 0.5)
boxNode.runAction(action)
//repositoning of the x,y,z axes after the rotation has been applied
let currentPivot = boxNode.pivot
let changePivot = SCNMatrix4Invert(boxNode.transform)
boxNode.pivot = SCNMatrix4Mult(changePivot, currentPivot)
boxNode.transform = SCNMatrix4Identity
}
、Yは、Z軸は、それらを再配置する前に行われます。私は同じ問題を持っていた
は、あなたが望むものを、このです:Y軸を中心に回転するモデル。さて、X軸についてモデルを回転させると、モデルは、X軸が「デフォルト位置」から移動していないかのように動作します。したがって、スワイプ右でYを中心に回転すると、モデルがどこにあっても上向きスワイプは、モデルのX軸の位置を変更したのではなく、画面のX軸を中心にモデルを上向きに回転させます。これはあなたの後のことですか? – bpedit
@bpedit、それはまさに私が望むものですが、すべての軸のデフォルトの位置を保持する方法を見つけることができません。 – RickyTheCoder