游戏引擎如何旋转模型?

时间:2014-04-18 13:58:45

标签: rotation game-engine

如果我做一个人体模型并将他导入游戏引擎。游戏引擎是否知道模型上的所有点坐标并旋转每个点?所有模型都包含百万点,如果我将模型旋转90度,游戏引擎会计算出数百万点的新位置并旋转吗?它是如何工作的。感谢

1 个答案:

答案 0 :(得分:0)

这是一个模糊的问题,因为每个游戏引擎的工作方式都不同,但一般来说游戏引擎不会触摸模型坐标。

模型通常加载模型空间(或局部空间)坐标 - 这只是意味着每个顶点都定义了相对于该模型的原点的位置。原点定义为(0,0,0),并且是旋转发生的点。

现在游戏引擎加载并将模型保持在此坐标空间中。然后,您提供转换(例如平移和旋转矩阵)以将该模型放置在“世界”中的某个位置(即所有对象共享的全局坐标空间)。您还可以使用各种其他变换(如投影和视图矩阵)来提供您想要查看此世界的方式。

然后,游戏引擎接受所有这些转换并将它们传递给GPU(或软件渲染器,在某些情况下) - 它还会设置其他东西,如纹理等。这些通常每帧设置一次(或每个框架的对象)。

最后,它将需要处理的每个顶点传递给渲染器。然后,渲染器使用指定的所有变换进行变换,以获得最终的顶点位置 - 首先在世界空间中,然后在屏幕空间中 - 它可以用来根据各种其他信息渲染像素(如纹理和灯光。)

所以重点是,在大多数情况下,引擎实际上与模型/顶点的旋转无关。它只是一种管理模型的方法以及适用于它的各种设置。

当然,引擎可以旋转模型并修改它的顶点,但这通常只在加载过程中完成 - 例如,如果需要在不同的坐标空间之间转换模型。

还有很多事情要发生,这是对实际情况的一个非常基本的描述。有许多来源非常详细地描述了这个过程,所以我甚至都不会尝试复制它。希望这能为您提供足够的细节来理解基础知识。