我正在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 *,但是我不相信每个对象都有自己的矩阵,而是拥有世界的模型视图投影矩阵。我很奇怪我一直在努力寻找相关资源,因为它必须是相当普遍的用法。
答案 0 :(得分:0)
将铲斗的变换M_bucket表示为动臂的变换M_boom的变换。然后,要获取存储桶的世界位置,必须将矩阵相乘:
M_bucket,world = M_bucket,boom * M_boom,world