1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu cơ chế render WebGL tại phía máy chủ và xây dựng module thử nghiệm

12 693 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 1,22 MB

Nội dung

Cùng với đó là sự phát triển của Internet cũng như các trình duyệt web hỗ trợ các công nghệ đồ họa trên.. WebGL là một công nghệ web mới cho phép trình duyệt Web tận dụng được các thiết

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ - ĐHQGHN

KHOA CÔNG NGHỆ THÔNG TIN

Niên Luận Tên đề tài

Nghiên cứu cơ chế render WebGL tại phía máy

chủ và xây dựng module thử nghiệm

Sinh viên thực hiện :

Nguyễn Tiến Trung

Giảng viên hướng dẫn :

PGS.TS Nguyễn Việt Hà

Trang 2

1 Đặt vấn đề

1.1 Thực trạng

Ngày nay, công nghệ đồ họa đang có sự phát triển nhanh chóng và vượt bậc Trong đó,

đồ họa 3D là một điển hình Đồ họa 3D giúp hiển thị thông tin một cách trực quan, có chiều sâu và chi tiết so với đồ họa 2D truyền thống Đồ họa 3D được dùng nhiều trong các lĩnh vực như thiết kế, xây dựng, game… cho thấy được tầm quan trọng của nó Hiện nay, có khá nhiều công nghệ xây dựng cũng như hỗ trợ đồ họa 3D trên trình duyệt như

Trang 3

Cùng với đó là sự phát triển của Internet cũng như các trình duyệt web hỗ trợ các công nghệ đồ họa trên WebGL là một công nghệ web mới cho phép trình duyệt Web tận dụng được các thiết bị phần cứng xử lý đồ hoạ 3D mà không cần cài đặt thêm phần mềm thứ 3 nào Với việc WebGL đang ngày càng được hỗ trợ phổ biến trên các trình duyệt như Chrome, FireFox, việc xử lý đồ hoạ 3D trên trình duyệt Web đang trở nên khả thi hơn Tuy nhiên, không phải trình duyệt nào cũng hỗ trợ WebGL nhất là các trình duyệt cũ như Internet Explorer 6 hay 7, đông thời việc sử dụng WebGL trên các trình duyệt cũng đòi hỏi thiết bị phần cứng đủ mạnh trong việc xử lý đồ họa có thể gây quá tải cho máy client khi chạy Do đặc tính của server là có cấu hình, khả năng xử lý mạnh so với client nên ta

có thể chuyển phần việc render từ client lên server

Nội dung đề tài: “Nghiên cứu cơ chế render WebGL tại phía máy chủ và xây dựng module thử nghiệm” là tìm ra cơ chế để render WebGL thành các frame ở phía máy chủ rồi từ các frame ta có thể ghép chúng lại kết hợp cùng khả năng tương tác đồ họa như trong WebGL (zoom, di chuyển…) để rồi hiển thị trên client dưới dạng một video Áp dụng cơ chế đó để xây dựng một module thử nghiệm

Nội dung Niên luận này gồm 4 phần :

Phần 1 - Đặt vấn đề : Nêu thực trạng, phát biểu bài toán cùng cấu trúc cơ bản của chương trình

Phần 2 - Cơ sở lý thuyết, công nghệ tìm hiểu được: Những kết quả trong các lần tìm hiểu nhằm phục vụ cho chương trình này

Trang 4

Phần 3 – Hướng giải quyết : Từ những cơ sở lý thuyết ở trên, đưa ra những phương pháp giải quyết bài toán

Phần 4 - Kết quả hiện tại : Những kết quả đạt được tới thời điểm hiện tại

Phần 5 - Kết luận và hướng phát triển

1.2 Phát biểu bài toán

Nội dung bài toán hướng đến việc Server side rendering nghĩa là tất cả các công việc liên quan đến đồ họa render đều được thực hiện trên server Bài toán có nội dung như sau:

- Từ mã WebGL tiến hành render đồ họa mà không qua trình duyệt như client

- Client nhận kết quả mà server đã render và hiển thị chúng trên trình duyệt

1.3 Mô hình cơ bản

Mô hình minh họa việc render trên server

Mô tả:

- Server: Nhận yêu cầu từ client và xử lý trả về dữ liệu sau khi render mã WebGL

- Client: nhận và hiển thị kết quả render từ server

Trang 5

2 Cơ sở lý thuyết và công nghệ đã tìm hiểu

2.1 WebGL

WebGL [ ], được phát triển dựa trên OpenGL ES 2.0, là API Javascript hỗ trợ dựng

hình, xử lý đồ họa 2D và 3D trên trình duyệt web mà không cần sử dụng các phần mềm bên thứ 3 WebGL tương thích với chuẩn web và trình duyệt, cho phép sử dụng GPU (Graphics Processing Unit) để tăng tốc xử lý đồ họa WebGL có thể biểu diễn trên thành phần Canvas của HTML5, vì vậy có thể kết hợp với các thành phần khác trên một trang HTML Các thành phần,khái niệm cơ bản của WebGL: canvas, vertices, texture, frame, scene

Trong đó:

- Frame là các ảnh tĩnh biểu diễn hình ảnh đồ họa tại một thời điểm và trong một ngữ cảnh, khung nhìn xác định

Ví dụ minh họa về frame

Trang 6

- Texture là kết cấu của vật của vật tạo bởi các đỉnh (vertices) cùng màu sắc (color), ánh sáng (light), độ bóng (shadows)

2.2 PhantomJS

PhantomJS là một headless Webkit scriptable với một API javascript Nó nhanh và có

hỗ trợ nhiều chuẩn Web khác nhau : DOM, CSS, Json, Canvas, SVG Nó có khả năng capture nội dung của web như dạng chụp ảnh màn hình Nó có thể xử lý các thành phần khác nhau của web từ HTML, CSS cho đến Canvas và SVG Sử dụng PhantomJS ta hy vọng sẽ capture được các nội dung mà WebGL render được dưới dạng ảnh

PhantomJS có hàm render() để

Trang 7

Minh họa PhantomJS có thể capture một trang Web

Kết quả tìm hiểu : tuy PhantomJS hỗ trợ nhiều thành phần của một trang Web nhưng

nó không thể capture được một số thành phần như Ajax, X3DOM hay mã WebGL

Trang 8

Minh họa PhantomJS không thể Capture được WebGL.

2.3 H264 codex và FFMPEG.

H264 là chuẩn mã hóa giải mã video phổ biến dưới nhiều định dạng khác nhau, cho phép nén video kỹ thuật số với bit-rate thấp mà vẫn cho chất lượng cao

FFMPEG là một framework hỗ trợ việc thực hiện mã hóa cũng như giải mã theo chuẩn H264 trên nhiều nền tảng khác nhau Window, Linux, MacOS

2.4 Javascript

Javascript là ngôn ngữ kịch bản dựa trên prototype, là ngôn ngữ đơn giản, hiệu quả để

mở rộng tính năng cho web Javascript được chạy ở phía client nhờ vậy có tốc độ xử lý,

Trang 9

phản hồi nhanh, giảm đáng kể băng thông mạng Ngoài ra javascript không yêu cầu cài đặt thêm plugin để có thể sử dụng

2.5 PHP

PHP là một ngôn ngữ kịch bản trên server Nó là một công cụ mạnh mẽ giúp tăng khả năng tương tác và tính động của trang web PHP có thể sử dụng kết hợp với FFMPEG để tạo video từ các ảnh và mã hóa video dưới chuẩn H264

3 Hướng giải quyết

Hướng giải quyết bài toán được đề xuất theo mô hình sau:

Mô hình render WebGL trên server

- Từ mã WebGL tách được các frame dưới dạng ảnh

- Phân tích, lọc các frame cần thiết Cụ thể, với các frame giống nhau liên tiếp sẽ được loại bỏ nhằm giảm việc phải lưu trữ nhiều frame Các frame tách được sẽ được phân biệt với nhau theo hành động tương tác điều khiển, được gán các định

danh cũng như các thuộc tính khác (timestamp, size)

- Xây dựng các tương tác với các frame ứng với các tương tác như trong webgl như

zoom, xoay (rotate), di chuyển bẳng Javascript

- Ghép các frame cùng các tương tác thành video dưới dạng mã H264 và chạy lên trên client bằng PHP

Trang 10

Minh họa về ghép các frame theo các tương tác với nhau.

4 Kết quả hiện tại

Khó khăn trong việc tách các frame từ mã WebGL nghiên cứu về PhantomJS để tách các frame từ mã WebGL nhưng không thành công

Chưa có demo về các phần còn lại

5 Hướng phát triển

PhantomJS không thể sử dụng để tách các frame từ mã WebGL nên hiện tại tôi đang tìm hiểu về texture trong WebGL và xem có cách để lấy texture từ WebGL và chuyển nó sang thành frame tương ứng

Thử xây dựng chương trình Web thực hiện việc ghép các frame (giả sử có sẵn) thành video mã hóa dưới dạng H264 cùng với việc xử lý các tương tác

Trang 11

6 Tài liệu tham khảo

WebGL - OpenGL ES 2.0 for the Web http://get.webgl.org/

PhantomJS http://phantomjs.org

FFMPEG http://www.ffmpeg.org/

H264 codex http://vi.wikipedia.org/wiki/H.264/MPEG-4_AVC

PHP http://php.net/

Trang 12

Ý kiến đánh giá :

Điểm số: ……… Điểm chữ: ………

Xác nhận của Khoa CNTT

Chủ nhiệm Khoa

Hà Nội, ngày tháng năm 2013

Giáo viên đánh giá

(Ký và ghi rõ họ tên)

Ngày đăng: 08/10/2015, 13:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w