下图是我们要修改后的效果图: 一.深度检测 1.模型Z轴显示有问题: 上一次试验中,如果认真留意,会发现一个问题.当控制锥体在左右或上下旋转时,你会发现锥体看起来是在+-180度之间来回摆动,而不是360度的旋转.锥体的底面总是朝向观察者.这个我们可以通过修改锥体底面的颜色方便观察.如下图: 正如上面的两幅图,在不同的角度看,底面永远都是在最上面.其实这是跟我们前面代码上的画图有关.前面我们的代码是,先画锥体的侧面,再画底面.类似于我们小学画画时一样,最后画的都是把前面画的给覆盖了. 那应该怎样…
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11543828.html 最近实习要用到opengl库就是跟opencv 有点像的那个,然后下了一个3D模型的读取显示来研究 现在分享给大家吧  注释基本我都打好了,所以也懒得再写很多解析了,自己看注释吧! 参考博客是这篇:https://blog.csdn.net/ding_programmer/article/details/91049357 本文用到obj 文件的百度云下载是: 链接:h…
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11681069.html 一.初始化世界以及模型 /// 冲突配置包含内存的默认设置,冲突设置.高级用户可以创建自己的配置. btDefaultCollisionConfiguration* collisionConfiguration = new btDefaultCollisionConfiguration(); /// 使用默认的冲突调度程序.对于并行处理,您可以使用不同的分派器(参见E…
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11627508.html 前言: 因为接下来的项目需求是要读取多个3D模型,并且移动拼接,那么我就先把基本的小demo给写好当做前期测试. 在我之前网上的博客都只有读取移动旋转单个3d模型的, 导致我根本查不到有关的资料,只能自己写了. 前人栽树,后人乘凉. 技术就是要分享出来,大家共同进步,我们走过的坑没有必要让后来人再走一次. 有了前面两篇的分部实现,掌握这次的就不难了: OpenGl读取…
这一节教程的内容会比较少,我们仅仅是对上一节教程中的代码进行扩展,在窗口中渲染一个三角形出来. 本节我们以下图所示正方形来讲解OpenGl中的坐标系统.当沿着Z轴负方向看时,可见顶点的坐标必须在这个正方形内,这样视口变换才可以將它们映射到窗口中的可见区域. 点(-1.0,-1.0)对应窗口的左下角,(-1.0,1.0)对应窗口的左上角,依此类推.如果指定一个顶点在这个正方形之外,构成的三角形在这个正方形之外的部分会被裁剪掉,将会看不到这部分. 显示三角形代码 /* Copyright 2010…
使用三角形绘制3D模型 三角形是基本的多边形,任何多变形都能由三角形组成.三角形是由三个顶点的连线组成.三个点分别是v0:v1:v2. 1.绕法 从某个顶点开始,有两种连线的方法,顺时针和逆时针,这是两种不同的绕法. 2.连接多个三角形 三角形能拼出任何多边形平面或曲面.所以对于平面或曲面,我们只需要保存组成这个面的所有三角形的顶点以及拼法即可.例如某个面有n个三角形组成,我们需要保存3n个顶点.如果我们我比较好的方法,可以减少保存顶点的个数,那么将大大减少内存.以下两种方法能够实现我们的想法.…
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11783026.html 自己写了个简单的类读取解析obj模型,使用导入类,然后new个对象,在读取obj模型,然后调用显示列表显示就可以了.至于其他什么旋转移动的你们自己加起来应该很容易的,因为我有看过c#下别人写的obj模型解析的代码项目,加了很多东西,我都找不到自己要用的代码在哪里,而我只需要读取解析obj模型这块代码而已,气的我自己写了个类自己解析,所以我怕我代码写多了反而看起来不好理…
[OpenGL ES 03]3D变换:模型,视图,投影与Viewport 罗朝辉 (http://blog.csdn.net/kesalin) 本文遵循“署名-非商业用途-保持一致”创作公用协议 系列文章: [OpenGL ES 01]OpenGL ES之初体验 [OpenGL ES 02]OpenGL ES渲染管线与着色器 前言 本来打算直接写教程 04 的,但是想到3D 变换涉及的数学知识较多,往往是很多初学者的拦路虎(比如我自己).再加上OpenGL ES 2.0 不再提供OpenGL E…
笛卡尔坐标 一维坐标系 以一个点为原点,选定一个方向为正方向(相反的方向为反方向),以一定的距离为标尺建立一维坐标系.一维坐标系一般应用于描述在一维空间中的距离. 举个例子:一维坐标系好比一条拉直的电线(忽略长度),一只老鼠在电线上,对于这只老鼠来说,这个一维坐标系(电线)就是它的世界,只能沿着电线的方向向前或向后运动(当然也可以不动),这只老鼠这个时候是活在"一维"世界里. 二维坐标系 百度百科:二维,两根的坐标轴,有平面直角坐标丶自然坐标丶极坐标等,研究平面运动时用.二维坐标系可以…
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11620088.html 前言: 因为接下来的项目需求是要读取多个3D模型,并且移动拼接,那么我就先实现鼠标控制两个物体移动互不干扰来当踏脚石. 一.鼠标控制函数准备 我们需要对鼠标信息的获取,那么必然需要一个鼠标事件的响应函数来控制,很好opengl已经有内部的鼠标控制函数了,我们直接拿来使用就行了. glutMouseFunc( (void*)Func(int button, int st…