OpenGL移动对象以跟随旋转对象

时间:2018-07-09 14:18:19

标签: c++ opengl graphics rotation glew

我正在OpenGL中进行建设项目,我有一个对象(对象A)是一个挖掘臂,而另一个对象(对象B)是与之相连的挖斗/铲斗。对象A绕Y轴旋转,该轴执行了预期的功能以举起手臂,并且我需要对象B始终位于对象A的末端。

有什么帮助吗?

我通过以下方式创建和旋转了对象

rcontext.PushModelMatrix();

rcontext.Translate(Arms-> GetTranslation()[0],Arms-> GetTranslation()[1],Arms-> GetTranslation()[2]);

rcontext.RotateX(-arms * 100);

Arms-> Draw(rcontext);

rcontext.PopModelMatrix();

现在我需要拿起铲斗来跟随这条手臂的运动。对象本身具有一个也许有用的vertexdata float *,但是我不相信每个对象都有自己的矩阵,而是拥有世界的模型视图投影矩阵。我很奇怪我一直在努力寻找相关资源,因为它必须是相当普遍的用法。

1 个答案:

答案 0 :(得分:0)

将铲斗的变换M_bucket表示为动臂的变换M_boom的变换。然后,要获取存储桶的世界位置,必须将矩阵相乘:

M_bucket,world = M_bucket,boom * M_boom,world