SceneKit轨道转换

所以从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空间中工作,但现在看来我不得不与Sphereical和Ellipsemath工作一样。

所以任何人都可以给我提示如何做我想做的事情? 我现在正在试验球形math和使用SCNMatrix4Translate,但我还没有得到正确的math呢。

我想我需要的是用公式来计算椭圆的xyz,我之后是非常类似的东西:

http://en.wikipedia.org/wiki/Ellipse#mediaviewer/File:Conicas1.PNG 在这里输入图像说明

使用上面的CAT3D片段可以实现这种轨道。

所以长话短说,我需要得到像上面的图片一样的轨道布局,并且需要一些关于SceneKit和/或几何math的帮助。 所有的物体都应该像一个轨道一样围绕一个中心原点旋转