見出し画像

【Blender & Python】色設定がちょっと楽になるかもノウハウ

ここのところ Blender の作業を楽にする、ちょっとした Python スクリプト作りをしています。(Gemini 先生と一緒に)

今回は、カラーコードを「RGB」から「Hex」へ変換する Python スクリプトを書きました。

import mathutils

def color_code(r, g, b):
    r = hex(r)[2:].zfill(2)
    g = hex(g)[2:].zfill(2)
    b = hex(b)[2:].zfill(2)
    print(f"#{r}{g}{b}")
    return

color_code(207, 56, 111)

#cf386f

カラーコードを「RGB」から「Hex」へ変換する WEB サイトは多々ありますが、納得できる色になるまで何度も何度も WEB サイト上で試すのが面倒くさく、自前で作れば気楽に何十回でも試せるのがいいところです。

便利だと思う使い方

Mac には「Digital Color Meter」という、画面上の色のカラー値を確認できる純正のアプリがあります。

これを使って、求めているマテリアルの色を探ります。

良さそうなところで、RGBの値をカラーコード変換スクリプトに書き入れます。

https://www.gia.edu/tourmaline

#cf386f

出力された Hex カラーコードを、マテリアルに設定して良ければ OK。イマイチだったら、もう一度・・・と、こんな感じで欲しい色を設定していきます。

全然楽じゃないじゃん。と、感じる方もいらっしゃるかもしれませんが、私はこれでめちゃくちゃ楽になりました。


組み込み関数 hex()

最後に、Python 初心者がスクリプトを作る過程を記します。

Python の組み込み関数というのはすごく便利で、hex() の(かっこ)の中に、ただ値を入れるだけで16進数(Hex)にしてくれます。

r = hex(255)
print(f"{r}")

0xff

すげー。

しかし困ったのは、欲しい値は ’ff’ の2桁だけで、前の’0x’ は省きたい・・・と悩んでいたら、Gemini 先生が、スライスで2桁にしてくれました。

r = hex(255)
print(f"{r[2:]}")

ff

なるほど。

この調子で、g、b も追加していきます。

r = hex(255)
g = hex(255)
b = hex(255)
print(f"#{r[2:]}{g[2:]}{b[2:]}")

#ffffff

カタチになってきたので、これを関数にします。

def color_code(r, g, b):
 r = hex(r)
 g = hex(g)
 b = hex(b)
 print(f"#{r[2:]}{g[2:]}{b[2:]}")
 return

color_code(255, 255, 255)

#ffffff

わーい! Copilot さんに自慢するぞ。

def color_code(r, g, b):
   r = hex(r)[2:].zfill(2)
   g = hex(g)[2:].zfill(2)
   b = hex(b)[2:].zfill(2)
   print(f"#{r}{g}{b}")
   return

color_code(255, 255, 255)

#ffffff

あれ? またなんか追加されてる。

str.zfill() は「ゼロ埋め」をするためのものでした。(値は2桁であって欲しいのに、1桁の場合もある。その場合、0で埋めて2桁にしてくれる)

最終的に、Blender の環境で走らせるには「Mathutils」というモジュールをインポートして使います。

import mathutils

def color_code(r, g, b):
    r = hex(r)[2:].zfill(2)
    g = hex(g)[2:].zfill(2)
    b = hex(b)[2:].zfill(2)
    print(f"#{r}{g}{b}")
    return

color_code(207, 56, 111)

#cf386f

Python って便利だなあ、と思う今日この頃。

いいなと思ったら応援しよう!

obachan@50over
WEBデザイナー(自営業)のおばちゃんです。最近はBlenderネタ多めです。