设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 6959|回复: 26
打印 上一主题 下一主题

[RMVA发布] 【蜜汁小技巧】使用 ULDS 制作伪 gif 动画远景图

[复制链接]

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

跳转到指定楼层
1
发表于 2017-3-22 20:20:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 taroxd 于 2017-5-10 07:04 编辑

ULDS 脚本:https://rpg.blue/forum.php?mod=viewthread&tid=367901

假设有 25 张图片,文件名分别为 Graphics/Parallaxes/MyAnimation/img-i.png,其中 i 为 0~24。
那么我们可以在地图下备注如下内容,使得地图的远景图为这 25 张图片循环播放,类似于 gif。这里设定帧数为 15(即游戏帧数的 1/4)

  1. <ulds=img-0>
  2.   # 在进入地图时,载入所有图片
  3.   eval: @bitmaps = Array.new(25) { |i| Bitmap.new "Graphics/Parallaxes/MyAnimation/img-#{i}" }
  4.   # 更新变量 t,这是 update 的默认行为
  5.   update: t += 1
  6.   # 根据变量 t 更新图片
  7.   update: self.bitmap = @bitmaps[t / 4 % 25] if t % 4 == 0
  8.   # 初始图片的路径。由于脚本要求,需要提供一张初始图片
  9.   path: Parallaxes/MyAnimation
  10.   # 与默认远景图的 z 值相同
  11.   z: -100
  12. </ulds>
复制代码


如果使用了 2.16 版本以上的 ULDS(更新于 2017/5/10),由于不需要有初始图片,可以简化为:

  1. <ulds>
  2.   # 在进入地图时,载入所有图片
  3.   eval: @bitmaps = Array.new(25) { |i| Bitmap.new "Graphics/Parallaxes/MyAnimation/img-#{i}" }
  4.   # 更新变量 t,这是 update 的默认行为
  5.   update: t += 1
  6.   # 根据变量 t 更新图片
  7.   update: self.bitmap = @bitmaps[t / 4 % 25] if t % 4 == 0
  8.   # 与默认远景图的 z 值相同
  9.   z: -100
  10.   # 释放位图对象
  11.   dispose: @bitmaps.each(&:dispose)
  12. </ulds>
复制代码

评分

参与人数 5星屑 +302 +2 收起 理由
l1n + 1 真的牛逼!谢谢大佬!
Kim_Shyuen + 1 黑科技
jianyulei + 20 ULDS居然更新了
zaiy2863 + 240 帅气啊!
百里_飞柳 + 42 有种…刷存在的感觉

查看全部评分

Lv4.逐梦者

梦石
1
星屑
4506
在线时间
1151 小时
注册时间
2016-10-28
帖子
551

开拓者

2
发表于 2017-3-23 08:12:23 | 只看该作者
顺便把背景图透明度平滑渐变的方法也写一下吧!(……)

点评

将 opacity 属性设为变量或者 t 的函数  发表于 2017-3-23 13:26
不,我是说,图片渐隐渐显那种。(算了大概也没人要用)  发表于 2017-3-23 13:08
请直接 PS……  发表于 2017-3-23 13:03
用脑子来养鱼的杯子。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
5
星屑
3038
在线时间
612 小时
注册时间
2012-11-12
帖子
482

开拓者

3
发表于 2017-3-23 16:51:35 | 只看该作者
噢哦,这个可以有,晚上动手试试。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
853
在线时间
190 小时
注册时间
2016-1-20
帖子
186

开拓者

4
发表于 2017-6-3 13:08:11 | 只看该作者
Hey , 你好  taroxd  
我昨天发出了一个问题,  有人帮我找到了你的这个帖子。
我昨晚试了一下你这个脚本, 几十张的序列帧, 背景能动 , 而且不影响前面的文字对话, 我加了背景声音 背景音乐, 音效, 淡入淡出, 依然很流畅,
这让我非常激动。   
     首先说一下, 我没研究过你的 ulds (它看起来有300行, 功能很强大) , 只是昨天我突然想 “让看文字时, 背景动起来” ,所以才提出了一个问题。
然后, 我今天又试了一下,发现一些问题, 个人观点, (这里作为一个伸手党, 只是作为讨论,没有别的意思)。
我试了下90帧不同图片, 系统内存占用不大, 也没有延迟掉帧现象,这很棒。  
而且,我知道rpgmaker 是每秒60帧,  你那个 “ 4 % ”应该是 控制速度的, 这里应该是 4帧(Rpgmaker里的帧)一幅图片。
所以我试了下做一串数字序列帧 , 每秒30张, 然后再rpgmaker里 每2帧一幅图播放,  结果发现效果很好。 时间走的的很正常,很流畅。 由于这个很不错的效果,我才写了这个回复,
因为我估计这样的效果,做一个10秒以内的循环应该也没问题。

下面是一些问题:
(1)  序列帧命名, 个人感觉哈, 大多数图像处理软件命名 都是 加0补位的, 比如5秒循环, 一共150帧, 那命名就是001,002,003 ....150。
估计会有些高端软件可以有选项去掉这个0, 但是我的Aftereffects 没有, 也就是说如果要150帧循环,  我要手动去掉 001---099里所有的0.
这是太耗费时间了。
(2) 按 X 呼出菜单,  再按X关闭菜单时, 会延迟2秒左右, 然后瞬间闪了一下。  虽然这跟我想实现的效果无关, (我昨天只想实现,看文本时背景动图)但这里只是说一下,
因为既然人物走动起来都可以很流畅,  只是呼出个菜单,理论上也可以做到不卡顿。   
          剩下的问题就是,  这个脚本粘到每个地图里确实可以运行, 但是对我这种脚本盲的用户儿, 地图那个备注框太小了, 字也很小,而且都是换行, 修改时很难找需要修改的数据。
能否把它做成一个脚本放到,脚本编辑器里呢, 这样的话字会变很大,容易看和修改。
以上就是昨晚到现在的测试结果。 非常感谢你的脚本。
一个有很多问题的家伙, 衣服标签上写着“新手”两个字。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
853
在线时间
190 小时
注册时间
2016-1-20
帖子
186

开拓者

5
发表于 2017-6-3 13:43:37 | 只看该作者
顺便问下, 你的这两段脚本目前的使用权限是自由开放的吗?

点评

3Q  发表于 2017-6-3 21:50
是  发表于 2017-6-3 21:20
一个有很多问题的家伙, 衣服标签上写着“新手”两个字。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
853
在线时间
190 小时
注册时间
2016-1-20
帖子
186

开拓者

6
发表于 2017-6-4 13:27:45 | 只看该作者
再打扰一下,  我真的很想用这个脚本做一些效果,
但是我想做个几秒钟的循环, 请问taroxd您能否把它加工一下, 让它能识别三位数的序列帧序号。
就是 类似 001  002 003.......090. 091 092 .....300 301 ,  这样的。   
手动去掉每个名称前的0实在太困难了。  

点评

好吧, 估计帧数太多也会负担很大。 还是很感谢了,嗯 就这样吧。  发表于 2017-6-4 19:55
eval: @bitmaps = Array.new(25) { |i| Bitmap.new "Graphics/Parallaxes/MyAnimation/img-00#{i}" }  发表于 2017-6-4 14:46
另外不建议使用这么多图。进入地图时会载入相当长的时间  发表于 2017-6-4 13:50
使用 sprintf,参考默认脚本中读取地图名的方式  发表于 2017-6-4 13:49
一个有很多问题的家伙, 衣服标签上写着“新手”两个字。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
853
在线时间
190 小时
注册时间
2016-1-20
帖子
186

开拓者

7
发表于 2017-6-5 12:15:59 | 只看该作者
Hello taroxd
           我还是很想研究一下这个脚本, 因为感觉这个确实很不错, 所以即使你有些烦了,也要厚着脸皮多问问。  请问从你的角度来看, 300帧的图像序列真的会让系统负担很大吗? 可是300帧只有10秒。从我的角度来看, 我觉得3秒(90帧)左右的序列图, 640*480 Jpg 播放很流畅, 那么我觉得10秒也问题不大, 如果10秒没问题那么就是说,只要画些功夫在制图上, 完全可以实现这种背景动态的效果。这是很棒的一件事,至少在我看来, 因为“能” 和“不能” 有着本质的区别,  从流畅度来看,这个脚本已经“能” 实现这个功能了。
我确实不太清楚现在显卡这些硬件的性能, 但我打开任务管理器,  运行时, 发现内存和CPU 都没什么太大变化。 “使用 sprintf,参考默认脚本中读取地图名的方式”,  这个对我(脚本盲)来说完全无从下手 。  我真的很希望你能帮我弄一下那行脚本, 让它支持3位数的命名时带0的序列帧。即便只能粘贴到地图的备注里,我也很想尝试一下效果。     然后,Trust me 我真的是个RPG作者 ...  只是“消息”好像没法发给你....!


点评

好勒, 谢啦。  发表于 2017-6-5 14:33
两个 4 一起改掉,他们共同控制播放速度  发表于 2017-6-5 14:23
[t / 4 % 25] if t % 4 == 0 , Oh 这里有2个4, 我前天只改了前面那个4,它能控制播放速度, 没注意后面还有一个4 , 请问后面这个4 是控制什么的?  发表于 2017-6-5 14:20
Thank you , 我这就去试一试, 真的非常感谢。  发表于 2017-6-5 14:11
@bitmaps = Array.new(25) { |i| Bitmap.new sprintf("Graphics/Parallaxes/MyAnimation/img-%03d", i) }  发表于 2017-6-5 14:08
一个有很多问题的家伙, 衣服标签上写着“新手”两个字。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
69 小时
注册时间
2017-1-28
帖子
79
8
发表于 2017-7-21 01:56:25 | 只看该作者
请问 这种 也可以 用正片叠底 或者是叠加效果吗
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
69 小时
注册时间
2017-1-28
帖子
79
9
发表于 2017-7-21 02:12:35 | 只看该作者
我按照楼主的使用方法没有成功  是怎么回事呀
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
717
在线时间
914 小时
注册时间
2010-11-13
帖子
1023
10
发表于 2020-6-6 15:42:13 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-15 13:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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