Tại sao bản đồ bình thường màu xanh và màu tím?


11

Tôi đang học về bản đồ bình thường. Tôi hiểu rằng các giá trị RGB được chuyển đổi thành XYZ, nhưng câu hỏi của tôi là nó được chuyển đổi như thế nào và tại sao bản đồ bình thường có màu xanh và màu tím?

Câu trả lời:


12

Vì một bản đồ bình thường bao phủ các vectơ từ -1 đến 1, nên kéo dài phạm vi này thành 0-> 1, vì vậy tất cả các bản đồ có thể nằm gọn trong phạm vi RGB.

Vì vậy, thông thường chúng ta áp dụng một biến đổi trên bình thường để chuyển đổi nó thành một cái gì đó chúng ta có thể nhìn thấy.

vec3 colour = vec3(0.5) + normal * 0.5;

Màu xanh lam là do các bản đồ bình thường được cho là được sử dụng so với bình thường nguyên thủy (tam giác / v.v.) với hướng mặc định (0,0,1) để biểu thị không có độ lệch so với tam giác bình thường. Thông thường, shader mảnh cần xoay bình thường này so với bình thường trên mỗi pixel hiện tại khi chạy.


Có phải mã vec3 colour = vec3(0.5) + normal * 0.5;này đang chuyển đổi RGB sang XYZ?
Abhinay Singh Negi

1
@AbhinaySInghNegi không, màu là RGB và bình thường là XYZ, vì vậy đây là chuyển đổi XYZ thành RGB. Nếu bạn muốn RGB thành XYZ, bạn sử dụngvec3 normal = (colour - vec3(0.5)) * 2.0;
bram0101

20

Chỉ có không gian tiếp tuyến bản đồ bình thường chủ yếu là màu xanh. Điều này là do màu xanh lam biểu thị mức bình thường (0,0,1) sẽ là một bình thường không thay đổi khi tam giác nằm trong mặt phẳng x và y, tức là vuông góc với bề mặt. Các tiếp tuyến, x và bi-tiếp tuyến, y (còn được gọi là bi-normal) được mã hóa trong các kênh màu đỏ và màu xanh lá cây và các hình thức này để tạo ra một không gian tiếp tuyến bình thường cho một điểm trên bề mặt của tam giác.

Nếu bản đồ bình thường không gian tiếp tuyến chỉ mã hóa một màu đỏ (1.0, 0.0, 0.0) thì điều này sẽ tạo ra một không gian tiếp tuyến bình thường song song với bề mặt tam giác. Điều này không bao giờ được nhìn thấy bởi vì điều đó có nghĩa là hình tam giác sẽ chỉ được thắp sáng ở 90 độ từ bề mặt và xem vectơ tại điểm mà bạn sẽ không thể nhìn thấy hình tam giác.

Các bản đồ bình thường trong không gian thế giới mã hóa đơn vị bình thường trên một hình cầu để có thể chủ yếu là các màu khác nhau một khi được mã hóa từ [-1, 1] đến [0, 1] trên mỗi kênh.

Một so sánh có thể được nhìn thấy ở đây:

nhập mô tả hình ảnh ở đây

Trong thực tế, các bản đồ thông thường thường được mã hóa theo định dạng 2 kênh như BC5 , thực tế chỉ lưu trữ x và y với z được tái tạo như chúng ta biết đó là một vectơ đơn vị. Điều này cho phép bạn duy trì độ chính xác cao hơn với nhiều bit hơn mà không tăng kích thước tệp.


Không gian tiếp tuyến không phải là tham số duy nhất, nhưng tôi tìm thấy rất nhiều hình ảnh lưới + bình thường trong bản đồ không gian tiếp tuyến xung quanh. Có một cách thông thường để xác định cơ sở không gian tiếp tuyến?
Alec Jacobson
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.