« Home « Kết quả tìm kiếm

KỸ THUẬT XÂY DỰNG ĐỒ HỌA 3D DỰA TRÊN CÔNG NGHỆ FLASH DÀNH CHO THIẾT BỊ NHÚNG


Tóm tắt Xem thử

- KỸ THUẬT XÂY DỰNG ĐỒ HỌA 3D DỰA TRÊN CÔNG NGHỆ FLASH DÀNH CHO THIẾT BỊ NHÚNG.
- Flash với ưu điểm gọn nhẹ, dễ dàng thực thi trên nhiều nền tảng, môi trường khác nhau và được sử dụng phổ biến trên rất nhiều hệ thống khác nhau: hệ thống y tế, PC, thiết bị cầm tay, đồ gia dụng.
- Trong thời gian thực hiện khóa luận, chúng tôi đã cơ bản nắm được kỹ thuật hiển thị và thực thi đồ họa, cách xử lý sự kiện để hiển thị các đối tượng trong tệp tin Flash, cách để chương trình chơi Flash dùng để thực thi tệp tin SWF.
- Hiện tại, Gnash chỉ hỗ trợ thực thi đồ họa 2D cho tệp tin Flash và Tamarin là máy ảo ActionScript nguồn mở được Adobe cùng với Mozilla cung cấp cho cộng đồng nhưng không cung cấp kèm theo cách hiển thị đồ họa cho tệp tin Flash..
- Để thực hiện giải pháp, chúng tôi đề xuất mô hình cho việc kết hợp Gnash với Tamarin và cùng với đó là phương pháp thực thi.
- Bằng việc thêm máy ảo mới, Gnash sẽ hỗ trợ tốt hơn cho ActionScript 3 và qua đó sẽ hỗ trợ thực thi hiệu quả những phiên bản.
- Trong ActionScritp 3 đã hỗ trợ những đối tượng cơ bản, hiệu ứng đơn giản cho đồ họa 3D, do đó với mô hình mới này, Gnash sẽ thực thi được đồ họa 3D.
- 3.3.1 Cấu trúc dữ liệu lưu trữ đối tượng hiển thị.
- 3.4.1 Thực thi đồ họa 3D trên thiết bị nhúng.
- 2.9 Các thành phần thể hiện đồ họa 3D.
- 3.3 Luồng xử lý đối tượng đồ họa trong Gnash.
- 3.5 Mô hình Gnash thực thi đồ họa 3D.
- 4.1 Biểu đồ so sánh kết quả thực thi.
- đã hỗ trợ cho người sử dụng một cách hiệu quả.
- năng lực hạn chế của bộ xử lý, dung lượng lưu trữ của bộ nhớ và bộ nhớ thực thi.
- Những ứng dụng thực thi trên PC nhưng không thể thực thi trên thiết bị nhúng nên những kỹ thuật xử lý hình ảnh thông thường từ 2D sang 3D áp dụng cho PC có thể sẽ không được áp dụng đúng đắn với hệ nhúng.
- Sau khi so sánh các đặc điểm, ưu và nhược điểm của từng kỹ thuật, trung tâm đã thống nhất dùng Flash để thực thi đồ họa 3D với sự hỗ trợ của PaperVision 3D[1]..
- Mục đích của quá trình nghiên cứu là xây dựng một chương trình khung 1 hiển thị giao diện người dùng đồ họa 3D dựa trên công nghệ Flash, được thực thi bởi chương trình chơi Flash 2 hỗ trợ OpenGLES 2.0.
- Mục tiêu cần đạt được của dự án là cung cấp một chương trình khung cho việc hiển thị dữ liệu trực quan 3D dựa trên Flash, cùng với những hiệu ứng sinh động, chạy mượt mà trên hệ thống nhúng sử dụng OpenGLES, thực thi bởi chương trình chơi Flash..
- Nhưng các thiết bị của Toshiba, những ứng dụng được cài đặt chỉ mới hỗ trợ hoạt họa 2D và cần phải được cải tiến để thực thi 3D trên Flash Lite.
- Trong thời gian nghiên cứu hiện tại, chúng tôi hướng tới mục tiêu xây dựng một hệ thống máy ảo riêng để thực thi Flash và có hỗ trợ 3D, nhằm hướng tới mục tiêu thực thi trên thiết bị nhúng.
- Để tiến tới mục đích này, chúng tôi tiến hành tìm hiểu chương trình chơi Flash mã nguồn mở Gnash, thư viện Flash 3D: Papervision 3D và đưa ra giải pháp cho việc thực thi trên thiết bị nhúng..
- Trong giai đoạn tìm hiểu đầu, chúng tôi cần phải tìm hiểu chương trình chơi Flash nguồn mở- Gnash đưa lên trên thiết bị nhúng và can thiệp vào chương trình này sao cho có thể thực thi hầu hết các phiên bản của ngôn ngữ ActionScript( tương ứng là các phiên bản của SWF) và xử lý đồ họa 3D trên thiết bị nhúng..
- Trong khuôn khổ khóa luận này, tôi có nhiệm vụ tìm hiểu kỹ thuật hiển thị FlashVideo, luồng xử lý trong Gnash, cơ chế thực thi phim Flash và đưa ra giải pháp thực hiện đồ họa 3D vào Gnash cũng như chuyển chương trình chơi Flash lên hệ thống nhúng.
- Nhiệm vụ còn lại tìm hiểu cách thức xây dựng đối tượng Flash 3D, nghiên cứu biện pháp để Gnash thực thi Flash 3D dựa vào PaperVision 3D được giao cho bạn Lê Viết Sơn..
- PaperVision 3D là một thư viện hỗ trợ đồ họa 3D cho Flash.
- Flash sử dụng kỹ thuật đồ họa vector và đồ họa điểm để tạo hoạt họa cho chữ, hình vẽ, ảnh, hỗ trợ thực thi luồng âm thanh, video.
- Để tệp tin Flash có thể thực thi trên mọi nền tảng khác nhau mà không phụ thuộc vào hệ điều hành( Windows, Linux, Solaris, MacOS.
- Cũng giống như công nghệ Java của Sun với máy ảo Java, máy ảo ActionScript thực thi qua hai giai đoạn: dịch mã trung gian và thông dịch thành mã thực thi trên máy vật lý..
- Máy ảo AVM được thiết kế để thực thi mã và những phương thức thân chứa khái niệm của những thông tin về phương thức(method infomation), vùng dữ liệu cục bộ(a local data area), vùng chứa những hằng số, vùng heap với cơ chế non-premititve cho đối tượng dữ liệu được tạo ra trong lúc thực thi và một môi trường thực thi run-time( hình vẽ 2.4[7])..
- Kết thúc quá trình này, máy ảo sẽ chuyển sang quá trình thực thi đối tượng trên hệ thống thật(Runtime System), chuyển toàn bộ chỉ lệnh từ máy ảo sang chỉ lệnh cho bộ xử lý máy thật và được quản lý bởi trình quản lý bộ nhớ và bộ dọn dẹp bộ nhớ..
- Để một chương trình Flash được thực thi trên thiết bị sử dụng, chúng phải qua một quá trình chuyển mã gồm nhiều giai đoạn( hình vẽ 2.5).
- Các mã trung gian với mục đích chính để chương trình được sinh ra không phụ thuộc môi trường, phương thức thực thi cũng như vận chuyển dễ dàng giữa các môi trường như truyền qua mạng, các hệ thống Windows, Linux, Mac OS.
- MIR được thiết kế để tối ưu quá trình biên dịch giữa mã chương trình với mã máy, với MIR, người lập trình không cần quan tâm tới môi trường thực thi của chương trình cuối cùng..
- Trong quá trình này, việc xác thực xảy ra liên tục với luồng chỉ lệnh và nội dung thực thi chứa trong stack: chỉ lệnh không được bên ngoài mảng dữ liệu bytecode đã có, chỉ lệnh phải chứa một kiểu phương thức chính xác.
- Quá trình xác thực liên tục được thực hiện ở mỗi bước, ở bước nào có lỗi, AVM sẽ đưa ra một thông điệp là VerifyError và thông điệp này có thể được bắt trong quá trình thực thi bởi chương trình..
- Dựa vào kiến trúc AVM và mục tiêu của dự án, với mục đích chính là thực thi Flash 3D trên thiết bị nhúng, tôi đặc biệt quan tâm tới các quá trình: chuyển tệp SWF sang dạng .abc, chuyển từ .abc vào quá trình .abc parser và đặc biệt là quá trình JIT Compiler vì nó liên hệ trực tiếp tới quá trình chuyển sang mã máy của hệ thống nhúng..
- Thư viện sử dụng lại(Reusable library.
- AVM Interpreter là cơ chế thực thi mã sau khi qua quá trình xác thực dữ liệu .abc trong file SWF, giá trị được tạo ra là 32 bit( hình 2.7)..
- Thực thi trực tiếp từ bộ đệm kiếm chứng(verified buffer.
- Máy ảo Tamarin được sử dụng trong chương trình Adobe Flash Player và được cho.
- Trong phần này, chúng tôi chỉ giới thiệu những hiểu biết cơ bản về Tamarin, để hiểu chi tiết hơn các bạn có thể tìm thấy trong khóa luận "Phương pháp thực thi đồ họa Flash 3D dựa trên PaperVision 3D".
- Cải tiến hiệu năng thực thi thời gian thực(run-time).
- Hình 2.9: Các thành phần thể hiện đồ họa 3D.
- Xử lý, đưa ra cơ chế chủ yếu để thực thi tệp tin Flash:.
- Các quá trình xử lý các đối tượng (asobj), mã bytecode Flash (abc), "decod- ing".
- Bao gồm các lớp nền tảng: lớp hỗ trợ nhập xuất( từ tệp tin, từ URL), thực thi tài nguyên của máy vật lý, quản lý bộ nhớ, con trỏ( bộ thu hồi bộ nhớ- Garbage Collector), các đối tượng đồ họa 2D.
- Sử dụng backend và kết quả thực thi từ VM, phân tích( parser trong libcore) để cho ra hình ảnh trên màn hình hiển thị..
- Các gói được sử dụng trong Gnash( hình vẽ 2.10):.
- các tag này được VM thực thi.
- vm thực thi các tag sau khi được nhận vào mã máy( abc).
- Ngoài ra, AVM với chức năng là xử lý mã máy ở dạng .abc và bắt các sự kiện trong lúc thực thi phim Flash.
- Với những đặc điểm này, VM có trong Gnash phải sử dụng tới rất nhiều cơ chế để thực hiện việc kiểm soát dữ liệu vào ra: quản lý bộ nhớ( GarbageCollector), kiểm tra tính chính xác của mã máy( bộ xác thực), và quan trọng nhất là thực thi mã máy ActionScript tới mã máy thật thông qua bộ thông dịch và JIT.
- để thực thi những mã máy được sinh ra từ AS3.
- Trên cơ sở lý thuyết trên, chúng tôi tiến hành xác định cụ thể bài toán, phương pháp thực thi và cách thức tiến hành để hướng tới mục tiêu của dự án.
- Đồ họa máy tính: Cách xử lý đồ họa 2D, 3D, sự khác biệt giữa các môi trường đồ họa, phương thức thể hiện khác nhau của môi trường thực thi( OpenGL|ES, Gtk, GtkGlExt 1.
- Máy ảo: các mã máy, các chỉ lệnh được cung cấp, kiến trúc máy ảo, cách thực thi mã máy, cách biên dịch, thông dịch.
- Hỗ trợ Gnash thực thi đồ họa 3D, sử dụng thư viện đồ họa PaperVision3D, bằng cách cải tiến hoặc thêm mới lớp as_object để phù hợp với các lớp có trong AS 3..
- Machine chưa thực thi một cách đúng đắn đối với mã máy có nguồn gốc AS 3.
- Hiện tại Machine vẫn coi những mã máy AS 3 thực thi như đối với mã máy AS 2.
- Do đó chúng tôi cần phải thay đổi Machine để thực thi một cách đúng đắn AS 3 bằng cách cải tiến Machine( tốn rất nhiều công sức và thời gian) hoặc bằng cách chuyển quyền điều khiển mã máy AS 3 sang cho Tamarin..
- Vì Gnash đã cung cấp sẵn những đối tượng thực thi phần hiển thị như DisplayObject, DisplayList.
- Kiến trúc của bất cứ chương trình thực thi tệp tin Flash nào cũng phải chứa Dis- playList, đây là một cấu trúc dạng cây với mỗi giai đoạn(Stage) nó cần thực thi là gốc và nhánh là DisplayObjectContainers, cuối cùng DisplayObjects là nút lá( hình vẽ 3.1)..
- Trong Gnash, Stage tương ứng với lớp movie_root, một thành phần tồn tại và được định nghĩa trong tệp tin Flash nhị phân(SWF) và được chương trình thực thi phân tích từ tệp tin này.
- DisplayObject là thành phần đại diện cho tất cả những đối tượng đồ họa được sử dụng trong Flash..
- Hình 3.2: FlashVideo với các sự kiện Dưới đây là ví dụ về cách thực thi các sự kiện trong Gnash..
- Hình 3.3: Luồng xử lý đối tượng đồ họa trong Gnash.
- Nhìn vào hình vẽ trên ta nhận ra ngay rằng, đối tượng chủ yếu cần được quan tâm là as_object, một thành phần quan trọng để định nghĩa các đối tượng và sau đó được thực thi bởi máy ảo.
- Do đó nhiệm vụ đặt ra là chỉnh sửa as_function để có thể thực thi được những thuộc tính của đối tượng như trong AS 3.
- Hiện tại Gnash cung cấp hai máy ảo chạy độc lập: máy ảo vm để chạy cho những tệp tin Flash của phiên bản cũ( từ phiên bản 8 trở lại) đã khá hoàn chỉnh và đầy đủ, máy ảo Machine chưa được hoàn chỉnh để thực thi những nội dung của tập tin Flash từ phiên bản 9.
- Trong quá trình thực hiện, chúng tôi đã sử dụng biện pháp chuyển quyền điều khiển của Gnash cho máy ảo Tamarin thực thi nếu gặp những tập tin Flash có phần header chứa nội dung của phiên bản 9 trở lên..
- Trong Gnash, máy ảo không được khởi tạo ngay khi chương trình chạy mà chỉ khi xác định được tag sinh ra từ phiên bản nào mới bắt đầu khởi tạo máy ảo tương ứng để thực thi tag đó.
- AVM 2 chỉ thực thi mã theo ABC blocks và không thực thi mã theo DoAction.
- Hình 3.5: Mô hình Gnash thực thi đồ họa 3D 3.4.1 Thực thi đồ họa 3D trên thiết bị nhúng.
- Vì Gnash hiện tại đã thực thi OpenGL, bài toán đặt ra là chuyển từ OpenGL ⇒ OpenGLES.
- Khi một ứng dụng cũng như tệp tin được sinh ra từ OpenGL, hiển nhiên một số chức năng cũng như hiệu ứng sẽ không được thực thi với OpenGLES vì OpenGLES đã giản lược đi một số hàm, phương thức có trong OpenGL để có thể thực thi được trên thiết bị có tài nguyên, năng lực hạn chế.
- 3 Một chip đồ họa nhúng cho phép thực thi trên nền tảng OpenGLES 2.0.
- Với những cơ sở lý thuyết và những giải pháp được đề xuất, chúng tôi tiến hành một số phương pháp xác định khả năng thực thi của đồ họa 3D đối với máy ảo.
- Mục đích chính của việc so sánh là chứng minh khả năng thực thi của các máy ảo ActionScript với một số bộ test.
- thực thi thời gian chạy với chế độ đồ họa nhưng hỗ trợ rất tốt cho ActionScript 3 như đặc tả lớp, các phương thức, cách thừa kế, mô tả đối tuọng.
- LLVM cung cấp một chương trình khung với các API để thực thi trên máy ảo này.
- Lightspark sử dụng.
- OpenGL để hiển thị hình ảnh, và thực thi đa luồng..
- Hiện tại Lightspark vẫn đang được phát triển để tối ưu hơn tốc độ và khả năng thực thi phim Flash..
- Tamarin-tracing được sửa đổi để hướng tới mục đích tối ưu hóa các quá trình trong lúc thực thi và những mã chưa định nghĩa với việc sử dụng một bộ nhớ nhỏ.
- Tamarin-redux là phiên bản để giới thiệu những tính năng mới và sửa những lỗi phát hiện thêm trong quá trình thực thi phát sinh bởi Tamarin-Central.
- Adobe cũng cung cấp kèm theo công cụ cho việc kiểm tra tính năng, hiệu suất của Tamarin trong thực thi Flash( bộ test-suite).
- Chương trình kiểm nghiệm được thực thi dựa trên việc so sánh hiệu năng thực thi ba chương trình trên.
- Sau test này được thực thi Lightspark..
- SparseMatMult Thực thi nhân ma trận trên một ma trận ngẫu nhiên, chứng minh khả năng truy xuất bộ nhớ..
- Hình vẽ 4.1[19] cho chúng ta thấy rằng Lightspark thực thi tốn thời gian hơn rất nhiều so với Tamarin và đối với kiểm tra về Crypt, chúng ta thấy kết quả khá tương đồng.
- Hình 4.1: Biểu đồ so sánh kết quả thực thi giữa các chương trình này..
- Chương trình thể hiện cơ chế để một tệp tin SWF- Đầu vào của Gnash, thực thi và thể hiện lên màn hình.
- Process Comment: Thể hiện luồng đầu vào, quá trình phân tích, thực thi và chạy của Gnash đối với tệp tin SWF, các đối tượng được phân tích, được gọi và hiển thị..
- Display Component: Thể hiện trực quan hình vẽ luồng thực thi đối với từng tệp tin đầu vào cụ thể.
- Thể hiện sự ràng buộc giữa các đối tượng khác nhau được tạo ra trong quá trình thực thi của Gnash..
- Vùng thể hiện tiến trình( Process Comment) cho chúng ta thấy rằng( đối với tập tin hiện tại), sử dụng những tài nguyên nào, Gnash đã gọi và khởi tạo các đối tượng ra sao, quá trình thực thi đối với tệp tin đó lần lượt ra sao.
- Quá trình này còn thể hiện cách thực thi của máy ảo được cài đặt trong Gnash đã sử dụng, phân phối và thu hồi bộ nhớ các đối tượng đã cấp phát ra sao..
- Đây chính là tiền đề quan trọng để chúng tôi tiếp tục thực hiện việc xây dựng hệ thống riêng độc lập với Adobe Flash để thực thi trên thiết bị nhúng..
- Qua khóa luận này, chúng ta có thể nhận thấy khả năng phát triển tiếp theo của đề tài đối với việc thực thi Flash 3D trên PC nói chung và trên thiết bị nói riêng là rất tiềm năng và còn cần phải được quan tâm, nghiên cứu sâu sắc, triệt để hơn nữa