[色彩]RGBをHSVに変換する。

▼Hue(色相)の求め方

▼ Red、Green、Blueのなかで、いちばん値の大きいものがRedのときの式
色相 = ( { 緑の値青の値 } / { RGBの中の最大値 – RGBの中の最小値 } ) × 60

▼ Red、Green、Blueのなかで、いちばん値の大きいものがGreenのときの式
色相 = ( { 青の値赤の値 } / { RGBの中の最大値 – RGBの中の最小値 } ) × 60 + 120

▼ Red、Green、Blueのなかで、いちばん値の大きいものがBlueのときの式
色相 = ( { 赤の値緑の値 } / { RGBの中の最大値 – RGBの中の最小値 } ) × 60 + 240

▼Satulation(彩度)の求め方

彩度 = (RGBの中の最大値 – RGBの中の最小値)/RGBの中の最大値

▼Value(明度)の求め方

明度 = RGBの中の最大値/値の上限値
※RGBの値の範囲が0~1の場合は1が上限値。
※RGBの値の範囲が0~255の場合は255が上限値。

▼例:Rの値が153、Gの値が51、Bの値が30のときの、HSV(HSB)の値を求める。

R:153
G:51
B:30

●色相(Hue)を求める。

RGBの中で、一番値が大きいのはR

↓RGBの中で、一番値が大きいものがRの時に色相を出す式
色相 = {(緑の値 – 青の値} ÷ {RGBの中の最大値 – RGBの中の最小値}) × 60

色相 = ({51 – 30} / {153 – 30}) * 60
色相 = (21 / 123) * 60
色相 = 10.24390243902439024390243902439
色相 = 10.24
色相 = 10.24°

●彩度(Satulation)を求める。

彩度 = (RGBの中の最大値 – RGBの中の最小値) / RGBの中の最大値

彩度 = (153 – 30) / 153
彩度 = 123 / 153
彩度 = 0.8039215686274509803921568627451
彩度 = 0.8039
彩度 = 80.39%

●明度(Value・Brightness)を求める。

明度 = RGBの中の最大値 / 値の上限値

明度 = 153 / 255
明度 = 0.6
明度 = 60%

H:10.24°
S:80.39%
V:60%

↓Illustlatorのカラーウインドウで、今回のRGBからHSV(HSB)への変換が、正しく出来ているか確認。

▼参考にしたサイト

RGB←→HSB相互変換【Windowsプログラミング研究所】

HSV色空間 – Wikipedia

▼その他
3dsMaxはマテリアルのディフューズカラーや、ワイヤカラー(オブジェクトカラー)をHSVで取得する事ができる。

↓選択したオブジェクトに適用されているマテリアルの、ディフューズカラーをHSVで表示する。

print $.material.diffuse.hue
print $.Material.diffuse.saturation
print $.Material.diffuse.value

hue、saturation、valueは頭文字一文字に省略可能

print $.material.diffuse.h
print $.Material.diffuse.s
print $.Material.diffuse.v

※複数選択した状態で↑のスクリプトを実行するとエラーになる。
※取得した値の範囲は0~255
※HSVの取得(読み込み)は出来るけど、適用(書き込み)は出来ない。

広告

コメントを残す

メールアドレスが公開されることはありません。

スパム対策用の計算式と画像認証です。↓の欄を入力しないとコメントが出来ません。 *

*