欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    06-动画制作.ppt

    • 资源ID:69739912       资源大小:523KB        全文页数:22页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    06-动画制作.ppt

    MATLAB 程式設計入門篇動畫製作張智星jangcs.nthu.edu.twhttp:/www.cs.nthu.edu.tw/jang清大資工系 多媒體檢索實驗室MATLAB 程式設計入門篇:動畫製作6-1 MATLAB 動畫簡介nMATLAB 產生動畫的方式有兩種:n電影方式:n以影像的方式預存多個畫面,再將這些畫面快速的呈現在螢幕上,就可以得到動畫的效果。此種方式類似於電影的原理,可以產生很繽紛亮麗的動畫,但是其缺點為每個畫面都必需事先備妥,無法進行及時成像(Real-time Rendering),而且每個畫面,以至於整套動畫,都必需佔用相當大的記憶體空間。n物件方式:n在 MATLAB 的握把式圖形(Handle Graphics,詳見本書第七章)概念下,所有的曲線或曲面均可被視為一個物件,MATLAB 可以很快的抹去舊曲線,並產生相似但不同的新曲線,此時就可以看到曲線隨時間而變化的效果。使用物件方式(即握把式圖形)所產生的動畫,可以呈現即時的變化,也不需要太高的記憶體需求,但其缺點是較難產生太複雜的動畫。MATLAB 程式設計入門篇:動畫製作6-2 以電影方式產生動畫n以電影方式來產生動畫,可由下列兩個步驟來達成:n使用 getframe 指令來抓取圖形做為電影的畫面,每個畫面都是以一個行向量的方式,置放於整個代表電影的矩陣。n使用 movie 指令來播放電影,並可指定播放的重複次數及每秒播放的畫面數目。MATLAB 程式設計入門篇:動畫製作電影動畫之範例一n在下例中,我們將以不同的角度來顯示 peaks 函數,並將其結果以電影的方式來呈現動畫。n範例6-1:movie01.mclear M%清除電影資料矩陣 Mn=50;%抓取 50 個畫面peaks;fprintf(抓取畫面中.n);for i=1:nview(-37.5+i*360/n,30);%改變觀測角度M(i)=getframe;%抓取畫面,並存入電影資料矩陣 Mendfprintf(播放電影中.n);movie(M,3);%播放電影三次MATLAB 程式設計入門篇:動畫製作電影動畫之範例一n最後一個 frame 的畫面MATLAB 程式設計入門篇:動畫製作電影動畫之範例二n將 peaks 函數畫在圓盤上,然後再變換此函數的高度,以動畫呈現n範例6-2:movie02.mclear M%清除電影資料矩陣 Mr=linspace(0,4,30);%圓盤的半徑t=linspace(0,2*pi,50);%圓盤的極座標角度rr,tt=meshgrid(r,t);xx=rr.*cos(tt);%產生圓盤上的 x 座標yy=rr.*sin(tt);%產生圓盤上的 y 座標zz=peaks(xx,yy);%產生 peaks 在極座標的資料n=30;%抓取 30 個畫面scale=cos(linspace(0,2*pi,n);fprintf(抓取畫面中.n);for i=1:nsurf(xx,yy,zz*scale(i);%畫圖axis(-inf inf-inf inf-8.5 8.5);%固定圖軸的範圍box onM(i)=getframe;%抓取畫面,並存入電影資料矩陣 M endfprintf(播放電影中.n);movie(M,5);%播放電影 5 次MATLAB 程式設計入門篇:動畫製作電影動畫之範例二n最後一個 frame 的畫面MATLAB 程式設計入門篇:動畫製作電影動畫之範例三n改變影像的色盤矩陣,讓影像出現從正片變到負片的效果n範例6-3:movie03.mclear M%清除電影資料矩陣 Mload clown.matimage(X);colormap(map);%畫出小丑臉n=30;%抓取 30 個畫面scale=cos(linspace(0,2*pi,n);fprintf(抓取畫面中.n);for i=1:ncolormap(i-1)*(1-map)+(n-i)*map)/n);%改變色盤矩陣M(i)=getframe;%抓取畫面,並存入電影資料矩陣 M endfprintf(播放電影中.n);movie(M,-5);%播放電影 5 次(含正向與逆向播放)MATLAB 程式設計入門篇:動畫製作電影動畫之範例三n在上述範例中,正片(如下張投影片圖左)的色盤矩陣是 map,而 1-map 則是負片(如下張投影片圖右)的色盤矩陣,因此我們在抓影片時,讓色盤矩陣進行漸進式的變化,因此呈現的電影就有從正片變到負片的效果。n另外,movie(M,-5)代表電影將播放 5 次,但由於第二個參數是負數,所以每次播放會包含一次正向播放及一次逆向播放。MATLAB 程式設計入門篇:動畫製作電影動畫之範例三n正片n色盤矩陣是 mapn負片n色盤矩陣是 1-mapMATLAB 程式設計入門篇:動畫製作電影動畫的其他範例nMATLAB 的 demo 程式中亦包含了數個與電影方式相關的動畫,讀者可以在指令視窗輸入下列任一指令:nxpmovie vibes nxpmovie logospinnxpmovie crulspinMATLAB 程式設計入門篇:動畫製作6-3以物件方式產生動畫n以電影方式產生動畫可以說是暴力法,因為此方法佔掉了許多記憶體空間。另一個技巧性較高的方法則是以物件方式產生動畫,此種方法不需要大量的記憶體,而且可以產生即時(Real-time)或互動式(Interactive)的動畫。nMATLAB 的所有圖形元件(曲線、曲面、圖軸等)都是物件,您可以控制這些物件的各種性質,此種特性稱為握把式圖形(Handle Graphics),可詳見第七章。握把式圖形包含的層面很廣,但牽涉到動畫部份的基本概念並不複雜,以下我們以曲線的動畫來說明。MATLAB 程式設計入門篇:動畫製作曲線的動畫n我們可以快速地改變圖形物件的性質(如顏色、座標等),就可以達到動畫的效果n每一條曲線都有下列三種性質:nxdata:此為一向量,代表曲線的 x 座標值nydata:此為一向量,代表曲線的 y 座標值nEraseMode:此為一字串,代表曲線被抹除的方式,亦即當 xdata 或 ydata 被改變時,對於舊曲線的處理方式。MATLAB 程式設計入門篇:動畫製作曲線的 EraseModenEraseMode 對於動畫的呈現相當重要,此字串可是下列幾種選擇:nnormal:重畫整個畫面。nxor:將舊曲線的點以 xor 的方式還原。nbackground:將舊曲線的點改成背景顏色。nnone:保留舊曲線的點,不做任何處理。n在上述四種 EraseMode 中,耗費時間的次序是nnormal xor background nonenxor 和 background 很接近,但是 background 會抹去其他舊曲線所掃過的其他物件(如圖軸、格線、另一條曲線等),所以較少用到,所以一般在產生動畫時,最常用到的 EraseMode 就是 xor。MATLAB 程式設計入門篇:動畫製作曲線的動畫n有了這些概念後,產生曲線的動畫就很容易了!其主要步驟有兩點:n產生一條曲線,其 EraseMode 為 xor,background,或 none。n在 for-loop 之中,改變此曲線的 xdata 或 ydata(或兩者)。n我們產生一條隨 x 而衰減的正弦曲線,並讓 k 隨時間而便大(即改變正弦波的相角),使整條曲線產生舞動的效果。MATLAB 程式設計入門篇:動畫製作物件動畫之範例一n我們產生一條衰減的正弦曲線n讓 k 隨時間而便大(即改變正弦波的相角),使整條曲線產生舞動的效果。n範例6-1:movie04.mx=0:0.1:8*pi;h=plot(x,sin(x).*exp(-x/5),EraseMode,xor);axis(-inf inf-1 1);%設定圖軸的範圍grid on%畫出格線for i=1:5000y=sin(x+i/50).*exp(-x/5);set(h,ydata,y);%設定新的 y 座標drawnow%立即作圖endMATLAB 程式設計入門篇:動畫製作物件動畫之範例一n我們產生一條衰減的正弦曲線n讓 k 隨時間而便大(即改變正弦波的相角),使整條曲線產生舞動的效果。n範例6-1:movie04.mx=0:0.1:8*pi;h=plot(x,sin(x).*exp(-x/5),EraseMode,xor);axis(-inf inf-1 1);%設定圖軸的範圍grid on%畫出格線for i=1:5000y=sin(x+i/50).*exp(-x/5);set(h,ydata,y);%設定新的 y 座標drawnow%立即作圖endMATLAB 程式設計入門篇:動畫製作物件動畫之範例一n最後一個 frame 的畫面MATLAB 程式設計入門篇:動畫製作物件動畫之範例一n在上例中,我們使用 set 指令,總共改變曲線的 y 座標 5000 次,並以 xor 的方式抹掉舊曲線。n drawnow 的作用是使 MATLAB 立刻處理 set 指令,若無 drawnow,MATLAB 會累積 set 指令,直到 for-loop 結束時再一併處理圖形的變化,這時就不會看到動畫的效果。n如果您將上例的 EraseMode 改成 background,則會發現曲線會“抹掉”圖形中的格線及代表圖軸的直線。n如果您將上例的 EraseMode 改成 none,則舊的曲線會被保留下來,產生不同的效果。MATLAB 程式設計入門篇:動畫製作物件動畫之範例:MATLABnMATLAB 有很多物件動畫之範例:nlorenz:以3D動畫呈現的 Lorenz 混沌方程式(Chaotic Equation),好像慧星在運行。ntruss:一座橋樑在地震時的震動方式,共有 12 種喔!ntravel:顯示如何以雜亂搜尋(Random Search)的方式來解 Traveling Salesperson Problem.nfitdemo:顯示如何以 Downhill Simplex Search 來解決非線性曲線擬合(Nonlinear Curve Fitting)的問題。nspinner:常見的螢幕保護程式。nxphide:試試您的眼力。MATLAB 程式設計入門篇:動畫製作物件動畫之範例:Simulinkn若您有安裝 Simulink,可試試下列動態系統模擬加上動畫呈現:nonecart:傳統的彈簧加上砝碼的動態系統。ndblcart1:一條彈簧加上兩個砝碼的動態系統。nsimppend:簡單的單擺系統。ndblpend1:兩截的擺動系統。ndblpend2:更複雜的擺動系統。npenddemo:倒單擺系統。MATLAB 程式設計入門篇:動畫製作物件動畫之範例:模糊工具箱n如果您有安裝 Fuzzy Logic Toolbox,可以試試由張老師開發的各項模擬及動畫展示:nfcmdemo:Fuzzy C-means Clustering。njuggler:用板子接皮球。ninvkine:兩截機器手臂的 Inverse Kinematics。nslcp1:倒單擺,桿子長度隨時間而變,您可以控制所欲到達的位置。nslcpp1:雙倒單擺,其中一個桿子的長度隨時間而變,您可以控制所欲到達的位置。nslbb:蹺蹺板加上滾球系統,您可以控制球的最後位置。nsltbu:倒車入庫系統

    注意事项

    本文(06-动画制作.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开