【Blender×Python】頂点カラーをメッシュデータから取得する方法について徹底解説

Blender

「bpy」とは、PythonからBlenderの機能を呼び出すことができるBlender Python APIのことです。Blenderはオープンソースの3Dアニメーションソフトウェアであり、「bpy」を使うことでBlenderの様々な機能をPythonスクリプトから呼び出して利用することができます。本記事では、「bpy」を用いた頂点カラーをメッシュデータから取得する方法を紹介します。

# vertex_colorsプロパティによるメッシュデータを用いた頂点法線の取得
"Mesh".vertex_colors["ColorLayerName"].data

下記の様な内容で悩んでいる/困っている場合に使える方法を参考までにご共有させて頂きます。

・Blender上で、どの様にPythonを使うの?
・Blender上のPythonで、どの様に頂点カラーをメッシュデータから取得するの?

また、「bpy」を使用する上で基礎的な情報は下記の記事で紹介しております。
他の「bpy」のクラスや関数について気になる方はこちらの記事をご覧ください。

vertex_colorsプロパティによるメッシュデータを用いた頂点法線の取得

“Mesh”.vertex_colors[“ColorLayerName”].dataプロパティの基本構文

"Mesh".vertex_colors["ColorLayerName"].data
→ MeshLoopColorLayer.data: bpy_prop_collection

“Mesh”.vertex_colors[“ColorLayerName”].dataプロパティの使い方

import bpy

CubeMesh = bpy.data.meshes["Cube"]
CubeMeshColorLayer = CubeMesh.vertex_colors["Col"]
# CubeMeshColorLayer = CubeMesh.vertex_colors[0]
CubeMeshVertexColor = CubeMeshColorLayer.data

print(f"Cube Mesh Vertex Color:\n{CubeMeshVertexColor} {type(CubeMeshVertexColor)}")

for key, value in CubeMeshVertexColor.items():
    print(f"[{key}] {value}, {value.color[:]}")
Cube Mesh Vertex Color:
<bpy_collection[24], MeshLoopColorLayer.data> <class 'bpy_prop_collection'>
[0] <bpy_struct, MeshLoopColor at 0x000002B23C216868>, (1.0, 1.0, 1.0, 1.0)
[1] <bpy_struct, MeshLoopColor at 0x000002B23C21686C>, (1.0, 1.0, 1.0, 1.0)
[2] <bpy_struct, MeshLoopColor at 0x000002B23C216870>, (1.0, 1.0, 1.0, 1.0)
[3] <bpy_struct, MeshLoopColor at 0x000002B23C216874>, (1.0, 1.0, 1.0, 1.0)
[4] <bpy_struct, MeshLoopColor at 0x000002B23C216878>, (1.0, 1.0, 1.0, 1.0)
[5] <bpy_struct, MeshLoopColor at 0x000002B23C21687C>, (1.0, 1.0, 1.0, 1.0)
[6] <bpy_struct, MeshLoopColor at 0x000002B23C216880>, (1.0, 1.0, 1.0, 1.0)
[7] <bpy_struct, MeshLoopColor at 0x000002B23C216884>, (1.0, 1.0, 1.0, 1.0)
[8] <bpy_struct, MeshLoopColor at 0x000002B23C216888>, (1.0, 1.0, 1.0, 1.0)
[9] <bpy_struct, MeshLoopColor at 0x000002B23C21688C>, (1.0, 1.0, 1.0, 1.0)
[10] <bpy_struct, MeshLoopColor at 0x000002B23C216890>, (1.0, 1.0, 1.0, 1.0)
[11] <bpy_struct, MeshLoopColor at 0x000002B23C216894>, (1.0, 1.0, 1.0, 1.0)
[12] <bpy_struct, MeshLoopColor at 0x000002B23C216898>, (1.0, 1.0, 1.0, 1.0)
[13] <bpy_struct, MeshLoopColor at 0x000002B23C21689C>, (1.0, 1.0, 1.0, 1.0)
[14] <bpy_struct, MeshLoopColor at 0x000002B23C2168A0>, (1.0, 1.0, 1.0, 1.0)
[15] <bpy_struct, MeshLoopColor at 0x000002B23C2168A4>, (1.0, 1.0, 1.0, 1.0)
[16] <bpy_struct, MeshLoopColor at 0x000002B23C2168A8>, (1.0, 1.0, 1.0, 1.0)
[17] <bpy_struct, MeshLoopColor at 0x000002B23C2168AC>, (1.0, 1.0, 1.0, 1.0)
[18] <bpy_struct, MeshLoopColor at 0x000002B23C2168B0>, (1.0, 1.0, 1.0, 1.0)
[19] <bpy_struct, MeshLoopColor at 0x000002B23C2168B4>, (1.0, 1.0, 1.0, 1.0)
[20] <bpy_struct, MeshLoopColor at 0x000002B23C2168B8>, (1.0, 1.0, 1.0, 1.0)
[21] <bpy_struct, MeshLoopColor at 0x000002B23C2168BC>, (1.0, 1.0, 1.0, 1.0)
[22] <bpy_struct, MeshLoopColor at 0x000002B23C2168C0>, (1.0, 1.0, 1.0, 1.0)
[23] <bpy_struct, MeshLoopColor at 0x000002B23C2168C4>, (1.0, 1.0, 1.0, 1.0)

まとめ

「bpy」(Blender Python API)は、Pythonを使ったBlenderの開発に非常に役立ちます。この記事では、頂点カラーをメッシュデータから取得する方法を紹介しました。ぜひ活用してみてください。

関連検索ワード

How to get vertex color from mesh data?

関連キーワード

blender, python, get, vertex color, mesh, 取得, 頂点カラー, メッシュ