在OpenGL中,使用光源的特性组合,如颜色,位置,方向等等,可以创建多种不同类型的灯光. 常见的几种灯光类型有: 定向光源(directonal) 定位光源(positional) 衰减光源 聚光灯 下面我们用3dsmax中的光源模拟出OpenGL对应类型的光源,渲染出效果图供大家有个快速的印象. 注意一点的是下面图片中的灯光效果,都打开了投影效果,但是在OpenGL,投影并不是灯光的一种附带效果,需要我们额外的进行一些处理工作的. OpengGL中指的定向光源,指的光源设置在无穷远处,光线照…
所谓的摄像机漫游,就是可以在场景中来回走动. 现实中,我们通过眼睛观察东西,身体移动带动眼睛移动观察身边的事物,这也是在漫游. 在OpenGL中我们使用函数LookAt()来操作摄像机在三维场景中进行漫游. LookAt(double eyex, double eyey, double eyez, double centerx, double centery, double centerz, double upx, double upy, double upz); 我们通过改变LookAt的参数…
笔者设想的3D仿真中的元件,是不可能都是“画”出来的.这样就玩复杂了,应该把任务分包出去,让善于制作模型的软件来制作三维模型,我们只需要解析并且显示它即可. 3dsmax制作三维模型的方便,快捷,专业,我想是没有人提反对意见的.它可以把制作好的模型导出为业界通用的3ds格式,如果你愿意的话,3ds格式也可以包含材质和uvw贴图坐标.这样的模型我们在opengl中导入后只用打光和显示,非常省事. 解析3ds格式比较复杂,不过读者可以拿来主义,直接用下面的代码就可以了. 代码已经加入了必要的注释,笔…
多重纹理就把多张贴图隔和在一起.比如下面示例中,一个表现砖墙的纹理,配合一个表现聚光灯效果的灰度图,就形成了砖墙被一个聚光灯照亮的效果,这便是所谓的光照贴图技术. 多重纹理只在OpenGL扩展库中才提供的.OpenGL和D3D比较起来,最大的一个优点是有扩展机制. 显卡硬件厂商开发出一项新功能,就可以针对新功能开发OpenGL扩展,软件开发人员通过这个扩展就可以使用新的硬件功能,而不用等新的OpenGL版来公布才能使用这个新功能.而D3D则必须等到新版本的DirectX发布后才能支持硬件的新功能…
纹理映射非常实用,在游戏场景中已经无所不在了. 一个较少的多边形构成的模形,配合好的纹理贴图进行映射,可以得到逼真的效果.游戏中的天空,地面,墙面,和植物都是纹理贴图进行映射的. 例如最终幻想8的男女主角多边形数量是非常少的,完全靠贴图保证真实效果. 以前的游戏中的树木其实就是一个四边形加上树木贴图和一张TGA格式的透明度贴图镂空树木之外的背景实现的,因此这种树就是一个片. 一个导入的3ds模形,是可以带有纹理贴图和贴图坐标的,直接就可显示出来,不需要我们再做映射关系. 3dsmax中输出3ds…
材质颜色 OpenGL用材料对光的红.绿.蓝三原色的反射率来近似定义材料的颜色.象光源一样,材料颜色也分成环境.漫反射和镜面反射成分,它们决定了材料对环境光.漫反射光和镜面反射光的反射程度.在进行光照计算时,材料对环境光的反射率与每个进入光源的环境光结合,对漫反射光的反射率与每个进入光源的漫反射光结合,对镜面光的反射率与每个进入光源的镜面反射光结合.对环境光与漫反射光的反射程度决定了材料的颜色,并且它们很相似.对镜面反射光的反射率通常是白色或灰色(即对镜面反射光中红.绿.蓝的反射率相同).镜面反…
笔者学到光源这一节,遇到的问题就比较多了,收集了一些如下所述: (1) 导入的3ds模型,如果没有材质光照效果很奇怪.如下图 (2) 导入的3ds模型,有材质,灯光效果发暗,材质偏色,效果也很奇怪. 下图中是有灯光的,但效果惨不忍睹. (3) 场景引入灯光后,场景中的物体的颜色就全部消失了,即合引入颜色材质,效果也是怪怪的. 如下图中的栅格,它原本应该是蓝色的. (4) 场景中有物体引入材质后,整个场景的颜色就变得很奇怪 下图中球体引入材质后,整个场景的颜色就变得很奇怪了. (5) 导入的3ds…
灯光的测试例子:光源参数可以调节的测试场景 先看一下测试场景和效果. 场景中可以切换视图, 以方便观察三维体和灯光的位置.环境光,漫射光,镜面反射光都可以在四种颜色间切换. 灯光位置和摄像机位置(LookAt)可以输入数值或者点动调节,也可以按键盘的QEWASD六个键进行调节. 你还会注意到:球体对光的效果要敏感柔和些,而那个六面体BOX看来效果不好.这是因为灯光对顶点发生作用.在程序里面,球休的顶点数量有20*10,而BOX只有4*6个,而且还重合了一些顶点. 这一点,在3dsmax的全局光照…
Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面写上所有的成员变量,并且指定这些变量的类型.访问这些内部成员时使用.符号.注意是结构体创建的变量,才能用点访问内部成员. 不是直接用结构体访问. package main import "fmt" type Book struct { name string price int } fun…
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格式如:2015075期开奖号码:6,11,13,19,21,32, 蓝球:4 直接用python源码写的抓取双色球最新开奖数据的代码,没使用框架,直接用字符串截取的方式写的,经过测试速度还是很快的 使用pyspider可以轻松分析出需要的内容,不过需要部署框架对只抓取特定内容的小应用来说也没多大必要…