前のライフル作る時に思いついて、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)
色を確認したい場合はこの表示設定で。