QiitaのBlender Advent Calendar 2021 の4日目として投稿します。
https://qiita.com/advent-calendar/2021/blender
Blender3.0が公開されましたね。
今回は2.93の話題です。
Blender2.93から ノードでモデルを編集できるジオメトリノードが搭載されました。
ただ、どういったノードがあるのか、覚えるのも大変な数になるのと、スクリプトで制御する場合の名称を取得するのも面倒なので
ノードの一覧とスクリプトで作成する時に使う名称と 日本語表示でのノード名を一覧にしてみました
多くの場合typeの部分の表記がほぼ英語環境でノードに表示される名称に対応するようです
因みにジオメトリノードはBlender3.0やそれ以降でノードの構成が異なる等、まだまだ開発中のようです
以下カテゴリごとの一覧になります
属性
type |
bl_idname |
翻訳 |
ATTRIBUTE_CLAMP |
GeometryNodeAttributeClamp |
属性範囲制限 |
ATTRIBUTE_COLOR_RAMP |
GeometryNodeAttributeColorRamp |
属性カラーランプ |
ATTRIBUTE_COMBINE_XYZ |
GeometryNodeAttributeCombineXYZ |
属性XYZ合成 |
ATTRIBUTE_COMPARE |
GeometryNodeAttributeCompare |
属性比較 |
ATTRIBUTE_CONVERT |
GeometryNodeAttributeConvert |
属性変換 |
ATTRIBUTE_FILL |
GeometryNodeAttributeFill |
属性フィル |
ATTRIBUTE_MAP_RANGE |
GeometryNodeAttributeMapRange |
属性範囲マッピング |
ATTRIBUTE_MATH |
GeometryNodeAttributeMath |
属性演算 |
ATTRIBUTE_MIX |
GeometryNodeAttributeMix |
属性ミックス |
ATTRIBUTE_PROXIMITY |
GeometryNodeAttributeProximity |
属性近接 |
ATTRIBUTE_RANDOMIZE |
GeometryNodeAttributeRandomize |
属性ランダム化 |
ATTRIBUTE_REMOVE |
GeometryNodeAttributeRemove |
属性削除 |
ATTRIBUTE_SAMPLE_TEXTURE |
GeometryNodeAttributeSampleTexture |
属性テクスチャ取得 |
ATTRIBUTE_SEPARATE_XYZ |
GeometryNodeAttributeSeparateXYZ |
属性XYZ分離 |
ATTRIBUTE_VECTOR_MATH |
GeometryNodeAttributeVectorMath |
属性ベクトル演算 |
カラー
type |
bl_idname |
翻訳 |
VALTORGB |
ShaderNodeValToRGB |
カラーランプ |
COMBRGB |
ShaderNodeCombineRGB |
RGB合成 |
SEPRGB |
ShaderNodeSeparateRGB |
RGB分離 |
VALTORGBはノードの表記はColorRamp
ジオメトリ
type |
bl_idname |
翻訳 |
BOUNDING_BOX |
GeometryNodeBoundBox |
バウンディングボックス |
JOIN_GEOMETRY |
GeometryNodeJoinGeometry |
ジオメトリ統合 |
TRANSFORM |
GeometryNodeTransform |
トランスフォーム |
入力
type |
bl_idname |
翻訳 |
COLLECTION_INFO |
GeometryNodeCollectionInfo |
コレクション情報 |
IS_VIEWPORT |
GeometryNodeIsViewport |
ビューポート判定 |
OBJECT_INFO |
GeometryNodeObjectInfo |
オブジェクト情報 |
RANDOM_FLOAT |
FunctionNodeRandomFloat |
ランダムFloat |
INPUT_STRING |
FunctionNodeInputString |
String |
VALUE |
ShaderNodeValue |
値 |
INPUT_VECTOR |
FunctionNodeInputVector |
ベクトル |
メッシュ
type |
bl_idname |
翻訳 |
BOOLEAN |
GeometryNodeBoolean |
ブーリアン |
EDGE_SPLIT |
GeometryNodeEdgeSplit |
辺分離 |
SUBDIVIDE |
GeometryNodeSubdivide |
細分化 |
SUBDIVISION_SURFACE |
GeometryNodeSubdivisionSurface |
サブディビジョンサーフェイス |
TRIANGULATE |
GeometryNodeTriangulate |
三角面化 |
メッシュプリミティブ
type |
bl_idname |
翻訳 |
MESH_PRIMITIVE_CIRCLE |
GeometryNodeMeshCircle |
円 |
MESH_PRIMITIVE_CONE |
GeometryNodeMeshCone |
円錐 |
MESH_PRIMITIVE_CUBE |
GeometryNodeMeshCube |
立方体 |
MESH_PRIMITIVE_CYLINDER |
GeometryNodeMeshCylinder |
円柱 |
MESH_PRIMITIVE_GRID |
GeometryNodeMeshGrid |
グリッド |
MESH_PRIMITIVE_ICO_SPHERE |
GeometryNodeMeshIcoSphere |
ICO球 |
MESH_PRIMITIVE_LINE |
GeometryNodeMeshLine |
ライン |
MESH_PRIMITIVE_UV_SPHERE |
GeometryNodeMeshUVSphere |
UV球 |
ポイント
type |
bl_idname |
翻訳 |
ALIGN_ROTATION_TO_VECTOR |
GeometryNodeAlignRotationToVector |
回転をベクトルに整列 |
POINT_DISTRIBUTE |
GeometryNodePointDistribute |
ポイント配置 |
POINT_INSTANCE |
GeometryNodePointInstance |
ポイントインスタンス |
EULER |
GeometryNodeRotatePoints |
ポイント回転 |
POINT_SCALE |
GeometryNodePointScale |
ポイントスケール |
POINT_SEPARATE |
GeometryNodePointSeparate |
ポイント分離 |
POINT_TRANSLATE |
GeometryNodePointTranslate |
ポイント移動 |
EULER はノードの表記はPoint Rotate |
|
|
|
|
|
ユーティリティ
type |
bl_idname |
翻訳 |
BOOLEAN_MATH |
FunctionNodeBooleanMath |
ブール演算 |
CLAMP |
ShaderNodeClamp |
範囲制限 |
FLOAT_COMPARE |
FunctionNodeFloatCompare |
Float比較 |
MAP_RANGE |
ShaderNodeMapRange |
範囲マッピングA |
MATH |
ShaderNodeMath |
数式 |
ブール演算 Float比較 数式は選択されている計算によって表記が変化 |
|
|
ベクトル
type |
bl_idname |
翻訳 |
COMBXYZ |
ShaderNodeCombineXYZ |
XYZ合成 |
SEPXYZ |
ShaderNodeSeparateXYZ |
XYZ分離 |
VECT_MATH |
ShaderNodeVectorMath |
ベクトル演算 |
VECTOR_ROTATE |
ShaderNodeVectorRotate |
ベクトル回転 |
ベクトル演算は選択されている計算によって表記が変化 |
|
|
ボリューム
type |
bl_idname |
翻訳 |
FRAME |
NodeFrame |
|
POINTS_TO_VOLUME |
GeometryNodePointsToVolume |
ポイントからボリューム |
VOLUME_TO_MESH |
GeometryNodeVolumeToMesh |
ボリュームのメッシュ化 |
因みにノードの一覧の取得は
import bpy
node_group = bpy.data.node_groups[1]
if node_group.type == 'GEOMETRY':
# 選択されているノードを取得
selected_node = [n for n in node_group.nodes if n.select]
txtdata = ''
selected_node = sorted(selected_node,key = lambda n:n.type)
for n_ in selected_node:
# Markdownの表に成型
txtdata += '| %s | %s | |\n' % (n_.type, n_.bl_idname)
# テキストをクリップボードに
bpy.context.window_manager.clipboard = txtdata
といった感じの簡単なスクリプトで取得しました
何かの参考になればと思います