Chính xác thì UV và UVW Mapping là gì?


26

Cố gắng hiểu một số khái niệm 3D cơ bản, hiện tại tôi đang cố gắng tìm hiểu làm thế nào kết cấu thực sự hoạt động. Tôi biết rằng ánh xạ UV và UVW là các kỹ thuật ánh xạ Hoạ tiết 2D thành Đối tượng 3D - Wikipedia đã nói với tôi rất nhiều. Tôi googled để giải thích nhưng chỉ tìm thấy hướng dẫn giả định rằng tôi đã biết nó là gì.

Theo hiểu biết của tôi, mỗi Mô hình 3D được tạo ra từ Điểm và một số điểm tạo ra một khuôn mặt? Có phải mỗi điểm hoặc mặt có tọa độ phụ ánh xạ tới vị trí ax / y trong Kết cấu 2D không? Hoặc làm thế nào để unrapping thao túng mô hình?

Ngoài ra, W trong UVW thực sự làm gì, nó cung cấp những gì qua UV? Theo tôi hiểu, W ánh xạ tới tọa độ Z, nhưng trong tình huống nào tôi sẽ có kết cấu khác nhau cho cùng một X / Y và Z khác nhau, phần Z có phải là vô hình không? Hay tôi hoàn toàn hiểu sai điều này?


1
hỏi riêng hai câu hỏi
Nhà phát triển trò chơi Noob

1
Tôi rất ghét những kẻ như @NoobGameDeveloper, mọi người khác đang trả lời câu hỏi và tất cả những gì họ đang làm là cố gắng tìm ra những điều sai với câu hỏi. Hãy để họ đặt câu hỏi, tôi không nói rằng không ai nên tuân theo các quy tắc nhưng câu hỏi như thế này là hoàn toàn ổn để được đăng ở đây.
Daniyal Azram

Câu trả lời:


23

Sự hiểu biết của bạn là gần gũi. Mỗi mô hình 3D được tạo ra từ các đỉnh. Mỗi đỉnh thường xác định vị trí của một điểm trong không gian, bình thường (được sử dụng trong tính toán ánh sáng) và 1 hoặc nhiều tọa độ kết cấu. Chúng thường được chỉ định là u cho phần nằm ngang của kết cấu và v cho chiều dọc.

Khi một đối tượng được kết cấu, các tọa độ này được sử dụng để tra cứu texel hoặc pixel nào để vẽ từ kết cấu. Tôi thấy dễ dàng nhất khi nghĩ về chúng như tỷ lệ phần trăm hoặc tỷ lệ giữa cạnh trái của kết cấu ( u = 0) và cạnh phải của kết cấu ( u = 1.0) và từ đỉnh của kết cấu ( v = 0) và dưới cùng của nó ( v= 1,0). Chúng được nội suy giữa các đỉnh và tìm kiếm cho từng pixel trên màn hình được hiển thị. Chúng có thể lớn hơn hoặc nhỏ hơn các phạm vi này và trạng thái kết xuất được đặt khi đối tượng được kết xuất chỉ định điều gì xảy ra. Các tùy chọn cho việc này là CLAMP và REPEAT. Kẹp giới hạn tọa độ là 0 hoặc 1, làm cho kết cấu bị nhòe ở nơi nằm ngoài phạm vi. Lặp lại làm cho kết cấu lặp lại khi nó nằm ngoài phạm vi; nó thực sự giống như lấy chỉ phần thập phân của tọa độ và sử dụng nó ở vị trí của nó.

Trước khi tọa độ kết cấu được áp dụng cho một đối tượng, chúng được nhân với một ma trận kết cấu để áp dụng một số phép biến đổi cho chúng (chẳng hạn như chia tỷ lệ, dịch hoặc xoay). Hiệu ứng này đôi khi được làm động trong các trò chơi để làm cho nó xuất hiện như thể có thứ gì đó đang di chuyển trên một vật thể mà không phải tự di chuyển vật thể ... kết cấu chỉ đơn giản là cuộn qua nó. Khi ma trận kết cấu được nhân với tọa độ kết cấu, nó tạo ra 2 giá trị được sử dụng để tra cứu texel để vẽ đồ thị (hãy gọi chúng là st ). Chúng được tạo tự động từ uv ngay cả khi ma trận kết cấu không được đặt; nó tương đương với việc nhân uv với một ma trận danh tính.

Đây là nơi tọa độ w xuất hiện, mặc dù nó không được sử dụng thường xuyên. Đó là một tham số bổ sung để nhân ma trận kết cấu với và thường được sử dụng khi bạn muốn đưa phối cảnh vào tài khoản (chẳng hạn như trong Bản đồ bóng ). Nó hoạt động giống như khi bạn chuyển đổi một vị trí trong không gian đối tượng sang không gian màn hình thông qua ma trận chiếu thế giới. Bằng cách nhân UVW với biến đổi hình chiếu, bạn kết thúc với 2 tọa độ, st sau đó được ánh xạ lên kết cấu 2D.


Điều đáng nói là OpenGL coi v0 là đáy và v1.0 là đỉnh. Điều đó làm tôi mất rất nhiều thời gian trong quá khứ khi tôi không thể tìm thấy lỗi khi kết cấu của tôi trông kỳ lạ.
tkausl

8

Xét một hình tam giác.

Mỗi góc có tọa độ UV. Bạn nội suy giữa các điểm này để có được một bộ tọa độ UV cho mỗi pixel. (Cũng có quan điểm chơi ở đây nhưng hãy bỏ qua điều đó vào lúc này).

Sau đó, bạn tìm nạp một texel từ kết cấu từ tọa độ U và V. Có thể nói, một pixel từ tọa độ kết cấu x, y - điều tương tự, thuật ngữ hơi khác nhau vì chúng ta đang nói về kết cấu.

Nếu kết cấu của bạn thực sự là một chiều 3 chiều, bạn cũng sẽ cần tọa độ thứ ba, W.

Một cách để hình dung điều này là nghĩ về một khối gỗ. Nếu bạn cắt nó bằng cách nào đó, bạn sẽ thấy rằng mỗi mặt phẳng bên trong khối chứa kết cấu 2d.

Hoạ tiết 3d rất hiếm khi bạn có thể quên chúng trong thời điểm hiện tại.


Quý hiếm? Chúng nó được dùng cho cái gì? Bạn có thể hiển thị một số ví dụ trong bối cảnh của các tiêu đề AAA.
Quazi Irfan

Không, bởi vì họ thường không bao giờ sử dụng. Luôn luôn có một số cách rẻ hơn để làm điều tương tự. Hãy nghĩ về các mục băm nhỏ trong wii thể thao cộng; bạn có thể phá vỡ các mục theo bất kỳ cách nào bạn muốn và xem "nội bộ". Họ có thể đã lãng phí một lượng lớn bộ nhớ bằng cách biến chúng thành họa tiết 3d (giả sử phần cứng thậm chí còn hỗ trợ điều đó), nhưng rẻ hơn nhiều khi mô phỏng điều đó với một vài họa tiết 2d thay thế.
Jari Komppa

Vì vậy, họ không độc quyền? hoặc đây không phải là tính năng cần thiết cho bất kỳ công cụ trò chơi nổi tiếng nào?
Quazi Irfan

Tôi không hiểu ý của bạn. Hoạ tiết 3d có thể hữu ích trong các mục đích sử dụng khác chứ không đơn giản là kết cấu; nếu một số dữ liệu, một shader cần ánh xạ thuận tiện vào một mảng 3d, đó sẽ là một lần sử dụng. Nhưng như một kết cấu "bình thường", nhìn chung chúng chỉ là một sự lãng phí bộ nhớ.
Jari Komppa

Một ứng dụng của kết cấu 3D là Bản đồ khoảng cách, mặc dù như Jari nói, chúng rất không phổ biến trong một trò chơi do sự phức tạp của chúng. [link] http.developer.nvidia.com/GPUGems2/gpugems2_ch CHƯƠNG08.html
Jackalope

7

Hãy suy nghĩ origami.

Bản đồ UV giống như một lớp da 2D được làm phẳng (không được bao bọc) của lưới 3D (vỏ) của bạn.

Nếu bạn cắt bản đồ ra và gấp nó dọc theo các đường lưới, kết quả sẽ là mô hình 3d của bạn.

Các giá trị điểm nổi (U, V) nằm trong khoảng từ (0,0) đến (1,1) Góc trên bên trái của bản đồ UV là (0,0) Góc dưới bên phải là (1,1)

Mỗi đỉnh trong một lưới đa giác (tris / quads) có giá trị (U, V) cho biết trình kết xuất sẽ sử dụng phần nào của bản đồ.

Trong đường ống GPU, các shader đỉnh sẽ tính toán các hình chiếu 2D của từng pixel trong các đa giác 3D này, và sau đó các shader mảnh sẽ tô màu chúng bằng cách sử dụng bản đồ UV.

Điều này không thể được đánh giá đầy đủ mà không có một hình ảnh như thế này mà làm cho tất cả rõ ràng:

Lưới UV

Như các nhà bình luận khác đã đề cập, thành phần W được trình kết xuất sử dụng cho các hiệu ứng fancier như ánh xạ bóng, nhưng bản đồ UV là cơ sở để hiểu.

Lưu ý rằng một shader đỉnh phải gọi một shader mảnh ít nhất một lần cho mỗi pixel cần được tô màu. Đó là lý do tại sao GPU là bộ xử lý song song với hàng tá lõi - đường dẫn shader rất khắt khe.

Cũng xin lưu ý rằng các GPU tích hợp CPU được thiết kế cho các thiết bị di động và được giới hạn ở mức ít hơn một phần mười số lõi so với các GPU ngoài thế hệ tương tự. Điều này là do sức mạnh di động và hạn chế làm mát. Định luật Moore dường như đã chậm lại, nhưng hiệu suất vẫn đang được cải thiện (với sự tan chảy kỳ lạ ở đây và đó ..)

Ánh xạ UV hàng tỷ pixel ở hơn 240 khung hình mỗi giây có thể gây ra một mớ hỗn độn nóng thực sự!


0

Bản đồ uv ánh xạ một điểm (x, y, z) trong lưới tới một điểm (u, v) trong hình ảnh kết cấu. Do một bản đồ hình ảnh (u, v) thành một màu, hai bản đồ có thể được nối lại, tạo ra một bản đồ từ không gian lưới đến không gian màu.

         uv map       color map
 (x,y,z)   ->   (u,v)    ->     color
 mesh           Texture
 space          space
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.