
图形学原理与概念
文章平均质量分 90
jiexuan357
记录学习的点点滴滴。
闻道有先后,术业有专攻,如是而已。
展开
-
齐次坐标的理解
一直对齐次坐标这个概念的理解不够彻底,只见大部分的书中说道“齐次坐标在仿射变换中非常的方便”,然后就没有了后文,今天在一个叫做“三百年 重生”的博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐次坐标有非常精辟的说明,特别是针对这样一句话进行了有力的证明:“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill转载 2012-06-23 14:54:38 · 494 阅读 · 0 评论 -
面向GPU的多LOD因子的大规模场景可视化策略
面向GPU的多LOD因子的大规模场景可视化策略张嘉华 梁成 陈利强 陈春华newzjh@msn.com aliceliang@163.net sailmer@hotmail.com musalan@msn.com华南理工大学计算机科学与工程学院(510640)图 1. 多LOD因子控制的大规模地形渲染(C1=1.03,C2=19.55,C3=0.868 下山转载 2012-06-26 23:22:53 · 1251 阅读 · 0 评论 -
Quaternion(四元数)和旋转
Quaternion 的定义四元数一般定义如下: q=w+xi+yj+zk其中 w,x,y,z是实数。同时,有: i*i=-1 j*j=-1 k*k=-1四元数也可以表示为: q=[w,v]其中v=(x,y,z)是矢量,w是标量,虽然v是矢量,但不能简单的理解为3D空间的矢量,它是4维空间中的的矢量,也是非常转载 2012-07-08 03:10:02 · 1392 阅读 · 0 评论 -
四元数旋转
http://caterpillar.onlyfun.net/Gossip/ComputerGraphics/QuaternionsRotate.htm在討論「四元數」之前,我們來想想對三維直角座標而言,在物體旋轉會有何影響,可以擴充三維直角座標系統的旋轉為三角度系統(Three-angle system),在Game Programming Gems中有提供這麼一段:Quat转载 2012-07-09 00:16:55 · 767 阅读 · 0 评论 -
1、框架
Copyright © MikeFeng QQ: 76848502 友情提醒:所谓的框架是指SDK目录下\Samples\C++\Common路径下的DXUT系列函数包装。学习框架的前提是必须有足够的Windows API,GUI编程经验,必须熟悉Windows的消息机制,回调机制,最好有万行左右的C/C++编程经验。MFC在这里没有任何用处。另外我觉得最好在看程序之前对于D3D的所有转载 2012-07-09 00:29:55 · 419 阅读 · 0 评论 -
3、索引缓冲
索引缓冲Index Buffer是由用户定义的,用来告诉D3D渲染顶点顺序的WORD或者DWORD数组。索引缓冲离不开顶点缓冲,但是顶点缓冲却不一定需要索引缓冲。创建索引缓冲的过程和创建顶点缓冲类似,首先是声明,然后在OnCreateDevice中初始化和创建,在OnFrameRender中渲染,在OnDestroyDevice中销毁。相关代码如下:声明:LPDIREC转载 2012-07-09 00:31:06 · 516 阅读 · 0 评论 -
4、纹理
Copyright © MikeFeng QQ: 76848502 纹理在D3D中是一个非常重要的概念,它的出现改变了以前3D物体表面不真实的状况,为程序员提供了将2维图像应用到3维物体上去的功能。请做好心理准备,因为新的概念将像暴风骤雨般的袭来,而在没有弄懂基本概念之前是不可能进行下一步的学习的。下面是一些术语的大致概念:纹理( Textrue ):将要应用到3维(或者2维转载 2012-07-09 00:32:03 · 491 阅读 · 0 评论 -
7、多重纹理和纹理混合
Copyright © MikeFeng QQ: 76848502 多重纹理MultiTexture:使用多张纹理来渲染一个场景,只调用一次(DrawPrimitive) 纹理混合TextureBlending:按要求混合在同一个位置的像素点上色彩或透明度 在多重纹理(multitexturing)出现之前,DirectX支持的是多次渲染(multipass转载 2012-07-09 00:33:46 · 1100 阅读 · 0 评论 -
关于Whisperwind数学库的选择:XnaMath
in Whisperwind(我的开源游戏项目) , by 李素颙in Whisperwind(我的开源游戏项目) , by 李素颙最近又开始愁数学库的问题了,折腾了一天,总算定了下来,大抵上如下:一般的开源引擎或是商业引擎基本上的选择都是自己去写,写一个通用库然后按照自己需要支持的平台去针对性优化,如果实力强悍这种方法当然是最好的,易控转载 2012-07-20 21:20:38 · 980 阅读 · 0 评论 -
Direct3D9 中的Gamma矫正
纹理内容常常是存在sRGB格式中的。关于这个格式的细节是可以被找到的。通常,像素管线假定颜色是线性的以便融合(blending)操作可以在线性空间中进行。因为sRGB中的内容是Gamma较正,所以融合操作在线性空间中处理会导致错误的结果。显卡在读到有关sRGB内容的时候便会取消Gamma较正以避免错误的发生。然后当输出像素的时候再将像素信息写回sRGB格式中。在这种情况下,所有像素管线中的操作就可转载 2012-10-16 14:26:35 · 876 阅读 · 0 评论 -
投影矩阵的推导
译者微博链接http://hi.baidu.com/twjblog/item/cbbcf213c4b5c0f5ddeeca2c本文乃译文,原文地址为http://www.codeguru.com/cpp/misc/misc/math/article.php/c10123__1/Deriving-Projection-Matrices.htm,由于本人能力有限,有译的不明白的地方转载 2012-10-25 14:25:19 · 1089 阅读 · 0 评论 -
D3D的视矩阵是如何构造的
原帖地址:http://blog.youkuaiyun.com/ysbcg/article/details/2163770可以看到 D3DXMatrixLookAtLH 的说明中是用如下的说明来解释如何构造这个矩阵的zaxis = normal(At - Eye)xaxis = normal(cross(Up, zaxis))yaxis = cross(zaxis, xax转载 2013-05-10 09:01:51 · 594 阅读 · 0 评论 -
高效真实的云渲染算法
原文地址:http://www.cnblogs.com/effulgent/archive/2008/10/06/1305029.html原文:Realistic and Fast Cloud RenderingNinianeWangMicrosoftCorporation(nowatGoogleInc.)niniane@ofb.netNovember11,20转载 2013-12-09 11:27:09 · 979 阅读 · 0 评论 -
关于GLSL的gl_FragCoord、gl_FragDepth以及深度计算
原帖地址:http://my.oschina.net/lyr/blog/90681gl_FragCoord和gl_FragDepth分别是片元着色器的输入和输出变量。gl_FragCoord是个vec4,四个分量分别对应x, y, z和1/w。其中,x和y是当前片元的窗口相对坐标,不过它们不是整数,小数部分恒为0.5。x - 0.5和y - 0.5分别位于[0, win转载 2014-02-25 19:28:03 · 2501 阅读 · 0 评论 -
《OpenGLES 2.0 Programming Guide》学习笔记
原帖地址:http://blog.youkuaiyun.com/n5/article/details/72423061 介绍OpenGLESgles由KhronosGroup创立,目前有3个版本1.0,1.1(统称1.x)和2.0。ES1.0,1.1由OpenGL1.3,1.5继承而来,ES2.0由OpenGL2.0继承而来。OpenGLES 2.0的specifications有转载 2014-03-23 21:11:38 · 701 阅读 · 0 评论 -
shader复习与深入:Normal Map(法线贴图)Ⅰ
Normal Map法线贴图,想必每个学习计算机图形学的人都不陌生。今天在这里按我的理解总结一下,作为复习,也作为深入学习吧。——ZwqXin.com自从看完那本《数学在计算机图形学上的应用》后,一直想好好地真正实践一次法线贴图/凹凸贴图呢(以前是根据橙书弄了一下罢了)。昨天偶尔看到篇涉及BumpMap的文,正好觉得是个机会,便在网上狂找相关资料——果然,越看越觉得自己还有很多理论的地方需转载 2012-06-26 22:36:30 · 1000 阅读 · 0 评论 -
shader复习与深入:Normal Map(法线贴图)Ⅱ
在前文中我尽可能地把我所理解Normal Map原理总结了一下,本续篇将从实践部分继续开始,各位看官尽情拍砖。——ZwqXin.com上篇见:[shader复习与深入:Normal Map(法线贴图)Ⅰ]本文来源于 ZwqXin (http://www.zwqxin.com/), 转载请注明 原文地址:http://www.zwqxin.com/archives/转载 2012-06-26 22:37:07 · 842 阅读 · 0 评论 -
Shander中所用贴图综述
1、 What`s Bump Mapping?Bump Mapping通过改变几何体表面各点的法线,使本来是平的东西看起来有凹凸的效果,是一种欺骗眼睛的技术:)。我们知道,如果几何体表面有高低不平的凹凸,那么表面上各点的法线方向就会不同, 那么当光照射到这些点上时,各点光照产生效果就不一样,那么我们最终看到的各点就是凹凸不平的。如果几何体表面是平的,但是各点的法转载 2012-06-26 19:28:38 · 604 阅读 · 0 评论 -
Per Pixel Lighting(逐像素光照)
Shader快速复习,巩固知识加强感觉。今天的内容是Per Pixel Lighting(逐像素光照)。——ZwqXin.com抛开光线跟踪和辐射度算法,现在的实时渲染主要用的是GOURAUD模型和PHONG模型,粗俗地说,就是一个是顶点级别的一个是像素级别的,对应per vertex lighting和per pixel lighting。细节点说,就是一个是对顶点插值,一个是对法线插值转载 2012-06-26 23:03:32 · 665 阅读 · 0 评论 -
推导正交投影变换
-潘宏-2009.4.20 -本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教-email: popyy@netease.com 之前我们在《深入探索透视投影变换》以及《深入探索透视投影变换(续)》中研究了OpenGL、D3D以及M3G的透视投影变换的原理以及生成方法。这些方法在当前的主流图形API中得到了普遍使用。但关于投影应用,还有一类经常使用的投转载 2012-07-09 00:00:38 · 943 阅读 · 0 评论 -
推导相机变换矩阵
-潘宏-2009.12.31-本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教-email: popyy@netease.com 一些网友写信给我希望能够了解固定流水线中世界空间到相机空间变换矩阵的具体推导过程。其实之前我在《向量几何在游戏编程中的使用6》中已经简单的把相机变换作为一个使用基理论的例子进行了说明,但可能仍然不够具体。这篇文章中,我会尽力阐述相机转载 2012-07-09 00:05:27 · 619 阅读 · 0 评论 -
向量几何在游戏编程中的使用6
3-D空间中的基变换与坐标变换-Twinsen编写-本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教-我的Email-address: popyy@netease.com一、空间坐标系的基和基矩阵在3-D空间中,我们用空间坐标系来规范物体的位置,空间坐标系由3个相互垂直的坐标轴组成,我们就把它们作为我们观察3-D空间的基础,空间中物体的位置可以转载 2012-07-09 00:12:04 · 693 阅读 · 0 评论 -
深入探索透视投影变换(续)
-潘宏-2009.4.14-本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教-email: popyy@netease.com 在上一篇文章中我们讨论了透视投影变换的原理,分析了OpenGL所使用的透视投影矩阵的生成方法。正如我们所说,不同的图形API因为左右手坐标系、行向量列向量矩阵以及变换范围等等的不同导致了矩阵的差异,可以有几十个不同的透视投影矩阵转载 2012-07-09 00:04:37 · 589 阅读 · 0 评论 -
四元数旋转公式的证明
四元数旋转公式的证明对于左手坐标系,顺时针旋转有:V’q = Q*Vq*Q*;其中V’q为旋转后的四元数。假设旋转轴单位向量为q,要旋转的向量为v.旋转角度为θ,则四元素有:Vq =0+v=v;Q=cos(θ/2)+sin(θ/2)q;Q*= cos(θ/2)-sin(θ/2)q;带入上面公式有:V’q=(cos(θ/2)+sin(θ/2)q)*(0+v)*(cos转载 2012-07-09 00:22:09 · 1486 阅读 · 0 评论 -
5、动画和矩阵变换
Copyright © MikeFeng QQ: 76848502 D3D中世界的运动是通过矩阵变化完成的。这里不打算讲数学知识,相关问题请参考计算机图形学书籍。 在D3D中矩阵变换分为三种:世界变换,观察变换和投影变换。世界变换描述了物体本身的缩放,旋转和平移,也就是物体本身的运动;观察变换描述了一个观察者在场景中的位置和朝向;投影变换描述了观察者可以看到内容的范围,类似转载 2012-07-09 00:32:35 · 722 阅读 · 0 评论 -
6、光照和材质
Copyright © MikeFeng QQ: 76848502 D3D支持三种光:环境光(Ambient Light),漫反射(Diffuse Light)和镜面反射(Specular Light)。镜面反射需要更多计算,因此D3D默认关闭镜面反射。可以通过给SetRenderState传D3DRS_AMBIENT来设置环境光。 在现实世界中,我们看到一个红色的物转载 2012-07-09 00:32:58 · 1350 阅读 · 0 评论 -
3D图形渲染通道负载优化的几种方法
3D图形渲染通道负载优化的几种方法 一般来说, 定位渲染通道瓶颈的方法就是改变渲染通道每个步骤的工作量, 如果吞吐量也改变了, 那个步骤就是瓶颈. 找到了瓶颈就要想办法消除瓶颈, 可以减少该步骤的工作量, 增加其他步骤的工作量. 一般在光栅化之前的瓶颈称作”transform bound”, 三角形设置处理后的瓶颈称作”fill bound”转载 2012-07-08 23:53:11 · 480 阅读 · 0 评论 -
深入探索透视投影变换
深入探索透视投影变换-Twinsen编写-本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教-email: popyy@netease.com 透视投影是3D固定流水线的重要组成部分,是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中,待裁剪完毕后进行透视除法的行为。在算法中它是通过透视矩阵乘法和转载 2012-07-09 00:07:43 · 659 阅读 · 0 评论 -
物体绕任意向量的旋转——四元数法、旋转矩阵法、欧拉角法的比较
3D空间中的旋转可用旋转矩阵、欧拉角或四元数等形式来表示,他们不过都是数学工具,其中在绕任意向量的旋转方面,旋转矩阵和四元数两种工具用的较多,欧拉角由于存在万向节死锁等问题,使用存在限制。(本文假设坐标系为左手坐标系中,旋转方向为顺时针。)所求问题:给定任意单位轴q(q1,q2,q3)(向量),求向量p(x,y,z)(或点p)饶q旋转theta角度的变换后的新向量p'(或点转载 2012-07-09 00:18:17 · 5559 阅读 · 0 评论 -
2、顶点缓冲
Copyright © MikeFeng QQ: 76848502 D3D9以一种比较易于理解的方式让程序员来组织游戏画面,这种方式就是顶点缓冲。程序员可以自己定义一组记录多边形定点颜色,纹理位置等的数组,让D3D9去自动生成多边形内部每个像素的信息。为了和以后的vertex shader相区别,我们现在谈论的都是固定功能的顶点处理( Fixed-Function )。 上面转载 2012-07-09 00:30:26 · 496 阅读 · 0 评论 -
8、DXUT框架
Copyright © MikeFeng QQ: 76848502 温故而知新,前面的DXUT框架我只看了一个外壳,我觉得这次框架的亮点就在于它对于图形界面的支持。如果说Win32 API SDK中gdi部分是主旋律,那么MFC就是一个流行歌曲作家发挥之后完成的作品,而DXUT的图形框架则继承了Platform SDK中的风格,代码行间给人一种高贵的感觉。-,-扯远了,拉回来。因为gd转载 2012-07-09 00:34:08 · 382 阅读 · 0 评论 -
计算三角形网格的tangent space
转自:http://absolute.iteye.com/blog/213872又一篇学习笔记,参考Mathematics for 3D Game Programming and Computer Graphics和ShaderX4上一篇关于tangent space计算的文章写的东西。对于计算时需要分裂顶点的内容看的还不是太清楚-_-b。另外,目前的算法还不能完美处理镜像或者在纹理不连续转载 2012-06-25 20:34:26 · 504 阅读 · 0 评论 -
半透明渲染新技术摘录
原文地址:http://www.cnblogs.com/lancidie/archive/2011/08/18/2144797.html转载 2014-11-01 17:47:46 · 808 阅读 · 0 评论