科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件JAVA 3D动画展示图(Part2,使用QuickTime)

JAVA 3D动画展示图(Part2,使用QuickTime)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  在这一系列的第一部分中,我描述了在JMF(JAVA媒体帧工作器 下同)的帮助下,怎样将一部电影片断插入JAVA 3D场景中。这个执行过程使用Model-View-Controller设计模式。

作者:builder.com.cn 2007年8月24日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
QuickTime动画由QTSnapper类加载,动画屏幕由QTMovieScreen创建.每40毫秒,TimeBehavior对象调用QTMovieScreen中的nextFrame()方法.然后调用QTSnapper中的getFrame()方法获取动画中的一个帧.依次循环.
  
  JMFSnapper与QTSnapper之间有一个很重要的不同.JMFSnapper返回一个帧,这个帧是动画播放时的当前帧.而QTSnapper返回动画中的帧根据递增的索引.
  
  例如.当getFrame()方法在JMFSnapper被反复调用时,也许会重新得到帧1,3,6,9等等,它是由方法何时被调用与动画播放速度决定的.当getFrame()方法在QTSnapper被调用,它将会返回帧1,2,3,4等等.
  
 

  
图3:UML类的应用图表,仅列出公共方法.

  
  此图表除了动画屏幕名和动画类名(QTMovieScreen 和 QTSnapper)外,与第一篇文章的相同.事实上,只有Snapper类的内部执行被改变.
  
  JMF Movie3D应用程序和QTJ-based版本之间的改动需要Snapper被重写.
  
   // global variableprivate QTSnapper snapper;  // was JMFSnapper// in the constructor, load the movie in fnmsnapper = new QTSnapper(fnm);
  
  这两处改动是由于须将JMFMovieScreen重命名为QTMovieScreen.
  
  这个例子中的所有代码,和文章的早期版本,可以在KGPJ website查询到.
  
  3.一帧一帧的动画
  
  理解QTSnapper的内在工作机理,可以帮助我们对QuickTime动画构造有一个大致的认识.每一幅动画可以理解为视频轨迹和音频轨迹在相同时间上的重叠.图4是这种思想的图示
  
 

  
图4:QuickTime动画的内部构造机理

  
  每个轨迹控制着其自身数据,例如它包含的媒体类型和媒体本身.媒体容器(media container)有它自己的数据结构,包括它的持续时间和播放率(每秒播放抽样数).媒体是由一组抽样(或帧)组成,第一个抽样时间为0(与媒体时间有关).抽样是被变址的,第一个抽样在1位置(非0).
  
  图5大致描述了QuickTime的轨迹和媒体结构
  
 

  
图5:QuickTime轨迹和媒体的内在构造机理
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章