opcv
luyuncsd123
这个作者很懒,什么都没留下…
展开
-
opcv学习日志一
头文件: 我们实用GLUT处理窗口管理操作,不需要引入gl.h和glu.h,因为GLUT保证了正确的引入。 我们可以实用 #include 此外,我们总引入c++程序锁需要的头文件。 #include #include #include 对于新c++标准,头文件前加原创 2013-09-03 00:19:24 · 1420 阅读 · 0 评论 -
OpenGL的计算机图形学
一、Gobal VS Local Lighting局部光照(Local illumation) 简单说就是只考虑光源到模型表面的照射效果。特点:速度快,真实度欠佳。全局光照(Global illumination) 简单的说就是考虑到环境中所有表面和光源相互作用的照射效果。特点:速度慢,真实度高。相关课件截图:二、Ray Tr转载 2013-10-22 22:45:59 · 5935 阅读 · 1 评论 -
向量几何在游戏编程中的使用1
简单的2-D追踪-Twinsen编写-本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教-我的Email-address: popyy@netease.comAndre Lamothe说:“向量几何是游戏程序员最好的朋友”。一点不假,向量几何在游戏编程中的地位不容忽视,因为在游戏程序员的眼中,显示屏幕就是一个坐标系,运动物体的轨迹就是物体在这个坐标系曲线转载 2013-11-03 00:34:42 · 1333 阅读 · 0 评论 -
向量几何在游戏编程中的使用2
第一次我说了一下向量知识的基础内容和一点使用技巧,浅显的展示了它在游戏编程中的作用。这次深入一些,充分利用向量的性质模仿一个物理现象。首先,我要介绍一下将要使用的两个基本但非常重要的技巧。一、求与某个向量a正交的向量b根据向量内积的性质以及正交向量之间的关系,有:设a=(xa,ya),b=(xb,yb)a.b = 0=> xa*xb + ya*y转载 2013-11-03 00:42:52 · 1374 阅读 · 0 评论 -
向量几何在游戏编程中的使用3
一、使用向量进行障碍检测的原理上次说了使用向量模拟任意角度的反弹,这次谈谈它的前提---障碍碰撞。在游戏中进行障碍碰撞检测,基本思路是这样的:给定一个障碍范围,判断物体在这次移动后会不会进入这个范围,如果会,就发生碰撞,否则不发生碰撞。在实际操作中,是用物体的边界来判断还是其他部位判断完全取决于编程者。这时候,就可以从这个部位沿着速度的方向引出一条速度向量线,判断一下这条线段(从检转载 2013-11-03 00:46:12 · 1055 阅读 · 0 评论 -
向量几何在游戏编程中的使用4
2-D物体间的碰撞响应-Twinsen编写 -本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教-我的Email-address: popyy@netease.com这次我要分析两个球体之间的碰撞响应,这样我们就可以结合以前的知识来编写一款最基本的2-D台球游戏了,虽然粗糙了点,但却是个很好的开始,对吗?一、初步分析中学时候上物理课能够认真听转载 2013-11-03 00:47:41 · 1131 阅读 · 0 评论 -
向量几何在游戏编程中的使用5
物体的旋转-Twinsen编写-本人水平有限,疏忽错误在所难免,还请各位数学高手、编程高手不吝赐教-我的Email-address: popyy@netease.com欢迎回来这里!此次我们要讨论向量的旋转问题,包括平面绕点旋转和空间绕轴旋转两部分。对于游戏程序员来说,有了向量的旋转,就代表有了操纵游戏中物体旋转的钥匙,而不论它是一个平面精灵还是一组空间的网格体亦或转载 2013-11-03 00:50:19 · 1225 阅读 · 0 评论 -
深入探索透视投影变换
透视投影是3D固定流水线的重要组成部分,是将相机空间中的点从视锥体(frustum)变换到规则观察体(Canonical View Volume)中,待裁剪完毕后进行透视除法的行为。在算法中它是通过透视矩阵乘法和透视除法两步完成的。 透视投影变换是令很多刚刚进入3D图形领域的开发人员感到迷惑乃至神秘的一个图形技术。其中的理解困难在于步骤繁琐,对一些基础知识过分依赖,一旦对它们中的任转载 2013-11-03 00:58:42 · 1096 阅读 · 0 评论 -
相机变换矩阵
一些网友写信给我希望能够了解固定流水线中世界空间到相机空间变换矩阵的具体推导过程。其实之前我在《向量几何在游戏编程中的使用6》中已经简单的把相机变换作为一个使用基理论的例子进行了说明,但可能仍然不够具体。这篇文章中,我会尽力阐述相机变换的整个来龙去脉。希望能够对正在学习固定流水线的朋友们有所帮助。这里我们仍然会在推导相机变换之前介绍几个理论知识,目的是为了更好的理解推导过程。我们马上开始!什么转载 2013-11-03 01:01:52 · 2156 阅读 · 1 评论 -
渲染管线
关于渲染管线将什么呢?无非就是在OpenGL的管道当中各个部分的功能以及如何在管道当中形成了我们想要的最终的一幅图.(像素).而管线当中的操作可分为以下几个部分: 阶段1. 指定几何对象. 如:点 线 三角形.等一些几何图元..OpenGL绘制几何图元的方法有以下三种: 一次一个顶点.即使用glBegin() glVertex() glEnd() 指定几何对转载 2013-09-04 17:19:21 · 1610 阅读 · 0 评论 -
在Mac OS X 用C++编写OpenGL程序
Mac OS X中自带的OpenGL库和GLUT库,我们在编译自己的C++代码的时候,只需要将这两个框架加入进去就好。命令的形式编译如下:[cpp] view plaincopyg++ -framework OpenGL -framework GLUT -o TestPrj main.cpp 那么上面的命令怎样在编译转载 2014-01-08 09:47:35 · 4917 阅读 · 1 评论 -
阴影体
转自http://blog.donews.com/yyh/archive/2005/05/19/387143.aspx前言:真实的游戏效果shadow volume 这个术语几乎是随着 DOOM3 的发布而成为FPS 玩家和图形学爱好者谈论的对象的。虽然这个游戏还没有上市,但是凭借 John Carmack 的传奇经历以及 DOOM3发布的一些让人惊讶的预览图片,我们仍然有理由认为它将转载 2013-09-05 08:44:11 · 1147 阅读 · 0 评论 -
opcv学习日志三 几何变换 1
几何变换也可称为建模变换。 我们利用扫描算法,可以将凸缘显示在光栅设备。 建模变换一般用于构造厂家或给出由多个部分组合而成的复杂对象的层次描述。 有些图形系统提供2套变换子程序,而其他一些软件包则提供一套能同时用于几何变换和建模变换的函数。 平移,旋转,缩放是所有图形软件包中都含有的几何变换函数。其他可能包括在图形软件包中的变换原创 2013-09-03 15:50:02 · 1092 阅读 · 0 评论 -
一些 空间定义
Local Space --> World Space --> View Space --> Backface Culling --> Lighting --> Clipping --> Projection --> Viewport Space --> Rasterization Local Space(本地空间):本地空间以叫建模空间,这是我们定义物体三角形列的坐标系。原创 2013-09-04 20:08:51 · 1004 阅读 · 0 评论 -
opcv学习日志4 光栅
几何变换的光栅方法: 光栅系统的特殊功能为特定的二维变换提供了另一种方法。光栅系统将图像信息作为颜色图案存储在帧缓冲器种。因此只需很少的算术操作。 光栅操作:控制矩形像素数组的光栅功能通常称为光栅操作。 块移动:将一块像素从一个位置移动到另一个位置的过程。 图形软件中通常包含完成某些光栅操作的子程序。原创 2013-09-03 21:06:18 · 1057 阅读 · 0 评论 -
opcv学习日志二 输出图元及属性
图形输出原语graphic output primitive 简称为图元:图形软件包中用来描述各种图形元素的函数。 描述对象几何要素的输出图元一般称为几何图元。 点的定位和直线段是最简单的几何图元。 通过将场景信息传给观察函数、由观察函数识别可见面、将对象映射到视频监视器上来实现对象的显示。 扫描转换过程将颜色值等场景信息保存到帧缓存的响应的位置,从而在输出设原创 2013-09-03 01:54:55 · 889 阅读 · 0 评论 -
OpenGL镂空
glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_POLYGON_STIPPLE); glPolygonStipple(Mask); glRectf(-0.5f, -0.5f, 0.0f, 0.0f); // 在左下方绘制一个有镂空效果的正方形 glDisable(GL_POLYGON_STIPP原创 2013-09-04 14:56:24 · 1945 阅读 · 0 评论 -
OpenGL代码段
OpenGL允许为同一多边形的不同顶点指定不同的颜色。例如:#include const GLdouble Pi = 3.1415926536;void myDisplay(void){ int i; // glShadeModel(GL_FLAT); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_原创 2013-09-04 15:06:42 · 751 阅读 · 0 评论 -
opcv学习日志 7 光照
OpenGL至少会支持8个光源。 在物理学中,光线如果射入理想的光滑平面,则反射后的光线是很规则的(这样的反射称为镜面反射)。光线如果射入粗糙的、不光滑的平面,则反射后的光线是杂乱的(这样的反射称为漫反射)。现实生活中的物体在反射光线时,并不是绝对的镜面反射或漫反射,但可以看成是这两种反射的叠加。对于光源发出的光线,可以分别设置其经过镜面反射和漫反射后的光线强度。对于被光线照射的材质,原创 2013-09-04 16:49:23 · 1076 阅读 · 0 评论 -
view matrix 计算
一、列主序(OPENGL)和行主序(Direct3D)在计算ViewMatrix之前先讲明列主序(OPENGL)和行主序(Direct3D),搞清楚这个,理解算法程序会很有帮助。1.矩阵在内存中的存储 不管是D3D还是OpenGL,使用的矩阵都是线性代数标准的矩阵,只是在存储方式上有所不同。分别为:行主序(Direct3D),列主序(OpenGL) 存储顺序说明转载 2013-09-04 19:48:12 · 1634 阅读 · 0 评论 -
opvc 学习日志6 单缓冲 双缓冲
虽然绝大多数平台都支持双缓冲技术,但这一技术并不是OpenGL标准中的内容。OpenGL为了保证更好的可移植性,允许在实现时不使用双缓冲技术。当然,我们常用的PC都是支持双缓冲技术的。要启动双缓冲功能,最简单的办法就是使用GLUT工具包。我们以前在main函数里面写:glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); 其中GLUT_SIN原创 2013-09-04 16:08:49 · 958 阅读 · 0 评论 -
骨骼蒙皮动画(Skinned Mesh)的原理解析(一)
骨骼蒙皮动画(Skinned Mesh)的原理解析(一) 一)3D模型动画基本原理和分类 3D模型动画的基本原理是让模型中各顶点的位置随时间变化。主要种类有Morph动画,关节动画和骨骼蒙皮动画(Skinned Mesh)。从动画数据的角度来说,三者一般都采用关键帧技术,即只给出关键帧的数据,其他帧的数据使用插值得到。但由于这三种技术的不同,关键帧的数据是不一样的。转载 2013-09-04 10:23:42 · 1509 阅读 · 0 评论 -
opcv学习日志 5 几何变换2 三维变换 垂直同步
假设当前矩阵为单位矩阵,然后先乘以一个表示旋转的矩阵R,再乘以一个表示移动的矩阵T,最后得到的矩阵再乘上每一个顶点的坐标矩阵v。所以,经过变换得到的顶点坐标就是((RT)v)。由于矩阵乘法的结合率,((RT)v) = (R(Tv)),换句话说,实际上是先进行移动,然后进行旋转。即:实际变换的顺序与代码中写的顺序是相反的。由于“先移动后旋转”和“先旋转后移动”得到的结果很可能不同,初学的时候需要特别原创 2013-09-04 15:26:36 · 920 阅读 · 0 评论 -
渲染流程
(注:【D3D11游戏编程】学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~) 3D图形学研究的基本内容,即给定场景的描述,包括各个物体的材质、纹理、坐标等,照相机的位置及朝向,光源等信息,计算其最终在二维的光栅化显示器上对应的显示结果。从最初的场景描述到最终的显示结果,这整个过程就是在3D渲染转载 2013-09-04 22:29:07 · 13177 阅读 · 1 评论