1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

BlenderでIDマスクをペイントする

Posted at

3Dペイントソフトでテクスチャを作成する際
パーツの塗り分けに「IDマスク」という単色で塗り分けした画像を使います。
image.png
塗り分け画像の作り方はいくつかあるものの、
Blenderで検索して出てくる方法では
手順が多く煩わしいものが多かったので、別の方法まとめておきたいと思います。

ペイントマスクについて

まず、Blenderの機能としてペイントマスクのことについて触れておきます

ペイントマスクとは テクスチャペイント ウエイトペイント 頂点ペイントの各モードに付いている機能で
「選択した面のみ」に各ペイント結果の効果をつける機能です
image.png
各エディタ画面のメニューに四角の重なったようなアイコンや[M]キーを押すことで切り替えができます

面の選択は編集モードの面選択状態と同じになる他、
右クリック選択の設定の場合は右クリックで 左クリック選択の設定の場合はAlt+クリックで選択
さらにShift同時押しで追加選択もできます
また、 メニューに「選択」メニューが追加表示されて編集モードと同じような選択ツールも使用できるようになります
22102301.gif
特に「リンク選択」は重要で
現在選択している部分とメッシュ上でつながった部分が一気に選択された状態になります。

UVシームで範囲が完全に区切られている場合にはメッシュがつながっていても別パーツとして扱われます

テクスチャペイントモードでのIDマップ塗り分け

テクスチャペイントに入る前にUV展開は済んでいる前提で話をします

テクスチャペイントではビューのモードをテクスチャペイントに切り替えるだけでもいいですが
上のタブからテクスチャペイントのワークスペースを利用すると必要な設定が一通りされていて楽です
image.png

IDマスクはBlender内のマテリアルでは利用しないデータですので
プロパティエディタのツールセッティングのモードを「単一画像」に切り替えます
(これはオブジェクトのマテリアル設定に関係なく
表示している画像をUVマッピングした状態でペイントするモードです)

既存の画像を選択するか 新規のボタンを選択してペイント対象の画像を作成します
キャプチャでUVMapなっている部分で ペイントで使用するUVマップを指定します

これでブラシツールでペイント可能な状態になりましたが
先に説明したペイントマスクモードに入ることで特定の部位のみにペイントできます
22102302.gif
さらに、ペイントマスクモードで塗りつぶしツールを使用すると
選択部位全てに色が付きます
IDマスクを作るのはとても楽なのではないでしょうか

UVの範囲外に余裕を持たせた塗り足し(パディング)はオプションの「にじみ」の項目で指定できます
image.png
後はパーツ分けしたい部分毎に塗った後保存するだけです
3DペイントソフトではIDマスクの再読み込みに対応しているようなので
必用に応じて更新して行ってもいいでしょう

カラーパレットの作成スクリプト

Blenderにプリセットされているカラーパレットもあるものの
IDマスクの作成にはもっと少ない色数のカラーパレットが欲しくなりました
一個一個手動登録してもよかったのですが スクリプトで自動化しました

import bpy

# インデクスで指定したRGBカラーを返す 54色が最大
def index2color(index):
    col_list = [255, 65280, 16711680, 65535, 16711935, 16776960,
    128, 32768, 8388608, 32896, 8388736, 8421376,
    39423, 26367, 10053222, 9868950, 6697728, 6723891,
    16751052, 10079487, 16737843, 13421619, 52377, 52479,
    12632256, 8421504, 16751001, 6697881, 13434879, 16777164, 
    6684774, 8421631, 13395456, 16764108, 8388608, 16711935, 
    65535, 16776960, 8388736, 128, 8421376, 16711680,
    16763904, 16777164, 13434828, 10092543, 16764057, 13408767, 
    13056, 13107, 13209, 6697881, 10040115, 3355443]
    if index > 54:
        return([0, 0, 0])
    else:
        col_int = col_list[index]
        color = [col_int %256 %256 /255, col_int //256%256 /255, col_int //256 //256 /255]
        return (color)
palette = bpy.data.palettes.new("id_palette")
for i in range(54):
    col = palette.colors.new()
    col.color = index2color(i)

スクリプトを実行した後 カラーパレットの一覧のプルダウンから「id_palette」を」選択するとパレットが表示されます
image.png

登録する色は別に作っていた関数を利用して
オフィスソフトのカラーパレットにある54色を参考にしました

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?