プログラムを実行すると「ヘアー生成」というタブが現れ、ボタンをクリックすると事前に設定済のパーティクルヘアーが適用されます。
1. はじめに
前回、BlenderでPythonを使う方法を紹介しました。
www.stjun.com
今回はその応用編としてパーティクルヘアーの設定を自動化しましたので紹介します。毎回パーティクルの設定を行うのが面倒だったため結構役立っています。
2. コード
コードはこちらになります。
import bpy
class Camera_viewpoint_Panel(bpy.types.Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = 'ヘアー生成'
bl_label = 'ヘアー生成'
def draw(self, context):
layout = self.layout
row = layout.row()
row.operator('hair.add')
class Camera_viewpoint_btn(bpy.types.Operator):
bl_idname = 'hair.add'
bl_label = 'ヘアーを生成する'
bl_description = 'ヘアーを生成する'
def execute(self,context):
obj=bpy.context.active_object
if len(obj.particle_systems)==0:
obj.modifiers.new("part", type="PARTICLE_SYSTEM")
part = obj.particle_systems[0]
settings=part.settings
settings.type="HAIR"
settings.count=50
settings.hair_length=4
settings.use_hair_bspline = True
settings.render_step = 8
settings.display_step = 8
settings.child_type = 'SIMPLE'
settings.child_nbr = 200
settings.rendered_child_count = 200
settings.child_radius = 0.03
settings.use_clump_curve = True
settings.radius_scale = 0.001
return{'FINISHED'}
bpy.utils.register_class(Camera_viewpoint_Panel)
bpy.utils.register_class(Camera_viewpoint_btn)
なお集結カーブだけはpythonから設定することができなそうなので手作業が必要です、ご注意ください。
3. 説明
パーティクルの設定に関わるコードは以下の部分になります。UIの説明は別の機会に紹介するため今回は省きます。
obj=bpy.context.active_object
if len(obj.particle_systems)==0:
obj.modifiers.new("part", type="PARTICLE_SYSTEM")
part = obj.particle_systems[0]
settings=part.settings
settings.type="HAIR"
settings.count=50
settings.hair_length=4
settings.use_hair_bspline = True
settings.render_step = 8
settings.display_step = 8
settings.child_type = 'SIMPLE'
settings.child_nbr = 200
settings.rendered_child_count = 200
settings.child_radius = 0.03
settings.use_clump_curve = True
settings.radius_scale = 0.001
3.1 パーティクルシステムを作る
以下5文でパーティクルシステムを新規に作成しています。まず「obj=~~」で洗濯中のオブジェクトをアクティブにし、「if len~~」で既にパーティクルシステムがあるか調べます。既にパーティクルシステムがある場合はそこでプログラムは終了です、ない場合は3〜5行目の文で新しく作ります。
obj=bpy.context.active_object
if len(obj.particle_systems)==0:
obj.modifiers.new("part", type="PARTICLE_SYSTEM")
part = obj.particle_systems[0]
settings=part.settings
以下画像の赤枠の設定と同義です。
3.2 親パーティクルの設定
以下の文で親の設定をしています。
settings.typeでエミッターかヘアーかを選日ます。
countは数です。lengthは髪の長さです。use_hair_bsplineをTrueにすることでBスプラインにチェックを入れます。またレンダーもビューもステップは8程度に設定しています。
settings.type="HAIR"
settings.count=50
settings.hair_length=4
settings.use_hair_bspline = True
settings.render_step = 8
settings.display_step = 8
上のコードは以下画像の赤枠に値します。
3.3 子パーティクルの設定
子の設定は以下の文になります。
settings.child_type = 'SIMPLE'
settings.child_nbr = 200
settings.rendered_child_count = 200
settings.child_radius = 0.03
settings.use_clump_curve = True
settings.radius_scale = 0.001
上のコードは以下の赤枠に対応します。
4. おすすめ
以下の本はお勧めです。