游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: crazyjim

关于粒子火焰中模糊算法的问题

[复制链接]

6

主题

12

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2004-5-14 20:10:00 | 显示全部楼层

Re: 关于粒子火焰中模糊算法的问题

兄弟,能不能给我源代码呢.拜托了!!! [em3] [em14]

6

主题

12

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2004-5-14 20:40:00 | 显示全部楼层

Re: 关于粒子火焰中模糊算法的问题

为什么我的效果好慢好慢?
你是用DDraw+VC6写的吗?是的话给我源代码吧,我好想学习学习!!! [em7] [em21]

2

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2004-5-14 21:56:00 | 显示全部楼层

Re:关于粒子火焰中模糊算法的问题

其实那两篇文章还是我去年做c语言课设时候写的,呵呵
后来一直没琢磨过图形方面的东西,所以都还是dos下的
ddraw的话如果用flip()似乎速度是不快,我把blur的代码贴出来吧
文章里忘了,嘿嘿
void Blur (LPVGA lpVga,LPUCHAR lpSurface)
{
        for (int y=0;y<199;y++)
        {
                for (int x=2;x<318;x++){
                        UCHAR c=(lpVga->GetPixel(lpSurface,x,y+1)+
                                 lpVga->GetPixel(lpSurface,x+1,y+1)+
                                 lpVga->GetPixel(lpSurface,x-1,y+1)+
                                 lpVga->GetPixel(lpSurface,x,y))>>2;
                        if (c>0){
                                lpVga-&gtutPixel (lpSurface,x,y,c--);
                                if ((x>4)&&(x<316)){
                                        if ((c>20)&&(c<150)){
                                                if (rand()%100==0)
                                                        lpVga->PutSpark (lpSurface,x,y,c+20);
                                                else
                                                        lpVga->PutPixel (lpSurface,x,y,c--);
                                        }
                                        else
                                                lpVga->PutPixel (lpSurface,x,y,c--);
                                }
                        }
                        else
                                lpVga->PutPixel (lpSurface,x,y,0);
                }
        }
}

不过这都是很老的技术,我个人觉得还是别把精力放在这样的算法上太多的好,呵呵

2

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2004-5-14 22:01:00 | 显示全部楼层

Re:关于粒子火焰中模糊算法的问题

不知道为什么,这里贴上的代码没有缩进,不好意思,呵呵,大家自己整理吧

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-1-28 09:33:00 | 显示全部楼层

Re:关于粒子火焰中模糊算法的问题

请问3D的怎样做?

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-1-28 09:51:00 | 显示全部楼层

Re:关于粒子火焰中模糊算法的问题

改用Gauss blur,可以变长的进行模糊。
原理是比如有一个数组你定义好的array a = {10, 20, 30, 40, 50, 30,10};
然后按照每个数跟这个数组的和的比值来进行模糊。
数组别定义太长,否则算起来速度很慢。
一般长度不要超过5-6个元素。

11

主题

114

帖子

118

积分

注册会员

Rank: 2

积分
118
QQ
发表于 2005-1-28 12:07:00 | 显示全部楼层

Re:关于粒子火焰中模糊算法的问题

Gauss blur 半径小的话效果甚微。。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-1-28 13:07:00 | 显示全部楼层

Re:关于粒子火焰中模糊算法的问题

再不好也比普通的模糊方法好。
另外你可以用改进的Gauss blur算法,不用对每个pixel都做blur,中间可以有间隔的。

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2005-1-28 13:37:00 | 显示全部楼层

Re: Re:关于粒子火焰中模糊算法的问题

DrawPixel: Re:关于粒子火焰中模糊算法的问题

Gauss blur 半径小的话效果甚微。。

先down sample然后再模糊不就行了

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-1-28 15:36:00 | 显示全部楼层

Re:关于粒子火焰中模糊算法的问题

你底下热源的亮度的应该不断变化。
火焰是动态的,不是静态的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-24 05:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表