Home > Flash/Flex/AIR > Mipmapping

Mipmapping

Khái Niệm:

Mipmapping không phải là kỹ thuật riêng trong Flash mà là một kỹ thuật chung của lập trình đồ họa.
Mipmaps là một tập các ảnh bitmap có kích thước nhỏ dần (tỷ lệ kích thướt giữa 2 mipmap liền kề nhau là 1/2), được tạo ra bằng cách resize phân nửa kích thước width height của 1 ảnh gốc (Mipmapping là tên gọi của kỹ thuật sử dụng đến các mipmaps này). Sau đây là ví dụ 1 tập mipmaps gồm 1 bitmap gốc có kích thướt 256 x 256 cùng với các mipmap con được tạo ra khi resize bitmap gốc.

Ứng dụng trong đồ họa 3D:

Với thị giác của con người, những vật càng gần thì càng rõ và chi tiết, những vật càng xa thi càng mờ và khó nhìn thấy chi tiết hơn. Hãy xem hình sau đây:

Để tạo ra nền gạch trên, chương trình không thể render cùng 1 lúc mà render thành từng phần bằng cách map 1 ảnh bitmap vào từng phần đó (các màu được highlight để cho ta phân biệt được từng phần).

-No mipmapping sẽ lấy ảnh gốc để map vào từng phần trên và cho kết quả như hình bên dưới đây:

Như hình ta thấy rõ ràng do map một ảnh chi tiết với các phần ảnh ở xa (trái với quy luật thị giác của con người, ảnh càng xa càng mờ) đã gây nhiễu noise, làm cho ta không còn nhìn rõ hoa văn của nền gạch nữa, gây cảm giác không tự nhiên.

-Mipmapping sẽ dùng tới các mipmap đã tạo ra từ bitmap gốc, map chúng vào các phần ảnh trên, phần càng xa thì được map với mipmap càng nhỏ. Và ta nhận được kết quả như sau:

Bây giờ hình ảnh đã trong tự nhiên hơn trước, các nền gạch ở xa được mờ đi và kém chi tiết hơn nhờ ta map chúng với các mipmap nhỏ hơn tạo cảm giác trung thực với thị giác. Kỹ thuật này sẽ tiêu tốn nhiều xử lý CPU hoặc GPU (để resize và sinh động nhiều mipmap từ bitmap gốc) hơn là chiếm dụng RAM (dù phải lưu nhiều mipmap phát sinh vào bộ nhớ). Tại sao vậy ? Chúng ta sẽ thử làm một phép tính như sau:

Một bitmap gốc có kích thước 256 x 256 thì nó sẽ phát sinh ra các mipmap có kích thước là 128 x 128, 64 x 64, 32 x 32, 16 x 16, 8 x 8, 4 x 4, 2 x 2, 1 x 1.

Gọi A là kích thước của bitmap gốc được lưu trong memory (do giảm 1/2 width và 1/2 height nên bitmap mới giảm 1/4 size so với bitmap trước)

=> tổng kích thước các mipmap: (1/4 + 1/16 + 1/64 + 1/256 + … + 1/(4 mũ n)) * A

=> dãy này sẽ hội tụ về 1/3 A

=> Kích thước của memory chỉ cần phát sinh thêm 1/3 so với kích thướt ảnh gốc để lưu trữ tất cả mipmap.

continue . . .

Categories: Flash/Flex/AIR Tags: , ,
  1. 11/08/2013 at 11:52 am

    làm cách nào để nhìu hình trở lại thành một hình vậy a???

  1. 08/05/2010 at 2:45 am

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: