《3D数学基础:图形与游戏开发》2.第3章 多坐标系

3.1 为什么要使用多坐标系

  • 事实上,只需要选定一个坐标系,然后称之为 “世界” 坐标系,就可以使用这个坐标系描述所有的点了,但不同的情况下使用不同的坐标系更加方便

  • 某些信息只能在特定的上下文环境中获得:理论上,确实所有点都能只用一个 “世界” 坐标系描述。但是对于一个特殊点,也许不知道它在世界坐标系中的坐标,但可能知道它在其他坐标系中的坐标

  • 在计算机创建虚拟世界时,应该选择较为简单的坐标系,而不是较复杂的

  • 没有哪一个坐标系能被认为优于另一个,所有坐标系都是平等的,但某些可能比其他的更合适

3.2 常见的坐标系

3.2.1 世界坐标系

  • 世界坐标系是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考框架。能够用世界坐标系描述其他坐标系的位置,而不能用更大的、外部的坐标系来描述世界坐标系。
  • 世界坐标系是我们所“关心的”最大的坐标系,所以世界坐标系不必是整个世界。例如,如果你想描述笛卡尔城,那么这个笛卡尔城就是整个目标,也就是 “整个世界”,自然也就不必关心笛卡尔城在的位置在哪
  • 世界坐标系也被称为全局坐标系或者宇宙坐标系
  • 世界坐标系的相关问题都是关于初始位置和环境的,如:
    • 每个物体的位置和方向
    • 摄像机的位置和方向
    • 世界中每一点的地形是什么
    • 各物体从哪里来、到哪里去

3.2.2 物体坐标系

  • 物体坐标系适合特定物体相关联的坐标系,每个物体都有它们独立的坐标系,当物体移动或改变方向时,和该物体相关联的坐标系将随之移动或改变方向
    • 例如,当一个人被下达指令 “向前一步”,是在向这个人的物体坐标系发指令,下令人并不知道这个人会往哪个绝对方向移动,一些人会向北(原先面向北的话),一些人向南(原先面向南)
    • 向 “前、后、左、右” 是物体坐标系的概念,向 “东、南、西、北” 则是世界坐标系中的
  • 物体坐标系常见问题
    • 周围有互相作用的物体吗?(我需要攻击他吗)
    • 哪个方向?在我前面吗?我左边一点?(我应该是射击它还是逃跑)

3.2.3 摄像机坐标系

  • 摄像机坐标系是和观察者密切想关的坐标系,与屏幕坐标系不同的是,摄像机坐标系处于 3D 空间中,而屏幕坐标系处于 2D 平面里

  • 摄像机坐标系中,摄像机在原点,x 轴向右,z 轴向前(朝向屏幕内或摄像机方向),y 轴向上(不是世界的上方而是摄像机本身的上方)

  • 屏幕上显示的景象就是摄像机视角范围内的景象

  • 摄像机坐标系常见的问题是哪些物体应该在屏幕上绘制出来:
    • 3D空间中的给定点在摄像机前方吗?
    • 3D空间中给定点是在屏幕上,还是超出了摄像机平截锥体的左右上下边界?(平截锥体就是摄像机能观察到的金字塔区域)
    • 某个物体是否在屏幕上?它的部分在,或全部不在?
    • 两个物体,谁在前面?(该问题称作可见性检测)

3.2.4 惯性坐标系

  • 惯性坐标系的原点和物体坐标系的原点重合,但惯性坐标系的轴平行于世界坐标系的轴

  • 惯性坐标系的引入目的:为了简化世界坐标系到物体坐标系的转换,意思是在世界坐标系到物体坐标系的 “半途”

    • 从物体坐标系转换到惯性坐标系只需旋转,从惯性坐标系转换到世界坐标系只需要平移

3.3 嵌套坐标系

  • 嵌套坐标系引入墓地:描述 3D 中以层次关系组织的物体
  • 如果要描述一只羊的右耳朵的运动,在世界坐标系中是一个很复杂额轨迹。
    • 因为物体坐标系是在世界坐标系中运动,那么可以将世界坐标系看作是 “父” 空间而将物体坐标系看作是 “子” 空间,同时可以将物体打散成子块,独立地控制它们
    • 例如,羊行走时,仰头前后晃动,耳朵上下扇动这一情景:羊沿着世界坐标系中的 “z” 轴移动,羊头在 羊“ 这个物体坐标系中,羊头只是沿着 x 轴晃动,在 ”羊头“ 这个物体坐标系中,耳朵只是沿 y 轴的运动
    • 上述分解即为:羊坐标系相对于世界坐标系运动,羊头坐标系相对于羊坐标系运动,羊耳朵坐标系坐标系相对于羊头坐标系运动。可以将羊头看作羊的子空间,羊耳朵看作羊头的子空间。
    • 如果一个子坐标系嵌入在父坐标系中,这种坐标系的父子关系定义了一种层次的、或树状的坐标系,世界坐标系是这棵树的根

3.4 怎么样在一个坐标系中描述另一个坐标系

  • 坐标系由原点和坐标轴定义,原点定义了坐标系的位置,轴定义了坐标系的方向(以及其他信息,如刻度等),并且假设坐标轴是相互垂直的,父子坐标系的的单位相同
  • 原点位置的描述:采用的是其在父坐标系中的位置,而不是其本身的子坐标系中的位置,因为原点在子坐标系中始终是(0,0,0)
  • 轴的描述:见第 10 章

3.5 坐标系转换

  • 考虑将灯的中心点从物体坐标系转换到世界坐标系

3.5.1 物体坐标系转换到惯性坐标系

  • 假设灯在物体坐标系中的坐标为(0,100)

  • 旋转物体坐标系到惯性坐标系:将物体坐标轴旋转顺时针旋转45°,就得到了惯性坐标系

  • 在惯性坐标系中,灯位于 y 轴正方向,x 轴负方向,灯在惯性坐标系中的大概位置是(-300,600)

3.5.2 惯性坐标系转换到世界坐标系

  • 将惯性坐标系转换到世界坐标系:将物体坐标原点向下、向左平移至世界坐标系的原点,现在灯在世界坐标系的位置大概是(1200,1000)

猜你喜欢

转载自www.cnblogs.com/bky-hbq/p/12678026.html