【发布时间】:2017-02-02 05:53:28
【问题描述】:
我在 SceneKit 中导入了一个 Blender 3D 模型(一个带有地球纹理的球体),我正试图通过平移手势来旋转它。我必须在心里交换 x 轴和 y 轴,因为 SceneKit 中的旋转系统与 Blender 采用的不同。
这就是我旋转地球对象的方式:
func pan(gesture:UIPanGestureRecognizer)
{
let translation = gesture.translation(in: self.view) * 0.05
let intensity = Float(magnitude(point: translation)) // Euclidean distance
let rotation = SCNMatrix4MakeRotation(intensity, Float(translation.y), Float(translation.x), 0.0) // I invert the x and y because of the different coordinate system
earth.transform = SCNMatrix4Mult(earth.transform, rotation)
gesture.setTranslation(CGPoint(x:0.0, y:0.0), in: self.view)
}
绕 y 轴的旋转是正确的,但如果我尝试通过垂直平移沿 x 轴旋转它,似乎地球的 x 轴是倾斜的,而不是与 y 轴垂直。
在此视频中,我首先向上拖动手指,然后向下拖动: https://www.youtube.com/watch?v=7YumAB_rXlk
【问题讨论】:
-
是否可以围绕对象旋转相机而不是旋转模型?这是做这种事情的“正常”方式。这并不是说这是正确的方法。我不知道您的最终目标是什么,您可能需要模型旋转而不是相机围绕对象移动。
-
@Confused 如果我将一个对象添加到场景中并且我只想旋转一个对象,那是行不通的。我想学习在不移动相机的情况下旋转物体的正确方法。
标签: ios swift blender scenekit