这篇文章是我的第一百篇随笔,算是一个里程碑吧。本科的时候就曾在CSDN上注册了一个博客,但是一直没有坚持下来去写一些东西。研一上学期又在博客园上注册了博客,很值得自豪,能够坚持下来,将自己的学习心得、解题思路、生活情感在此分享。因为博客园主要分享的是技术文章,所以有关于个人情感的就很少写了。好吧,开始正题了。

摄像机主要有两种投影模式,一种是正交投影,一种是透视投影。

所谓投影就是将三维空间中的物体投影到二维平面上,例如在现实世界中摄像机拍摄物体,是由物体表面反射的光线经过凸透镜聚到感光元件CCD单元上产生的。这就是把三维空间投影到二维空间的过程。

所谓正交投影,只考虑所有三维空间中的点的X和Y坐标,所有点映射到XY平面上。如果点(x,y,z)映射到点(x',y'),那么x = x',y = y'。每一个二维眼空间中的点都是和z轴是平行的直线在观察平面上的投影。所以正交投影又叫平行投影。正交投影可以把场景中所有的物体通过平行光线投影到观察平面上。在正交投影中,不管物体离眼睛有多远,它都和原来的物体大小相同。

所谓透视投影,每一个点都映射到三维眼空间的Z = 1的平面上,它是这个点和原点的连线与Z = 1平面的交点。二维眼空间中的每个点表示该点与三维眼空间的原点生成的直线。

如下图所示:

在Unity中,Camera类的orthographic属性就是用于设置和获取当前摄像机的投影模式。其原型为:

public bool orthographic {get;set;}

若值为true则为正交投影,反之为透视投影。在正交投影模式下,物体在视口的大小只与正交视口的大小有关,与摄像机到物体的距离无关,主要用来呈现2D效果。在透视模式下,物体在是口重的大小与摄像机的视口夹角(fieldOfView)以及摄像机与物体的距离都有关系,有远小近大的效果,主要用来呈现3D效果。

下面给出一个“小栗子”来模拟一下两种投影模式。

usingUnityEngine;usingSystem.Collections;public classTestOrthogra: MonoBehaviour {publicTransform cb1;float len = 5.5f;//Use this for initialization

voidStart () {float[] distances = new float[32];

distances[8] =Vector3.Distance(transform.position, cb1.position);

camera.layerCullDistances=distances;

}//Update is called once per frame

voidUpdate () {//transform.Translate(transform.right * Time.deltaTime);

}voidOnGUI()

{if (GUI.Button(new Rect(10.0f, 10.0f, 120.0f, 45.0f), "正交投影"))

{

camera.orthographic= true;

len= 5.5f;

}if(GUI.Button(new Rect(150.0f,10.0f,120.0f,45.0f),"透视投影"))

{

camera.orthographic= false;

len= 60.0f;

}if(camera.orthographic)

{

len= GUI.HorizontalSlider(new Rect(10.0f, 60.0f, 300.0f, 45.0f), len, -20.0f, 20.0f);

camera.orthographicSize=len;

}else{

len= GUI.HorizontalSlider(new Rect(10.0f, 60.0f, 300.0f, 45.0f), len, 1.0f, 179.0f);

camera.fieldOfView=len;

}

GUI.Label(new Rect(320.0f, 60.0f, 120.0f, 45.0f), len.ToString());

}

}

将该脚步添加到场景中的摄像机即可,如下图所示:

需要说明一点,在正交模式下物体没有远大近小的效果,并且Camera的OrthographicSize的大小也没有限制。但是当orthographicSize为负数时视口的内容会颠倒。效果如下:

mysql象限和投影_Camera类之orthographic-摄像机投影模式(第100篇随笔)相关推荐

  1. mysql象限和投影_地理坐标系统和投影坐标系统

    GIS中使用两种类型的坐标系统:地理坐标系统和投影坐标系统.每个投影坐标系统都基于一个地理坐标系统和一种地图投影. 每个投影坐标系统都基于一个地理坐标系统和一种地图投影. 地理坐标系统就是用数学公式模 ...

  2. c mysql封装 jdbc_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现

    最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

  3. mysql 常用小工具包_mssql+mysql小工具(无需环境依赖)-mysql数据库批量实体CS类导出工具下载v3.0免费版-西西软件下载...

    mysql数据库批量实体CS类导出工具是一个功能简单的数据库小工具,可以选中数据表执行查询,以及自定义sql语句,查询或者执行增删改,可以查看目标服务器对应数据库以及表和字段信息,不需要单独安装mys ...

  4. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)...

    最近看老罗的视频,跟着完成了利用Java操作MySQL数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

  5. mysql封装 javabean,利用Java针对MySql封装的jdbc框架类JdbcUtils完整实现(包含增删改查、JavaBean反射原理,附源码)...

    最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

  6. c mysql 工具类_Jave工具——servlet+jsp编程中mysql数据库连接及操作通用工具类

    该工具类是在JavaWeb中连接mysql所用到的通用工具类 该类用于Java+Servlet的编程中,方便数据库的操作,连接,获取其列表值.下面是这个数据库操作类的通用方法,基本上能够用于类里面只含 ...

  7. java mysql jdbc 封装_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)...

    近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...

  8. mysql的数据层基类_C# 基于MySQL的数据层基类(MySQLHelper)

    using System; using System.Data; using MySql.Data; using MySql.Data.MySqlClient; namespace DBUtility ...

  9. unity3d 2D游戏中摄像机投影类型

    我们盘点一下unity3d 2D游戏中必备的几个元素. 摄像机:无论是3D游戏还是unity3d 2D游戏摄像机都是非常重要的属性,移动摄像机即可更改屏幕中显示的内容,游戏地图的坐标永远都不会发生改变 ...

最新文章

  1. Hadoop的学习前奏(一)——在Linux上安装与配置Hadoop
  2. [九省联考2018]IIIDX
  3. 【译】Pure Proof-of-Stake Blockchains: Secure Blockchain Decentralization via Committees
  4. 四级计算机网络选择题,2015全国计算机等级考试四级计算机网络模拟选择题
  5. ssl提高组周六模拟赛【2018.9.23】
  6. 青茶什么时候拆_为什么日本绿茶那么绿?比中国的高级绿茶还要绿
  7. 刚刚,阿里巴巴小程序生态联盟重磅启动
  8. 【ASP.NET Web API教程】5.2 发送HTML表单数据:URL编码的表单数据
  9. Android系统(204)---ContentProvider
  10. 华硕win10键盘失灵_Win10 进阶用法汇总
  11. 小麦积分墙:我的App与微信搞上了
  12. 【语音处理】基于matlab GUI语音原始信号+变速信号时域频域分析(带面板)【含Matlab源码 294期】
  13. win10怎么更新显卡驱动_更新Win10设备驱动程序的4种方法,方便实用,你知道几种...
  14. python新手入门到大师_GitHub - FainBleeze/Python-100-Days: Python - 100天从新手到大师
  15. sap 双计量单位_维护计量单位的描述
  16. 智能优化算法:蝗虫优化算法-附代码
  17. android Room框架学习
  18. 《地球概论》(第3版)笔记 第四章 地球运动的地理意义
  19. maven相关(1)
  20. opencv教程CV2模块——图片处理,HSV、色调、亮度调节

热门文章

  1. Java使用MyEclipse2017时的一些小细节
  2. MySql 中的常见问题解决方法
  3. 如何理解IIS 7的两种应用程序池的管道模式(Managed Pipeline Mode)
  4. loadrunner 录制 odbc 迭代出现lrd_db_option: ERROR, return-code=LRDE2009错误
  5. vs05b2中给dataset添加表间关系
  6. LeetCode 141. 环形链表 简单难度
  7. StringBuilder类与String类的区别
  8. 70.ER模型转化成关系模型是在数据库设计的第几个阶段?
  9. 脑植入芯片实现脑机交互,脑神经链会如星链般放大马斯克的光环吗
  10. Matplotlib常见问题总结