Camera trong Papervision3D

Một phần của tài liệu XÂY DỰNG đồ họa 3d dựa TRÊN CÔNG NGHỆ FLASH DÀNH CHO THIẾT bị NHÚNG PHƯƠNG PHÁP xử lý 3d của PAPERVISION3D (Trang 45 - 67)

A Kieu và t¾p l¾nh tr on g VM2

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

nghi¾m sú dnng công cn “abcdump”.

Thnc thi t¾p ABC vói máy áo tamarin.

Flex Builder Papervision3D SWF AS2,3,Papervision3D abcdump/tamarin ABC tamarin-AVM2 OUTPUT Hình 4.1: Mô hình xú lý 3D

4.1 Ket quá thNc thi

4.1.1 Cau tao cúa ABC

Sú dnng công cn “abcdump” trong gói tamarin-central, chúng tôi tách đưoc thành phan ABC cúa các t¾p Flash AS 3.0. Vói Papervision3D, cũng sinh đưoc t¾p ABC tương úng. Tù nhung phép bóc tách này, chúng tôi hieu rõ đưoc bán chat thành phan cúa t¾p, đong thòi nam đưoc cơ che nh¾n đau vào cúa máy áo tamarin-AVM2.

4.1.2 Cau hình phan cNng can thiet

Đe thnc thi đưoc đo hoa 3D Flash cúa Papervision3D, thiet b% di đ®ng toi thieu can phái có chip ho tro xú lý OpenGLES và có khá v¾n hành máy áo tamarin và Gnash. Dna vào nhung thnc nghi¾m ve đo hoa, chúng tôi đưa ra cau hình toi thieu đe có the đáp úng cho vi¾c xú lý 3D Flash. Cau hình đe xuat như ó báng dưói:

B® xú lý Toc đ® xú lý B® nhó RAM toi thieu

ARM v7 PBX A9 600 - 800 MHz 128MB

ARM v7 PB A8 550 MHz 64MB

ARM v6 RealView EB 200 - 400 MHz 32MB

ARM v6 RealView PB 200 - 400 MHz 32MB

4.2 Minh hoa thNc nghi¾m

Sú dnng môi trưòng phát trien l¾p trình Flex Builder ket hop vói thư vi¾n Papervi- sion3D, chúng tôi tao ra chương trình 3D Flash đơn gián.

CHƯƠNG 4: THUC

T¾p Flash chay trên phan mem Flash Player, hien th% như hình 4.2. Ví dn minh hoa hình l¾p phương quay trong không gian 3D. Đoan mã Papervision3D dùng đe tao chương trình trên đưoc nói chi tiet trong phan phn lnc CHƯƠNG 4: THUC C

Hình 4.2: Thnc thi 3D cúa Papervision3D trên Flash Player

Khóa lu¾n này đang trong giai đoan thnc hi¾n cúa dn án nên chưa có thnc nghi¾m trên thiet b% nhúng. Tuy nhiên, ket quá sau khi hoàn thành dn án, chúng tôi xây dnng môi trưòng xú lý 3D Flash trên thiet b% di đ®ng mà chat lưong hình ánh và toc đ® xú lý đat như minh hoa trên.

Ket lu¾n và hưéng phát trien

5.1 Ket lu¾n

Trong giai đoan đau cúa dn án, chúng tôi đã đat đưoc m®t so ket quá: hieu cơ che xú lý, xây dnng do hoa 3D Flash-Papervision3D, cơ che hien th% Flash cúa Gnash, kiem tra tính khá thi sú dnng máy áo Tamarin, và đe ra giái pháp cho máy Flash xú lý 3D- Paperision3D. Giao đoan tìm hieu, xây dnng các van đe lý thuyet này là nen táng cho vi¾c xây dnng mô hình thnc thi 3D Flash trên thiet b% di đ®ng. Vói thòi gian không cho phép,

5.2 Hưéng phát trien

Trong khuôn kho nhung gì đã thnc hi¾n, chúng tôi đã chúng minh tính khá thi cho vi¾c xú lý 3D Flash trên thiet b% nhúng. Đong thòi, lý thuyet và mô hình đã xây dnng đưoc là cơ só cho các bưóc tiep theo cúa dn án đe đưa h¾ thong xú lý Flash hoàn thi¾n trên h¾ thong nhúng, môi trưòng OpenGLES. Hơn nua, nhung thu¾t toán xú lý 3D se dna vào lý thuyet tìm hieu ve Papervision3D.

CHƯƠNG

Kieu và t¾p l¾nh trong AVM2

A.1 M®t so kieu dÑ li¾u trong AVM2

int (nguyên) bieu dien giá tr% nguyên đ® lón 32bit, khoáng giá tr% cúa nó là:

uint (nguyên không dau) có đ® dài 32bit, giá tr% nam trong khoáng

double (so thnc dau phay đ®ng)

string (xâu ký tn) bieu dien lan lưot các ký tn Unicode. String ó dang UTF-8 và

đ® lón có the là 2

namespace

null bieu dien không đoi tưong nào.

undefined bieu dien không có giá tr%

A.2 Tóm tat t¾p l¾nh AVM2

Các l¾nh chí đ%nh kieu du li¾u mà nó thnc hi¾n bói h¾u to ó sau tên l¾nh như : _b (Boolean) , _a (any), _i (int), _d (double), _s (string), _u (unsigned), _o (object).

L¾nh tái và lưu. Truy c¾p vào thanh ghi cnc b® thông qua nhung l¾nh sau:

getlocal, getlocal0, getlocal1, getlocal2, getlocal3, setlocal0, setlocal1, setlocal2, setlocal3.

L¾nh ve so hoc. Phép c®ng thnc thi bói nhung l¾nh: increment, increment_i, inclo-

cal, inclocal_i, add, add_i. Phép trù gom: decrement, decrement_i, delocal, delo- cal_i,

subtract, subtract_i. Phép nhân chia: multiply, multiply_i, divide và modulo. Đe đáo dau giá tr% dùng: negate, negate_i.

Phn lnc A. Kieu và t¾p l¾nh trong AVM2

Phép tính trên bit: bitnot, bitand, bitor, bitxor, lshift, rshift, urshift.

Chuyen đoi kieu trong ngôn ngu AS lóng léo, đoi tưong có the chuyen đoi kieu

du li¾u đe thnc hi¾n các phép toán. Trong m®t vài trưòng hop, chuyen đoi kieu yêu cau l¾nh coerce gom: coerce, convert_b, coerce_a, convert_i, convert_d, convert_s, convert_u, convert_u và convert_o.

tao đoi tưong và đieu chính các l¾nh bói: newclass, newobject, newarray,

newac- tivation. Goi các hàm constructor: constructor, constructsuper và constructprop. Namespace đưoc tao đ®ng bang dxns và dxnslate.

Quán lý Stack (ngăn xep): pushnull, pushundefined, pushtrue, pushfalse, pushnan,

pushbyte, pushshort, pushstring, pushint, pushdouble, pushscope và pushnames- pace. Pop đe lay giá tr% khói đau ngăn xep, swap chuyen đoi giá tr% cúa 2 giá tr% ó trên.

L¾nh chuyen đieu khien: l¾nh này chuyen vi¾c thnc thi tói m®t l¾nh khác là các cau

trúc re nhánh: iflt, ifnlt, ifnle, ifge, ifngt, ifnge, ifeq, ifne, ifstricteq, ifstrictne, iftrue và iffalse. L¾nh label dùng đe v% trí đích cúa l¾nh re nhánh.

Goi hàm và trá ve cúa hàm đưoc thnc hi¾n bói hàm: call đe goi hàm. Các kieu

goi tĩnh, đ®ng, goi phương thúc cúa lóp cơ só như sau: callmethod, callstatic, callsuper. Đe lay giá tr% trá ve: callpropvoid, callsupervoid đưoc sú dnng trong callproperty và callsuper tương úng.

L¾nh ve bat loi: throw

L¾nh gõ roi chương trình: debugfile và debugline chí ra giá tr% ó thòi điem cn the

đe tìm ra cho không hop lý.

PHU LUC B

Công cn Abcdump / Tamarin

Gói tamarin-central cung cap công cn abcdump. Chúng tôi sú dnng b® biên d%ch

asc1 đe tao t¾p thnc thi cúa abcdump trên môi trưòng Ubuntu/Linux.

Sú dnng ví dn như chương trình ó hình 4.2 và abcdump tách ra đưoc đoan mã có

phan đau: d e c o m p r e s s e d s w f 105344 > 240585 s i z e [ R e c t 0 0 10000 7 5 0 0 ] f r a m e r a t e 24 f r a m e c o u n t 1 F i l e A t t r i b u t e s 4 b 0% 77 ( i n v a l i d ) 458 b 0% E n a b l e D e b u g g e r 2 31 b 0% DebugID 16 b 0% S c r i p t L i m i t s 4 b 0% S e t B a c k g r o u n d C o l o r 3 b 0% P r o d u c t I n f o 26 b 0% F r a m e L a b e l 11 b 0% DoABC2 239972 b 99%

Dna vào phan đau mã ABC thu đưoc thông tin ve t¾p Flash Papervision3d là: kích thưóc, toc đ® khung hình, so khung, thu®c tính . . . .

a b c name f r a m e 1 m a g i c 2 e 0 0 1 0

1actionscript compiler

Phn lnc B. Công cn abcdump/tamarin C p o o ln u m b e r s s i z e 233 0 % C p o o ls t r i n g s c o u n t 3143 s i z e 90348 37 % C p o o l n a m e s p a c e s c o u n t 326 s i z e 954 0 % C p o o l n s s e t s c o u n t 69 s i z e 749 0 % C p o o l names c o u n t 1626 s i z e 6712 2 % M e t h o d I n f o c o u n t 1122 s i z e 8757 3 % I n s t a n c e I n f o c o u n t 126 s i z e 9211 3 % C l a s s I n f o c o u n t 126 s i z e 1852 0% S c r i p t I n f o s i z e 954 0 % M e t h o d B o d i e s c o u n t 1062 s i z e 120186 50 %

Phan này cung cap thông tin ve các đoi tưong, lóp trong t¾p Flash trên. Phan cuoi cùng (trích dan) các l¾nh can đưoc AVM thnc thi theo k%ch bán: OPCODE SIZE % OF 110533 g e t l e x 11012 9% g e t l o c a l 5690 5% s e t p r o p e r t y 3874 3% i n i t p r o p e r t y 3224 2% d e b u g f i l e 3123 2% c a l l p r o p v o i d 2698 2% p u s h s t r i n g 596 0% k i l l 552 0% c o n v e r t _ u 6 0% i f s t r i c t e q 4 0% b i t o r 4 0% g r e a t e r e q u a l s 4 0% t h r o w 3 0% p u s h u n d e f i n e d 2 0% modulo 2 0% s t r i c t e q u a l s 2 0% i n 2 0% l s h i f t 1 0% S y m b o l C l a s s 15 b

Một phần của tài liệu XÂY DỰNG đồ họa 3d dựa TRÊN CÔNG NGHỆ FLASH DÀNH CHO THIẾT bị NHÚNG PHƯƠNG PHÁP xử lý 3d của PAPERVISION3D (Trang 45 - 67)

Tải bản đầy đủ (DOCX)

(67 trang)
w