🗺️ Texture Mapping & UV Unwrapping
TL;DR: Texture Mapping là kỹ thuật “dán” hình ảnh 2D lên bề mặt mô hình 3D để tạo ra màu sắc và chi tiết bề mặt mà không cần tăng polygon. UV Unwrapping là bước bắt buộc trước đó — “bóc vỏ” mô hình 3D ra thành bản đồ phẳng để xác định chính xác phần nào của texture dán vào đâu trên mesh.
Hãy hình dung một quả cam: bóc vỏ ra, cắt đúng chỗ và trải phẳng lên bàn — đó là UV Unwrapping. Sau đó, bất kỳ hình ảnh nào được in lên tờ vỏ cam phẳng đó sẽ tự động xuất hiện đúng vị trí trên quả cam 3D ban đầu. Kỹ thuật này là nền tảng của mọi mô hình 3D trong game — từ nhân vật đến môi trường, từ vũ khí đến kiến trúc.

🎯 Khái niệm cốt lõi
| Thuật ngữ | Định nghĩa |
|---|---|
| UV Coordinates | Tọa độ 2D (U = trục ngang, V = trục dọc) xác định vị trí mỗi điểm trên texture tương ứng với đỉnh nào trên mesh 3D |
| UV Island | Mảnh UV độc lập sau khi unwrap — mỗi mảnh là một phần của mesh được trải phẳng |
| UV Seam | Đường cắt trên mesh để có thể trải phẳng không bị biến dạng — giống đường may quần áo |
| Texel Density | Mật độ pixel texture trên mỗi đơn vị diện tích bề mặt — càng đồng đều càng đẹp |
| Texture Atlas | Nhiều UV island từ nhiều object ghép vào một file texture duy nhất để tối ưu GPU |
🧠 Nguyên lý hoạt động
Các loại Texture Map trong pipeline PBR
Một mô hình 3D hoàn chỉnh trong game hiện đại thường cần bộ texture map sau [S1]:
| Map | Vai trò | Ghi chú |
|---|---|---|
| Albedo / Base Color | Màu sắc cơ bản của bề mặt | Không chứa thông tin ánh sáng hay bóng tối |
| Normal Map | Giả lập chi tiết bề mặt (vết xước, lỗ chân lông) | Mỗi pixel là vector hướng pháp tuyến |
| Roughness Map | Độ nhám/bóng bề mặt (0 = gương, 1 = cát) | Ảnh hưởng cách ánh sáng phản xạ |
| Metallic Map | Phân biệt kim loại vs phi kim loại | Binary thường hiệu quả hơn grayscale mịn |
| AO (Ambient Occlusion) | Bóng tối trong các khe hở, góc cạnh | Thường bake từ high-poly model |
| Emissive Map | Vùng phát sáng tự thân | Màn hình, đèn LED, ma thuật phát sáng |
Texel Density và LOD
Để tránh hiện tượng texture bị mờ ở một chỗ, sắc nét ở chỗ khác trên cùng một nhân vật, pipeline chuẩn yêu cầu Texel Density đồng nhất — thường 512 hoặc 1024 pixel/mét [S2]. Vùng quan trọng (mặt nhân vật) có thể được cấp texel density cao hơn bằng cách dành nhiều diện tích UV hơn trong atlas.
UV Seam Placement — Kỹ thuật ẩn đường khâu
Đường seam không thể tránh khỏi nhưng có thể ẩn vào vị trí ít nhìn thấy: mặt dưới cánh tay, phía sau đầu, đường may tự nhiên của quần áo. Artist kinh nghiệm đặt seam dựa trên cả hai yếu tố — kỹ thuật (ít distortion nhất) và thẩm mỹ (ít lộ nhất) [S1].
🎮 Ví dụ trong game
- The Witcher 3 (CD Projekt Red) — Texture atlas của nhân vật Geralt sử dụng 4K resolution cho body, 2K cho phụ kiện phụ, với texel density được cân chỉnh cẩn thận để khuôn mặt luôn sắc nét hơn.
- Minecraft (Mojang) — Trường hợp cực đoan ngược lại: mỗi mặt của khối cube chỉ là một tile 16x16 pixel trong texture atlas chung — UV Unwrap đơn giản nhất có thể, nhưng đồng nhất hoàn hảo.
- God of War (Santa Monica, 2018) — Sử dụng kỹ thuật “Texture Streaming” — chỉ load phần texture atlas tương ứng với vùng camera đang nhìn, tránh tốn VRAM cho toàn bộ texture cùng lúc [S2].
⚖️ Ưu — Nhược / Đánh đổi
| Mặt | Nội dung |
|---|---|
| ✅ Ưu điểm | Tạo ra chi tiết thị giác rất cao mà không tốn polygon. Một texture atlas có thể phục vụ nhiều LOD khác nhau của cùng một model. |
| ❌ Nhược điểm | UV Unwrap kém tạo ra texture stretching (biến dạng hoa văn) rất khó sửa về sau. Seam lộ trên bề mặt phẳng hoặc có hoa văn tuyến tính. |
| ⚠️ Cạm bẫy thường gặp | ”UV Overlap” — hai island chồng lên nhau trong UV space sẽ chia sẻ cùng một vùng texture, gây ra lỗi baking và artifact ánh sáng. Luôn check overlap trước khi bake. |
🔗 Khái niệm liên quan
- 3D Modeling Pipeline: UV Unwrap là bước thứ 3 trong pipeline, sau Retopology.
- Normal Map: Loại texture map quan trọng nhất, giả lập chi tiết high-poly trên low-poly mesh.
- Lighting Design trong Game: Các map như AO và Roughness tương tác trực tiếp với hệ thống lighting.
- Photorealism: Pipeline PBR đầy đủ là nền tảng để đạt photorealism.
📚 Nguồn tham khảo
- Adobe Substance 3D — “The PBR Guide: Volume 1 & 2” (substance3d.adobe.com) [S1]
- Epic Games — Unreal Engine Documentation: “Creating and Using Textures” [S2]
- SideFX Houdini Documentation: UV Unwrapping Best Practices [S3]