3D和2D游戏开发技术里的坐标系总结
来源:互联网 发布:流星网络电视 卡 编辑:程序博客网 时间:2024/05/01 17:32
from:http://www.liketocode.com/coding/208.htm
最近在做unity3d开发,坐标系的概念把自己搞得好迷糊,发现理解好坐标系的东西的确对一个新手来说是必经之路,而且是基础中的重点。故在此总结下在Unity3D开发中,以及在其他游戏开发中的一些坐标系的概念。也在此分享下,一起进步。
第一部分:2D游戏开发。
先从简单2D世界说起吧。2D开发里的坐标系比较简单,2D坐标常见的有两种:
- 一种是以flash为代表的,以屏幕左上角为(0,0)点,右下角为(Screen.width, Screen.height)点。
- 一种是以cocos2d系列为代表的,由于使用的是OpenGL系提供的API,故以屏幕左下角为(0,0)点,右上角(Screen.width, Screen.height)点。
2D的坐标系就是如此简单,下面重点介绍3d的坐标系。
第二部分:3D游戏开发。
在3D开发中,用的是笛卡尔三维坐标系,包含两种3D的坐标系:左手坐标系和右手坐标系。
很多新人开始学3D开发时都会和我一样有很多疑惑,例如Unity3D和OpenGL, DirectX有啥区别?他们的坐标都是如何的?如何转换到屏幕上的坐标?这些问题的确挺头疼的。下面就逐个讲讲。
1.Unity3D和OpenGL, DirectX有啥不同?
其实他们拿来对比,是不太妥当的,因为他们不是在同一层级上的,不构成并列选择关系。Unity3D调用的是DirectX 和 OpenGL提供的 API。也可以这么理解,Unity3D封装了OpenGL和DirectX。
简单的说,就是:你的程序–>Unity3D–>DirectX/OpenGL–>图形设备(显卡)。
2.左手坐标系和右手坐标系如何理解
按照教科书的概念,左手坐标系和右手坐标系应该如图1:
(图一:两种坐标系)
那如何理解“左手”和“右手”的概念呢?我们做个实验(为此,笔者把自己的手指都秀出来了~)
伸出左手(或右手),中指为x轴,拇指为y轴,食指为z轴,就组成了左手(或右手)坐标系
(图二:左手坐标系实例)
(图三:左手坐标系实例)
3.那u3d用到的坐标系是啥坐标系呢?
答:在Unity3D里都是左手坐标系
u3d中世界坐标:左手坐标系。
屏幕坐标系:左手坐标系。什么!屏幕的坐标系是三维的?没错。那该如何理解?这样理解吧,屏幕从左下角开始为(0,0,0)点,往竖方向向上y递增,往右x递增,往屏幕里面z递增.
GUI坐标:2d的,左上角为(0,0)。和flash里的原点一样都是从左上开始。
简单来说,就是,在u3d构建中,3d的坐标都是左手坐标系。
4.那右手坐标系出现在什么地方?
1.OpenGL的世界坐标系是右手坐标系(蛋疼啊,和U3D习惯不一样)。
2.建模软件3dsMax:右手坐标系,而且z轴向上。在输出fbx保持up为Y轴的前提下,若不对3dsmax中模型的pivot进行旋转,则导入到Unity3D中后,模型会基于x有-90°的旋转。这种选择可以使得物体在直观印象不变的情况下,直接把左手坐标系转成右手坐标系。如图四,模型是以右手坐标系构建的。
(图四:3ds max中的建模坐标系)
但导入到unity后,绕x轴转了-90度,如图五,变成了图六所示。
(图五)
(图六)
5.为啥会左手坐标系和右手坐标系两种东西
额,这是当初标准没统一的问题。蛋疼的历史。
- 3D和2D游戏开发技术里的坐标系总结
- 3D和2D游戏开发技术里的坐标系总结
- Atitit 开发2d游戏的技术选型attilax总结
- 3D数学基础 图形与游戏开发的学习 (五) [3D坐标系]
- 3D坐标系:3D笛卡尔坐标系和3D柱面坐标系的区别
- 3D 坐标系 2D坐标系
- 3D数学基础图形与游戏开发之 坐标系
- 3D数学基础图形与游戏开发之坐标系
- 【游戏开发3D数学笔记】2.坐标系
- 比较2D和3D技术在当今游戏行业的重要性
- 【游戏开发3D数学笔记】6.坐标系切换和纹理
- 3D数学基础 图形与游戏开发的学习 (六)[多坐标系]
- 3D数学基础 图形与游戏开发的学习 第三章 多坐标系
- 3D游戏中一些有用的坐标系
- untiy 2d游戏平面直角坐标系的旋转应用
- 游戏开发技术总结(经典之作) 第十六集 利用Directsound 3D实现游戏中3D音效
- 3D游戏引擎数学基础1--3D坐标系
- 3D空间的坐标系
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Android UI- PullToRrefresh自定义下拉刷新动画
- mysql limt取指定数据条数 top取指定数据条数
- Android设计模式系列--模板方法模式
- eclipse4.3,jdk1.6下离线安装findBugs
- 3D和2D游戏开发技术里的坐标系总结
- 面对对象
- Android中利用ant进行多渠道循环批量打包
- dbca 建库时报ORA-27102
- 彩色网页 1秒 变黑白
- online_judge_1007
- Android设计模式系列--观察者模式
- int转字符串
- RocketMQ入门(2)最佳实践