PS:个人学习总结,转载请著明出处

在XNA的3D开发中,时常要涉及到坐标系统和摄象机的一些参数。同时还有矩阵的变化来在3维世界里的移动。

在二维世界里的坐标系统里,使用x,y坐标来表示一个点在坐标系统中的位置。电脑屏幕就是一个2维坐标系统。而在三维坐标系统中,引入了z坐标来表示物体距离的远近。下面将介绍2种三维坐标系统:左手坐标系和右手坐标系。

   
       在左手坐标系统中,使用左手来确定三维坐标系统。如图所示,左手四指弯曲,拇指四指垂直,那么四指弯曲的方向就是x坐标轴(正方向)绕向y坐标轴(正方向);拇指所指的方向是z坐标轴的正方向。而使用右手确定的坐标系也如此:四指弯曲的方向就是x坐标轴(正方向)绕向y坐标轴(正方向)的方向;拇指所指的方向是z坐标轴的正方向。从以上两个图可以看出,两种坐标系不同的地方就是z坐标轴的方向。左手坐标系中z轴离我们而去,右手坐标系迎我们而来。

使用左手坐标系,可以保证永远使用正的z值来表示距离,在远也没有关系。这也是符合日常习惯的。然而在XNA开发中的3D坐标系,实际上应该是上图的右图,
左手坐标系的z轴正向与你眼睛看显示器方向相同,右手则相反. 举个例子,假如你的眼睛和显示器连成一条线,在左手坐标系里,显示器端是z,眼睛端是-z;在右手坐标系里,显示器是-z,眼睛是正z.
      在三维坐标中观察世界时,需要确定以下几个问题:

1.在哪个位置观察:需要使用坐标来表示这个观察点的准确位置,这个坐标是在计算机的世界坐标系中的值。

2.向哪个方向观察.

3.对于观察者来说,代表上方的方向。如同我们头的上部是相对于我们的上方,当我们头向下看世界时,就会看到倒立的世界。在计算机三维世界中也是同样的道理,我们得指定我们的上方是哪个方向,才能看到正确的三维世界。

当上面几个问题确定以后,实际上就可以建立一个以观察者为圆心的三维坐标系,就把它称作观察坐标系吧。把原来世界坐标系中的所有物体的坐标转换为观察坐标系中的坐标以后,就可以知道每一个三维物体相对于我们的位置了。
        下面在来介绍下三维透视转换
    在显示器屏幕上显示的都是平面图形,不管他们是否具有三维的效果。计算机的三维世界最终需要显示在平面的屏幕上。在真实的世界中,我们可以看到空间中的任意景物,就是因为从景物发出或者反射的光线能够进入我们的眼睛,从而形成图象。在计算机的三维世界中,要看到景物,必须通过前面说过的摄象机。可以想象摄象机是我们观察计算机中三维世界的窗口,要想看到景物,景物发出或者反射的光线必须能够通过摄象机的镜头。三维透视就是如何把三维世界的景物进行透视转换,形成可以在电脑屏幕上显示的平面图形。

转载于:https://www.cnblogs.com/315358525/archive/2009/07/15/1524240.html

XNA开发思考之3D开发中的小常识相关推荐

  1. 常用软件-安装过程中的小常识

    常用软件-安装过程中的小常识 主要通过安装金山打字通软件,来讲解我自己安装程序中用到的小技巧. (只适用于电脑小白奥) 完整安装过程 如下是安装金山打字通的完整过程,讲解了我自己的常用小技巧. 1. ...

  2. [Map 3D开发实战系列] Map Resource Explorer 之四-- Map3D开发中的WPF

    目录 [Map 3D开发实战系列] Map Resource Explorer 背景介绍--Kick off [Map 3D开发实战系列] Map Resource Explorer 之二-- 运行和 ...

  3. 3D游戏中角色的换装原理-落樱之剑实例图文详细剖析(JME3,JMonkeyEngine游戏开发)...

    **************************************************************************************************** ...

  4. 3D游戏中角色的换装原理-落樱之剑实例图文详细剖析(JMonkeyEngine游戏开发)

    前言 本文将详细讲解3D游戏中换装的原理及换装中的一些重点问题,先粗略看一下换装的简单原理: 没错,看起来很简单吧!!! 那么接下来,开始讲复杂的地方! 在阅读本文之前如果你能够了解或知道以下一些基础 ...

  5. 【转】体验 Silverlight 5 3D开发之环境搭配篇

    体验 Silverlight 5 3D开发之环境搭配篇 时间:2012-10-08 20:14来源:博客园作者:吉心 点击:180次 项目组现在要做一个三维的项目,我们几个童鞋,讨论了N久,最后决定基 ...

  6. 基于结构光测量技术和3D物体识别技术开发的机器人3D视觉引导系统

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 基于结构光测量技术和3D物体识别技术开发的机器 ...

  7. 《Unity 4 3D开发实战详解》一6.7 物理引擎综合案例

    本节书摘来异步社区<Unity 4 3D开发实战详解>一书中的第6章,第6.7节,作者: 吴亚峰 , 杜化美 , 张月霞 , 索依娜 责编: 张涛,更多章节内容可以访问云栖社区" ...

  8. Silverlight C# 游戏开发:L5 3D基本的灯光

    Silverlight C# 游戏开发:L5 3D基本的灯光 我们在设计和开发3D的时候最常用的就是灯光,它有的时候比摄像机还要重要,一些花哨漂亮的表现主要通过灯光实现,相比场景中只有一个的主要摄像机 ...

  9. 视频教程-Layabox3D游戏开发入门-微信3D小游戏案例 -微信开发

    Layabox3D游戏开发入门-微信3D小游戏案例 有多年Unity程序开发经验,有策划和美术设计的经验.愿意在csdn这个平台和大家一起分享! 金龙 ¥29.00 立即订阅 扫码下载「CSDN程序员 ...

最新文章

  1. shell 连续空格输出
  2. 微软职位内部推荐-SW Engineer for Skype
  3. [置顶]       Mybatis技术(二) MyBatis-Spring
  4. 【项目管理】项目裁剪解读
  5. SqlServer 2014 还原数据库时提示:操作系统返回了错误5,,拒绝访问
  6. 关于Mybatis的几个问题
  7. 初学Python——字符串相关操作
  8. 夜神模拟器安装激活面具magisk教程
  9. 《操作系统学习总结》
  10. 闲人闲谈PS之三十——新收入准则中的合同资产和合同负债
  11. HDU 2019 Multi-University Training Contest 1 杭电2019多校联合训练赛 第一场 1001 Blank (6578)
  12. 聚散随缘,勿忘心安 -- 颜夕溪
  13. 计算机 无法进入pe,无法进入老毛桃pe系统解决办法[推荐]
  14. Linux基础管理命令
  15. bakaxl启动器怎么导入整合包_bakaxl启动器加mod整合包
  16. 运维平台权限表结构设计
  17. 安排,Mycat教程-分布式数据库中间件课程
  18. CSGO(KZ模式)服务器搭建教程(windows系统)包含申请全球服务器操作方法
  19. 【全网最强C语言学习】五子棋游戏
  20. Winphone开发之JSON解析

热门文章

  1. 算法竞赛入门经典 第五章总结1
  2. python登录脚本_selenium+python实现自动登录脚本
  3. php+new+mysqli+utf+8,MySQL和PHP:utf-8带有西里尔字符
  4. flink java 并行度_flink solt和并行度
  5. java定义一个方法,向控制台输出一个整数的阶乘
  6. php分流短信服务商,使用第三方短信服务商云片发送短信(php样例)
  7. 计算机电路基础答案,计算机电路基础模拟试卷答案(B)
  8. python的request请求401_Python模拟HTTPS请求返回HTTP 401 unauthorized错误
  9. ztree 标准得json数据格式_酷站推荐 - json-c.github.io/json-c - json-c API
  10. python与数据处理_python数据处理:数据合并和Reshaping