そのため、SceneKit を使い始めてから、レイヤー上の CA3d* 変換のようなものだと思い込んで変換にたどり着くまで、これまでのところすべてうまくいきました。
しかし、私はかなり間違っているようで、Z 軸の動作に関しては変換の動作がまったく異なります。
たとえば、カルーセルの外観に似た、3D 軌道スタイルの動きを実現しようとしています。この CA3D コードの一部は、それを行うために見事に機能します。
var trans = CATransform3DIdentity
trans = CATransform3DRotate(trans, deg * (Float(M_PI)/180), 1, 1, 0)
trans = CATransform3DTranslate(trans, 0, 0, 100)
layer.transform = trans
異なる "deg" 値を持つ複数のオブジェクトに適用すると、見栄えの良い円形の 3D 軌道が得られます。
同じ SceneKit を使用すると、異なる結果が生成されます。
var trans = SCNMatrix4Identity
trans = SCNMatrix4Rotate(trans,Float(angleTemp*(M_PI/180)), 1, 1, 0)
trans = SCNMatrix4Translate(trans, 0, 0, 100)
node.transform = transform
実際に何が起こるかは、回転後に Z 値軸が変化し、CAT3D + レイヤーで適用された回転に基づいて移動しますが、SceneKit では Z 軸は常に一定であるため、移動はそれらをすべて一緒に移動するだけなので、押しつぶされます。見る。
したがって、これが真の 3D 空間で機能していることは理解していますが、同じことを行うには、球と楕円の数学を使用する必要があるようです。
では、私がやろうとしていることを行うためのヒントを誰でも提供できますか? 私は現在、球面数学を試して SCNMatrix4Translate を使用していますが、まだ数学を正しく理解していません。
私が必要としているのは、楕円の xyz を計算するための式だと思います。これと非常によく似たものを求めています。
http://en.wikipedia.org/wiki/Ellipse#mediaviewer/File:Conicas1.PNG
この種の軌道は、上記のレイヤの CAT3D スニペットを使用して実現できます。
簡単に言えば、上の図のような軌道レイアウトを取得する必要があり、SceneKit や幾何学計算を使用してそのレイアウトを支援する必要があります。すべてのオブジェクトは、軌道のように中心原点を中心に回転する必要があります