【发布时间】:2018-12-17 06:25:53
【问题描述】:
我正在使用 OpenGL 进行一个建筑项目,我有一个对象(对象 A),它是一个挖掘机臂,还有另一个对象(对象 B),它是与其相连的铲斗/桶。对象 A 围绕 Y 轴旋转,执行预期的功能以抬起手臂,我需要对象 B 始终位于对象 A 的末端。
关于如何做到这一点的任何帮助?
我创建并旋转了对象:
rcontext.PushModelMatrix();
rcontext.Translate(Arms->GetTranslation()[0], Arms->GetTranslation()[1], Arms->GetTranslation()[2]);
rcontext.RotateX(-arms * 100);
武器->绘制(rcontext);
rcontext.PopModelMatrix();
现在我需要让水桶跟随这只手臂的运动。对象本身有一个可能有用的 vertexdata float*,但我不相信每个对象都有自己的矩阵,而是我有世界的模型视图投影矩阵。我觉得很奇怪我一直在努力寻找这方面的资源,因为它一定是一种相当普遍的用法。
【问题讨论】:
-
很难在没有看到你的情况下给出任何代码建议。你会想要得到
A的前向向量(如果你不能从对象本身得到它,那么它应该只是对象A矩阵的第三行),将它归一化并乘以你想要B的多远来自A。 -
看here。
-
在问题中添加了更多信息,希望对您有所帮助!
标签: c++ opengl graphics rotation glew