【发布时间】:2017-08-31 11:00:13
【问题描述】:
下图显示了一个应在 X 轴和 Z 轴上水平移动的旋转框。 Y 应保持不受影响以简化场景。该框也可能是相机的 SCNNode,所以我猜此时投影没有意义。
假设我们想要将框沿红色箭头的方向移动。如何使用 SceneKit 实现这一点?
红色箭头表示框的-Z方向。它还向我们展示了它不平行于相机的投影或显示为网格的深灰色线的全局轴。
我的最后一种方法是平移矩阵和旋转矩阵的乘积,从而产生一个新的变换矩阵。那么我是否必须将当前转换添加到新转换中?
如果是,SceneKit 函数在哪里添加矩阵,如 SCNMatrix4Mult 进行乘法运算,还是我必须使用 Metal 自己编写?
如果没有,我在矩阵计算中遗漏了什么?
我不想使用GLKit。
【问题讨论】:
-
你能澄清一下你想如何移动节点“在 x 和 z 轴上水平移动”吗? 1)你想在平行于屏幕平面的平面上移动它吗? 2) 你想在 X 和 Z 轴定义的平面内移动它吗?
-
调整 x 和 z,但不调整 y(垂直轴)。但这只是为了简化场景。
-
好的,所以你想在 X 和 Z 定义的平面上移动它。它必须平行于屏幕吗?或者你想例如当向左滑动时向 -X、向右 +X 和顶部向 -Z 和向下向 +Z 滑动?如果我设法解释得当?
-
滑动不是将框移动到红色箭头方向的理想方法。它不是左或右或顶部或底部。也许我们应该省略任何手势和按键来简化场景。
-
想象一下红色箭头是您要将框移动到的方向向量。它可能是翻译向量。但我没有正确计算它。
标签: swift matrix vector scenekit metal