Đạp xe qua các màu sắc có cùng độ sáng


8

Đồng ý. Vì vậy, tôi có một trò chơi tôi đang làm việc với một loạt các hạt màu. Mỗi người trong số họ có màu sắc riêng của họ tuy nhiên tất cả họ đều gần với một sắc thái cụ thể.

Để giải thích rằng tôi đang sử dụng không gian màu HSV tốt hơn và tôi có một biến toàn cục đang quay vòng từ 0-360 (H) và mỗi hạt cụ thể cộng hoặc trừ một lượng ngẫu nhiên từ đó.

nhập mô tả hình ảnh ở đây Tôi sử dụng HSV vì đó là cách dễ nhất để tôi chuyển qua màu sắc vì bạn chỉ có thể thay đổi H.

Điều này trông rất đẹp và tất cả, tuy nhiên các hạt được cho là ánh sáng thuần khiết có màu. Ngay bây giờ tất cả chúng là những vòng tròn được tô màu bằng bóng râm, nhưng sau này tôi có thể thêm hiệu ứng phát sáng và các kỹ thuật tạo bóng khác.

Vấn đề là không phải tất cả các sắc thái (tôi không gây rối với H hoặc V) đều bằng với độ sáng mà mắt chúng ta nhìn thấy và điều này gây ra vấn đề. Ví dụ, khi tất cả chúng là sắc thái của những thứ màu xanh trông khá tối.

Rõ ràng trong shader tôi phải chuyển đổi các màu HSV này thành màu RGB và thực hiện một số phép toán, tôi nhanh chóng thấy có gì sai ... màu sắc không có độ chói bằng nhau!

Theo tôi hiểu nó là độ chói đại khái (0.2126*color.r + 0.7152*color.g + 0.0722*color.b)là lý do tại sao mọi thứ đều tắt.

Đây có phải là cách để họ có được nó để tôi vẫn có thể có được tất cả các sắc độ khác nhau (màu sắc trên các bánh xe độ) trong khi duy trì độ chói cao? Có lẽ tôi nên làm việc với một loại màu khác sau đó là HSV, hoặc có lẽ chúng là một công thức tìm thấy màu ở độ x trên bánh xe màu với độ chói của y?

Cảm ơn nhiều!


Không có giới hạn cho điều này không may. Nếu bạn nhìn vào một không gian màu đồng nhất về mặt nhận thức như hệ thống màu Munsell, bạn sẽ thấy màu vàng sáng có giá trị cảm nhận cao hơn nhiều so với màu xanh mạnh . Điều đó có nghĩa nếu bạn muốn giữ lại thống nhất nhận thức giá trị / sáng, sau đó bạn có thể nhận được một trong hai màu xanh hoàng gia giàu kết hợp với một màu vàng nâu sẫm trong sắc vàng, hoặc một màu vàng rực rỡ với màu xanh nhạt bé. Dù bằng cách nào, bạn hy sinh một số bão hòa ở đâu đó trong bánh xe màu.
DMGregory

1
Như bạn đã lưu ý, RGB và HSL được thiết kế xung quanh các màu màn hình có thể chứ không phải xung quanh mắt người. Hãy xem HUSLHCL . Đôi khi tôi cũng sẽ sử dụng L * a * b * .
amitp

@amitp những không gian màu đó dường như còn khá mới và tôi đang thấy một số khác biệt trong cách xác định không gian màu và cách chúng được chuyển đổi. Nguồn nào đáng tin cậy nhất cho việc này?
J.Doe 16/2/2016

Tôi đang ở trên xe buýt, vì vậy tốt hơn hết tôi không nên viết câu trả lời chính thức, nhưng đây là vấn đề nằm dưới vấn đề: bạn sẽ cần giải một hệ phương trình trong đó bạn cắm ba biến: Hue, Luminance và Saturation. Vì vậy, ở đây bạn đang tìm kiếm một Giá trị cụ thể, được đưa ra H và S, đáp ứng điều kiện có độ chói nhất định. Không khó lắm. Nhưng bạn sẽ sớm phát hiện ra rằng một số màu không thể phát sáng như một số (thử tìm màu xanh lam sáng như màu vàng 100V), vì vậy bạn có thể muốn kẹp các giá trị, để có được các giá trị có thể biểu thị trên màn hình.
Gustavo Maciel

Vâng, tôi đã làm việc trên đó. Tôi có một công thức đệ quy sẽ ... VÀ một công thức không đệ quy (điều đó không hiệu quả lắm).
J.Doe

Câu trả lời:


2

HCY có thể tốt hơn cho nhu cầu của bạn. Theo trang HSL và HSV của Wikipedia , vấn đề bạn gặp phải với HSV - rằng cùng một chữ "V" với các màu khác nhau không tương ứng với nhận thức của con người - tương tự như HSL, nhưng HCY có thể phù hợp với nhu cầu của bạn - "Y" trong HCY là "luma":

Luma gần như tương tự [về độ sáng so với hình ảnh màu gốc], nhưng khác biệt đôi chút ở sắc độ cao. Ngược lại, HSL L và HSV V phân kỳ đáng kể từ sự nhẹ nhàng nhận thức.

HCY được mô tả trong trang Wikipedia là "luma / chroma / hue". Trang này , mặt khác, dường như sử dụng "HCY" tốc ký và các chương trình như thế nào để chuyển đổi nó đến và đi từ RGB.


2
Đề xuất phân chia thay thế của bạn sẽ không hoạt động đối với các màu như màu xanh lam (0, 0, 1) - bởi vì chúng tôi cuối cùng có thể bão hòa phạm vi của các bầu cử sơ bộ trước khi đạt được độ sáng mong muốn. Một phốt pho màu xanh lam trên màn hình của người chơi không thể được điều khiển một cách tùy ý (mặc dù HDR có thể làm mờ phần còn lại của màn hình để cố ảo tưởng rằng màu xanh lam sáng như vậy. Hoặc bạn có thể đặt mục tiêu luma của mình thành 0,0722 để có thể chia bất kỳ màu nào cho luma đó, với chi phí là các màu rất tối)
DMGregory

Điểm tốt. Tôi sẽ cải thiện phần đó của câu trả lời.
Jibb thông minh

Có rất nhiều cách để cải thiện đề xuất thay thế, nhưng nó khá phức tạp trước khi thực sự có được kết quả mà OP có thể muốn, vì vậy tôi đã loại bỏ lựa chọn thay thế của mình. HCY nên đủ.
Jibb Smart 16/2/2016

Tôi đang làm một số thử nghiệm với tất cả những điều này. Tôi sẽ cập nhật trong vài ngày nữa để xem những không gian màu này hình thành như thế nào. Cảm ơn các bạn rất nhiều!
J.Doe

@DMGregory bạn có thể vui lòng giải thích thêm về ý của bạn bằng cách "đặt mục tiêu luma của bạn thành 0,0722 để có thể phân chia bất kỳ màu nào cho độ sáng đó, với chi phí tổng thể là các màu rất tối"?
J.Doe 16/2/2016
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.