名侦探柯南事务所

标题: 想了想,还是决定单独发个帖子,想学习下45所剧场版片头的制作 [打印本页]

作者: 撒哈拉温泉    时间: 2008-10-24 21:36
标题: 想了想,还是决定单独发个帖子,想学习下45所剧场版片头的制作
我们要做一个5分钟短片,我想了下,想负责做下片头,所以来学习下事务所剧场版片头是怎么做出来的,就是那个人员名单的片头。如果可以的话,非常感谢!
终于打开2楼的链接了,但……完全看不懂……我想知道作者是学什么专业毕业的?作者竟然可以如此轻松的驾驭如此多的软件……佩服!但这恐怕已经超过动画学院的的水平了吧?我希望能在短时间内学会的,m12的水准很高,因为几周之后(可能就在下周),我就要确定下来自己到底能不能作出一个比较能说得过去的片头,不需要太专业,因为我不是动画学院的,m11的标准不知道如何,效果蛮好的,有没有比较能速成的,万分感谢!我真的很急,主要是想在短时间内知道自己到底有没有把握在这么短的时间内学会,一旦承诺了就必须要做出来,我们一周45节课,没有太多时间去学……只是希望能努力去做,只要这可能的话,但我从没学过……我们也就在电脑课上刚刚开始学3ds max……希望有高人来帮下忙,出点点子,谢谢!

[ 本帖最后由 撒哈拉温泉 于 2008-10-25 23:05 编辑 ]
作者: 谁的马甲    时间: 2008-10-24 21:51
看这个吧XD写得很详细了
http://blog.ieph.cn/2008102112458.html
虽然没有经过作者的同意……不过我想这个转载一下应该没关系吧(挠头
作者: 撒哈拉温泉    时间: 2008-10-25 11:39
原帖由 谁的马甲 于 2008-10-24 21:51 发表
看这个吧XD写得很详细了
http://blog.ieph.cn/2008102112458.html
虽然没有经过作者的同意……不过我想这个转载一下应该没关系吧(挠头

不知道为什么打不开……
作者: 撒哈拉温泉    时间: 2008-10-25 22:25
终于打开2楼的链接了,但……完全看不懂……我想知道作者是学什么专业毕业的?作者竟然可以如此轻松的驾驭如此多的软件……佩服!但这恐怕已经超过动画学院的的水平了吧?我希望能在短时间内学会的,m12的水准很高,因为几周之后(可能就在下周),我就要确定下来自己到底能不能作出一个比较能说得过去的片头,不需要太专业,因为我不是动画学院的,m11的标准不知道如何,效果蛮好的,有没有比较能速成的,万分感谢!我真的很急,主要是想在短时间内知道自己到底有没有把握在这么短的时间内学会,一旦承诺了就必须要做出来,我们一周45节课,没有太多时间去学……只是希望能努力去做,只要这可能的话,但我从没学过……我们也就在电脑课上刚刚开始学3ds max……希望有高人来帮下忙,出点点子,谢谢!

[ 本帖最后由 撒哈拉温泉 于 2008-10-25 23:02 编辑 ]
作者: 会flash的弟子    时间: 2008-10-25 22:32
虽然我不介意再转来这个,不过说真的,这事情急不来的。

以下说了这么多,其实做个片头不过要三个条件:
最次要的,掌握软件;
其次的,要有想法;
最最重要的,要有爱。

-----------------------------------------------------------------------

M12 的片头未必是做得最好的一次,但这绝对是工序最复杂的一次,因而我也想借此谈谈片头的创作。虽然在视频处理方面我不专业,但杂七杂八的东西学了不少,各种工具的结合还算是有经验的,这次就主要针对这一点,希望对视频创作有感兴趣的同学有所收获。但这不是一篇教程。要把整个片头的来龙去脉写清楚估计一个月都不够,所以只谈我觉得比较重点的部分,其余问题可以再讨论。另外解决问题的方法很多,而我也是抱着能用就好的态度,很多方法恐怕远不是方便的(例如我压 x264 都是用 Premiere CS3 附带的 Adobe Encoder ……),有更方便的方法欢迎指出和讨论~

然后以下就是M12片头所用到的软件:
音频软件:
Cakewalk SONAR 7(MIDI编辑)
True Pianos(钢琴音源)
Adobe Audition 2(音频编辑)
ASIO4ALL v2(ASIO驱动)

视频软件:
Photoshop CS3(设计)
Flash CS3(二维动画)
3DS Max 9(三维动画)
Vray 1.5(鱼眼效果渲染)
Fusion 5(后期合成)
Tinderbox(用了其中的T-Rays插件)
VirtualDubMod(视频音频混合、编码)

程序工具:
Flex Builder 3(AS3脚本编辑)
Visual Basic 6(VB脚本编辑)

脚本语言:
Action Script 3(MIDI文件读取、同步MIDI和二维动画)
MAXScript(同步MIDI和三维动画)
Visual Basic 6(SWF的动态截图)
AVS(视频音频混合)



一、构思——特效基本上就是粒子

有次和小N闲聊的时候我说过“特效基本上就是粒子”。爆炸是粒子的涌出,水是粒子的流体运动,群体动画也算是高级点的粒子,甚至于渲染本身都可以看作是模拟(光)粒子的运动。425片头用粒子模拟了血液;M10片头用粒子弄了乐谱;07年TV片头(我称之为熔炼版)用粒子模拟了飞溅的铁花;M11片头用粒子模拟了鱼群(一定没人看出来吧 =_,=||| 我承认很失败);红与黑片头用粒子做了爆炸效果;M2片头用粒子做了扑克牌的碎片。这些片头不仅把粒子用在不同的方面,实际上用的也全是不同的粒子系统:425用的是AS2(Flash)粒子;M10用的是AS3(Flex)粒子;熔炼版用的是 Fusion 的粒子流;M11用的是 ParticleGen ;红与黑用的是 3DS Max 的 PArray 粒子;M2用的是 3DS Max 的粒子流。那么,用粒子还可以做什么样的效果呢?汉化 M12 LOGO 的时候上面缠绕的线条给我留下了深刻的印象:



于是有了第一个想法,这次不要用“点”,而要用“线”。本质上这两样没什么不同,点是粒子的像,线是粒子的轨迹,但相信这可以给人耳目一新的感觉,而且线很有音乐的味道。另一个灵感则来源于……LHC=_,= BBC的《宇宙大爆炸机器》看得我很兴奋。结合M12的音乐主题我便决定了这次片头的几个要点:

1、配合音乐弹出粒子;
2、粒子的运动遵循万有引力定律,即加速度是距离的平方反比; =_,=
3、粒子碰撞后产生音符。

其中第三点由于和M10雷同,再加上会让片头更加混乱,就放弃了。抱着这些 ideas ,一个片头的创作便开始了……


二、BGM——好的音乐是成功的一半

猜猜看片头创作最花时间的步骤是啥,其实是——找歌|||因为我个人的创作习惯是配合音乐创作,画面的变化都是以音乐的变化为前提的,所以音乐相当重要。这次由于主题是音乐,还要配合音乐弹出粒子,对音乐的要求更高了。看看我找了一整天之后求助月饼时贴的要求吧:
1、有乐谱和MIDI数据;
2、乐器多而不杂;
3、音符丰富又不激烈;
4、淡入的开头,大约25秒一个片段。

最后我找了两天多,翻遍了十来个 MIDI Sheet 网站,听了数百首曲子,彻底听觉疲劳了 = = 原本打算用月饼推荐的 Final Fantasy VI 的Tina (Terra's Theme) ,但是找了十多个MIDI都没有MP3弹的好,也放弃了。最后是挑了D. gray-man 的 Lala's Lullaby 。里边有15秒的片段很有感觉,就是太短了,于是稍微改了一下MIDI,加长到25秒。这曲子虽然还是没满足那几个要求,不过长处是激烈而不混乱,高音区和低音区各有特色,可以独立成歌,搭配起来又有不同的味道,因而我放弃了之前想做的各种乐器形成“总谱”的想法,而是让高音区和低音区相和。原先钢琴的摆放方式也让我想了好久,这下决定上方摆低音区(左手部分),下方摆高音区(右手部分),再用一个鱼眼镜头(这也是拜LHC那片子之赐)可以得到不错的视觉效果。




三、同步——从音乐到动画

最初我想要的效果是,一张总谱,各种乐器演奏的同时乐谱上会现出音符,但是一来找不到合适的音乐,二来音符和M10雷同,就改成只有钢琴了。不过不管怎样,要动画和音乐完全同步,无非两种方法,一是手调,二是利用MIDI……我自然不会选第一种。MIDI的文件格式还算简单,因为以前研究过这个东西,并没有花什么时间,以下是我读取MIDI文件的部分代码(Action Script 3),不过要用的话还是要先研究下MIDI标准哟:
  1. _messages = new Array();
  2. _notes = new Array();
  3. var ba:ByteArray = loader.data as ByteArray;
  4. if (ba.readUTFBytes(4) != "MThd") throw READ_ERROR;
  5. if (ba.readUnsignedInt() != 6) throw READ_ERROR;
  6. _format = ba.readUnsignedShort();
  7. _numTracks = ba.readUnsignedShort();
  8. var division_1:int = ba.readByte();
  9. var division_2:uint = ba.readUnsignedByte();
  10. if (division_1<0) _division = -division_1*division_2;
  11. else _division = (division_1 << 8) + division_2;
  12. var MTrk_index:uint = 0;
  13. var tempo:uint = 60000000/120; // microseconds per quarter note
  14. while (ba.bytesAvailable > 0) {
  15.  var chunk:String = ba.readUTFBytes(4);
  16.  var len:uint = ba.readUnsignedInt();
  17.  var pos:uint = ba.position + len;
  18.  if (chunk == "MTrk") {
  19.   var note_unclosed:Array = new Array(16*128);
  20.   var last_status:uint;
  21.   var step:Number = 0;
  22.   while (ba.position < pos) {
  23.    step += readVarLen(ba)*tempo/_division;
  24.    var status:uint = ba.readUnsignedByte();
  25.    var value1:*, value2:*;
  26.    if (status < 0x80) { // Running Status
  27.     ba.position--;
  28.     status = last_status;
  29.    }else {
  30.     last_status = status;
  31.    }
  32.    if (status < 0x80) {
  33.     throw READ_ERROR;
  34.    }else if (status < 0xC0) { // 2 bytes
  35.     value1 = ba.readUnsignedByte();
  36.     value2 = ba.readUnsignedByte();
  37.     _channels[status & 0x0F].visible = true;
  38.    }else if (status < 0xD0) { // 1 bytes - Program Change
  39.     value1 = ba.readUnsignedByte();
  40.     value2 = null;
  41.     _channels[status & 0x0F].program = value1;
  42.     _channels[status & 0x0F].visible = true;
  43.    }else if (status < 0xE0) { // 1 bytes
  44.     value1 = ba.readUnsignedByte();
  45.     value2 = null;
  46.     _channels[status & 0x0F].visible = true;
  47.    }else if (status < 0xF0) { // 2 bytes
  48.     value1 = ba.readUnsignedByte();
  49.     value2 = ba.readUnsignedByte();
  50.     _channels[status & 0x0F].visible = true;
  51.    }else if (status == 0xF0) { // SysEx
  52.     value1 = null;
  53.     value2 = null;
  54.     do {
  55.      if (ba.bytesAvailable == 0) throw READ_ERROR;
  56.     }while (ba.readUnsignedByte()!=0xF7)
  57.    }else if (status == 0xF1) { // 1 bytes
  58.     value1 = ba.readUnsignedByte();
  59.     value2 = null;
  60.    }else if (status == 0xF2) { // 2 bytes
  61.     value1 = ba.readUnsignedByte();
  62.     value2 = ba.readUnsignedByte();
  63.    }else if (status == 0xF3) { // 1 bytes
  64.     value1 = ba.readUnsignedByte();
  65.     value2 = null;
  66.    }else if (status < 0xF6) { // ? bytes
  67.     value1 = null;
  68.     value2 = null;
  69.     do {
  70.      if (ba.bytesAvailable == 0) throw READ_ERROR;
  71.     }while (ba.readUnsignedByte()<0x80)
  72.     ba.position--;
  73.    }else if (status == 0xF6) { // 0 bytes
  74.     value1 = null;
  75.     value2 = null;
  76.    }else if (status == 0xF7) { // SysEx
  77.     throw READ_ERROR;
  78.    }else if (status < 0xFF) { // 0 bytes
  79.     value1 = null;
  80.     value2 = null;
  81.    }else {
  82.     value1 = ba.readUnsignedByte();
  83.     len = readVarLen(ba);
  84.     if (value1 == 0x00) { // Sequence Number
  85.      if (len == 0) value2 = MTrk_index;
  86.      else if (len == 2) value2 = ba.readUnsignedShort();
  87.      else throw READ_ERROR;
  88.     }else if (value1 == 0x2F) { // End of Track
  89.      break;
  90.     }else if (value1 == 0x51) { // Tempo
  91.      tempo = (ba.readUnsignedByte() << 16) + (ba.readUnsignedByte() << 8) + ba.readUnsignedByte();
  92.      value2 = tempo;
  93.     }else if (value1 == 0x54) { // SMPTE Offset
  94.      value2 = readHexString(ba, len);
  95.     }else if (value1 == 0x58) { // Time Signature
  96.      value2 = ba.readUnsignedByte() + "/" + Math.pow(2, ba.readUnsignedByte()) + "; " + ba.readUnsignedByte() + " cpq; " + ba.readUnsignedByte() + "npq";
  97.     }else if (value1 == 0x59) { // Key Signature
  98.      value2 = NOTES[ba.readByte()+8] + (ba.readUnsignedByte()==0?" Major":" Minor");
  99.     }else {
  100.      value2 = ba.readMultiByte(len, charSet);
  101.     }
  102.    }
  103.    _messages.push({track: MTrk_index, step: uint(step/1000), status: status, value1: value1, value2: value2});
  104.   }
  105.   if (_length*1000 < step) _length = uint(step/1000);
  106.   MTrk_index++;
  107.  }
  108.  ba.position = pos;
  109. }
复制代码
下一步是根据音符的On和Off来控制动画。我最初的想法是这样的:
音符On:按下键盘按键,光照到按键上;
音符Off:松开键盘按键,光消失,同时打出一束粒子。
后来稍有改动,光是音符On后才慢慢亮起来,到音符Off的时候全亮,然后马上消失,此时打出的粒子因为有同等的亮度而不至于不自然。打出的粒子是同样AS3生成的平面动画,没有什么困难,但键盘和灯光是三维动画,需要用 MAXScript 控制。不过这回的三维动画相当简单,在每个按键上方放一个点光源,按键和光源的ID都以音名结尾,按键只需做旋转动画,而灯光是控制 multiplier :



最后用AS3生成了类似这样的 MAXScript :
  1. with animate on at time 35(
  2.  $note_F6.rotation.x_rotation = 0
  3.  $note_D4.rotation.x_rotation = 180
  4. )
  5. with animate on at time 37(
  6.  $light_F6.multiplier = 0
  7.  $light_D4.multiplier = 0
  8. )
  9. with animate on at time 38(
  10.  $note_F6.rotation.x_rotation = 10
  11.  $note_D4.rotation.x_rotation = 190
  12. )
  13. with animate on at time 39(
  14.  $note_D6.rotation.x_rotation = 0
  15.  $note_F6.rotation.x_rotation = 10
  16. )
  17. with animate on at time 41(
  18.  $light_D6.multiplier = 0
  19.  $light_F6.multiplier = 2
  20. )
  21. with animate on at time 42(
  22.  $note_D6.rotation.x_rotation = 10
  23.  $light_F6.multiplier = 0
  24.  $note_F6.rotation.x_rotation = 0
  25. )

  26. ...

  27. with animate on at time 572(
  28.  $light_D4.multiplier = 0
  29.  $note_D4.rotation.x_rotation = 180
  30.  $light_D3.multiplier = 0
  31.  $note_D3.rotation.x_rotation = 180
  32. )
复制代码
四、线条——线条就是粒子的轨迹

做出线条效果的方法有很多,简单点的可以用Mask,复杂点可以写脚本画线,这次因为粒子是遵循万有引力运动,为了让线条尽量流畅,我每秒计算2400步,并用Fusion的 Trails 工具做出脱尾效果。所谓脱尾,就是进行逐帧的叠加(或者其它混合模式,这里是用Screen ,即正片叠底)。如下图就是钢琴上弹出线条的生成:



通过设定 Gain 参数,可以使得越早生成的线条越先暗下去。你大概注意到了,这里弹出的线条是有颜色的,加上颜色不是为了使得线条好看,而是为了区分不同的区域,因为不同区域脱尾的程度不同,钢琴上的光点两三帧就要暗下去,而细线条要拖个十几帧。之后将图片分离成红、绿、蓝三个通道,蓝色通道脱尾最长,绿色次之,红色最短。用 Fusion 的节点表示即是这样:



即使没用过 Fusion 应该也看得懂吧XD


五、炼成——战栗的总谱

最后合成的 Fusion 结构如图:



左边的输入,从上往下依次是:
pianoc####.png 钢琴三维动画,无光照的(自发光的);
pianod####.png 钢琴三维动画,带光照的;
x####.jpg 线条动画;
logob.jpg 最后LOGO呈现前的线条动画,也是用脱尾效果做出来的;
o####.jpg STAFF 字幕,由于不用脱尾,和 x####.jpg是分开渲染的;
Backgroud3 一个上白下黑的渐变背景,为了使 LOGO 更有质感而加的;
logox.jpg LOGO 静态图片;
presents####.jpg 就是写出“presents”的那段动画,还是用脱尾效果做出来的;
mark####.jpg 高音符合的动画,依然是 Flash+脱尾效果;
url####.jpg 就是 www.aptx.cn 出现的动画,因为用Flash 做更方便,所以用的是 Flash ;
Background1 普通的黑屏。

这次的配色相当偷懒,只是在最右下方那一小块完整了整个片头的配色,用了两个 ColorCorrector ,一个染红,一个染黄,再用一个 Mask 限定亮的区域偏黄,暗的区域偏红。(实际上用一个 ColorCorrector 就好了,但我总觉得不好控制 - -b)


作者: 愛ちんファン    时间: 2008-10-25 22:48
来膜拜FGG
作者: 云之印    时间: 2008-10-25 22:59
标题: 回复 5# 会flash的弟子 的帖子
很强很强大的帖子啊
一定要出来膜拜一下的

这么多的软件 工具和语言已经把我吓到了
我还是看我的管理学去吧  光速跑走...
作者: hahahah    时间: 2008-10-25 23:02
同来膜拜FGG
作者: 撒哈拉温泉    时间: 2008-10-25 23:10
原帖由 会flash的弟子 于 2008-10-25 22:32 发表
虽然我不介意再转来这个,不过说真的,这事情急不来的。

以下说了这么多,其实做个片头不过要三个条件:
最次要的,掌握软件;
其次的,要有想法;
最最重要的,要有爱。

--------------------------------------------------------- ...

这个必须感谢一下!我刚打开这个网页,没想到这么耐心的把整个文章都贴上来了,万分感谢!不过我只具备了你说的第 2 3个条件,第一个完全不具备……而且现在最麻烦的是:时间可能不够……我愿意以万分的诚意来想办法完成,起码知道我到底有没有可能在2——3周的时间之内学会并完成……感谢!!!!!!!
作者: 会flash的弟子    时间: 2008-10-25 23:39
虽然我觉得急不来,但也要看你有什么基础需要做到什么程度和愿意付出多大努力吧。上文的后两个条件可都比第一个苛刻哟 =_,=
建议花个一两天时间翻书寻找适合自己的软件并学会,花个一两天思考如何做,再花个一两天做,祝你成功~

PS. 我是学生物的 =_,=
作者: Haibari Ai    时间: 2008-10-26 00:35
原來F是學生物的........完全看不出來.......

這次M12的片頭非常喜歡......辛苦F了......>V<
作者: You-know-who    时间: 2008-10-26 00:54
比较专业了,完全看不懂= =|||

不过顺便赞一下这次的片头
作者: 撒哈拉温泉    时间: 2008-10-26 09:21
感谢F!才看见10楼的建议。没想到f是学生物的……请问你是先从哪个软件开始学的啊?有没有最低标准必须会哪几个软件?

[ 本帖最后由 撒哈拉温泉 于 2008-10-27 10:07 编辑 ]
作者: 嘉儿    时间: 2008-10-26 10:11
F你变态了= =
我还真没看出那片头那么麻烦。。不过效果确实不错~
总的感觉就是越来越眩了。。只是我个人偏爱色彩变化丰富的~
作者: lyguonan    时间: 2008-10-26 10:15
强!膜拜一下~~
作者: boyxuxiang    时间: 2008-10-26 11:07
进来学习下
作者: 黑小    时间: 2008-10-26 11:55
好强大。膜拜下。
保存了。有时间的时候去学学。
作者: 绫原哀    时间: 2008-10-27 05:53
膜拜M12片头,膜拜会f弟子
作者: TL    时间: 2008-10-27 09:29
技术和艺术融合不简单啊~~。。。所以F是难得的人才。。。
作者: 小33    时间: 2008-10-27 14:45
F太强大了。。。。这么复杂啊原来= =真是辛苦了
偶对学生物很好奇- -生物专业如何的说囧
作者: 海蒂    时间: 2008-10-27 14:53
生物啊……原来和我一个专业的,膜拜下……
M12的片头真的是觉得很赞,看到的时候就觉得事务所的片头越来越华丽了~
作者: 会flash的弟子    时间: 2008-10-27 16:16
原帖由 撒哈拉温泉 于 2008-10-26 09:21 发表
感谢F!才看见10楼的建议。没想到f是学生物的……请问你是先从哪个软件开始学的啊?有没有最低标准必须会哪几个软件?


就像上面说的,软件是次要的,也没什么标准学法和标准流程,必须根据自身情况选择软件和选择想法。

首先看你的片头想达到一个什么目的,单纯吸引别人注意力的话,恒◎祥广告那样的就很成功了;如果是作为作业之类有人打分的话,可能要炫耀一下技术,找些华丽简单却不常用的软件是速成的好方法;如果是为了留下回忆什么的,嗯,商量吧……

然后看你的片头要做成什么风格,华丽型的,古典型的,KUSO型的,等等,像 Lu◎ky S×ar 什么的也不是不行 - -b...有创意的话用DV加上剪辑也能做出很棒的视频。

最后如果真要列个表的话,单纯的 Flash 可以做二维片头,单纯的 3DS Max 之类可以做三维片头,Premiere、VDM 或是 Windows Movie Maker 等可以做剪辑,更深入的话可以学 After Effect 或是 Fusion 。另外也可以动些歪脑筋诸如 PPT+截屏软件 之类的组合。

此外 YouTube 上有很多创意可以借鉴,Google 上可以找到各种软件的说明和体验,咱不是速成党只会劝你慢慢看慢慢学 =_,=




欢迎光临 名侦探柯南事务所 (https://bbs.aptx.cn/) Powered by Discuz! X2.5