mytudousi

.Net,GIS,3D

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  41 随笔 :: 0 文章 :: 32 评论 :: 0 引用

公告

2011年12月25日 #

摘要: 我们在实际生活中,你的头不可能一直保持不动,系统中也一样,很多情况下,都是需要相机进行移动,旋转等各种操作的。我们也知道相机的参数就是主要靠相机的位置、观察目标、和UP向量组成。视锥体也是,但视锥体组成的投影矩阵主要的作用是负责三维场景到二维界面的映射。所以我们只要改变相机的这些参数就可以实现相机的移动和旋转了。原来那么简单,可事实是什么样子的。例如,现在我们的相机位置在[0,0,5]点,要想往原点方向移动一个单位距离,只要把相机位置Z轴方向-1就可以了。这太简单了。如果你想要旋转,看头上方的东西呢?我们把UP向量改变一下,例如本来我们的UP向量是指向Y轴正方向的,那只要把UP轴指向Z轴正方向阅读全文
posted @ 2011-12-25 16:26 mytudousi 阅读(51) 评论(0) 编辑

2011年12月14日 #

摘要: 例如我们要想保持我们正在看东西的一个状态,例如看一个茶杯,需要量化到哪些参数,才能保持该状态?最容易想到的就是位置,就是你的头的位置不能变,例如本来你坐在椅子上看这个杯子,又站起来看,肯定呈现在你眼睛里面的效果是不一样的。如果你向左或向右歪一下头呢,头的位置即使保持不变,但头歪了,看到的杯子也是歪的。你可能会说,我看着还是正的,但这是我们在日常生活中养成的一种习惯,杯子正正的放在桌子上。但在你的眼睛里呈现的杯子已经是歪的了。头如果上下左右都旋转的话,可能连杯子都看不到了。如果保持这些参数不动的话,是不是你除了把眼睛闭上,看到的都是一幅景象了?从上面的生活小例子,我们可以看出,影响人看一个东西呈阅读全文
posted @ 2011-12-14 22:23 mytudousi 阅读(99) 评论(0) 编辑

2011年12月12日 #

摘要: 首先要明确一点,我这篇所谓的把XNA嵌入到WPF中,并不是直接嵌入到WPF中,而是先嵌入到WinForm的Control中,然后再通过WindowHost控件嵌入到WPF中。因为我之前也找过把XNA嵌入到WPF中的方法,找了很多文章也包括英文的,但看了大半天发现其实现方式也都是通过WinForm中转了一下。也有可能XNA出现的时候,WPF还没有出现,所以支持不好。但XNA和WPF的底层都是D3D,所以,我觉得以后XNA应该是可以很方便的嵌入到WPF中的。为什么XNA能够嵌入到Winfrom中呢,因为我们在运行XNA程序时,XNA呈现的窗口本身就是一个WinForm的窗口。我们可以通过下面的代码阅读全文
posted @ 2011-12-12 14:45 mytudousi 阅读(417) 评论(3) 编辑

2011年11月16日 #

摘要: 一般情况下,做三维展示系统,模型都是在3DMax这样的软件中提前做好,然后再加载到系统中展示。XNA支持很多格式的模型,但和3Dmax对接的是FBX文件。XNA的底层的D3D,所以模型的渲染本质也是D3D的渲染。在比较新的D3D版本中就已经出现了类似于C语言道德GPU语言,当然这主要还是归功于显卡技术的发展。现在GPU语言主要有三种一个是支持openGL的GLSL,还有一种是英伟达的CG语言,最后一种是微软的基于D3D的HLSL语言。其中cg语言和HLSL本是一家,是英伟达和微软合作的产物,但最后由于某种原因分道扬镳。英伟达的就是cg了,微软的就是HLSL,但两者的用法和语法都很类似,甚至很多阅读全文
posted @ 2011-11-16 21:40 mytudousi 阅读(200) 评论(0) 编辑

2011年10月27日 #

摘要: 在XNA中,和向量类似,矩阵也被定义成一个结构体,使其在计算的时候速度有所保证。XNA中只定义了一个4X4的矩阵。这可能和其他的一些三维数学或三维平台不太一样。虽然这在系统运行时可能会造成内存的浪费,但只有一种矩阵,可以大大减少开发的难度。而且4X4矩阵能够存储物体的位置,旋转,位移,缩放等信息。(以上绝大部分来至于我自己的猜想)在看矩阵的结构时,在开头的时候就能看到矩阵的一些复写的操作符。从函数个数上来看,矩阵的定义似乎比向量要简单一些。但矩阵中每个函数里面的算法要比向量复杂的多。幸好XNA给我们封装了大多数矩阵运算的功能,让我们不用关心那么复杂的算法。如果你要是能理解那些算法的话,也就最好阅读全文
posted @ 2011-10-27 21:34 mytudousi 阅读(254) 评论(0) 编辑

2011年10月26日 #

摘要: 矩阵和向量一样,是三维数学中最基础最重要的东西。它主要被用来描述两个坐标系统之间的关系,通过定义一种运算,把一个坐标系里面的向量转换到另一个坐标系中。矩阵也是我们在高中时候就接触,大学学线性代数的时候深入学得,不过现在忘得时一干二净。一是当时没好好学,而是这个东西实在是再抽象了,怎么回忆也回忆不出个所以然来。矩阵定义我们在定义向量的时候,把向量定义成包含多个标量的数组。而矩阵就可以定义为包含多个向量的数组。在描述矩阵时都是以mXn来描述,m为矩阵的行数,n为矩阵的列数。4X3矩阵实例方阵顾名思义,方阵就是m=n的矩阵,即行数和列数相等的矩阵。方阵方阵中的行号和列号相等的元素称为对角线元素,其他阅读全文
posted @ 2011-10-26 22:48 mytudousi 阅读(154) 评论(4) 编辑

2011年10月25日 #

摘要: 从上篇向量的文章中,我们主要分析出了向量需要包含的信息和主要的操作。我们总结如下:对分量值x,y,z的存取。向量间的赋值操作。比较两个向量是否相同。得到零向量。向量求负。向量求模。向量与标量的乘除法。向量标准化。向量加减法。两点(点用向量表示)的距离。向量点乘。向量叉乘。以上的这些功能能够完成我们99%的日常工作,但XNA中也定义了一些其他比较方面的操作,例如直接可以得到向上的单位向量等。那下面我们就看一下XNA中的Vector3是怎么提供这些功能的。对分量x,y,z的存取Vector3类提供了x,y,z的公共字段,可以直接存取。而且整个类中只有这三个字段存储数据,也就是说系统中存在一个Vec阅读全文
posted @ 2011-10-25 22:12 mytudousi 阅读(140) 评论(0) 编辑

2011年10月24日 #

摘要: 看到向量和矩阵在三维开发中的重要性,我就发现当时在上学的时候学的线性代数是多么重要。高中的时候似乎也学了一点向量。要知道那么重要的话,就不混学分了。再说谁知道现在我会对三维感兴趣,去搞三维呢。向量和矩阵是三维里面很重要很基础的数据知识。在数学家眼里,向量是一个数字列表,在程序员眼里,向量就是一个数组,而在几何意义上,向量就是一个有方向的值。在理解上,我们通过数字列表和数组可能不太好理解,但通过几何图形,就可能清晰很多。我觉得应该绝大部分人都学过线性代数,只是还能记得多少呗了。标量标量是我们日常用的最多的,它是对我们平常所用的数字技术的称谓。例如我们买的菜多少斤,房子多少平。但这些例子不好和向量阅读全文
posted @ 2011-10-24 19:45 mytudousi 阅读(437) 评论(0) 编辑

2011年10月23日 #

摘要: 当你选中一个原点,定义好x,y,z三个坐标轴之后,那么世界位置中的任何一个地方都是可以定义的。但实际情况我们会这样做吗?例如你在布置一间房子的时候,你可能会描述我要把这个桌子放在墙角(2,3)米的地方。你能说我放在地球多少经纬度多少度,多少分,多少秒的地方吗?很显然其他的坐标系都有存在的价值,例如局部坐标系,世界坐标系,物体坐标系,摄像机坐标系,惯性坐标系。在具体的情况下,会有具体的坐标系适合这种情况。世界坐标系。世界坐标系应该是大家最熟悉的坐标系,也就是我们所说的经纬度,然后再加上高程。世界坐标系描述了地球上每个点的位置。同时世界坐标系也是我们平常人关心的最大范围,用的最多的坐标系。物体坐标阅读全文
posted @ 2011-10-23 21:33 mytudousi 阅读(439) 评论(0) 编辑

摘要: 相信大家对二维坐标系应该很清楚,因为我们似乎在小学的时候就开始接触二维坐标系。二维对于我自己来说,大学毕业以来一直在做二维GIS系统,对二维坐标系,地理坐标系,以及地图编码切片等都有一定的了解。虽然三维坐标系比二维坐标系只多了一维,仅仅多了一个z轴,但复杂度却大大提升。要知道整天面对的电脑屏幕是一个平面,显示给用户的最终结果也是一个二维的图像。这不仅要求开发人员有丰富的空间想象能力,并且还要实时把三维场景转换成二维图像呈现给用户。二维系统就像在一个大画布上画各种元素。即使一个很大场景,也很多的已有数据,在创建切片索引的时候都很简单,原理也很容易理解。三维系统更像一个真实的世界,在这个世界的各个阅读全文
posted @ 2011-10-23 17:21 mytudousi 阅读(279) 评论(0) 编辑

仅列出标题  下一页