天天看点

Shader编程学习笔记(十三)—— 3D数学基础1 - 坐标系

目录

    • 1、引言
    • 2、各坐标系介绍
      • 2.1、2D中的模型坐标系
      • 2.2、2D中的世界坐标系
      • 2.3、3D中的模型坐标系
      • 2.4、3D中的世界坐标系
      • 2.5、摄像机视坐标系
      • 2.6、屏幕坐标系
    • 3、总结
    • 4、结束语

1、引言

  从这一篇开始了解一些3D数学知识,这一片主要是关于坐标系的。本篇涉及知识点:

  • 模型坐标系
  • 世界坐标系
  • 摄像机坐标系
  • 屏幕投影坐标系

2、各坐标系介绍

2.1、2D中的模型坐标系

Shader编程学习笔记(十三)—— 3D数学基础1 - 坐标系

  在2D中没有模型之间相对位置的变化,此时无需考虑多个物体之间相对位置关系的变化。

2.2、2D中的世界坐标系

  当在2D中有多个游戏物体时就要考虑多个物体相对位置的关系,这就用到世界坐标系。

Shader编程学习笔记(十三)—— 3D数学基础1 - 坐标系

  这里演示了一个游戏物体相对世界坐标发生的偏移和旋转。

2.3、3D中的模型坐标系

Shader编程学习笔记(十三)—— 3D数学基础1 - 坐标系

  上图所示是一个3D模型坐标系。当取+z时为左手坐标系,-z为右手坐标系!unity采用的是左手坐标系。而DMax使用的是右手坐标系,所以当输出的时候就要考虑到以何种方式输出以适应游戏引擎的坐标系。这里的坐标原点位于cube的几何中心,如果我们对unity的模型有所了解就知道,unity中所有的cube的模型坐标处于(-0.5,+0.5)之间,因此我们很容易就知道这个cube的所有顶点位置的模型坐标。

2.4、3D中的世界坐标系

Shader编程学习笔记(十三)—— 3D数学基础1 - 坐标系

  我们游戏中的物体不可能刚好都处于世界坐标系的原点。就像上图中的cube放入游戏场景中,不一定就在左下角的世界坐标系的中心位置。

  在unity中创建下面场景,随意创建一个cube,并reset它的位置。

Shader编程学习笔记(十三)—— 3D数学基础1 - 坐标系

  此时transform组件下的position、rotation、scale都为默认值。我们此时可以认为模型坐标和世界坐标重合了。我们可以通过切换,上图中左上角的Global和Local按钮来观察,坐标并没有变化。此时如果我们随意旋转一下cube模型的Y,再次切换观察发现坐标是不同了,此时模型坐标就和世界坐标没有重合了,此时模型绕着Y轴做了一定的旋转。

Shader编程学习笔记(十三)—— 3D数学基础1 - 坐标系
Shader编程学习笔记(十三)—— 3D数学基础1 - 坐标系

  这里我们把世界坐标系做了一定的旋转。在游戏开发中我们经常需要旋转一个游戏物体,此时有两种办法,一种是旋转游戏物体的顶点,一种是旋转坐标系。实际种我们常常使用的旋转坐标系来实现的。

2.5、摄像机视坐标系

Shader编程学习笔记(十三)—— 3D数学基础1 - 坐标系

  上图中蓝色的坐标系即为摄像机视坐标系可以认为在蓝色坐标系的原点架设一个相机,视野方向向上的绿色范围即为可视范围。也最大视野距离超过了就看不见了。事实上它的视野是一个视锥体的范围。GPU只会渲染视野内的游戏物体超出了就不会渲染。这里是由底层决定的,这里我们只需了解即可。

2.6、屏幕坐标系

Shader编程学习笔记(十三)—— 3D数学基础1 - 坐标系

  屏幕坐标系在3D游戏中也叫屏幕投影过后的坐标系。它有一个近大远小的特性。原理类似于小时候大家熟悉的小孔成像的原理。由于屏幕是一个2D的平面,而是现实世界是一个复杂的3D环境,3D游戏也是如此,在处理3D图像时,需要显示在2D屏幕上就要处理Z方向上的深度,怎么样显示在屏幕上使我们的肉眼能够感受到一个3D的一个近大远小的世界,这个三个世界就是一个投影坐标。unity中还有一个正交投影,没有近大远小的变化,这里可以称为正交投影,主要用在2D游戏的制作中。

3、总结

  综上所述我们在屏幕中看到的游戏物体都经历了或多或少的转换才得以显示!实际上游戏物体的变化是很多的,不仅有位移,还有旋转、镜像、缩放…等的转换。好在有矩阵这个工具可以把这些转化统一到一个矩阵中去。那么游戏物体从:模型坐标—>世界坐标—>

摄像机坐标—>屏幕坐标需要经历三次转化,我们在unity的shader编码中称为MVP。

4、结束语

The End

  好了,今天的分享就到这里,如有不足之处,还望大家及时指正,随时欢迎探讨交流!!!

喜欢的朋友们,请帮顶、点赞、评论、收藏、转发,您的肯定是我写作的不竭动力!

继续阅读