随笔分类 - 工控--3D仿真/Opengl
1
研究有关opengl 3D,物理仿真
摘要:所谓的摄像机漫游,就是可以在场景中来回走动。 现实中,我们通过眼睛观察东西,身体移动带动眼睛移动观察身边的事物,这也是在漫游。 在OpenGL中我们使用函数LookAt()来操作摄像机在三维场景中进行漫游。 LookAt(double eyex, double eyey, double eyez,
阅读全文
摘要:笔者设想的3D仿真中的元件,是不可能都是“画”出来的。这样就玩复杂了,应该把任务分包出去,让善于制作模型的软件来制作三维模型,我们只需要解析并且显示它即可。 3dsmax制作三维模型的方便,快捷,专业,我想是没有人提反对意见的。它可以把制作好的模型导出为业界通用的3ds格式,如果你愿意的话,3ds格
阅读全文
摘要:在写有关文字的主题前,笔者翻阅了几本书上的相关章节,研究了几天无果。 徐明亮《OpenGL游戏编程》书中介绍的是“位图字体”,也就是把字体栅格化,然后画出来。照着书上的VC代码翻译为C#的,突然卡在一个windows API, wglUseFontBitmpas()上面了,这个函数要传入一个DC,惨
阅读全文
摘要:多重纹理就把多张贴图隔和在一起.比如下面示例中,一个表现砖墙的纹理,配合一个表现聚光灯效果的灰度图,就形成了砖墙被一个聚光灯照亮的效果,这便是所谓的光照贴图技术. 多重纹理只在OpenGL扩展库中才提供的.OpenGL和D3D比较起来,最大的一个优点是有扩展机制. 显卡硬件厂商开发出一项新功能,就可
阅读全文
摘要:纹理映射非常实用,在游戏场景中已经无所不在了. 一个较少的多边形构成的模形,配合好的纹理贴图进行映射,可以得到逼真的效果.游戏中的天空,地面,墙面,和植物都是纹理贴图进行映射的. 例如最终幻想8的男女主角多边形数量是非常少的,完全靠贴图保证真实效果。 以前的游戏中的树木其实就是一个四边形加上树木贴图
阅读全文
摘要:材质颜色 OpenGL用材料对光的红、绿、蓝三原色的反射率来近似定义材料的颜色。象光源一样,材料颜色也分成环境、漫反射和镜面反射成分,它们决定了材料对环境光、漫反射光和镜面反射光的反射程度。在进行光照计算时,材料对环境光的反射率与每个进入光源的环境光结合,对漫反射光的反射率与每个进入光源的漫反射光结
阅读全文
摘要:这是根据徐明亮《OpenGL游戏编程》书上光灯一节的一个例子改编的. 从这个例子可以学习到二次曲面的参数设置,程序中提供了两个画球的函数,一个是用三角形画出来的,一个是二次曲面构成的. 你会发现,跟三角形版本不同,二次曲面要做一些设定,否则画出来的球体无法接受光照. 先上代码: 截取了一帧的效果如下
阅读全文
摘要:笔者学到光源这一节,遇到的问题就比较多了,收集了一些如下所述: (1) 导入的3ds模型,如果没有材质光照效果很奇怪.如下图 (2) 导入的3ds模型,有材质,灯光效果发暗,材质偏色,效果也很奇怪.下图中是有灯光的,但效果惨不忍睹. (3) 场景引入灯光后,场景中的物体的颜色就全部消失了,即合引入颜
阅读全文
摘要:灯光的测试例子:光源参数可以调节的测试场景 先看一下测试场景和效果。 场景中可以切换视图, 以方便观察三维体和灯光的位置。环境光,漫射光,镜面反射光都可以在四种颜色间切换。 灯光位置和摄像机位置(LookAt)可以输入数值或者点动调节,也可以按键盘的QEWASD六个键进行调节。 你还会注意到:球体对
阅读全文
摘要:在OpenGL中,使用光源的特性组合,如颜色,位置,方向等等,可以创建多种不同类型的灯光。 常见的几种灯光类型有: 定向光源(directonal) 定位光源(positional) 衰减光源 聚光灯 下面我们用3dsmax中的光源模拟出OpenGL对应类型的光源,渲染出效果图供大家有个快速的印象。
阅读全文
摘要:在3D场景中,每个像素最终显示出来的颜色都是经过大量计算而得到的,其中一些计算是依赖于场景中的光照以及场景中物体对光线的反射和吸收情况. 例如,对于一个红色的物体, 在白色光(白光是红光,绿光和蓝光等量的光) 的照射下它是红色的, 而在绿色光的照射下它将显示为黑色. 如果场景不存在光源效果,那么就没
阅读全文
摘要:我们先引入关于"矩阵堆栈"的官方说法: OpenGL的矩阵堆栈指的就是内存中专门用来存放矩阵数据的某块特殊区域。实际上,在创建、装入、相乘模型变换和投影变换矩阵时,都已用到堆栈操作。一般说来,矩阵堆栈常用于构造具有继承性的模型,即由一些简单目标构成的复杂模型。例如,一辆自行车就是由两个轮子、一个三角
阅读全文
摘要:笔者接触OpenGL最大的困难是: 经常调试一份代码时, 屏幕漆黑一片, 也不知道结果对不对,不知道如何是好! 这其实就是关于OpenGL"变换"的基础概念没有掌握好, 以至于对"将三维体正确的显示在屏幕上指定位置"这样的操作都无法完成. OpenGL变换包括计算机图形学中最基本的三维变换,即几何变
阅读全文
摘要:在OpenGL中,除了视景体定义的6个裁剪平面(上下左右前后)外, 用户还可以定义一个或者多个附加的裁剪平面,以去掉场景中无关的目标. 附加平面裁剪函数原型如下: ClipPlane(OpenGL.GL_CLIP_PLANEi, double[] equation); equation是一个拥有4个
阅读全文
摘要:视口变换主是将视景体内投影的物体显示到二维的视口平面上. 在计算机图形学中,它的定义是将经过几何变换, 投影变换和裁剪变换后的物体显示于屏幕指定区域内. 前面我们讨论过的透视投影, 正射投影, 它们都会产生一个视景体, 利用Viewport()函数, 就可以把这些视景体内投影的物体显示到屏幕指定的区
阅读全文
摘要:上节谈到投影变换分为透视投影(perspective projection)和正射投影(orthographic projection)两种. 透视投影我们已经介绍过了, 现在谈谈正视投影. 正射投影,又叫平行投影.这种投影是一个矩形长方体的平行管道. 它最大的特点是, 无论物体距离相机多远投影后的
阅读全文
摘要:从本节开始,我们使用SharpGL带的VS2010扩展,来直接生成SharpGL工程。 如果你新建项目时,没有看到下面的SharpGL项目,那么请事先在SharpGL源代码中找到一个叫 ”SharpGL 2.0 Visual Studio Extension“目录 ,安装名为 SharpGL.vsi
阅读全文
摘要:(二) 模型变换 模形变换就是指的在世界坐标系中(world space)做“移动”,“旋转", "缩放"三种操作。 首先要说明的,在Opengl中,是用4x4矩阵进行坐标变换,OpenGL的4x4矩阵是按列排列的,就像下面这样。 所谓的模型变换,就是对这个矩阵进行变换。 描述三维世界你就得先设计三
阅读全文
摘要:(一)平台构建与Opengl的hello World OpenGL就是3d绘图的API,微软针和它竞争推出D3D,也就是玩游戏时最常见的DirectorX组件中的3d功能。 所以不要指望windows提供对Opengl提供最新的什么支持。 C#的开发环境也没有封装Opengl的组件,Opengl的官
阅读全文
摘要:®版权声明:本文为博主原创文章,未经博主允许不得转载。 一.ODE介绍与平台搭建. 接触到动力学仿真引擎, 是因为笔者的一款PLC仿真软件需要3D仿真.我需要达到的效果是,以3D方式构建出工控行业中常见的元件,比如感应器,气缸,机械手,拉带.这些元件在场景中通过用户的组合摆放,设置好相关的属性后,可
阅读全文
1