🗺️ 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.

Sơ đồ quy trình UV Unwrap: mô hình kiếm 3D bên trái được "mở bung" thành layout UV phẳng bên phải với các đường seam màu sắc

🎯 Khái niệm cốt lõi

Thuật ngữĐịnh nghĩa
UV CoordinatesTọ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 IslandMả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 DensityMật độ pixel texture trên mỗi đơn vị diện tích bề mặt — càng đồng đều càng đẹp
Texture AtlasNhiề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]:

MapVai tròGhi chú
Albedo / Base ColorMàu sắc cơ bản của bề mặtKhông chứa thông tin ánh sáng hay bóng tối
Normal MapGiả 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 MapPhân biệt kim loại vs phi kim loạiBinary 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ạnhThường bake từ high-poly model
Emissive MapVùng phát sáng tự thânMà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ặtNội dung
✅ Ưu điểmTạ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ểmUV 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

  1. Adobe Substance 3D — “The PBR Guide: Volume 1 & 2” (substance3d.adobe.com) [S1]
  2. Epic Games — Unreal Engine Documentation: “Creating and Using Textures” [S2]
  3. SideFX Houdini Documentation: UV Unwrapping Best Practices [S3]

🔭 Xem thêm