本日は Blender の技術調査枠です。
Blenderで利用可能なpythonスクリプトを作ります。
bluebirdofoz.hatenablog.com
テクスチャ利用のマテリアルを設定する
指定のオブジェクトにカラーテクスチャを利用したマテリアルを設定する
material_textureset.py
# bpyインポート import bpy # 指定オブジェクトにテクスチャを参照するマテリアルを適用する # 引数 arg_objectname:指定オブジェクト名 # arg_applyfiledir:反映画像保存ファイルディレクトリ # arg_applyfilename:反映画像保存ファイル名 # 戻り値 def new_material_textureset( arg_objectname='Default', arg_applyfilepath='C:\\UnityChan\\Models\\UnityChanShader\\Texture', arg_applyfilename='NewTexture'): # 指定オブジェクトを取得する selectob = bpy.context.scene.objects[arg_objectname] # 変更オブジェクトをアクティブに変更する bpy.context.scene.objects.active=selectob # 新規マテリアルを作成する new_material=bpy.data.materials.new(arg_applyfilename) # マテリアルスロットを追加する bpy.ops.object.material_slot_add() # 作成したマテリアルスロットに新規マテリアルを設定する bpy.context.object.active_material=new_material # 新規テクスチャを作成する new_texture=bpy.data.textures.new(arg_applyfilename,type='IMAGE') # マテリアルにテクスチャスロットを追加する new_texture_slot=new_material.texture_slots.add() # 作成したテクスチャスロットに新規テクスチャを設定する new_texture_slot.texture=new_texture # 反映画像のファイルパスを取得する allpy_filepath=arg_applyfilepath + '\\' + arg_applyfilename + '.png' # 反映画像を読み込み apply_image=bpy.data.images.load(filepath=allpy_filepath) # 作成した新規テクスチャに画像を設定する new_texture.image=apply_image return # 関数の実行例 new_material_textureset( arg_objectname='BakeTo', arg_applyfilepath='D:\\WORK\\Texture', arg_applyfilename='BakeTexture')
マテリアルスロットの削除
指定のオブジェクトのマテリアルスロットを全て削除する。マテリアルのデータは削除しない。
全ての参照が切れた場合、データ保存でマテリアルが消去されるので注意が必要。
remove_materialslot.py
# bpyインポート import bpy # 指定オブジェクトのマテリアルスロットを全て削除する # ※ スロットの削除のため、マテリアルのデータは削除しない # 引数 arg_objectname:指定オブジェクト名 # 戻り値 def remove_materialslot_object(arg_objectname='Default'): # 対象オブジェクトを取得する selectob=bpy.context.scene.objects[arg_objectname] # マテリアルスロットが全て削除されるまでループ for loop_index in range(len(selectob.material_slots)): # 先頭のマテリアルスロットを選択状態にする selectob.active_material_index=0 # マテリアルスロットを削除する bpy.ops.object.material_slot_remove() return # 関数の実行例 remove_materialslot_object(arg_objectname='BakeTo')