Project1

标题: Bitmap类的脚本一个 [打印本页]

作者: 猫哥哥    时间: 2007-12-15 10:43
标题: Bitmap类的脚本一个
模拟了VX里Bitmap类的blur,gradient_fill_rect和clear_rect。
并按照RGSS2里的定义给draw_text和text_size增加了一点内容。

另外还赠送了几个方法。

具体内容请看工程:
http://rpg.blue/upload_program/files/rgss2bitmapxp_v102.rar

[LINE]1,#dddddd[/LINE]
12.24更新完毕,如果没有bug,不会再更新了。

[LINE]1,#dddddd[/LINE]
2009-JAN-8
这里是对于云之殇提出的问题的特别更新{/se}

这个是单独的,关于模糊的一个脚本,其他的都去除了。
唯一剩下的功能就是“模糊”、“恢复到模糊之前”。

具体见工程:
http://rpg.blue/upload_program/d ... _blur_111809969.zip

至于模糊的边界问题,是由于你自身脚本里该bitmap对象本身的size太小导致的,所以在这个脚本里是无能为力的,并不是这个脚本有问题哦{/tp}。即使是RGSS2的blur,也会这样吧(猜测而已……电脑里没装vx……)。因为Bitmap的size,在它生成的时候就已经固定,Bitmap类并没有提供更改其自身size的方法(width和height两个方法仅仅是返回size的值){/gg}

所以可行的解决办法,就是更改你自己的脚本。在生成该Bitmap对象时,将它的width和height尽量设置得大一些,然后通过一个媒介bitmap对象将图像传送到这个bitmap对象上来(也就是说不能让bitmap直接读取图片生成bitmap对象)。
但由此带来的后果,可能是你的脚本里的一些坐标需要调整。

为了你能理解我上面这堆废话,附工程一只:{/gg}
http://rpg.blue/upload_program/d ... oblem_111812280.zip
工程里的good_boy的bitmap的设置方法就是防止边框出现的设置方法。

另:模糊值设置得太大,颜色也会混杂得更厉害,毕竟不是真的高斯模糊,建议设置1或者2就差不多了。
作者: 猫哥哥    时间: 2007-12-15 10:43
标题: Bitmap类的脚本一个
模拟了VX里Bitmap类的blur,gradient_fill_rect和clear_rect。
并按照RGSS2里的定义给draw_text和text_size增加了一点内容。

另外还赠送了几个方法。

具体内容请看工程:
http://rpg.blue/upload_program/files/rgss2bitmapxp_v102.rar

[LINE]1,#dddddd[/LINE]
12.24更新完毕,如果没有bug,不会再更新了。

[LINE]1,#dddddd[/LINE]
2009-JAN-8
这里是对于云之殇提出的问题的特别更新{/se}

这个是单独的,关于模糊的一个脚本,其他的都去除了。
唯一剩下的功能就是“模糊”、“恢复到模糊之前”。

具体见工程:
http://rpg.blue/upload_program/d ... _blur_111809969.zip

至于模糊的边界问题,是由于你自身脚本里该bitmap对象本身的size太小导致的,所以在这个脚本里是无能为力的,并不是这个脚本有问题哦{/tp}。即使是RGSS2的blur,也会这样吧(猜测而已……电脑里没装vx……)。因为Bitmap的size,在它生成的时候就已经固定,Bitmap类并没有提供更改其自身size的方法(width和height两个方法仅仅是返回size的值){/gg}

所以可行的解决办法,就是更改你自己的脚本。在生成该Bitmap对象时,将它的width和height尽量设置得大一些,然后通过一个媒介bitmap对象将图像传送到这个bitmap对象上来(也就是说不能让bitmap直接读取图片生成bitmap对象)。
但由此带来的后果,可能是你的脚本里的一些坐标需要调整。

为了你能理解我上面这堆废话,附工程一只:{/gg}
http://rpg.blue/upload_program/d ... oblem_111812280.zip
工程里的good_boy的bitmap的设置方法就是防止边框出现的设置方法。

另:模糊值设置得太大,颜色也会混杂得更厉害,毕竟不是真的高斯模糊,建议设置1或者2就差不多了。
作者: 猫哥哥    时间: 2007-12-15 10:49
脚本效果预览图:

blur
blur(times,[during<,blur>])


blur_r
blur_r(radius)


fragment_blur
fragment_blur(radius)


gradient_fill_rect(x, y, width, height, color1,color2,[vertical,<opacity>] )
gradient_fill_rect(rect, color1, color2,[vertical,<opacity>] )


glass_fill_rect(x, y, width, height, color1, color2[,vertical] )
glass_fill_rect(rect, color1, color2[,vertical] )


clear_rect(x, y, width, height)
clear_rect(rect)


有几个拿图描述不清楚的,就不放图了。

radial_blur模仿起来稍微有点费事,而且做出来使用的人可能也不多吧……不打算做了{/gg}。
作者: 美兽    时间: 2007-12-15 18:31
东西没下载,

但猜测,

模糊应该是利用不透明度和错位做的,

最后是矩形加减。
作者: burst_TNT    时间: 2007-12-15 18:59
10点VIP……(雷鸣电闪)
在众人刚被洗劫一空的时候出这种限制……= =+
作者: 猫哥哥    时间: 2007-12-15 20:14
以下引用美兽于2007-12-15 10:31:34的发言:
模糊应该是利用不透明度和错位做的,

最后是矩形加减。


{/gg}好眼力。
卷积我实在无法明白,偷懒用的{1,2,1  2,4,2  1,2,1}的高斯模板,位移的。
最后那个是四个方向的矩形加在一起。

以下引用burst_TNT于2007-12-15 10:59:13的发言:

10点VIP……(雷鸣电闪)
在众人刚被洗劫一空的时候出这种限制……= =+


还没完工,完工后会去掉限制的。
作者: 美兽    时间: 2007-12-17 01:17
好眼力。
卷积我实在无法明白,偷懒用的{1,2,1  2,4,2  1,2,1}的高斯模板,位移的。
最后那个是四个方向的矩形加在一起。


卷积是分析数学的运算,具体公式可以查查百度,很容易找到,实际用处非常广泛,但我直研究过图象处理的部分,

若应用在图象处理部分,一般可看做加权求和的运算,表示权的矩阵叫卷积核,每个像素分别与卷积核作乘,乘积之和为中心像素的最终值,实际用起来与高斯模板很像。

主要用在平滑、锐化等处理上,记得以前作滤镜时曾用过。
作者: 诡异の猫    时间: 2007-12-17 01:18
查1VIP..
泪..{/ll}
作者: 黑撒旦    时间: 2007-12-17 05:25
能力不足,留着以后研究。--
作者: 轮回者    时间: 2007-12-17 21:15
又一个强大的人~
作者: 面粉    时间: 2007-12-19 01:29
虽然本人图形学的十分不才……大致- - 如下……

滤波器
  三角形
   0.25 0.5 0.25

信号
     |
   | | |
| | | |
   1 2 3

比如使用给出的三角滤波器,对上边的信号1、2、3点进行卷积,那么输出结果就是

output = p2 = 0.25*p1+0.5*p2+0.25*p3
{/gg}

ps:>_< LZ很有毅力啊,加油填完吧

pps:看了一下,对于draw_text方法的重定义没有加入参数的默认初始化赋值,嗯嗯……另外,在每个方法前面加入一些注释会更好……{/hx}
作者: doranikofu    时间: 2007-12-19 03:12
强悍的东西 下来研究{/hx}
正好需要此功能
作者: 3535    时间: 2007-12-19 06:01
以下引用猫哥哥于2007-12-15 2:49:08的发言:

脚本效果预览图:

blur
blur(times,[during<,blur>])


blur_r
blur_r(radius)


fragment_blur
fragment_blur(radius)


gradient_fill_rect(x, y, width, height, color1,color2,[vertical,<opacity>] )
gradient_fill_rect(rect, color1, color2,[vertical,<opacity>] )


glass_fill_rect(x, y, width, height, color1, color2[,vertical] )
glass_fill_rect(rect, color1, color2[,vertical] )


clear_rect(x, y, width, height)
clear_rect(rect)


有几个拿图描述不清楚的,就不放图了。

radial_blur模仿起来稍微有点费事,而且做出来使用的人可能也不多吧……不打算做了。


[本贴由作者于 2007-12-15 3:17:28 最后编辑]

神人.....rmvx的東西
作者: Eclair    时间: 2008-1-26 04:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: 云之殇    时间: 2009-1-4 20:06
发现在xp插入这个之后很难整合
  #--------------------------------------------------------------------------
  # ● 描绘项目
  #     index : 项目编号
  #     color : 文字色
  #--------------------------------------------------------------------------
  def draw_item(index, color)
    self.contents.font.color = color
    rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    self.contents.draw_text(rect,@commands[index])
  end

脚本和这个默认的方法有冲突(只是其中一个地方),其中出错的句子就在self.contents.draw_text(rect,@commands[index])这句上,参数少了,本身以前是可以使用两个或者五个参数的,可是你追加定义之后只能是使用五个参数了,这个bug不知道有没有考虑呢?
说明书中draw_text是一个方法可是有两种用法,如果要把它用重命名追加定义的话,估计是让下面的一个没有作用了吧。然后我把脚本中的下面这个加上三个随便的参数又没有问题,但是这个应用的地方很多,很难做了就要全部改吧,然后就是改了不知道会有啥后遗症之类的
draw_text(x, y, width, height, str[, align])
draw_text(rect, str[, align])
在该位图的矩形(x,y,width,height)或 rect(Rect)中描绘字符串 str。

如果文本的长度超过矩形的宽度的话,则自动缩放为 60% 再描绘。

水平方向默认为左对齐,但是当 align 指定为 1 时为居中对齐,指定为 2 时为右对齐。垂直方向则总为居中对齐。

这个处理需要花费时间,尽量不要在每 1 帧中重描绘字符串。

作者: 云之殇    时间: 2009-1-4 21:33
还有就是这个模糊要怎么样回复都是一个问题,我想做个在我游戏中想做了很久的特效了,就是特定招数会有包括战斗背景,人物,敌人全部都模糊的战斗特效,然后这个却不知道怎么样禁止模糊,就是没有回复到原来的方法。。。。这个效果貌似做不了,不知道有没有回复到原来的一个方法呢?并且是否可以做到让透明的地方都不模糊呢,因为在战斗中的人物是一个方块来的,如果没有一个模糊边缘那么这个模糊就会让图像变成一个方块,这样子画面的效果最终就变成了几个方块然后还是几个模糊到不行的几个方块,基本上一点实用价值都是没有滴{/gg}
作者: 3nξhα0_lim    时间: 2009-1-7 05:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: 云之殇    时间: 2009-1-7 20:33
楼上的高深言论我听不明白{/gg},但是不能还原模糊。。。。这个很有难度啊,draw_text我直接禁用了,但是你的那个Graphics.snap_to_bitmap是否真的可以确定模糊边缘还有待测试,我想我看下吧,我估计这个特效要等到夏娜的rge支持rgss2才有点点可能{/gg}
作者: 猫哥哥    时间: 2009-1-8 11:11
更新在1楼
作者: 云之殇    时间: 2009-1-8 20:40
明白了正在试验中。。。。。。。。。看过例子估计会是成功的一种特效,因为在大的图像的模糊中,这个效果并没有边缘的问题,搞定之后应该会是非常华丽丽的东西。。。。哈哈哈
部分模糊效果,全模糊的特效个人还是不十分会用,要等猫到今晚给我讲解下才有办法了,因为战斗系统中的刷新是一下子就十几怔的,本身有些判定我还是没有十分的看懂,故此今晚在搞,不过看下面的背景模糊发现。。。。其实这个效果十分之“水墨”





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1