gpt4 book ai didi

opengl - 现代 OpenGL 问题

转载 作者:行者123 更新时间:2023-12-04 12:24:33 30 4
gpt4 key购买 nike

在我的 OpenGL 研究(我认为是 OpenGL 红皮书)中,我遇到了一个关节机器人 ARM 模型的示例,该模型由“上臂”、“下臂”、“手”和五个或更多“手指”。每个部分都应该能够独立移动,但受“关节”的约束(上、下“臂”总是在“肘”处连接)。

在即时模式(glBegin/glEnd)中,他们使用立方体的一个网格,称为“成员”,并为 ARM 、手等的每个部分使用该单个网格的缩放副本。“运动”是通过插入完成的旋转到以下每个关节的变换矩阵堆栈:肩部、肘部、腕部、指关节 - 你得到了图片。

现在,这解决了问题,但由于它使用旧的、已弃用的立即模式,我还不明白在现代 OpenGL 上下文中解决此问题的方法。我的问题是:如何使用现代 OpenGL 解决这个问题?特别是,每个单独的“成员”是否应该跟踪自己当前的转换矩阵,因为矩阵堆栈不再是 kosher?

最佳答案

差不多。如果你真的需要它,实现你自己的类似堆栈的接口(interface)非常简单。您实际上只是存储一个堆栈,然后使用您喜欢的数学库实现您需要的任何矩阵运算,并有一些方法可以使用堆栈的顶部元素初始化您想要的矩阵统一。

在您的机器人 ARM 示例中,假设链接被表示为一棵树(如果您愿意,甚至可以是一个图),并在每个 body 之间指定了相对变换。要绘制机械臂,您只需遍历此数据结构,并将任何一个子体的变换设置为与其自身组成的父体变换。例如:

def draw_linkage(body, view):

//Draw the body using view matrix

for child, relative_xform in body.edges:

if visited[child]:
continue

draw_linkage(child, view * relative_xform)

关于opengl - 现代 OpenGL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6494098/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com