gpt4 book ai didi

c++ - 绘制动态几何的正确或最佳方法是什么

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:48:32 25 4
gpt4 key购买 nike

处理不断变化的顶点数据对象的最佳方法是什么(例如:动画 3D 模型)。对于静态几何,最好的方法(我相信)是将顶点数据存储在单个 VBO(vertextBuffer 对象)中,然后将其绑定(bind)到 VAO(顶点数组对象)中。但我不知道如何处理动态几何。它为每个模型使用一个 VBO?然后链接到单个 VAO?

最佳答案

转换矩阵。

您应该了解 MVP(模型 View 和投影)矩阵,对吧?考虑一下“子模型”, View 矩阵将我定位在场景中,模型矩阵旋转我,任何有意义的偏移(将我的本地原点移动到我的躯干而不是我的左脚......)等等.

现在考虑我的上臂,它相对于我的躯干旋转/定位,它由 MV(模型 View )矩阵定位,因此使用 U 表示上臂,v 表示顶点,PVMUv 表示顶点我的上臂,我们首先将它们移动 U,然后移动 M,然后移动 V,然后投影结果(V 将是一个列 vector ,我更喜欢数学家的方式)

现在考虑 L,我的下臂,相对于我的上臂。并将 v 重新定义为我小臂的顶点。

PVMULv 首先用 L 平移一个顶点,这可能是一个旋转(关于局部原点,或肘),然后由 U 变换,可以被认为是肩部,然后像往常一样由 PVM 变换。现在,如果您更改 U,则小臂会随之移动,如果您更改 L,则只会影响小臂顶点。

这是骨骼动画的基础知识。这意味着您只需要存储一组几何图形,然后像往常一样来回插入矩阵。如果你在模型文件中播放动画,你会为下臂顶点存储 UL,这样你就不必在运行时计算它,如果动画师在编译(或“设计”时间)处理肢体,这是有意义的

关于c++ - 绘制动态几何的正确或最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19150547/

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