Đơn giản là Normal Map

Đơn giản về Normal Map, Bump Map và ứng dụng của nó.

Ở bài này, chúng ta sẽ cùng tìm hiểu đơn giản về:

  1. Tại sao lại sử dụng Normal Map.
  2. Bản chất của Normal Map.
  3. Ứng dụng của Normal Map.

1. Tại sao lại sử dụng Normal Map?

Để chắc chắn chúng ta có cùng điểm khởi đầu, hãy cùng mình nghiên cứu cách tạo ra một vật thể trong game như thế nào nhé.

Để tạo ra một viên gạch, flow đơn giản sẽ như thế này:

Đưa một viên gạch vào game thường sẽ trải qua 3 công đoạn lớn

Đầu tiên là mô hình (model) 3D:

Mô hình 3D thường có màu xám đặc trưng

Sau đó vẽ texture của viên gạch:

Texture của một vật thể thực chất chỉ là một tấm hình, về sau sẽ được “bọc” vào mô hình 3D ở bên trên.

Cuối cùng, bằng cách kết hợp thân thể (model) và da thịt (texture), ta đã thành công tạo ra một viên gạch:

Thông thường, ta sử dụng Engine làm game để kết hợp model và texture lại với nhau.

Nhưng thế giới game không đơn giản như vậy. Dù texture được vẽ lên có thật tới mấy nhưng khi đổi góc nhìn thì chắc chắn người chơi sẽ nhận ra chúng chỉ là giả.

Ánh sáng trải trên bề mặt vật thể trông rất giả trân

Khi đổi hướng sáng, chỉ có mảng bóng lớn của vật thể thay đổi, những mảng bóng nhỏ nằm trên bề mặt vật thể thì không.

Máy tính khác với chúng ta, nó chẳng biết có gì trên bề mặt vật thể cả. Ta có thể vẽ lên chúng các chất liệu như gỗ, vải, đá… nhưng máy tính không quan tâm điều đó, nó chỉ làm nhiệm vụ là trải bức hình lên vật thể mà thôi.

Điểm mấu chốt ở đây là phải khiến cho máy tính biết bề mặt vật thể chỗ nào nên thêm bóng chỗ nào không.

Ta có thể làm được việc đó bằng cách thực sự model ra từng chi tiết nhỏ trên bề mặt vật thể nhưng việc này tốn sức người, tốn công máy tính toán, chưa kể model càng chi tiết càng nặng.

Và thế, là Normal Map ra đời.

Bằng cách áp thêm Normal Map, viên gạch đã trông thật hơn rất nhiều.

2. Bản chất của Normal Map

Về cơ bản, Normal Map chỉ là một bức hình. Một bức hình rất nhẹ và có đặc trưng màu xanh ánh đỏ.

Mỗi 1 pixel trên bức hình nói cho máy tính biết vị trí đó nên xử lí ánh sáng như thế nào khi ánh sáng chiếu vào từ các góc khác nhau.

Hầu hết tất cả các vật thể trong game hiện nay đều sử dụng Normal Map để tả.

Mặc dù tả chi tiết như vậy, nhưng thực viên gạch vẫn chỉ là một khối hộp. Ta có thể thấy rõ ngay điều này khi nhìn vào phần viền của vật thể.

Phần viền không hề lồi lõm mà chỉ thẳng một đường

Tuy vậy, đối với phần lớn game mà nói thì chừng đó là quá đủ rồi. Nếu muốn vật thể giống thực hơn thì phải đầu tư thêm công sức model các phần viền.

Ngoài Normal Map, Bump Map cũng có công dụng tương tự. Tuy vậy, Bump Map mang ít thông tin hơn Normal, và do đó nó chỉ là một phiên bản kém hoàn thiện.

3. Ứng dụng của Normal Map

Ứng dụng phổ biến nhất của Normal Map là hướng dẫn máy tính toán ánh sáng khi tiếp xúc với bề mặt vật thể.

Tuy vậy, Normal Map cũng có thể được sử dụng để làm thay đổi bề mặt thực sự của vật thể (ở phần trên mình đã nói không).

Một ứng dụng của nó là làm bề mặt nước biển.

Thực ra, việc sử dụng Normal Map để biến đổi bề mặt vật thể chỉ là hệ quả. Normal Map không được sinh ra với ý định như vậy, phần này mình sẽ đề cập sâu hơn trong các bài về Lighting Model nhé.

Cảm ơn các bạn đã đọc bài chia sẻ của mình ^^.

Kurrwo

Công nhân👷gõ 💬 văn bản ⌨️ trò chơi 🎮 điện tử 📱 👏👏👏

Post navigation

Subscribe
Notify of
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments