Xóa bỏ những hiểu nhầm về Bump, Normal & Displacement maps

Xóa bỏ những hiểu nhầm về Bump, Normal & Displacement maps

Bạn đã từng làm việc với bump bao giờ chưa, cảm giác của bạn thế nào? Nhiều người mới bắt đầu học 3D Max hoặc texturing thường nhầm lẫn khi lần đầu tiếp xúc với bump, normal và displacement maps. Chúng dường như thực hiện một loại công việc y chang nhau phải không ?

Câu trả lời nằm ở cụm từ “loại công việc” nào. Mỗi một loại map trong nhóm ba này sẽ thực hiện các tính toán bổ sung, tạo ra những chi tiết mô tả kết cấu trên bề mặt của khối vật thể. Trong số chúng, có những kết cấu thực sự được tạo ra trên mô hình, một số khác chỉ là ảo giác giả. Và trong bài viết này, chúng ta sẽ cùng đi sâu tìm hiểu về đặc điểm và mục đích sử dụng của mỗi loại map trong nhóm ba này, cũng như biết được những thế mạnh và điểm hạn chế của từng loại map.

Bump Maps

Bump map là một trong những loại map lâu đời nhất còn được sử dụng tới hiện tại. Điều đầu tiên cần biết về bump map là các kết cấu và chi tiết chúng tạo ra chỉ là ảo giác giả và không có thật. Bump maps tạo cảm giác về độ sâu bề mặt của mô hình bằng cách sử dụng một thủ thuật đơn giản về ánh sáng. Kết quả của bump map không tạo ra bất kỳ một thay đổi vật lý bổ sung nào lên mô hình cả.

Thông thường, bump maps ở dạng ảnh xám giới hạn ở 8-bits màu. Đồng nghĩa với việc chỉ có 256 mức màu đen, trắng và xám khác nhau trong bức hình. Những giá trị này trong bump map được sử dụng để báo cho phần mềm 3D biết được hai thông tin cơ bản của bề mặt là lồi lên (Up) hoặc lõm xuống (Down).

Khi giá trị trong bump map gần về mức 50% xám thì gần như không có hiệu ứng kết cấu nào hiển thị lên bề mặt cả. Khi giá trị này sáng hơn (trắng hơn), các chi tiết hiển thị như được kéo lồi lên trên bề mặt. Và ngược lại, với các giá trị tối hơn, và về gần giá trị màu đen thì các chi tiết hiển thị như bị ấn lõm vào bên trong bề mặt  (ta có thể dùng giá trị âm (-) hoặc dương (+) cho maps bump

Bump maps rất hữu ích cho việc tạo ra các chi tiết và kết cấu cực nhỏ trên mô hình. Ví dụ như chi tiết lỗ chân lông hoặc vết nhăn trên da chẳng hạn. Chúng cũng rất đơn giản và dễ dàng trong việc khởi tạo và chỉnh sửa trong các phần mềm 2D như Photoshop, vì bạn chỉ cần quan tâm đến giá trị xám (grayscale) của bức hình mà thôi.

Vấn đề với bump map là chúng thường không hiệu quả khi góc nhìn camera không phù hợp. Vì các chi tiết tạo ra chỉ là ảo giác giả và không có thật trên mô hình, nên độ rọi bóng (silhouette) do kết cấu hình học mà bump map được áp dụng lên sẽ không bị tác động bởi map đó.

 Normal Maps

Normal maps có thể được xem là phiên bản nâng cấp và được cải tiến từ bump map. Cũng tương tự như bump map, điều đầu tiên bạn cần biết về normal map là các chi tiết nó tạo ra cũng chỉ là ảo giác giả, không có thật. Và không có bất kỳ một thay đổi vật lý nào lên khối hình học trong khung cảnh cả. Sau cùng, normal map cũng tạo cảm giác về độ sâu bề mặt cho mô hình, nhưng theo một cách khác so với bump map.

Như đã biết, bump map sử dụng các giá trị xám tương ứng với các thông tin lồi lõm khác nhau trên bề mặt. Còn Normal map thì sử dụng dữ liệu của ảnh RGB tương ứng với giá trị 3 chiều X, Y và Z trong phối cảnh 3D. Dữ liệu RGB này sẽ báo cho phần mềm biết được chính xác hướng của bề mặt như thế nào, bằng cách định hướng cho mỗi polygon nhỏ trong đó. Hướng của bề mặt, thường đươc gắn với giá trị normal, sẽ cho phần mềm biết được cách các polygon nên được chiếu sáng như thế nào là hợp lý.

Để tìm hiểu về normal maps, bạn nên biết rằng có 2 loại normal map hoàn toàn khác nhau, ngay cả trong không gian 2D cũng hiển thị hoàn toàn khác nhau.

Loại thường dùng nhất là Tangent Space normal map, là sự pha trộn của các màu tím và xanh blue. Những maps loại này làm việc hiệu quả nhất cho các bề mặt thường xuyên biến dạng trong quá trình animation. Tangent Space normal map cũng rất hữu ích trong việc thiết kế nhân vật. Đối với các chi tiết không yêu cầu biến dạng thì Object Space normal map thường được sử dụng. Những maps loại này thường gồm nhiều màu khác nhau sắp xếp dạng cầu vồng, và thường cải thiện hiệu quả hơn đôi chút so với Tangent Space maps.

Có một vài điều cần đặc biệt chú ý khi sử dụng normal map. Không giống như bump map, các maps loại này thường rất khó khởi tạo và chỉnh sửa trong các phần mềm 2D như Photoshop. Tuy vậy cũng có một vài trường hợp ngoại lệ cho việc chỉnh sửa những loại maps này. MARI là một ví dụ cho khả năng vẽ paint thông tin lớp bề mặt sử dụng trong normal map.

Về phần hỗ trợ, normal maps tương thích khá tốt với hầu hết các pipelines. Không giống như bump map, cũng có một số ngoại lệ cho việc này, chẳng hạn như trong thiết kế mobile game. Hiện tại hệ thống phần cứng đang được cải thiện dần để có thể áp dụng normal maps vào trong pipelines của mobile game.

Displacement Maps

Nói đến việc tạo các chi tiết kết cấu thật trên bề mặt thì displacement map xứng đáng với ngôi vương. Những maps loại này sẽ tạo ra các thay đổi về mặt vật lý lên bề mặt. Để displacement map có thể làm việc được, mesh cần được thiết lập ở dạng subdivided hoặc tessellated, lúc đó khối kết cấu hình học thực sự sẽ được tạo ra.

Điều tuyệt vời của displacement maps là chúng có thể được tạo ra từ một bức hình có độ phân giải cao, hoặc có thể được paint thủ công một cách dễ dàng. Giống như bump map, một displacement map cũng bao gồm các giá trị xám (grayscale). Và một thực tế là bạn sẽ cảm nhận được kết quả tốt hơn khi sử dụng 16 hoặc 32-bit displacement map so với khi sử dụng 8-bit displacement map. Các file 8-bit có thể trông khá ổn trong 2D, nhưng khi đem vào 3D chúng có thể tạo ra các lỗi dải sọc, hoặc các lỗi khác khiến kết quả kém chân thật và trông giả tạo vì khung giá trị ứng với 8-bit không đủ rộng khiến thông tin bị thiếu sót khi mã hóa.

Về mặt hạn chế của displacement map, việc tạo ra tất cả các kết cấu bề mặt hình học trong thời gian thực là cực kỳ khó khăn. Do đó mà hầu hết các ứng dụng 3D đều tính toán kết quả displacement sau cùng tại thời điểm render. So với bump map và normal map thì displacement map sẽ làm tăng đáng kể thời gian rendering.

Nhưng ngược lại, kết quả của displacement map thường rất thuyết phục. Khi bề mặt được chỉnh sửa, độ rọi bóng (silhouette) cũng sẽ thay đổi tương ứng. Do đó hãy cân nhắc kỹ những điểm được mất trước khi quyết định sử dụng displacement map.

Sử dụng kết hợp các loại maps này

Trong một vài trường hợp, có thể bạn sẽ cần kết hợp một bump map hoặc normal map với một displacement map trong cùng một chi tiết. Cách tốt nhất để thực hiện điều này là sử dụng displacement map cho những thay đổi lớn liên quan đến tính chất hình học của bề mặt, và sau đó sử dụng normal hoặc bump map cho các phần chi tiết nhỏ hơn.

Việc hiểu rõ cách thức hoạt động, cũng như những điểm mạnh của từng loại map sẽ giúp bạn quyết định và lựa chọn dễ dàng hơn. Lựa chọn sau cùng nên là lựa chọn phù hợp nhất với khung cảnh mà bạn đang làm việc.

Để tìm hiểu cụ thể hơn về 3 loại maps này, hãy tham gia các khóa học của chúng tôi tại EKE Center