Qt Curve Editor

English Version

前天包哥分享 Qt 的一些经验,顾哥提到 Qt 的控件比较少,以前找个曲线编辑的控件都找不到。我想起自己前年不正好做了一个么,赶紧开源出来,给大家耍耍。代码见 Github

Qt 曲线编辑器

这个程序当时是为了给游戏做后处理用的。通过曲线和一张固定的纹理,可以给游戏画面加强想要的颜色。可惜后面由于一些变动,最后也没用上,不然倒是可以完善得更好。等以后给 SagittaEngine 做场景编辑器时,再好好完善集成进去。

本项目中样条曲线的算法,来自 http://people.sc.fsu.edu/~jburkardt/c_src/spline/spline.html 。这是我在 2007 年就开始用的库,有多种曲线类型的高效的实现。当时和波波做 加速传感器(就是 wii手柄、iPhone 等里面的所谓的重力传感器)的运动识别,对于采样的数据,我们使用 自然三次样条曲线 做重采样以保证在做 hmm 计算时,比较的样本是在一个纬度。我的曲线编辑器目前提供了 自然三次样条曲线 ( Cubic Spline )、二次样条曲线 ( Quadratic Spline ) 和直线等三种曲线类型,如果你有兴趣,可以实现更多。曲线类型的扩展,请参考 libspline 文件夹下的 aaCurve.h (请原谅我在取名字上的随意,哈哈)

spline 库的实现

曲线编辑 Widget 是一个 Qt 的 OpenGL widget ,实现了基本的编辑功能。

鼠标右键 点击空白处 添加一个控制点
鼠标右键 点击已有控制点 删除该控制点
鼠标左键拖动控制点 编辑曲线
滚轮 缩放视图

有兴趣的同学可以下来玩玩。如果你的项目有需要,修改修改,也是完全可以用的。

demo 的编译

在 VS, Xcode 等 IDE 中使用 Qt,需要做不少配置,所以要做基于 Qt 的跨平台项目,要么使用 Qt Creator ,要么就用 cmake, 让它帮忙把 IDE 的配置做好。我一直以来都使用 cmake 做跨平台项目,这个曲线编辑器也是一样。

安装好 cmake 后,从终端进入到项目的根目录下,运行如下命令。

mkdir build
cd build
cmake -G Xcode ..

上述命令在 Mac 下会生成 Xcode 的工程,工程对 Qt 做了配置,moc,qmake 等都不需要自己去关心,你需要做的就是打开工程,编译,运行。

创建 build 目录并不是必需的,但这样有助于把代码和工程分开,通过上述 cmake 生成的工程,其所有的文件、moc生成的文件、编译的中间文件、编译的输出文件,都只在 build 目录下,这样能够保持代码目录的干净,版本库里面剔除出一个 build 目录就可以了。

如果在 Windows 下使用 Visual Studio, 以 2010 为例,那么最后一个命令可以这样

cmake -G "Visual Studio 10" ..

其他的编译器请参考 cmake 文档 – Generators



发表评论?

5 条评论。

  1. @IT外星人: 大概是没用的

    回复回复
  2. 你好 我看了一下发现有两个文件:smGraphicsScene.cpp smGraphicsScene.h 去掉之后 不影响程序

    请问这两个用来干啥的?

    回复回复
  3. Qt Curve Editor | 山那畔别有人家 - pingback on 2013 年 6 月 4 日 在 13:08
  4. @复活的剑圣: 图里你看到的是 自然三次样条 曲线,二阶导数连续的,本身必然是光滑的。你要说画的是否光滑,得看你在曲线上采样的点的数量,我采得多些,画出来就光滑了

    回复回复
  5. 很有帮助,正好要用,感觉曲线生成的很平滑,借鉴一个

    回复回复

发表评论

Trackbacks and Pingbacks: