Smoke3D 1.0 released

smoke3d_10.jpg

图形学作业最终DEMO2,真正的3D烟雾效果(CPU运算)。因为运算量大,所以网格粗糙,视觉上没有2D的细腻。
到此下载:Smoke3D_1.0.rar

ps.这个DEMO对显卡没什么要求,但要流畅运行你的CPU必须足够快。玩过的别忘留言附上你的CPU型号和程序运行时的FPS(画面左上角),我的本本P4 1.6G跑15FPS。

操作方法:
方向键 --移动视野
按住鼠标左键拖动 --转动视野
Z --在立方体中心增加烟雾
W/S/A/D/Q/E --向各方向“吹”烟雾
R --清除烟雾
P --暂停
Esc --退出

WaterSurface 2.0 released

watersurface_20.jpg

图形学作业最终DEMO1,增加了瓷砖质感的水池、更加逼真的反射折射、二维火球效果。
到此下载:WaterSurface_2.0.rar

ps.没有独立显卡、显卡超级老的没法玩,请按Esc退出。

操作方法:
方向键或W/S/A/D --移动视野
按住鼠标左键拖动 --转动视野
R --激起水波
T --创建水滴
Y --创建火球
P --暂停
0/1 --更换烟雾显示的文字
Esc --退出

smokeFFT v1.0 released

数字信号处理的大作业,FFT在流体模拟中的应用。实现方法参考了大牛Stam的论文,据说伊首先在CG领域引入semi-Lagrangian,才有了今天的real-time流体模拟。据说电影《Shrek》里面的烟雾特效就是这个算法,嘿嘿~

这个程序对显卡没什么要求,欢迎大家下载来玩:smoke_fft_v1_0.rar

操作方法:
1.按住鼠标左键拖动可以产生烟雾和流动。
2.按R/T,G/H,B/N键可以调整烟雾颜色(红、绿、蓝色的比例),左上角有提示。
3.按上下翻页键(PageUp/PageDown)可以调整拖动产生的烟雾量。
4.按P键暂停流动,此时仍旧可以“画”烟雾。
5.按0/O键清空屏幕。
6.按Esc退出。

smokefft_1.jpg

smokefft_2.jpg

模拟水面

图形学作业据说做好了可以免期末考试:)

我用openGL做了一个实时水波模拟,基本方法是网格,只有反射和半透明,效果还好,下一步是增加折射、Perlin Noise、溅起水滴、水下观察的效果。

网格法的缺陷就是不能模拟过于激烈的水面运动、海浪等,所以模拟自然运动的水(比如水从水杯中倒出的近距离效果)就要用粒子系统。初步查了一下,可能用到流体力学N-S方程、SPH、隐函数表面抽取。要学的东西太多了......不知道这学期是不是能完成。

water_surface_1.jpg

有兴趣下载来玩玩:water_surface_1.rar
显卡好的,请在高分辨率下运行,否则水波运动过快效果不好。


update 2007/4/11:
操作说明:请在Windows系统下将压缩包中所有文件解压缩到同一目录,然后执行water_test。运行后的窗口有分辨率选择和提示说明。

3D桌面

还记得《少数派报告》里面确认罪犯的那个超酷的三维系统么?

还是忍不住冒着崩溃的危险在新的Ubuntu下面装了Beryl的Xgl桌面。上次装Aiglx+Beryl的时候系统就彻底崩溃了,还好这次的Xgl没有~

装上后发现X-window变得超级!@#$%^&*,半透明、阴影、前后遮挡、扭曲、渐变、贴在立方体上的四个旋转桌面,甚至还有超炫的水波特效。不过还好,x1400的显卡还算跑得顺畅。不过除了好玩还真是没什么用处......
3d_desktop_1.jpg
3d_desktop_2.jpg
3d_desktop_3.jpg

答narkau关于锯齿效应

科普文章,欢迎阅读:)

计算机的显示系统实际就是点阵,每个点称作像素(pixel)。所以在表现非水平竖直的直线必然会出现锯齿现象aliasing(又或者称混淆、走样)。

抗锯齿(反混淆)只能缓解这种效果,并以绘制速度为代价。方法是:
1、提高分辨率--基本属于P话...
2、使用抗锯齿算法(anti-aliasing,AA),一般是通过颜色缓慢渐变来欺骗你的眼睛。有点、直线、多边形的抗锯齿,也有全屏抗锯齿(FSAA)。

这是全屏抗锯齿的对比效果(下面为开启FSAA):

FSAA.jpg

这是我写的一个直线抗锯齿的算法模拟,可以下载看看(39KB)。
http://nonleaf.net/wp-content/uploads/AA_Line.rar

回家了

暑期课终于结束了,做完了可恶的作业后,我回家了。

虽然说是家住北京,但是平时由于周末有双学位的课程,一个学期都不能回家几次。这次回家陪陪父母、姥姥。

我发现自己有一种癖好,又或者是一种心病。如果一项工作没有完成,我就会不停的想它,无论吃饭甚至睡觉。尤其反映在写程序上,如果晚上写程序到很晚还没有搞定,那么睡觉的时间就不会超过5个小时,因为根本睡不踏实,做梦也在想算法。可能是一种强迫症吧,或者工作狂?

暑期的图形学课作业就折腾了我好久。贴张图,这次的一个程序--模拟光照明方程和的Phong着色法,效果还算满意。

Phong着色法