【问题标题】:Large Matrix.Translation values causing graphics anomalies导致图形异常的大 Matrix.Translation 值
【发布时间】:2013-07-18 20:27:19
【问题描述】:

这里的第一个问题。抱歉,如果已经回答 - 我无法通过 Google 或此处找到任何内容。

我的游戏是一个太空模拟游戏(具有逼真的惯性、连续旋转,除非停止等),它需要广阔的可玩区域。正在发生的事情是,当我的船飞离其起始位置太远(根据 Matrix.Translation 的测量值约为 1,000,000)时,船或相机开始不规律地旋转。当我仔细观察时,即使它从起始位置开始移动,也会有微小的异常(例如,3D 模型边缘的一个变化像素,但船应该完全静止(它没有动画)与相机的关系。最初我有类似的问题,旋转的连续变化导致船的矩阵变得非正交,但我通过转换为四元数以进行归一化,然后返回矩阵解决了这个问题。这个问题似乎不相关,并且我在 3D 编程方面的经验很少。

不确定您希望看到哪些代码,但如果需要,我会粘贴它们。我是不是走错了路——我应该让太阳系绕着船移动,就像绕着太阳系移动的船一样吗?不知所措。请帮忙。

菲尔

【问题讨论】:

  • 发布您的矩阵是如何形成并应用于您的对象/相机的。

标签: c# matrix xna camera translation


【解决方案1】:

我不完全确定你的问题,但我认为如果你让你的星系变得现实,并使用浮动(或在某些时候双打),那绝对是你的问题。有关浮点精度的更多信息,请参阅this question

至于解决方案,this 的博文可能会让您感兴趣,因为我认为它正在尝试解决您现在面临的相同问题,制作空间模拟游戏并解决精度问题。

【讨论】:

  • 标记,这几乎一针见血。我将首先让太阳系围绕飞船旋转,这将使飞船的矩阵保持几乎 100% 的准确度,让物体在坠落到远处时的精确度降低(这应该不明显)。我意识到值越来越大的问题会越来越四舍五入:) Jack Purdum 的《Beginning C#》很好地解释了你学习的内容。
猜你喜欢
  • 2014-01-09
  • 2011-07-16
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
相关资源
最近更新 更多