頂点カラーをランダムに付与するBlenderスクリプト

前のライフル作る時に思いついて、Chat-GPTで作ったスクリプト。

ZBrushでもできる機能なんだけど、個別のメッシュごとに頂点カラーをランダムに割り当てる処理。
ハイポリでこれをやっておき、SubstancePainterとかでベイクする際に、頂点カラーをカラーIDマップとしてベイクしておけば、素材違いのレイヤごとにカラーマスクを指定できるわけ。
マスク処理に便利なはず。

使い方は簡単。新規スクリプトで↑をコピペし、対象メッシュを複数選択して実行。ランダムな色が気に入らなければ再実行。部分的に同じ色にしたい場合はメッシュを結合して行えばいい。

import bpy
import random

def assign_random_vertex_colors(obj):
    mesh = obj.data
    if not mesh.vertex_colors:
        mesh.vertex_colors.new()

    color_layer = mesh.vertex_colors.active
    r, g, b = [random.random() for _ in range(3)]  # Generate a single random color

    for poly in mesh.polygons:
        for loop_index in poly.loop_indices:
            color_layer.data[loop_index].color = r, g, b, 1.0  # Set alpha to 1.0

for obj in bpy.context.selected_objects:
    if obj.type == 'MESH':
        assign_random_vertex_colors(obj)

色を確認したい場合はこの表示設定で。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください