荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: 在PowerBuilder中演示3DS的动画文件
发信站: BBS 荔园晨风站 (Thu Jan 21 22:58:37 1999), 转信


  PowerBuilder作为一个面向对象的、基于Client/Server平台的数
据库前端开发工具,在处理动画效果时由于提供了BLOB(Binary Large
Object)数据类型,使得它能够得心应手地处理大字段数据如:图形、
多媒体等。这里,笔者通过将3DS中生成的动画文件.FLC分解后在Po w
erBuilder窗口中形成动画效果,具体说明如何读取BLOB类型的图形数
据。
    1.在3DS中生成.TGA文件
    众所周知,3DS动画文件.FLC的播放一般要通过专有的程序如:AAp
lay.EXE或Sea图形演示工具来完成。显然,要想在PowerBuilder窗口
中直接播放.FLC文件是非常困难的,这需要编写复杂的脚本(Script)
。实际上,我们完全可以采用其他一些更灵活的办法。首先,在3DS的
关键帧模块中(KeyFrame),激活着色设置命令(Render/Setup),在Outp
ut选项中选择.TAG类型的文件而不是.FLC。KeyFrame生成的.TGA文件
就是动画文件.FLC的静态分解。一个几秒钟的动画文件可以被分解成
30或超过30个.TGA文件。动画文件可以被认为是静态图形在规定时间
内(几秒、几十秒或更长的时间)的连续显示。
    这里,笔者将自己的动画文件分解成了30个.TGA文件。
    2.用Sea图形软件进行文件格式转换
    由于PowerBuilder的图形控件不支持.TGA类型的文件,因此,可以
选择Sea图形文件,将文件类型由.TGA转换成.BMP。

    3.定义窗口W—Play
    定义一个窗口,并取名为W—Play,在窗口中加入一个图形控件,取
名为P—3d。选择刚才生成的30个.BMP文件中的第一个即1.bmp作为图
形控件的起始画面。
    4.定义窗口变量
    blob picture [30]blob magic   [30]int pp,flag=1这里,之所
以定义一个flag标志是为了今后便于关闭PowerBuilder中的Timer事
件。

    5.定义窗口的Open事件
    int i,y,loops,mn
    string  filename
    long    flen
    for  i=1 to 30
      filename=string (i)+".BMP"
      flen=filelength (filename)
      mn=fileopen(filename,Streammode!)
      if flen > 32765 then
         if  mod (flen,32765) =0 then
           loops = flen/32765
         else
           loops=(flen/32765)+1
         end if
       else
         loops = 1
       end if
       for j=1   to loops
         fileread (mn,magic[j])
         picture[i]= picture[i]+ magic[j]
       next
       fileclose (mn)
    next
      if flag < >0 then
         timer (0.1)
      else
         timer(0)
      endif

    6.为窗口W—Play编写Timer事件
     pp++
     if pp > 30 then
       flag = 0
     else
       P—3d.Setpicture (picture[pp])
     end if

    7.两点说明
    ·这里,之所以作了几次循环处理,是因为在PowerSctipt函数Fil
eread()有它的局限性。该函数一次只能读取32765个字符,如果.bmp
文件超过了这个限制,将无法正常读取。而实际生成的.BMP文件尤其
是在3DS中生成的这类图形文件往往很大,一个.bmp文件有几百K是很
正常的,所以为了在PowerBuilder中正常调入这些大的.bmp文件必须
经过多次循环读取。
    ·当标志flag=0时,Timer事件被关闭。否则,动画将反复演示,除
非关闭了窗口。
    运行上述程序后,在PowerBuilder窗口将为用户演示出一个相当
平滑的三维立体动画效果。
    上述程序在P/120、16M内存、E3-765图形加速卡的兼容机上调试
通过
--

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店