我正在创建一个.NET库,它可以为3D世界生成数据,但它本身并不进行任何渲染。它依赖于XNA,DirectX,OpenGL等基于数据呈现它(终端编码器这样做)。我想以最有意义的格式提供世界数据。在XNA中,“Z”进入屏幕,“X”进入左右,“Y”进入上下(基于我的测试)。我可以以相同的格式提供世界数据,但我不希望它依赖于XNA。这是轴定位的最常见格式吗?我总是将事物视为“Z”为上下,“Y”显示在屏幕上,所以我将以这种格式提供世界数据,并在我的XNA引导程序中转换它,但如果没有其他人使用具有该方向的数据,然后像这样提供它似乎很愚蠢。
非常感谢任何建议。谢谢。
此外,世界数据基本上是地形数据,因此它具有应该向上和向下的逻辑结构 - 山脉等。
答案 0 :(得分:2)
没有“通用”坐标系。
默认情况下,OpenGL通常使用右手。默认情况下,Direct3D通常使用左手坐标系。但是,两者都可以处理左手或右手坐标系。然而,即便如此,有多种方法可以将世界坐标转换为视图,不同的系统使用不同的约定。
如果你正在制作一些可以生成模型的东西,并希望它被任何底层系统使用,那么它可能会使你的库更有用,能够拥有一个用户 - 提供坐标系,并使用它构建。进行转换相对简单。
答案 1 :(得分:1)
是的,在视频游戏编程中,因为DirectX是一段时间内最受欢迎的3D库,左手X在右边,Y在顶部,Z forward是并且仍然是最常用的轴惯例。
但是,请注意XNA数学类都已转换为右手约定,因此如果您想在左手系统中工作,则必须反转某些结果,例如交叉产品。