- 博客(293)
- 资源 (102)
- 收藏
- 关注
原创 阴影映射(Shadow Map)的研究(六)
成功地将阴影映射与Qt Quick 2整合之后,接下来可以将阴影映射的效果变得更漂亮一些。如果你成功地运行过我制作的演示程序,那么就会发现,阴影映射的效果并不是那么理想,可能有噪点(粉刺)的出现。这个是和阴影的产生相关,主要还是由于阴影映射这个算法它要求产生的阴影精度是有限的。很多改进的算法都是围绕着如何让阴影更加自然进行研究的。这里我也尝试模仿了一个稍微简单的算法:PCF算法。
2015-05-25 15:24:41 2687 1
原创 阴影映射(Shadow Map)的研究(五)
我成功地将别人的例子加以改进,使用QOpenGLWidget作为渲染窗口,将阴影映射渲染了出来。目前可以确定的是,使用OpenGL ES 2.0作为渲染的接口要求,能够让目前绝大多数机器都能够顺利兼容,但是囿于渲染窗口,可能在某些平台上表现不好。如果移植到Qt Quick 2,这样能够支持的平台就更多了。现在我将这些接口统统使用Qt的方式实现了,移植到Qt Quick 2也很简单。
2015-05-25 15:08:19 2466
原创 阴影映射(Shadow Map)的研究(四)
上一篇文章粗略地介绍了要实现OpenGL ES 2.0的阴影映射所需的知识难点,现在简略地说明一下:1、FBO;2、着色器;3、float的分拆以及组合。上篇文章虽然说已经成功地移植了来自Java编写的Android下阴影映射的效果,但这边采用的很大程度上是OpenGL原生代码编写的内容,接下来的目标是采用自Qt 5起就逐渐采用的Qt对OpenGL的封装类,用面向对象的思维来处理OpenGL对象,这样让代码更加优雅。
2015-05-25 14:54:19 2931
原创 阴影映射(Shadow Map)的研究(三)
最近为了自己制作的项目可是吃了不少苦头,这其中关键的一点就是想要实现阴影映射(Shadow Map)。为了实现目标,我参考了网络上很多相关的资料,也看了一些案例,最终花了我一个月的时间将这个效果实现了。
2015-05-25 13:02:43 3329
原创 有关GLSL中的gl_FragCoord
在研究阴影映射的时候,我发现了一个很有意思的变量,它可以代替我们自己使用的varying变量,给我们带来方便。但是我们也需要了解它是如何计算的。
2015-04-15 17:42:32 7585 1
原创 阴影映射(Shadow Map)的研究(二)
上一篇文章介绍了我对Z缓存的较为详细的研究。这里之所以对Ze求导函数,是因为的我们需要寻找它的变化曲线,从而找到极值点,这样就能够确定Ze相对于zw的疏密分布情况。幸运的是,我们找到的导函数是双曲函数,并且我们关心的的右侧是单调递增的。
2015-04-08 21:20:22 2463
原创 深度缓存(Z缓存)的研究
最近在shadow map过程中卡住了。因为我想在OpenGLES 2.0兼容的平台上运行shadow map,而要顺利运行shadow map,通常的情况是拥有GL_OES_depth_texture扩展,而有些兼容的机器是没有这个扩展,这给我们开发人员带来了一些难度。不过办法还是有的,前提是要对计算机图形学的Z-Buffer要有一个深入的了解才行。
2015-04-08 14:10:29 6682 1
原创 解决三维建模软件中摄像机旋转的问题
我们看到很多3D建模软件都可以很方便地对摄像机进行旋转,比如说Blender,通过按下鼠标中键,就可以很方便地对摄像机进行旋转。在学习了几年OpenGL之后,我也想要模仿这一点做出类似的功能。但是当研究的时候,遇到了一些困难。
2015-04-02 10:14:22 5152 2
原创 阴影映射(Shadow Map)的研究(一)
这段时间在搭好自己的框架后,就开始马不停蹄地研究阴影映射的内容了,说起阴影映射,倒不如说shadow map更容易被专业人士所接受。shadow map是我进阶图形学的第一课,以后的图形学内容,会变得非常复杂,每写一个例子,都要牵涉到非常多的算法以及代码。但是我不得不这么做,因为只有这样才能成为计算机图形学的高手。
2015-03-25 21:56:06 4143 2
原创 Qt 3D的研究(十):描边渲染(轮廓渲染)以及Silhouette Shader
之前写了两篇文章,介绍了我在边缘检测上面的研究,实际上,使用GPU对渲染图像进行边缘检测,前提是需要进行两遍渲染,前一遍渲染的结果作为后一遍结果的输入纹理,接着在第二遍渲染的时候,对二维图像做一些图像处理,最终得出带轮廓的描边渲染效果,接着和正常渲染混合在一起,就成为渲染的最终图像。可是,这样的做法,是对二维图像做的图像处理,即使像上次对提取的深度进行图像处理,也无法准确地根据深度的突变来提取我们需要的边缘。所以我们需要新的方法来提取模型的边缘。
2015-03-19 13:28:56 5884 2
原创 Qt 3D的研究(九):尝试另外一种边缘检测方法
三维应用程序,通过FBO,将3D图像渲染成纹理,然后对渲染成的纹理进行图像处理,最终显示在屏幕上的,是风格化后的图案。上一次我使用了一种普通的图像处理方法:索贝尔边缘检测法,与我们的卡通渲染结合起来,实现了这样的效果,接着,我将采用另外一种边缘检测方法——普雷维特(Prewitt)边缘检测方法来重新渲染图案。
2015-03-18 10:37:34 3371
原创 Qt Quick + OpenGL + Bullet初次测试
目前Qt的Quick模块已经表现得非常出色,而且可以预留接口来渲染OpenGL场景。一般来说,已经能够满足大部分编程需要了。这次呢,尝试使用结合一些技术,来做一些有趣儿的事情——将Bullet整合进来,并且进行测试。
2015-03-15 23:40:43 5562 2
原创 Qt 3D的研究(八):边缘检测
上一篇文章讲到了如何使用渲染至纹理技术将我们第一遍渲染保存至纹理以便做一些操作。还是上一次的例子,我简要地分析一下如何进行边缘检测。
2015-03-11 09:33:02 3669
原创 Qt 3D的研究(七):渲染至纹理
最近几天都没有怎么研究Qt 3D了,但是随着Qt5.5发布的日子一天天的靠近,我也不能懈怠,希望利用Qt 3D,将能够实现的功能进行实现,并且对Qt 3D获取一个新的认识。两天多没有研究了,现在信心却是满满的!
2015-03-09 16:44:10 6760
原创 Qt 3D的研究(六):Toon Shader
在上次的实验中,我们实现了Gooch Shader,并给出了通过调色板进行个性化的Gooch Shader设置。Toon Shader又称Cell Shader,是以离散的颜色来表示光照的强弱。很多动画片的渲染方式都是使用Toon Shader的。下面这样图就可以使用Toon Shader实现。
2015-03-05 16:00:37 4377
原创 Qt 3D的研究(五):Gooch Shader
Qt 3D的一个很大的优势就是采用数据驱动的方式,将C++和GLSL使用QML来表示,动态语言的优势尽显。在上一次的研究中,我实现了一个非常简单的着色器,接下来,我们可以在此基础上,通过设定着色器的数据,制作出更加绚丽的着色效果。作为开始,我们先从几个非真实渲染(Non-Photorealistic Rendering,NPR)开始吧。
2015-03-01 22:58:45 5042
原创 Qt 3D的研究(四):指定渲染的材质以及效果
在上一篇文章中我了解到了怎样简单地显示模型。Qt3D内置了一个obj模型的解析器,这样可以将简单的obj模型载入并且显示出来。其实Qt3D对于渲染的配置还是很厉害的,通过设定材质,我们可以得到很不错的渲染效果,而且可以通过设定Effect,将自己指定的着色器载入,让Qt 3D和OpenGL进行编译,得到自己想要的渲染效果。
2015-02-28 11:16:29 9148 2
原创 Qt 3D的研究(三):显示3D模型
上一篇文章介绍了如何使用最少的代码创建一个Qt 3D的应用。和大家最初接触的glut一样,对于3D应用来说,需要做的准备工作还真不少,不过呢,Qt 3D把一些窗口相关的琐碎事情解决了,剩下的,该由我们完成重要的渲染部分了,可以说,带来了某种程度的方便。
2015-02-27 09:59:09 31933 11
原创 跨平台显示MMD模型
过年了,祝大家喜气洋洋,心想事成!然后呢,过年后,依然进行Qt以及3D的研究。最近翻出以前的技术研究成果,并且花了将近一个月,成功地在移动平台上显示MMD模型了。
2015-02-23 00:18:55 4791 5
原创 测试Qt Quick在各个平台上的3D渲染性能
Qt是一个跨平台的GUI框架,它的QtQuick更是支持结合OpenGL原生的代码进行渲染。我想将我以前写的程序整合到QtQuick上来,看看渲染效果是否满意,于是写了一个小小的程序,来做一下渲染基准测试。运行结果出来,不容乐观呐。
2015-02-15 23:59:15 6066 4
原创 Qt 3D的研究(二)
上一篇文章给大家看了很多Qt 3D的例子,如果大家有Qt3D的源代码,就会发现,开发这些例子,花费的代码还真不少。这就是不一样的地方,Qt 3D毕竟和三维图形打交道,多了一个维度,问题的难度变得更大了。
2015-02-13 21:47:48 9772 6
原创 Qt 3D的研究(一)
Qt 3D是有可能即将在Qt 5.5中正式启用的模块之一。它建立的目标是能够让开发者快速地创建3D场景,通过各式各样的渲染技术来达到3D交互的场景。Qt3D除了和Qt一样跨平台之外,还能够选择OpenGL的具体实现,定制GLSL,从而能够根据不同性能的机器,来调整渲染效果。
2015-02-13 20:45:33 17836 1
原创 Qt 5的git源码编译
由于一些需求,需要接触Qt3D。虽然Qt 3D还没有问世,但是据称已经差不多完成了。Qt 3D的内部版本是2.0,将会并入Qt 5.5中。现在还是有一些途径来获取Qt 3D的。那就是使用git获取最新的源码进行编译。花了好几天的时间,终于成功了。下面分享一下心得。
2015-02-02 09:30:15 6791 4
原创 Qt新渲染底层Scene Graph研究(三)
上一篇文章介绍了Qt Quick和Scene Graph的一些理论上的内容。这也是我最新的研究成果。接下来我要介绍一下如何使用Scene Graph来制作一些好玩的效果。这也是我进行一次Scene Graph的尝试。我的目标是希望在Scene Graph这一套渲染框架下实现一个带有纹理的立方体,并且旋转。花了几天,虽然不是那么满意,但是已经告一段落了。
2015-01-27 16:54:04 6798 2
原创 Qt新渲染底层Scene Graph研究(二)
上一篇文章初步介绍了Qt新渲染底层Scene Graph,我们该如何利用这个框架为应用程序增添绚丽的效果呢?首先,我们要明确利用Scene Graph开发的目的是什么。如果是简单的,纯粹的显示2D图形界面,那么直接利用构建在Scene Graph之上的Qt Quick和Qt Quick Widget即可。如果觉得Qt Quick为我们提供的功能不够,在QML这一层无法很好地实现,那么我们或许需要考虑更低一层的Scene Graph了。一个使用Scene Graph的常见需求就是实现3D模型的渲染以及2D图元
2015-01-23 23:08:22 7585 1
原创 Qt新渲染底层Scene Graph研究(一)
Qt 5提出了一个新的渲染底层,以替代Qt4时期的Graphics View,这个渲染底层就是Scene Graph。其实这个底层的作用和Open Scene Graph是差不多的,但是由于是不同的团队进行开发的,所以两者没有必然的联系。Scene Graph主要利用OpenGL ( ES )2的渲染优势,在2D和3D以非常流畅的速度进行渲染,满足日益增长的界面效果需求,同时Scene Graph预留了各种各样的接口,满足大家定义显示和渲染效果的需要。
2015-01-23 21:31:54 11392 2
原创 Qt独立游戏第II作《十日驱鬼记》发布
2015年来临了,按照我的发布日程,今天我向大家隆重的宣布,我的Qt独立游戏第II作《十日驱鬼记》终于发布了! 和上次独立游戏的发布一样,到了这个时候,我总是忍俊不禁感慨一下。这次的感受又有些差别,因为这款游戏并不是我全职制作完成的,前前后后花了我五个月,这款游戏的诞生是我值得荣耀的一件事情,它代表了目前我对Qt理解和应用开发的最高水平。同时,这款游戏,让我了解并且学习了开发以外的一些知识,比如说策划、设计、资源和发布。最后,这款游戏的发布并不代表着游戏开发过程的终结,我在发布后,需要广泛
2015-01-01 17:39:20 4596 17
原创 解决Hyper-V和VT-x冲突的方法
今天想重新使用虚拟机的,但是没想到的是,虚拟机全部都无法启动了,原因是提示计算机不支持VT-x。后面搜索国外的网站,才知道,Hyper-V启用的时候VT-x就禁用了。也难怪,因为前段时间安装了Visual Studio 2013和Visual Studio 14,里面创建Windows Phone 8的虚拟机时就需要Hyper-V的支持。结果我就这样神不知鬼不觉地“被”安装了Hyper-V,安装了Hyper-V也就禁用了VT-x了。解决办法也很简单,反正Hyper-V用不着,关闭呗。在“控制面板”→“程序”
2014-12-13 17:58:00 24506
原创 在Ubuntu下构建Bullet以及运行Bullet的例子程序
1、找到Bullet的下载页,地址是:https://code.google.com/p/bullet/downloads/list2、下载Bullet。找到.tgz格式进行下载。我下载的版本是bullet-2.82-r2704。3、如果没有安装cmake,那么使用sudo apt-get install cmake进行安装。4、如果没有安装glut,那么使用sudo apt-get install freeglut3以及sudo apt-get install freeglut3-dev进行安装。
2014-10-31 23:00:56 3764
原创 使用QML自绘页面导航条
最近使用QML制作项目,按照要求,需要制作成分页的插件。遗憾的是,QML的控件库Qt Quick都没有现成的控件,于是我尝试着自己实现自绘页面导航条。
2014-09-18 17:36:27 4316 1
原创 解决QML开发中ComboBox中一个已选择项没有清除的问题
最近使用QML开发一个项目,需要使用ComboBox进行显示,当进行一个操作时,需要向ComboBox添加一个元素,当进行另外一个操作时,需要清除ComboBox里面的元素。但是在操作的过程中,出现了一个诡异的现象——ComboBox里面的已选择项并没有清除。
2014-09-18 14:17:43 4087
原创 让Qt for Windows Phone 8.1在真机上运行
前面几篇博文是为这篇文章做铺垫的,最终目的为的是使用Qt框架制作出能够在Windows Phone 8.1真机上运行的程序。由于Qt for WP8这一块不完善,在加上我刚进入这一领域,所以研究的速度有点儿慢。在网上询问了Qt项目的维护者,加上自己的一点研究,稍微了解了Qt for Windows Phone 8的开发原理。
2014-09-01 00:35:58 4374 8
原创 让Qt Creator支持Windows Phone 8开发
最近QtCreator3.2出了,修复了一些Bug,比上一个版本3.1.2要好了一些。由于在上一个版本(Qt for WinRT自带的)对于打包方面有一些问题效果不好,于是今天我下载这个IDE过来试一试。一开始想设定Windows Phone 8的开发环境的,但是总是没有设置成功。最后我找到了一个办法,使用这个办法顺利地设置好了支持Windows Phone 8开发环境的Qt Creator。
2014-08-31 10:55:55 3212 1
原创 注册成为Windows Phone开发者并且解锁Windows Phone 8.1手机
上篇文章介绍了如何使用Qt Creator和Visual Studio构建Windows Phone 8.1应用并且在Windows Phone 8.1模拟器上运行。当然了,能够运行在模拟器只能算第一步,能够运行在真机上并且顺利地发布在Windows Phone应用商店则是我们的目标。为了达到这个目标,我们需要先注册成为Windows Phone的开发者,并且解锁手机,这样才能让我们的程序在Windows Phone 8.1手机上顺利运行。
2014-08-28 13:02:19 6175 4
原创 搭建Qt 5.3.1 for Windows Phone 8开发环境
目前Qt已经支持了Android以及iOS的开发,我也亲自尝试过在Android和iOS上的开发,其中在Android这一块研究的较深,也制作出了第一款独立游戏《吃药了》。在Qt的新版本5.3的发布中,官方宣布支持WindowsPhone 8/8.1的开发。过了两个月了,我也积极尝试一下,看看使用最新的Qt 5.3.1版本如何搭建WP8的开发环境。
2014-08-15 00:01:27 5740 7
原创 Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染
上一篇文章讲到了利用C++这个桥梁,我们实现了QML和Java的交互。Qt 5大力推崇的QML/JS开发,让轻量、快速开发的QML/JS打头阵,让重量的C++撑腰,几乎什么技术都能够实现。接下来的这篇文章讲的是我们使用QML,借助Qt库和OpenGL,实现了使用着色器定义OpenGL的渲染方式,为大家呈现混合渲染的效果。
2014-07-21 22:53:24 19832 20
原创 Qt移动应用开发(七):QML与Java的交互
Qt5中针对不同的平台适配并开发了不同的模块,比如说Qt Windows Extras、Qt Mac Extras、Qt X11 Extras、Qt Android Extras等。这里我们主要聚焦Qt Android Extras,教大家如何使用这个模块实现和Java的交互。
2014-07-20 22:29:53 7957 4
基于Qt有限状态机人工智能的一种实现
2015-06-24
使用QtQuick2改进的阴影映射例子
2015-05-25
使用QOpenGLWidget作为容器改进的阴影映射例子
2015-05-25
使用Qt实现的阴影映射(源代码)
2015-05-25
QML和OpenGL混合渲染(源代码)
2014-07-21
QML和OpenGL混合渲染(演示程序)
2014-07-21
CEGUI整合Irrlicht的例子(演示程序+源代码)
2014-04-02
基于Qt和OpenGL的公告板演示程序
2014-03-26
形变动画的实现(演示程序)
2014-03-16
AssimpViewer浏览模型软件
2014-03-13
蒙皮动画的实现(演示程序)
2014-03-07
利用GPGPU方法将大量数据通过纹理传输至GPU进行计算
2014-02-19
用OpenGL4.x绘制三角形图元
2014-02-19
基于Qt和OpenGL4.x的框架
2014-02-08
Irrlicht使用着色器渲染模型(演示程序+源代码)
2013-11-29
Irrlicht实现水波特效(演示程序+源代码)
2013-11-26
Irrlicht实现粒子系统(演示程序+源代码)
2013-11-26
Irrlicht之载入irr文件和自定义场景节点(演示程序+源代码)
2013-11-22
IrrEdit编辑场景所用的资源
2013-11-22
Irrlicht光照测试(演示程序+源代码)
2013-11-18
Irrlicht添加对中文的支持(源代码+演示程序)
2013-11-11
Irrlicht创建游戏GUI界面(演示程序+源代码)
2013-11-10
Irrlicht载入网格文件(演示程序+源代码)
2013-11-08
反向运动学演示程序(含核心代码)
2013-11-02
骨骼动画演示程序
2013-10-24
QtOpenGL以及Graphics-View框架整合的例子(演示程序+源代码)
2013-09-25
QtOpenGL以及Graphics-View框架整合的例子
2013-09-25
基于Qt和GLSL的着色器例子(演示程序+源代码)
2013-08-25
基于Qt和GLSL的着色器例子(演示程序)
2013-08-25
OpenGL光照测试(源代码+演示程序)
2013-08-07
OpenGL光照测试Revision2(演示程序)
2013-08-07
OpenGL光照测试Revision(演示程序)
2013-08-05
使用Qt和OpenGL实现的光照测试
2013-08-04
用Qt和OpenGL制作的颜色立方体例子(演示程序+源代码)
2013-07-16
用Qt和OpenGL制作的颜色立方体例子(演示程序)
2013-07-16
用Qt动画框架设计飞入-消失特效(源代码+演示程序)
2013-05-08
用Qt动画框架设计飞入-消失特效(演示程序)
2013-05-08
人工智能算法演示(演示程序+源代码)
2013-04-06
人工智能算法演示(演示程序)
2013-04-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人