Blender python 開発メモ〜構成〜
Blender Image クラス
BlendDataImages(bpy_struct) — Blender 2.77.1 - API documentation
Dev:Py/Scripts/Cookbook/Code snippets - BlenderWiki
マテリアル追加
bpy.ops.object.material_slot_add()
オブジェクト全選択
bpy.ops.mesh.select_all(action='TOGGLE')
スフィアのUV編集
bpy.ops.uv.sphere_project()
UV座標アクセス
me = bpy.data.meshes['MyMesh'] uv = me.uv_textures['UVMap'] for j,face in enumerate(me.faces): face_uv = uv.data[j] print(face.uv1) print(face.uv2) print(face.uv3)
ショートカット一覧
「オブジェクトモード」
Blender 3D: HotKeys/3D View/Object Mode - Wikibooks, open books for an open world
「エディットモード」
Blender 3D: HotKeys/3D View/Edit Mode - Wikibooks, open books for an open world
「変形関連」
Transform Orientations — Blender Manual
<サンプルコードの場所>
<ツールチップから参照オブジェクト>
画面コントロールのツールチップに対象のオブジェクトが表示されるので
Pythonコンソールから探し出しす。
「クラス一覧」(bpy.types)
https://docs.blender.org/api/blender_python_api_2_77_0/bpy.types.html
「アドオンの構成」
⑴ *,py: 定義しているregister(), unregisterメソッドが走る
⑵ *.zip: フォルダ構成を作って一つのアドオンとしてBlenderにインストール可能
1.基本要素
bpy.types.Operator
execute()→使用するプロパティを追加する
@classmethod def register(cls) → プロパティなどを登録する
<サンプルコード(register処理)>
bpy.types.Scene.登録するプロパティ名 = BoolProperty(# 対応するもの
name="Japanese or Engilish" →パネルに表示される
,description="Using Japanese or English"
,default=True)
register() →ファイルに定義するメソッド、全てのアドオン用pyファイルに記載可
unregister() →ファイルに定義するメソッド、全てのアドオン用pyファイルに記載可
※アノテーションがつくかつかないかで引数が変わる(有無)
bpy.types.Panel
draw()→初期、イベント時に走る
self.layout.prop(context.scene, "登録したプロパティ名")
@classmethod def register()→プロパティ登録のみでは使用しない?
@classmethod def register()→登録したプロパティの削除
例:bpy.utils.unregister_class(RootPanel)
2.起動について
register()で継承、作成したクラスを
blenderに追加する
①classmethodのregisterと
②ファイル定義のregister
メソッドがあり、①自身を登録する
②クラスで使用するオブジェクトを
使用する時で使い分ける
UV座標の取得[サンプル]
me = bpy.data.meshes['MyMesh']
uv = me.uv_textures['UVMap']
for j,face in enumerate(me.faces):
face_uv = uv.data[j]
print(face.uv1)
print(face.uv2)
print(face.uv3)