Hoat đ®ng cúa Nanojit trong tamarin

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 27 - 67)

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

2.8Hoat đ®ng cúa Nanojit trong tamarin

2.3.4 B® thông d%ch

B® thông d%ch cúa h¾ thong đong thòi giái mã l¾nh và thnc thi nó bang các hàm đưoc viet bang các ngôn ngu l¾p trình b¾c cao. Trong ngôn ngu AS, phương thúc đưoc khai báo tĩnh vói toi đa so lưong ngăn xep và du li¾u cnc b® can thiet. Do đó b® thông d%ch cap phát cho moi phương thúc m®t máng con tró tói đoi tưong cúa ngăn xep.

2.3.5 Quán lý b® nhé

Quán lý, don dep b® nhó (Memory management/Garbage Collection). Cơ che hoat

MMgc sú dnng thu¾t toán pho bien là mark/sweep đưoc minh hoa ó hình 2.9. Moi đoi tưong trong h¾ thong đưoc ket hop vói nhau bói bit đánh dau don dep b® nhó thnc

hi¾n gom 2 bưóc: đánh dau và quét. Trong bưóc đánh dau, tat cá các bit đánh dau đưoc xóa là chưa mark. Khoi don dep đưoc xem như là con tró "root"- điem bat đau tai du li¾u cúa các úng dnng. Nó bat đau xét tat cá các đoi tưong, bat đa tù "root" và mó r®ng ra ngoài. Vói moi đoi tưong nó g¾p, bit đánh dau đưoc gán.

root

marked=false marked=false marked=false

marked=false marked=false marked=false

root marked=true marked=true marked=true marked=false marked=false marked=true root marked=false marked=false marked=false marked=flase Hình 2.9: Minh hoa thu¾t toán mark/sweep

Sau khi ket thúc bưóc đánh dau, bưóc quét (Sweep) bat đau. Trong moi lan quét, các đoi tưong không đưoc đánh dau mark bit se b% xóa và thu hoi b® nhó. Neu m®t đoi tưong không đưoc đánh dau bit trong suot quá trình Mark có nghĩa là "root" không hưóng ra nó hay nó không đưoc dùng trong chương trình tai thòi điem đó.

Nhưoc điem: thu¾t toán đưoc tách nhó ra gom ClearMarks/Mark/Finalize/Sweep. Cài đ¾t thnc te ClearMarks/Finalize/Sweep đoi vói GC thnc hi¾n cho tat cá đoi tưong. Ta thay, mark không can thnc hi¾n đau tiên do nó can phái đoi Sweep, tương tn bưóc hoàn thành vi¾c don dep không can phái thnc hi¾n trong 1 chu kỳ. Vì thòi gian sú dnng ó bưóc Mark nên hi¾u năng cao không tăng.

Conservation Collection (Thu don báo toàn): MMgc là b® don dep kieu mark/sweep báo toàn, có nghĩa là nó không thu hoi tat cá b® nhó khi có the làm. Quyet đ%nh "báo toàn" và không thu hoi b® nhó có the không đưoc sú dnng thính

thoáng thnc hi¾n theo cài đ¾t cúa thu¾t toán. Đe có sn báo toàn này, MMgc xem như moi vùng b® nhó có chúa con tró GC. Trưòng hop xau xáy ra, khi vùng b® nhó chúa con tró GC nhưng thnc sn nó

không có du li¾u, như v¾y xáy ra "memory leak". "Memory leak" se tăng theo thòi gian, chương trình cúa chúng ta se tiêu ton hàng trăm Mega Bytes. Nhưng vói b® thu hoi báo toàn (conservation GC) thnc hi¾n ngau nhiên, van đe b® nhó b% lãng phí tăng nhanh theo thòi gian không dien ra.

Deferred Reference Counting (DRC) MMgc sú dnng DRC. DRC là chien thu¾t đe lay đoi tưong trung gian thu hoi lai trong khi MMgc van thnc hi¾n vói hi¾u năng cao. Đây là 1 kieu quán lý b® nhó tn đ®ng. Tuy nhiên khi g¾p phái hai đoi tưong A và

B như ó hình 2.10 có bien đem và tham chieu đen nhau se gây ra loi, bien đem cúa

chúng se khác 0 khi mà không có đoi tưong nào trong h¾ thong tró đen nó. Các đoi tưong này se không bao giò b% húy. Vi¾c này se làm b® nhó lãng phí tăng lên nhanh chóng, hi¾u năng chương trình giám.

next

A

rc=1 rc=1B

prev

Hình 2.10: Loi tham chieu vòng

Zero Count Table (Báng đem không): Khi tham chieu cúa đoi tưong đưoc đem là 0, neu nó b% húy ngay l¾p túc có the gây ra con tró lac (dangling pointer) trên stack. Đe giái quyet van đe này, sú dnng cơ che goi là ZCT. Khi m®t đoi tưong có tham chieu đưoc đem 0 thì nó không b% húy ngay mà đưa vào ZCT. Khi báng ZCT đay, nó bat đau húy m®t vài đoi tưong.

Incremental Collection: Flash Player sú dnng hoat hoa và phim hình do đó mà nó phái duy trì tí l¾ các hình đơn phù hop. Úng dnng thnc thi nó càng tró nên lón và tiêu ton nhieu b® nhó. Đieu không may là Flash Player sú dnng thòi gian tam dùng là 60s đe cho vi¾c thu hoi b® nhó, đieu này có the gây ra vi¾c tam dùng không giói han đưoc. Dùng công vi¾c cúa GC là cách tránh tam dùng không xác đ%nh. Có hai van đe ó đây: Làm the nào đe đem đưoc đoi tưong chuyen trang thái ó heap giua vi¾c tăng đánh dau. Thòi gian dành cho vi¾c đánh dau moi lan tăng.

Mark consistency (đánh dau đong nhat): M®t b® tìm kiem đoi tưong tot (đoi tưong không sú dnng) không húy đoi tưong đang hoat đ®ng. Đe làm đưoc đieu này, can giái thích cho b® tìm kiem hieu biet đoi tưong mói ho¾c chưa đưoc đánh dau

đưoc lưu tru bên trong đoi tưong mà ta đã đánh dau. Cài đ¾t cơ che này bang cách lưu đoi tưong mói hay chưa đánh dau vào m®t đoi tưong đã đưoc thu¾t toán đánh dau xú lý và không ó trong

hàng đoi. Như v¾y se không húy đoi tưong conf sú dnng và không làm cho con tró tói nó

b% lac. Thu¾t toán ba màu, mô tá ba trang thái ó hình 2.11, dna vào thu¾t toán ba màu có

chan ó m®t so nghiên cúu.

Hình 2.11: Sú dnng thu¾t toán ba màu (adsbygoogle = window.adsbygoogle || []).push({});

Hoat đ®ng cúa thu¾t toán ba màu như sau: trong lan đau tiên, “root” b% đưa vào hàng đoi, do đó sau bưóc này “roots” có màu xám và tat cá đoi tưong còn lai là màu trang. Tiep theo, hàng đoi se đưoc xú lý đoi tưong trong hai bưóc, tù màu xám sang đen và tù trang sang xám. Khi nào con tró tói đoi tưong màu trang đưoc chuyen thành đoi tưong màu đen thì chúng ta tách ra hai vi¾c, ve màu trang sang đen và đưa đoi tưong trang vào hàng đoi. Vói cài đ¾t như v¾y, nhung trưòng hop sau đeu giái quyet đưoc:

Màu xám đưoc chuyen sang đen, xám trang - đoi tưong có màu xám ó trong hàng

đoi và nó se b% đánh dau trưóc khi quét;

Màu trang sang xám - đoi tưong trang se đưoc đánh dau cho đen lúc đoi tưong

xám đưoc đánh dau;

Màu trang sang trang - ho¾c nó se chuyen sang xám ho¾c không trong trưòng hop

tat cá đoi tưong đã đánh dau;

Màu đen chuyen sang đen, xám, trang - vói màu đen, nó đã b% đánh dau.

2.4 Papervision3D

Papervision3D là m®t thư vi¾n nguon mó 3D Flash. Bao gom t¾p hop các t¾p đưoc viet bang ActionScritpt 3.0. Nó cung cap giao di¾n l¾p trình úng dnng cho phép ngưòi phát trien tao các chương trình 3D Flash. Papervision3D xây dnng 3D thòi gian thnc,

tao ra nhung chương trình đo hoa 3D đep mat, lôi cuon và ngưòi dùng có the tương tác. Sán pham cúa Papervision3D tù nhung ánh quáng cáo trên trang Web cho đen nhung trò chơi trnc tuyen đoi kháng, chien tranh đo hoa phúc tap.

Papervision3D đưoc sú dnng trên các công cn cúa Adobe như: Flash, Flex Builder (B® biên d%ch là Flex SDK).

Papervision3D xây dnng 3D Flash tuân theo ky thu¾t cúa đo hoa máy tính

như trong hình 2.12. Các bươc này thnc hi¾n như sau:

Xây dnng, xác đ%nh h¾ toa đ® máy quay tù h¾ toa đ® the giói thnc. Papervision3D

sú dnng h¾ toa đ® Đe Các 3 chieu;

Các v¾t the sau khi đưoc xác đ%nh toa đ® se đưoc cat xén. Cat xén đe đám báo khung

nhìn chí hien th% trong pham vi cúa nó;

Sau đó, chieu đoi tưong lên m¾t phang nhìn;

Phép bien đoi dna vào điem nhìn này bán chat đưa 3D ve 2D;

Cuoi cùng là chuyen h¾ toa đ® máy quay, chương trình sang h¾ toa đ® v¾t lý thiet b%.

Hình 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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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

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 27 - 67)