所以开始使用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和Ellipse数学来做同样的事情。
所以任何人都可以向我提供如何做我想做的事情的提示?我现在正在尝试使用球形数学并使用SCNMatrix4Translate,但我还没有完全掌握数学。
我认为我需要的是为椭圆计算xyz的公式,我正在追求与此类似的东西:
http://en.wikipedia.org/wiki/Ellipse#mediaviewer/File:Conicas1.PNG
使用上面的CAT3D片段可以实现这种轨道。
这么长的故事,我需要获得如上图所示的轨道布局,并需要使用SceneKit和/或几何数学帮助它。所有物体都应围绕中心原点旋转,如轨道