千夏町

 找回密码
 我想成为村民
查看: 12246|回复: 7

[跟风发帖]Aegisub特效教学---用vsfiltermod制作出高级渐变色特效

[复制链接]
发表于 2013-3-29 08:53:12 | 显示全部楼层 |阅读模式
本帖最后由 小司不笨 于 2013-3-29 08:58 编辑

看到幻羽巨巨的帖子后想了一下,觉得每次别人问我怎么做特效的时候我都直接扔个教程给他太糊弄事,所以今天也来跟风写一个...以最近做的樱花庄的OP效果为例,一步一步写出制作过程
当然,观看以下内容需要的基础是了解基本ass代码(不需要背下来,知道怎么回事就行),并且看完幻羽的另外两篇教学后

嗯...其实变色这玩意也是我看别人的特效后模仿的,有兴趣的可以下载下来看看,不过年代久远我也不记得是从哪下载的了....机巧魔神的OPED和猫物语的OP
链接:http://pan.baidu.com/share/link?shareid=382584&uk=1979789437 密码:6762
因为没看过这些特效的代码所以我也不知道我用的代码和他们是不是一样的,不过应该差不多吧...

下面是正题
先扔出樱花庄OP的ass


然后介绍一下vsfiltermod里面的渐变色代码:(直接复制的别人的教程)
Gradients渐变

    \$vc(left-top-color,right-top-color,left-bottom-color,right-bottom-color)

   \$va(left-top-transparency,right-top-transparency,left-bottom-transparency,right-bottom-transparency)


Creates gradients by using anchor colors or opacity levels. May be slow.Animatable by \t.
用颜色或透明度创建渐变。可能渲染时比较慢。可用\t实现动态效果。(已修复与\fad的兼容问题。调整RRGGBB为BBGGRR。$的取值1-4,分别表示主要颜色、次要颜色、边框、阴影。)



Example
例子
1.  {\r\1vc(00FFFF,FFFF00,FF00FF,000000)}\1vc(00FFFF,FFFF00,FF00FF,000000)\N{\r\1vc(00FFFF,000000,00FFFF,000000)}\1vc(00FFFF,000000,00FFFF,000000)\N{\r\1vc(FFFFFF,FFFFFF,000000,000000)}\1vc(FFFFFF,FFFFFF,000000,000000)\N{\r\1vc(0000FF,000000,000000,0000FF)}\1vc(0000FF,000000,000000,0000FF)\N{\r\3va(FF,FF,00,00)}\3va(FF,FF,00,00)\N{\r\3va(FF,00,FF,00)}\3va(FF,00,FF,00)

别看代码很长,其实很简单,简单的描述的话就是
\1vc(左上角颜色,右上角颜色,左下角颜色,右下角颜色)   
\1va(左上角透明度,右上角透明度,左下角透明度,右下角透明度)

嗯 然后我们继续
根据说明资料上写的可以用\t实现动态效果,所以就有了字幕的动态渐变色
再说的直白点就是 我想要在0到1秒钟的时间内让这个字的左上角从白到蓝 右上角从蓝到白 左下角从绿到黄 右下角从黄到黑(颜色随手写的...)
于是怎么做呢?
{\1vc(左上角颜色,右上角颜色,左下角颜色,右下角颜色)\t(起始时间,终止时间,\1vc(左上角颜色2,右上角颜色2,左下角颜色2,右下角颜色2))}
这样就做到了一次渐变色
但是那个特效里面的字是一直在变色的,所以我们也可以用\t让他一直变色
于是就有了
{\1vc(左上角颜色,右上角颜色,左下角颜色,右下角颜色)\t(起始时间,终止时间,\1vc(左上角颜色2,右上角颜色2,左下角颜色2,右下角颜色2))\t(起始时间2,终止时间2,\1vc(左上角颜色3,右上角颜色3,左下角颜色3,右下角颜色3))\t(起始时间3,终止时间3,\1vc(左上角颜色4,右上角颜色4,左下角颜色4,右下角颜色4))……省略}
大概\t的时间值写到5000左右就差不多了,一句歌词的长度,而且后面的部分基本可以复制粘贴改个数字就行
我也不知道有没有更好的办法....我是一直用这个蠢办法的

基本结构就是这个了,然后要具体应用到template上去
首先是随机性,我们看到视频里的特效都是无规律的变色(透明度)的
于是就要用到下面的代码
temp = {}
function set_temp(ref,val) temp[ref] = val; return val; end      //这段前面幻羽的教学有讲过...

color = {"(HFFFFFF,HBF87FF,HBF87FF,HBF87FF)","(HBF87FF,HFFFFFF,HBF87FF,HBF87FF)","(HBF87FF,HBF87FF,HFFFFFF,HBF87FF)","(HBF87FF,HBF87FF,HBF87FF,HFFFFFF)",}   
//这段幻羽也有讲过,建立一个可供随机挑选的几组数据,因为我的樱花庄OP只是白色和粉色之间的渐变,所以需要的颜色不多

!retime("start2syl")!{\an5\1vc!color[math.random(1,4)]!\pos($center,$middle)\t(0,400,\1vc!color[math.random(1,4)]!)\t(400,800,\1vc!color[math.random(1,4)]!)\t(800,1200,\1vc!color[math.random(1,4)]!)\t(1200,1600,\1vc!color[math.random(1,4)]!)\t(1600,2000,\1vc!color[math.random(1,4)]!)\t(2000,2400,\1vc!color[math.random(1,4)]!)\t(2400,2800,\1vc!color[math.random(1,4)]!)\t(2800,3200,\1vc!color[math.random(1,4)]!)\t(3200,3600,\1vc!color[math.random(1,4)]!)\t(3600,4000,\1vc!color[math.random(1,4)]!)\t(4000,4400,\1vc!color[math.random(1,4)]!)}
!retime("syl2end")!{\an5\1vc!color[math.random(1,4)]!\pos($center,$middle)\t(0,400,\1vc!color[math.random(1,4)]!)\t(400,800,\1vc!color[math.random(1,4)]!)\t(800,1200,\1vc!color[math.random(1,4)]!)\t(1200,1600,\1vc!color[math.random(1,4)]!)\t(1600,2000,\1vc!color[math.random(1,4)]!)\t(2000,2400,\1vc!color[math.random(1,4)]!)\t(2400,2800,\1vc!color[math.random(1,4)]!)\t(2800,3200,\1vc!color[math.random(1,4)]!)\t(3200,3600,\1vc!color[math.random(1,4)]!)\t(3600,4000,\1vc!color[math.random(1,4)]!)\t(4000,4400,\1vc!color[math.random(1,4)]!)}
!retime("syl")!{\an5\pos($center,$middle)\t(0,!$dur/2!,\3c&HFFFFFF&\fscx130\fscy130\1vc(HFFFFFF,HFFFFFF,HFFFFFF,HFFFFFF))\t(!$dur/2!,$dur,\3c&HFFFFFF&\fscx100\fscy100\1vc!color[math.random(1,4)]!)}
//这三段一起说,首先是retime的用法,详细说明可以参考这篇文章 ,这个就是把一句歌词拆成了3部分,每句的开始至唱到当前歌词 当前歌词  当前歌词至每句最后,分别对应着!retime("start2syl")!  !retime("syl")!  !retime("syl2end")!,然后就是渐变色的随机挑选,可以看到我用的是\1vc!color[math.random(1,4)]!  这句话,这里面的1,4就是特效第三行中对应的4种颜色搭配,然后\pos($center,$middle)是确定当前字幕位置
然后是背景的樱花飞
cherry = "m 9 23 b 8 22 7 21 6 20 b 4 18 3 16 2 12 b 2 9 3 5 4 3 b 5 2 6 1 7 1 b 8 3 8 4 9 5 b 10 4 10 3 11 1 b 13 2 14 3 14 3 b 15 5 16 8 16 12 b 15 16 14 18 12 20 b 11 21 10 22 9 23"     //樱花的图形

!retime("syl",0,math.random(600,2000))!{\an5\fscx!set_temp("scale",math.random(28,68))!\fscy!temp.scale!\bord1\1c&HBF87FF&\3c&HFFFFFF&\shad0\blur2\move(!$center+math.random(-15,15)!,!$middle+math.random(-15,15)!,!$center+math.random(-80,80)!,!$middle-math.random(-80,80)!)\t(0.2,\frx!math.random(-4500,4500)!\fry!math.random(-6000,6000)!\frz!math.random(-4500,4500)!)\fad(0,500)\p1}!cherry!
//这段主要是樱花的飞行方式,这只是一种,其他的飞行方式大家可以发挥想象力自己创造

嗯...都写完啦,应该已经很简单直白了吧...
还有不明白的欢迎下面回帖问...


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?我想成为村民

x
 楼主| 发表于 2013-3-29 09:01:54 | 显示全部楼层
另外给前辈做的vividred的OP也基本用的是类似方法,只不过颜色多了一些...
想要ass的话找前辈要...我自己没留...
发表于 2013-3-29 09:26:48 | 显示全部楼层
其實那大串的\t可以用while寫
之前有在aegisub的論壇上看到的類似的範例
然後我都拿他的代碼下去改

 楼主| 发表于 2013-4-1 19:07:54 | 显示全部楼层
羽hane 发表于 2013-3-29 09:26
其實那大串的\t可以用while寫
之前有在aegisub的論壇上看到的類似的範例
然後我都拿他的代碼下去改

求代码!
发表于 2013-4-7 21:31:16 | 显示全部楼层
本帖最后由 羽hane 于 2013-4-7 21:32 编辑
小司不笨 发表于 2013-4-1 19:07
求代码!

outstr= "";  -- 定義空字串
dtime=0;  -- 定義起始時間
counter=0; -- 定義計數器時間(做交替用)
while dtime < [這裡時間控制請自行調 太長的話電腦當機本人不負責] do
    dt=10; -- 時間間隔
    color0=((counter%2 == 0) and "[顏色1]" or "[顏色2]"); -- 顏色設定
    color1=((counter%2 == 0) and "[顏色2]" or "[顏色1]");
    outstr = outstr .. string.format("\\t(%d,%d,\\1vc(%s,%s,%s,%s))",dtime,dtime+dt,color0,color1,color0,color1); -- 產生ASS TAG
    dtime=dtime+dt; -- 跳到下一個時間
    counter=counter+1; -- 計數器計數
end; -- 結束while迴圈
outstr = "{"..outstr.."}" -- 將產生的代碼用{}夾起來

之後在template 用!outstr!即可
 楼主| 发表于 2013-4-9 14:21:38 | 显示全部楼层
谢谢~
原来还能这么写...
发表于 2013-4-30 23:44:27 | 显示全部楼层
来学习了、
发表于 2013-5-2 20:43:40 | 显示全部楼层
我来学习啊~~~
您需要登录后才可以回帖 登录 | 我想成为村民

本版积分规则

小黑屋|千夏町

GMT+8, 2019-1-23 15:45 , Processed in 0.062619 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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