【问题标题】:OpenGL Move object to follow rotating objectOpenGL移动对象以跟随旋转对象
【发布时间】: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


【解决方案1】:

将桶的变换 M_bucket 表示为来自吊杆的变换 M_boom 的变换。然后,为了得到桶的世界位置,你必须乘以矩阵:

M_bucket,world = M_bucket,boom * M_boom,world

【讨论】:

  • 阅读您自己的答案。您认为对于不了解组合转换的人(例如 OP)是否足够,可能是因为不了解转换是什么?
猜你喜欢
  • 2017-08-24
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
相关资源
最近更新 更多