MRが楽しい

MRやVRについて学習したことを書き残す

Blenderで利用可能なpythonスクリプトを作る その11(トランスフォーム適用、参照削除)

本日は Blender の技術調査枠です。
Blenderで利用可能なpythonスクリプトを作ります。
bluebirdofoz.hatenablog.com

全オブジェクトのトランスフォームを適用する

シーン中の全オブジェクトのトランスフォーム(位置/回転/拡大縮小)を適用します。
実行時の状態で全てのオブジェクトのトランスフォームが以下の通り初期化されます。

位置 X:0.0, Y:0.0, Z:0.0
回転 X:0°, Y:0°, Z:0°
拡大縮小 X:1.0, Y:1.0, Z:1.0

・transform_apply.py

# bpyインポート
import bpy

# 全オブジェクトのトランスフォームを適用する
# 引数
# 戻り値
def transform_apply_all():
   # シーン中の全てのオブジェクトを走査する
   for ob in bpy.context.scene.objects:
     # 全てのオブジェクトを選択状態に設定する
     ob.select=True

   # 全てのトランスフォームを適用する
   bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)

   return

# 関数の実行例
transform_apply_all()

f:id:bluebirdofoz:20190529001959j:plain

全オブジェクトの参照を削除する


シーン中の全オブジェクトの参照を削除します。メッシュなどのデータ情報は削除しません。
ただし、全ての参照が切れるため、プロジェクトを再読み込みするとデータは破棄されます。

・unlink_object.py

# bpyインポート
import bpy

# 全オブジェクトの参照を削除する
# (全ての参照が切るため、プロジェクト保存には注意)
# 引数
# 戻り値
def unlink_object_all():
   # シーン中の全てのオブジェクトを走査する
   for ob in bpy.context.scene.objects:
     # オブジェクトの参照を削除する
     bpy.context.scene.objects.unlink(ob)

   return

# 関数の実行例
unlink_object_all()

f:id:bluebirdofoz:20190529002009j:plain