A Kieu và t¾p l¾nh tr on g VM2
2.12 Ky thu¾t đo hoa 3D trong đo hoa máy tính
2.4.2 Kien trúc, thành phan
Mô hình chung các gói trong thư vi¾n Papervision3D như hình2.13 gom hai
gói chính:
• Gói ascollada: collada (COLLAborative Design Activity) là nhung k%ch bán
đưoc thiet ke san đe tao ra ra t¾p có dang * .dae có the chuyen đoi đưoc cho úng
• Gói papervision3d gom các thành phan chính tao 3D và xú lý sn ki¾n, tương tác vói ngưòi dùng.
User
API
papervision3d ascollada
Hình 2.13: Mô hình xây dnng thư vi¾n Papervision3D
Đe xây dnng hình ánh 3D trên các thiet b% hien th% 2D ta can sú dnng ky thu¾t cúa đo hoa máy tính mà can có nhung thành phan: Camera, Viewport, Scene, Render
Hình 2.14: Thành phan 3D trong đo hoa máy tính
Sau đây là chi tiet ve các thành phan đe tao ra đo hoa 3D cho Flash dna vào Paper- vision3D:
Mô hình xây dNng Papervision3D
Ngôn ngu AS đen phiên bán 3.0 chí ho tro vi¾c tao ra úng dnng hoat hoa 2D. Do đó, nhung thư vi¾n 3D ho tro cho ngôn ngu AS phái xây dnng toàn b® nhung thành phan cơ bán 3D cúa đo hoa máy tính. Mã nguon Papervision3D bao gom các gói là các thành phan và các phép bien đoi trên đo hoa 3D. Mô hình các gói chính bao gom: gói “core” xây dnng các thành phan cơ bán đe xây dnng và ho tro đo hoa 3D gom các gói
• Animation: các thu¾t toán ve đưòng cong: Bezier, đưòng cong tuyen tính, ve đưòng
cong theo tùng bưóc; Các phương pháp chuyen đoi hình ánh tao hoat cánh.
• Clipping: thu¾t toán cat xén đoi tưong 3D. Viewport là 1 khung nhìn mà
Camera quan sát đưoc trong 1 khung; cánh (scene) ó không gian 3D, do đó mà chí huu han nhung đoi tưong trong khung nhìn đưoc hien th% can phái đưoc cat xén;
• Culling: xác đ%nh m¾t hi¾n, m¾t hien th% cúa v¾t the trong không gian 3D tói
Camera;
• Controller: có nhi¾m vn đieu khien ve hoat hoa, be m¾t cúa đoi tưong;
• Effects: các hi¾u úng trong đo hoa 3D. Papervision3D sú dnng các hi¾u úng cho
2D tù gói flash.filters đe áp dnng cho đo hoa 3D như làm mò (blurfilter), chieu sáng (glowfliter);
• geom: đ%nh nghĩa các hình cơ bán như điem ánh 3D, tam giác 3D, đoan thang 3D,
điem 3D;
• Io: xuat chương trình Papervision3D ra du li¾u dang Collada (*.dae);
• Material: Đ%nh nghĩa đ® sáng, đ® m%n cúa bóng;
• Math: thnc hi¾n các tính toán vói ma tr¾n 3D, 2D cho các phép bien đoi;
• Render: cơ só cho cách chieu, tao bóng cho v¾t the 3D;
• view: là cơ só cho phương pháp cài đ¾t, xây dnng khung nhìn trong không gian 3D;
Các gói: Camera, events, view, render, materials, scenes, object, render đưoc cài đ¾t dna vào các lóp trong gói core ó trên. Cau tao và nhi¾m vn cúa nhung thành phan này đã đưoc nêu ky trong chương 2, phan Papervision3D. Như v¾y, bán thân Papervision3D đã đ%nh nghĩa các thành phan trong đo hoa 3D, các phép bien đoi liên quan như thu¾t toán cat xén, thu¾t toán xác đ%nh m¾t hi¾n, thu¾t toán tao bóng cho v¾t the. Đong thòi nhung ky thu¾t xú lý vói Flash như xú lý sn ki¾n vói tương tác cúa ngưòi dùng, chat li¾u, màu sac cho đoi tưong Flash và các hi¾u úng cũng đưoc Papervision3D thùa ket và phát trien tù AS 3.0
Scene
Là đưoc hop thành bói tat cá các đoi tưong 3D trong không gian 3D. Giá sú tao ra m®t đoi tưong trong chương trình, đe có the đưa nó xuat hi¾n ra thì can phái cho đoi tưong này thu®c Scene.
Trong Papervision3D Scene[11] đóng vai trò như nơi chúa tat cá đoi tưong cúa không gian 3D. Các đoi tưong đưoc lưu tru theo cau trúc du li¾u dang cây, đưoc thêm và bó qua các phương thúc tương úng là addChld() và removeChild(). Scene3D thùa ke tù
events
camera
core view
animation
clipping culling data
effects
io log material math geom
object render render view utils materials scenes
Hình 2.15: Quan h¾ giua các gói trong Papervision3D
lóp SceneObject3D và do tính chat nêu trên nên lóp DisplayObject3D là lóp cơ só cúa SceneObject3D. DisplayObjectContainer3D +root +childrend +addChild() +removeChild() SceneObject3D Scene3D Hình 2.16: Scene3D Camera
Có the tưóng tưong chúc năng cúa nó như m®t Camera th¾t mà nó ó trong không gian 3D và ghi hình lai tat cá các hoat đ®ng bên trong Scene cúa chương trình. Camera xác đ%nh điem nhìn mà chúng ta đang xem Scene. Nó không phái là m®t v¾t the hi¾n huu trong chương trình do đó không can phái cho vào Scene. Giong như Camera thông thưòng Camera trong Papervision3D có the phóng to, hưóng trong tâm, và các tính
năng khác. Vì lý do hi¾u năng cúa chương trình, Camera có the bó qua nhung đoi tưong ó v%
trí quá xa nó, như v¾y tiet ki¾m đưoc thòi gian tính toán cho đoi tưong đó.
Trong thư vi¾n Papervision3D, có xây dnng bon loai Camera theo các cách sú dnng khác nhau. Thu¾t ngu Camera chí chung 4 loai này. Theo sơ đo cau tao thì Camera thùa ke tù lóp CameraObject3D mà lóp này lai là lóp con cúa DisplayObject3D. Camera có các đ¾c tính cơ bán là:
• Focus (tiêu điem) và field of view (góc quan sát). Focus là so dương the hi¾n khoáng
cách giua Camera và viewport (m¾t phang chieu). Field of view là góc the hi¾n vùng quan sát cúa Camera. Giá tr% cúa Focus và field có sn liên h¾ vói nhau là khi giá tr% focus lón thì khoáng cách giua Camera và m¾t phang chieu tăng lên và field of view (góc quan sát) giám đi. Và ngưoc lai góc quan sát tăng lên khi giá tr% focus bé.
• Zoom: Khi chúng ta phóng to tranh ánh hay phim, thì ánh mà ta nhìn thay đưoc
kéo r®ng ra. Túc là cánh đuoc mó r®ng ra mà không can phái đưa Camera lai gan. Đây chính là cơ che zoom trong Papervision3D.
• Moi quan h¾ giua Zoom, Focus và Field of View: Neu giám giá tr% cúa zoom ho¾c
focus thì giá tr% field of view cũng giám. Ngưoc lai, tăng ho¾c giám field of view se làm cho giá tr% focus tăng ho¾c giám tương úng, nhưng không làm thay đoi giá tr% cúa zoom.
• Near và Far: Khi cat m®t hình bang hai m¾t phang gan và xa thì giá tr% near và far chính là khoáng cách giua Camera đoi vói m¾t phang gan và m¾t phang xa tương úng. Đ¾t giá tr% cho thu®c tính near cũng như gán cho focus.
Papervision3D xây dnng bon loai Camera:
Target Camera là loai Camera luôn hưóng nhìn đen 1 đích. Kieu du li¾u thu®c tính cúa Target Camera là DisplayObject3D.
Free Camera hoat đ®ng như target Camera ngoai trù không có đích đe hưóng vào. Nó luôn nhìn theo hưóng thang tien theo trnc z trong h¾ toa đ® 3 chieu.
Debug Camera: khi xây dnng m®t chương trình 3D Flash dna vào Papervision3D chúng ta có the se thieu sót phan nào đay trong không gian 3D. Đe lưu tru v% trí Camera và nhung cài đ¾t cho ngưòi dùng kiem tra lai chương trình cúa mình là lý do tao ra Debug Camera. Debug Camera xây dnng nhung cách đieu hưóng chương trình sú dnng bàn phím và chu®t, đong thòi hien th% nhung thong kê nhung gì se tiep tnc xáy ra vói chương trình.
Spring Camera: là kieu Camera luôn di chuyen theo đoi tưong trong chương trình. Không chí v¾y, nó còn có hi¾u úng lò xo khi đoi tưong tăng toc ho¾c re. Spring Camera sú dnng nhung tính chat v¾t lý, tao ra m®t lò xo theo tưóng tưong giua Camera và đoi
tưong. Khi đoi tưong di chuyen, lò xo này se đưoc kéo giãn ra ho¾c co lai, tao ra sn di chuyen liên tnc trông như th¾t.
DisplayObject3D
CameraObject3D
Camera3D
SpringCamera3D
Hình 2.17: Camera trong Papervision3D
Viewport
Viewport là m®t vùng chúa hien th% nhung gì Camera cúa chương trình thay đưoc . Có the tưóng tưong như nó là ong kính cúa Camera, the hi¾n m®t phan trong scene 3D . Bưóc cat xén đoi tưong đưoc thnc hi¾n vói viewport.
Sprite IViewport3D
Viewport3D
BitmapViewport3D
Hình 2.18: Viewport trong Papervision3D
Object
M®t hình trong không gian 3D đưoc goi là v¾t the hay đoi tưong 3D, hay Display- Object3D trong Papervision3D. Các đoi tưong cơ bán đưoc xây dnng san trong Paper- vision3D là: điem 3D, đưòng thang, hình nón, hình l¾p phương, hình trn, máy bay giay, máy bay, hình cau.
Material
Chat li¾u đưoc sú dnng trong Papervision3D đe tô phú lên be m¾t đe tao cho đoi tưong 3D trông th¾t, song đ®ng và đep mat. Vi¾c mô hình hóa đoi tưong 3D đưoc thnc hi¾n thông qua xây dnng tù các tam giác.
Render
Đe ve lên khung nhìn ta can đen render engine (máy ve). Nó liên tnc c¾p nh¾t nhung gì xáy ra trong khung cánh ó không gian 3D mà Camera ghi lai và ve lai trên khung hình (viewport). AbstractRenderEngine IRenderEngine BasicRenderEngine LazyRenderEngine QuadrantRenderEngine Hình 2.19: Xây dnng Render 2.4.3 M®t so ket lu¾n
Moi quan h¾ giÑa Papervision3D và AS 3.0
Papervision3D dna vào ngôn ngu AS 3.0 đe xây dnng phương pháp hien th% đo hoa 3D. Các tính chat tao hoat hoa, chuyen đ®ng, hi¾u úng đưoc đeu thùa ke và mó r®ng tù AS 3.0.
So sánh OpenGL và Papervision3D
Cách ve đoi tưong, cơ che hoat đ®ng cúa OpenGL và Papervision3D có m®t so khác bi¾t là:
• Papervision3D sú dnng h¾ trnc toa đ® phái13 còn OpenGL sú dnng h¾ toa đ® trái 14 .
13trnc z đi vào trong
• Thu¾t toán xác đ%nh m¾t hi¾n mà OpenGL sú dnng là z-buffer15trong khi
Papervi- sion3D sú dnng thu¾t toán painter’s algorithm 16 .
• Papervision3D là thư vi¾n ho tro cho vi¾c l¾p trình, OpenGL không chí ho tro
l¾p trình mà còn giao tiep vói phan cúng đo hoa cúa thiet b% cài đ¾t nó.
So sánh Papervision3D véi OpenGLES
Papervision3D có the thnc thi như OpenGL, OpenGLES chí sú dnng m®t phan các hàm API cúa OpenGL, do đó chương trình 3D tù Papervision3D đep và phong phú hơn. Hơn nua cơ che tương tác vói Flash cũng tăng thêm sn hap dan, lôi cuon.
Thư vi¾n Papervision3D đưoc xây dnng vói nhieu hàm, ho tro l¾p trình tot đe tao ra các chương trình 3D đep mat. Vi¾c l¾p trình OpenGLES g¾p khó khăn khi phái cân nhac đen tài nguyên h¾ thong mà chương trình sú dnng, trong khi vói Papervision3D vi¾c này đưoc máy áo xú lý.
Như v¾y lna chon Papervision3D đe phát trien xây dnng đo hoa 3D đe thnc thi trên thiet b% nhúng mang lai nhieu ưu điem hơn OpenGLES.
2.5 Môi trưèng đo hoa OpenGLES trên PowerVR
Tương tn Papervision3D, OpenGL và OpenGLES cũng là thư vi¾n ho tro đo hoa 3D. OpenGL đưoc sú dnng trên môi trưòng PC còn OpenGLES sú dnng trên thiet b % nhúng. Khi m®t t¾p tin đưoc tao khi sú dnng OpenGL, sú dnng nó đe thnc thi trên môi trưòng thiet b% nhúng vói OpenGLES thì se có nhung thành phan không xuat hi¾n đưoc. Bói vì, chí có 10% các hàm trong OpenGL đưoc sú dnng ó OpenGLES, 50% so hàm đó tù OpenGL phái chính súa thay đoi vói tham so sao cho sú dnng ít tài nguyên hơn. Bói vì năng lnc xú lý cúa thiet b% nhúng b% han che hơn.
Vói môi trưòng giá l¾p trên PC mô phóng PowerVR insider 17 đưoc cung cap
cho ngưòi phát trien phan cúng và phan mem trên thiet b% nhúng. PowerVR đưa ra m®t giái pháp manh me, linh hoat cho vi¾c thnc thi nhung úng dnng 2D/3D véc tơ vói
GPU 18 bao gom cá xú lý, tao ánh 2D/3D mã hóa - giái mã Video. Tat cá các API chính
đưoc ho tro bao gom: OpenGLES 2.0/1.1, OpenVG 1.1, OpenGL 2.0/3.0, DirectX 9/10 và OpenCL. Đ¾c bi¾t vói các phiên bán tiep theo (tù phiên bán 5), PowerVR cung cap giái pháp cho tat cá các dang tiep theo cúa đo hoa 3D, 2D, đo hoa véc tơ cho thiet b% nhúng vói các ky
15 b® đ¾m z
16Thu¾t toán ngưòi tho sơn
17M®t chip đo hoa nhúng ho tro thnc thi OpenGLES 2.0
18Graphics Processing Unit
thu¾t chong răng cưa, và đưa các chúc năng xú lý hình ánh chuyên sâu.
Trên thnc te, PowerVR đã tró thành chip xú lý đo hoa pho biet nhat sú dnng trong
đi¾n thoai di đ®ng đe hien th% hình ánh 2D, 3D, tăng toc đo hoa véc tơ 19 và đưoc sú dnng
bói các công ty, t¾p đoàn đi¾n tú hàng đau the giói.
CHƯƠNG 3
Ky thu¾t xN lý đo hoa 3D Flash
Dna vào phan cơ só lý thuyet ó trên, chương này se mô tá bài toán đong thòi nêu ra phương pháp giái quyet và mô hình minh hoa cho giái pháp trên.
3.1 Mô tá bài toán
Do dn án mang tính dài ha, ó thòi điem hi¾n tai chúng tôi chí dùng lai ó múc đ® tìm hieu, phân tích và kiem thú các mã nguon mó m®t cách toi thieu đe đưa ra tính thnc thi cúa dn án.
Trong pham vi dn án, chúng tôi se xây dnng ky thu¾t xú lý 3D Flash trên h¾ thong
nhúng (trưóc het là giá l¾p có ho tro đo hoa OpenGLES 2.0 như PowerVR SDK 1 . Sú
dnng Gnash đe xây dnng trình xú lý Flash, hien th% Flash Video nham mnc đích thnc thi đưoc 3D Flash cúa Papervision3D. Tiep đay, chúng tôi se đưa mô hình giá l¾p lên thiet b% di đ®ng đe chơi đưoc 3D Flash.
3.2 Mô hình đe xuat
3.2.1 Ý tưéng
Tù nhung tìm hieu ve lý thuyet ó chương hai, ket hop vói yêu cau cúa bài toán đ¾t ra chúng tôi có m®t so nh¾n xét.
• Vi¾c xú lý đo hoa 3D Flash cũng theo cơ che xú lý AS 3.0. Papervision3D
đưoc phát trien dna trên AS 3.0, ky thu¾t ve tương tác, sn ki¾n vói ngưòi dùng hoàn toàn tương tn. Các v¾t the 3D cũng đưoc mô hình tù các đoi tưong cơ bán cúa AS 3.0.
CHƯƠNG 3: KY THU¾T XU LÝ Đ6 H6A 3D FLASH
Tù Flash Player phiên bán 9 tró đi có the hien th% Papervision3D mà không can phái cài đ¾t thêm thư vi¾n nào;
• Máy áo AVM2 cúa Gnash chưa ho tro het cho AS 3.0 nên Papervision3D
không chơi đưoc trên Gnash. Phan hien th% cúa Gnash ho tro nhieu công ngh¾, nen táng đo hoa (OpenGL, agg, gtk, . . . ) chúng tó xú lý hình ánh cúa Gnash tot;
• Máy áo Tamarin-AVM2 thnc thi ngôn ngu AS 3.0 vói hi¾u năng cao, toi ưu vi¾c
v¾n hành bói b® biên d%ch JIT và cơ che quán lý b® nhó MMgc 2 Xú lý 3D Flash
cúa Papervision3D cũng như vói AS 3.0 nên máy áo Tamarin-AVM2 có the đám trách tot vói đo hoa 3D.
3.2.2 Giái pháp
Theo ý tưóng trên, đe xú lý đo hoa 3D cúa Papervision3D chúng tôi can có m®t máy áo thnc thi AS 3.0. Ket hop đau ra cúa máy áo này vói phan hien th% Gnash se cho ra ket qúa hien th% 3D Flash. Vì v¾y, giái pháp sú dnng máy áo tamarin- AVM2 cho vi¾c xú lý 3D cúa Papervision3D, ket hop vói chúc năng hien th% đo hoa cúa Gnash se thu đưoc máy chơi 3D Flash hi¾u quá. Giái pháp đưoc minh hoa bói hình 3.1
• Vói AS 1.0 và 2.0 vi¾c thnc thi ABC đưoc tiep tnc vói máy áo AVM1 cúa Gnash.
• Vói AS 3.0 và Papervision3D đưoc xú lý bói máy áo tamarin-AVM2. Sau khi xú
lý ABC, tamarin-AVM2 chuyen đau ra cho Gnash thnc hi¾n bưóc hien th%. Rendering
ActionScript
Bytecode Gnash AVM1
AS1,2 Displaying SWF Tamarin AVM2 NanoJIT AS3 Papervision3D OpenGL|ES
Hình 3.1: Mô hình ket hop tamarin và Gnash
2Phan Tamarin, chương hai
CHƯƠNG 4
ThNc nghi¾m
Trên cơ só thnc nghi¾m này, chúng tôi có sú dnng các dn án nguon mó thnc thi Flash khác nhau đe đưa vào so sánh tìm ra phương án toi ưu cho h¾ thong.
Trong phan thnc nghi¾m này chúng tôi có sú dnng m®t so công cn bao gom:
• B® công cn phát trien Java: JDK
• B® l¾p trình phát trien Flex Builder 3.
• B® biên d%ch Flash nguon mó Flex SDK 3.4
•Công cn tách mã ABC tù các t¾p SWF “abcdump” trong gói tamarin-central Môi
trưòng thnc nghi¾m:
• B® xú lý: Intel Core 2 Duo 1.6GHz
• B® nhó RAM: 1.5GB
• H¾ đieu hành : Ubuntu 9.10 / Linux
Mô hình thnc nghi¾m như hình 4.1 gom các bưóc như sau:
• Sú dnng b® phát trien Flex Buider có sú dnng thư vi¾n Papervision3D đe sinh ra
t¾p SWF.
• Dùng công cn abcdump trong gói util cúa tamarin đe tách t¾p SWF
Papervision3D sang dang ABC. Phan phn lnc B nói chi tiet hơn ve cách thúc thnc