gpt4 book ai didi

c++ - 如何从中心原点转换为底部原点?

转载 作者:行者123 更新时间:2023-11-28 06:22:51 27 4
gpt4 key购买 nike

首先我要道歉,我非常怀疑我是否会使用任何正确的术语,不幸的是,经过几个小时的原始测试并将我的头撞在墙上我可以弄清楚这一点。

我使用的引擎使用底部对齐系统来定位其模型。这意味着 z 轴(在 z up 系统中)是 z - radius = origin,或者如果模型位于 0,0,0,则所有 tris 都将位于正 z 空间。

我正在集成 bullet,它是一个中心对齐的系统,这意味着对象原点位于质量中心(在本例中是一个简单的 aabb 立方体)。

我遇到的问题是,我传入渲染器的偏航俯仰角和原点在 z+ 方向上偏移了半径。现在最大的问题是当俯仰或滚动变成 0 以外的值时。因为子弹的中心对齐系统,围绕俯仰旋转并围绕中心滚动,渲染器围绕底部旋转。因此,模型和边界框的排列位置存在明显差异。

那么有没有一种算法可以将这两种形式的方向进行转换呢?

最佳答案

好的,我想出了我自己的问题。

因此,对于任何偶然发现此错误的人,请解释到底发生了什么以及如何解决它。

简单地说,我的问题是如何从世界空间(x、y、z 平面)转换到局部空间(相对的 x y z 平面)。因此,如果你要拿一支箭并朝向 0 x 0 y 0 z 的方向,因为它的原点在正空间中,所以说 1 x 0 y 0 z 你的箭正对着世界空间。这意味着如果您要向前移动,您将沿 x 平面移动,沿 y 平面向左移动,然后沿 z 平面向上移动。

现在,如果该箭头沿偏航 x 度旋转,使其指向 1 x 1 y 0 z,那么当您向前移动时,您不再仅沿 x 平面移动。所以这就是所谓的局部空间移动。这意味着您正在沿着与节点(对象、模型等)的偏航和俯仰相关的平面移动。

所以在我的例子中,我有一个在“世界空间”中工作的子弹,我有一个在“模型空间”中工作的渲染器,所以我只需要将它放在一个转换两者的矩阵中。

两个转换空间我需要一个转换它们的投影矩阵。

这里是我发现的源代码链接,可以很容易地转换它并解释相关数学。 http://www.codinglabs.net/article_world_view_projection_matrix.aspx

谢谢大家追逐者

关于c++ - 如何从中心原点转换为底部原点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29047602/

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