本日は Blender の技術調査枠です。
Blenderで利用可能なpythonスクリプトを作ります。
bluebirdofoz.hatenablog.com
オブジェクトの原点変更
指定オブジェクトの原点位置を変更します。
オブジェクトの原点位置を変えるだけなので、オブジェクトそのものは移動しません。
・set_origin_cursor.py
# bpyインポート import bpy # copyインポート(参照型のコピーのため) import copy # オブジェクトの原点変更 # オブジェクトの原点を指定位置に移動する # 引数 arg_objectname:指定オブジェクト名 # 戻り値 def set_origin_cursor(arg_objectname='Default',arg_location=(0,0,0)): # 他のオブジェクトの寸法を適用しないよう全てのオブジェクトを走査する for ob in bpy.context.scene.objects: # 非選択状態に設定する ob.select=False # 指定オブジェクトを取得する selectob = bpy.data.objects[arg_objectname] # 変更オブジェクトをアクティブに変更する bpy.context.scene.objects.active = selectob # 変更オブジェクトを選択状態にする selectob.select=True # 3Dカーソルの元の位置を記録しておく(参照型のコピー) cursorpos = copy.copy(bpy.context.scene.cursor_location) # 3Dカーソルの位置を指定位置に移動する bpy.context.scene.cursor_location = arg_location # オブジェクトの原点を3Dカーソル位置に移動する bpy.ops.object.origin_set(type='ORIGIN_CURSOR') # 3Dカーソルの位置を元に戻す bpy.context.scene.cursor_location = cursorpos return # 関数の実行例 set_origin_cursor('Cube',(2,2,2))
オブジェクトの寸法調整
指定オブジェクトの寸法を計測して調整します。
・change_object_dimensions_10.py
# bpyインポート import bpy # オブジェクトの寸法変更 # 一辺が最大 10 になるように寸法を変更する # 引数 arg_objectname:指定オブジェクト名 # 戻り値 def change_object_dimensions_10(arg_objectname='Default'): # 指定オブジェクトを取得する selectob = bpy.data.objects[arg_objectname] # 各辺の寸法を取得する selectdimX = selectob.dimensions[0] selectdimY = selectob.dimensions[1] selectdimZ = selectob.dimensions[2] # 最も大きい一辺を取得する selectdimMax = selectdimX if selectdimMax < selectdimY: selectdimMax = selectdimY if selectdimMax < selectdimZ: selectdimMax = selectdimZ # 最も大きい一辺を 10 にリサイズするための倍率を取得する magnification = 10.0 / selectdimMax # 拡大後の寸法を取得します changedimX = selectdimX * magnification changedimY = selectdimY * magnification changedimZ = selectdimZ * magnification changedimensions = (changedimX,changedimY,changedimZ) # 寸法を変更する selectob.dimensions=changedimensions return # 関数の実行例 change_object_dimensions_10('Cube')