我如何从中心原点转换为底部原点?

时间:2015-03-14 09:54:55

标签: c++ math 3d bullet calculus

我将从道歉开始我非常怀疑我会有任何正确的术语,经过几个小时的原始测试后不幸地将我的头撞到墙上我可以解决这个问题。

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

我正在整合子弹,这是一个中心对齐系统,这意味着对象原点位于质量的中心(在这种情况下是一个简单的aabb立方体)。

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

那么是否存在从这两种形式转换的算法?

1 个答案:

答案 0 :(得分:1)

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

所以对于任何一个偶然发现这个病的人来说明究竟发生了什么以及如何解决它。

简单地说我的问题是如何将世界空间(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平面移动。所以这就是所谓的在当地空间移动。这意味着您沿着相对于节点(对象,模型等)的偏航和俯仰的平面移动。

所以在我的情况下,我有子弹在世界空间"我的渲染工作在#34;模型空间"所以我只需要把它放在一个转换两者的矩阵中。

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

所以这里是我找到的源代码的链接转换它并相当容易地解释相对数学。 http://www.codinglabs.net/article_world_view_projection_matrix.aspx

thanx每一个 chasester