Category: Thought


前面已经把基本上嵌入字体的相关知识都梳理了一遍:

  • 如何在Flash IDE中嵌入字体
  • 如何在Flash IDE中使用嵌入的字体
  • 如何使用Flex SDK嵌入字体
  • ActionScript如何使用嵌入的字体
  • 运行时共享字体库的两种方法

下面讨论一下几种问题和可能性:

  • Font类只有registerFont()方法,而没有unregisterFont()。不知道如果向系统中多添加一些字体定义以后会不会有内存占用的问题。
  • 把整个中文字库完全嵌入所增加的文件量大约在5M-10M,现在的视频Intro也差不多要3M-5M。随着宽带的进一步发展,把中文字库完全嵌入也并非不可能。
  • 在文字内容可知的情况下,不管用哪种方法,我们都必须手动去生成字体库。当然如果是配合CMS后台的话,可以编写后台程序来批处理的生成AS文件。配合命令行调用编译器甚至可以直接生成包含字体的swf文件。关于这方面的讨论,可以看看这里这里
  • 进一步想,用户输入的字符用嵌入字体来渲染也并非不可能。关键是精简初始字库,然后逐步加载更完整的字库。比如我们可以先加载常用汉字"Font1"(1M-2M左右),然后再加载其余的汉字"Font2"。
    那么如何调用正确的字体来实时显示呢?我们可以借助Font类实例的一个hasGlyphs()方法,来检测当前字体是否包含了某个字符的矢量信息(glyphs)。如果字符已经可以被渲染,则设置embedFonts,否则我们则用系统字体来显示。

View full article »

view Barcinski & Jeanjean Website (Part1)
view Barcinski & Jeanjean Website (Part2)

另一个让人头疼的问题来了:文件量。搞一个高端的用户体验,在精度上总不能太寒碜,但是又怕用户等不了,怎么办?一开始加载的时候,他们为大家准备了一个 3D 弹球游戏,在一定程度上减弱了用户等待的焦虑感。但是网站内里太大太慢也是不行的,真功夫还是要拿出来的。

问题是背景,该用图片序列还是视频?一般经验告诉我们,像这种全景的东西,顺放倒放的,肯定都是用序列:flv倒放会卡。比如经典的IKEA网站用的就是图片序列。但是,这是过去的经验了。Barcinski & Jeanjean 告诉我们:jpg效率低,用 flv 才是高效,而且文件量小。How could it be?

OK,不知道大家是否有注意,在编码 flv 的时候可以设置关键帧距离。下图是AE里截的,Flash自带的编码器也可以设置。

SNAG-000[2]

一般我们都用自动方式,所以没太注意。但是如果将这个值设为1,那么就等于每一帧都编码为关键帧。由于播放器在解码非关键帧的时候需要在这一帧之前的关键帧数据,所以顺放和倒放的区别就在于:当前帧依赖的关键帧是否已经读取到内存中。那么如果每一帧都是关键帧,那顺放和倒放并没有区别!这样的设置无疑会增加 flv 的大小,但是还是比 jpg 序列小很多。而且在执行效率上,解码 flv 比 解码 jpg 速度快!感谢技术的进步,我们终于可以和臃肿的 jpg 序列说拜拜了!

过去还有个经验是:先载小图,再载大图盖上去。但是在这个网站里并没有这种做法,对此他们的解释是:无法忍受freeze。因为大图片的解码过程会让 Flash Player卡住,通常情况下,用户不会注意到这瞬间的停顿。但是这里场景中结合了Papervision3D制作的纸,具有动态的物理效果,这样的停顿 就会很明显。因此他们采用直接加载最终精度的flv的办法。

还记得IKEA网站中独特的加载方式吗?那是一种将序列重新组织的方法。可以让用户边下载边体验,没加载到的部分是过不去的。Barcinski & Jeanjean 面临同样的难题:即便用了flv压缩,主文件还是有16m之大。他们想了个天才的解决方法,在这篇文章里他们画了一个圆饼图表述了他们的思路。我总结一下:首先是在这个网站里达到平滑顺畅的全景体验需要144帧,如果我们隔一帧就抽掉一帧,就能省掉一半的文件量。此时播放的原始帧序号为“1,3,5,7,9,11,...”。如果我们再重复一次上一步的抽帧操作,那就只剩1/4的文件量了,已经降到的3M左右可以接受的范围。经过两次抽帧的文件只剩下36帧,此时播放的原始帧序号为“1,5,9,13,...”。抽帧后的视频仍然是一个完整的全景循环,只是不够平滑而已。

方法出来了:我们先提供经过抽帧两次的视频,用户加载完这个文件已经可以正常的浏览网站。然后在后台继续加载第二次操作中抽去的那部分,当这个文件加载结束后,就已经还原了1/2的帧数。最后再把剩下的1/2——也就是所有的偶数帧组成的视频文件加载进来。 View full article »

做 Motion 的免不了和 Camera 打交道,不管是三维软件还是后期软件中的 Camera。有经验的都知道,想调出优美的镜头运动不是一件容易的事。特别是有的片子,通篇就一个长镜,更是考验 Motion Grapher 的功夫。

Maya 中有单点、两点和三点相机可供选择。After Effects 默认是两点相机。也可以取消自动对齐目标点,从而成为单点相机。无论是哪种,即使配合曲线调节,控制方法都太单一了。最大的问题是属性都是连在一起的:比如位移属性就包含了xyz三个坐标,非常不方便独立调节。而且这种方式很容易造成关键帧无谓的增加,一旦增加到一定的数量就几乎没办法调好。

所以动画师们想出各种各样简化调节的办法(Camera Rig):有用空物体做父子关系的,也有用脚本控制的。我深受相机调节之苦,所以一看到这类方法都会去尝试一下。得出的结论是:没有完美的 Rig 方法。有时也许只用其中一种技术就能达到效果,但更多的时候需要综合运用各种方法。所以我现在追求最适合的 Rig ,只要感觉动画调起来很流畅,没有束手束脚的感觉,那就对了。

在讲技巧前,首先要做好的一个选择是用单点相机还是多点相机,其实就是选择控制相机旋转的方法:到底是用目标点还是用自身的旋转值。比如模拟一个人进入博物馆,左右张望的情形,用自由相机就很合适。模拟 A 盯着 B 看,就把两点相机的目标点绑定在B上。三点相机比两点相机又多了一个自身旋转的控制点,想像一下坐过山车的时候整个人被旋转颠倒的感觉。适当的在动画中加入一些倾斜的感觉会更真实。

下面让我们来看看方法都有哪些。例子主要是 After Effects 中的,但是可以很方便的拓展到别的软件。

1.如何解决绕单点旋转的需求,如模拟黑客帝国子弹时间。如果简单的用 After Effects 的路径动画功能来做的话,你至少需要四个关键帧,才能把路径调成圆形,而且花费需要一定的调节路径的时间。但使用以下方法,只需要两个关键帧就可以了。

在目标点处创建一个空物体,设为相机的父物体。只需设置空物体的旋转关键帧就可以了。比如0-360,一个完美的圆形绕圈就完成了。不仅方便,而且由于相机独立于旋转动画,可以很方便的加入其他动画。比如后面提到的模拟手持晃动的效果。

View full article »

Powered by KevinCao.com ©2010 | Platform: WordPress | Theme: Motion
kevincao.com