bpyハマりログ をテンプレートにして作成
開始行:
[[開発ノウハウ集]]
* <2014/02/13> matrix_worldの話 [#v4ef28e1]
- obj.matrix_worldは、locationおよびrotationから自動的に...
- ただしlocationやrotationを変更してからmatrix_worldが更...
- bpy.context.scene.update() を呼ぶとすぐに再計算される。
- ''ただし、それでも非表示のレイヤに存在するオブジェクト...
* <2014/01/09> modal operator使用時にキー入力がもたつく問...
spbを起動するとconsoleやtext editorでキー入力がもたつく事...
これはspb固有の問題ではなく、blenderのmodal operatorをtim...
- '''→ blenderのバグだった模様。開発版では修正された '''
-- https://developer.blender.org/rBdeab0d10402b59652ec5e1...
* <2014/12/27> bpyとマルチスレッド [#ab8ee7ac]
バックグラウンドで回り続けるようなスレッドからbpyにアクセ...
- http://www.blender.org/documentation/blender_python_api...
-- ''Strange errors using ‘threading’ module'' を参照のこ...
そのような目的にはmodal operatorを使うことが推奨されてい...
* bpy.data.object の寿命,比較,Undo時の挙動 [#j9e562f1]
obj = bpy.data.objects['Name']
上記で取得できる obj の同一性を調べるには == を使うこと....
''ただし''
同じオブジェクトから取得したobjであっても,==で同一になる...
bpy.data.objects['Name'].as_pointer()
の同一性をチェックしてると思われるが,このポインタは(Ble...
例えば Undo(C-z)時にはポインタが変わる(BlenderはUndo時...
したがって''Undoの前後で同じオブジェクトから取得した bpy....
Blender Objectの名前は一意なので,名前を保持しておいてい...
~
なお,対応するオブジェクトをDeleteした後に obj にアクセス...
Undo(C-z)を行なってobjのポインタが無効になった後でも同...
* Addメニューに独自の拡張を加える [#z743503e]
INFO_MT_addクラスを上書きすればよい.
ただ,コードをコピペするとblenderが更新されても変わらなく...
できれば上書き前の関数を退避しておく形をとりたい.
import bl_ui.space_info
from bpy.types import Menu
info_mt_add_draw = bl_ui.space_info.INFO_MT_add.draw # ...
class INFO_MT_add(Menu):
bl_label = "Add"
def draw(self, context):
info_mt_add_draw(self, context) # 上書き前の関数をまず...
layout = self.layout
layout.separator()
# ここから独自拡張
layout.menu("INFO_MT_spr_add", icon='OUTLINER_OB_MESH')
class INFO_MT_spr_add(Menu):
bl_idname = "INFO_MT_spr_add"
bl_label = "Springhead"
def draw(self, context):
layout = self.layout
layout.operator_context = 'EXEC_REGION_WIN'
layout.operator("spr.add_solid_box", icon='MESH_CUBE',...
* シーンに変更があったことを検出する [#k9a44588]
object.is_updated は scene_update_pre / scene_update_post...
import bpy
def scene_update(context):
if bpy.data.objects.is_updated:
print("One or more objects were updated!")
for ob in bpy.data.objects:
if ob.is_updated:
print("=>", ob.name)
bpy.app.handlers.scene_update_post.append(scene_update)
(from http://wiki.blender.org/index.php/Dev:2.6/Source/Re...
* プロパティの作成と編集 [#p3a212e8]
- プロパティ
-- http://www.blender.org/documentation/blender_python_ap...
- レイアウト
-- http://www.blender.org/documentation/blender_python_ap...
- Panelのdraw中ではプロパティを変更することができない.
終了行:
[[開発ノウハウ集]]
* <2014/02/13> matrix_worldの話 [#v4ef28e1]
- obj.matrix_worldは、locationおよびrotationから自動的に...
- ただしlocationやrotationを変更してからmatrix_worldが更...
- bpy.context.scene.update() を呼ぶとすぐに再計算される。
- ''ただし、それでも非表示のレイヤに存在するオブジェクト...
* <2014/01/09> modal operator使用時にキー入力がもたつく問...
spbを起動するとconsoleやtext editorでキー入力がもたつく事...
これはspb固有の問題ではなく、blenderのmodal operatorをtim...
- '''→ blenderのバグだった模様。開発版では修正された '''
-- https://developer.blender.org/rBdeab0d10402b59652ec5e1...
* <2014/12/27> bpyとマルチスレッド [#ab8ee7ac]
バックグラウンドで回り続けるようなスレッドからbpyにアクセ...
- http://www.blender.org/documentation/blender_python_api...
-- ''Strange errors using ‘threading’ module'' を参照のこ...
そのような目的にはmodal operatorを使うことが推奨されてい...
* bpy.data.object の寿命,比較,Undo時の挙動 [#j9e562f1]
obj = bpy.data.objects['Name']
上記で取得できる obj の同一性を調べるには == を使うこと....
''ただし''
同じオブジェクトから取得したobjであっても,==で同一になる...
bpy.data.objects['Name'].as_pointer()
の同一性をチェックしてると思われるが,このポインタは(Ble...
例えば Undo(C-z)時にはポインタが変わる(BlenderはUndo時...
したがって''Undoの前後で同じオブジェクトから取得した bpy....
Blender Objectの名前は一意なので,名前を保持しておいてい...
~
なお,対応するオブジェクトをDeleteした後に obj にアクセス...
Undo(C-z)を行なってobjのポインタが無効になった後でも同...
* Addメニューに独自の拡張を加える [#z743503e]
INFO_MT_addクラスを上書きすればよい.
ただ,コードをコピペするとblenderが更新されても変わらなく...
できれば上書き前の関数を退避しておく形をとりたい.
import bl_ui.space_info
from bpy.types import Menu
info_mt_add_draw = bl_ui.space_info.INFO_MT_add.draw # ...
class INFO_MT_add(Menu):
bl_label = "Add"
def draw(self, context):
info_mt_add_draw(self, context) # 上書き前の関数をまず...
layout = self.layout
layout.separator()
# ここから独自拡張
layout.menu("INFO_MT_spr_add", icon='OUTLINER_OB_MESH')
class INFO_MT_spr_add(Menu):
bl_idname = "INFO_MT_spr_add"
bl_label = "Springhead"
def draw(self, context):
layout = self.layout
layout.operator_context = 'EXEC_REGION_WIN'
layout.operator("spr.add_solid_box", icon='MESH_CUBE',...
* シーンに変更があったことを検出する [#k9a44588]
object.is_updated は scene_update_pre / scene_update_post...
import bpy
def scene_update(context):
if bpy.data.objects.is_updated:
print("One or more objects were updated!")
for ob in bpy.data.objects:
if ob.is_updated:
print("=>", ob.name)
bpy.app.handlers.scene_update_post.append(scene_update)
(from http://wiki.blender.org/index.php/Dev:2.6/Source/Re...
* プロパティの作成と編集 [#p3a212e8]
- プロパティ
-- http://www.blender.org/documentation/blender_python_ap...
- レイアウト
-- http://www.blender.org/documentation/blender_python_ap...
- Panelのdraw中ではプロパティを変更することができない.
ページ名:
サイト内検索
and
or
メニュー
Springhead
トップページ
スクリーンショットと紹介
ダウンロード
ドキュメント
開発者向け情報
SprBlender
SprBlender
SprBlenderの特徴
SprBlender使用例
ダウンロード
ドキュメント
Choreonoid Springhead Plugin
CnoidSprPlugin
Counter: 0, today: 0, yesterday: 0