【问题标题】:What is the most universal axis orientation in a 3D world?3D 世界中最通用的轴方向是什么?
【发布时间】:2012-01-13 11:37:22
【问题描述】:

我正在创建一个为 3D 世界生成数据的 .NET 库,但它本身不进行任何渲染。它依靠 XNA、DirectX、OpenGL 等根据数据进行渲染(最终编码器执行此操作)。我想以最有意义的格式提供世界数据。在 XNA 中,“Z”进入屏幕,“X”进入左右,“Y”进入上下(基于我的测试)。我可以以同样的格式提供世界数据,但我不想让它依赖于 XNA。这是轴方向最常见的格式吗?我总是将事物想象成“Z”向上向下,“Y”在屏幕上,所以我打算以这种格式提供世界数据,然后在我的 XNA 引导程序中转换它,但如果没有其他人使用具有该方向的数据,然后像这样传递它似乎很愚蠢。

非常感谢您的任何建议。谢谢。

另外,世界数据基本上是地形数据,所以它有一个应该上下的逻辑结构 - 山脉等。

【问题讨论】:

  • 在 2D 中,x 通常是水平的,y 是垂直的;您可以看到 XNA 是如何做出选择的。但是,我并不假装对此了解很多。
  • 非常感谢您的回答。根据您发布的内容,听起来好像是左撇子还是右撇子,“Y”通常被可视化为“向上”,而“X”是左右,“Z”是向前的,这将给我可以使用的方向。我实际上并没有在我的库中进行任何转换等。它仅提供 3D 坐标。如果我说的是愚蠢的话,请纠正我——这是一个非常合理的案例。
  • @user850427 在右手系统中,+Z 通常是“向后”(如果 LH 使 +Z 向前)。

标签: .net 3d xna orientation axes


【解决方案1】:

没有“通用”坐标系。

默认情况下,OpenGL 通常使用右手。 Direct3D 通常默认使用左手坐标系。但是,两者都可以处理左手或右手坐标系。然而,即便如此,仍有多种方法可以将世界坐标转换为视图,并且不同的系统使用不同的约定。

如果您正在制作将生成模型的东西,并希望它被 任何 底层系统使用,那么拥有一个用户可能会使您的库更有用 -提供坐标系,并使用它进行构建。进行转换相对简单。

【讨论】:

    【解决方案2】:

    是的,在视频游戏编程中,因为 DirectX 是一段时间以来最流行的 3D 库,左手 X 向右,Y 向上,Z 向前是并且仍然是最常用的轴约定。

    但是,请注意,XNA 数学课程已全部切换到右手约定,因此如果您想在左手系统中工作,您将不得不反转一些结果,例如叉积。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 2014-10-12
      • 2010-11-14
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      相关资源
      最近更新 更多