2011-03-29 84 views
0


我正在设置一个单向缩放矩阵到3D中的实体(比如实体1)。现在,我有另一个实体(实体2),该实体后面应该具有统一的缩放比例。我同时适用于这些实体是如下矩阵的序列...缩放矩阵和转换矩阵相关问题

  1. 翻译使用实体从它的原始世界上的地位原籍
  2. 规模单向
  3. 翻译实体回它在世界上的地位。

This works。但是,如果我按照实体2的相同顺序,则不起作用。我正在做世界坐标系统中的所有矩阵变换。

这是我在计算机图形学的惊人世界中的第一步。我希望,如果有人能够通过点亮各种坐标系(世界,模型,本地)和指导如何计算从模型坐标系到世界坐标系的矩阵,反之亦然。
由于提前,
阿图尔

+0

我可以知道该怎么做吗? – Atul 2011-03-29 08:38:29

+0

您只需点击答案左侧的小勾号即可接受答案。如果你喜欢它,你也可以点击向上和向下箭头来投票,如果你认为这是一个不好的答案,可以向下投票。我强烈建议阅读这篇文章,如果你没有aready:http://stackoverflow.com/faq – 2011-03-29 08:50:40

回答

0

我会尽量先回答你的最后一个问题,希望它能让事情更清楚。

每当图形艺术家创建建筑物,怪物或风景时,她都需要定义一个坐标系。它由原点(其中是0,0)和一些(其中是x和y方向?)组成。这个选择是完全随意的,并且没有真正的重要性,但是为了简单起见(并且为了减少由于缺乏精度而导致的错误),起点通常要么靠近物体的中心,要么靠近参考点(例如树的根)。

现在,如果艺术家在景观中聚集怪物和建筑物,坐标可能不匹配。她本可以完全用风景创造出这个建筑,尽管这并不总是可行的,更不用说得心应手了,但是为了让怪物在一些可怜的MMO玩家之后跑步,这是不可能的。

所以我们需要一种方式来知道怪物在跑步的时候,胳膊,腿,牙齿,触手和其他什么你不愿意看到的东西会在世界中结束。他们对于怪物的位置非常熟悉。这就是我们所说的怪物坐标。更一般地说,我们会调用本地坐标,意思是怪物本地。

那么什么是世界坐标?通常他们指的是作为参考的最有意义的元素,被认为不被别的东西移动的元素。在这里,景观。

这是矩阵来玩的地方。 什么是矩阵?矩阵是一个运算符,允许在不同的坐标系统中表示坐标。这是一个投影坐标系统从系统到另一个:从怪物到现场,从现场的摄像头,摄像头从筛选...

矩阵可以表达从一个系统到另一个地方的转换:转换,旋转,缩放,剪切,展平......或者所有这些都是同一时间。 单位矩阵是不改变任何东西的矩阵。矩阵也可以组合:通过乘以平移矩阵和旋转矩阵,我们得到平移和旋转的转换矩阵。做几次这样的事情,只需将每个关节的矩阵组合起来,就可以获得汽车工厂机器人关节臂尖端的位置。

然后我们碰到你的问题可能在哪里:翻译然后旋转是不一样的旋转然后翻译。如果你不相信它自己尝试:走路然后转身或转身然后走路,看看你不会在同一个地方结束。所以最后它意味着矩阵必须按照特定的顺序来应用,而这只取决于你想要做什么。

从您给出的解释中,我认为这是您的错误出现的地方,因为如果您先按比例放大,翻译将产生不同的结果。

+0

感谢世界/模型坐标系解释朱利安。我现在挣扎的是,我有一个在世界坐标系统中的实体。现在我想要这个实体统一缩放然后翻译。为了达到这个目的,我做了以下工作:首先我将这个实体翻译成世界坐标Origin,然后我将这个统一缩放应用到这个被转换的ENtity上,然后我将它翻译回它在世界空间的初始位置。在所有这些杂耍之后,我申请了一个简单的翻译矩阵。任何想法可能会出错? – Atul 2011-04-01 07:01:31

+0

我扭转了我的矩阵的顺序,它做了诡计,我惊奇地发现,在单向定标中,我遵循我之前解释过的,并且它的工作原理... – Atul 2011-04-01 07:59:49

+0

很高兴听到您解决了您的问题!矩阵起初很难掌握。您可以在Google上找到一个非常有用的文档,名为“矩阵和四元数常见问题”(有不同的日期有各种版本)。 – 2011-04-01 17:41:50

1

“世界”坐标系采用了完全未经修饰的矩阵来表示世界上所有的物体。这是最简单的方式,您可以在您的事物的宏伟计划中查看您的对象的位置全部

“模型”坐标系与“本地”坐标系的想法非常相似。 “局部”坐标系根据局部物体定义坐标系,因此,例如(0,0)可以是该局部坐标系中物体的中心,并且正Z轴可能正在俯视对象视图。 “模型”坐标系的本质与此相同,但如果您与OpenGL混淆,即拥有MODELVIEW矩阵,则此矩阵基本上是当前使用的“本地”坐标系。你可以在这个“模型”矩阵上进行操作,从世界坐标系到局部坐标系,到另一个局部坐标系,到另一个局部坐标系等等。等等。

我认为this was a really great article它可以帮助你如果您有兴趣直接从“世界”坐标系转换为对象的任何“本地”坐标系。为了使用这个解决方案,需要你有希望找到“本地”坐标系的物体的向前,向上和侧面向量(以“世界”坐标表示)。

我希望这有助于清理一些东西! :)