スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
新しい記事を書く事で広告が消せます。
まばたきを追加するスクリプト
カレントフレームにまばたきモーションを打つスクリプトを作成しました。
こんなの自動化する意味あるのかと思われるかもしれませんが、まばたきの動きは毎回同じでいい上に、意外と回数が多いので手で打つとだんだん嫌気がさしてくるのです。
このスクリプト、自分のモデル用(ボーンによるスライダーでの表情制御)に作成しましたが、モデルの表情の制御はリグによる差異が大きいので、他のモデルで使う場合には多少の改変が必要と思います。ライセンスはPD扱いとします。
こんなの自動化する意味あるのかと思われるかもしれませんが、まばたきの動きは毎回同じでいい上に、意外と回数が多いので手で打つとだんだん嫌気がさしてくるのです。
このスクリプト、自分のモデル用(ボーンによるスライダーでの表情制御)に作成しましたが、モデルの表情の制御はリグによる差異が大きいので、他のモデルで使う場合には多少の改変が必要と思います。ライセンスはPD扱いとします。
import bpy
obj = bpy.context.object
bones = []
bones_eye = []
bone_name = 'Eye.' #目に関するボーンの名前(前方一致)
bone_name_eye = 'Eye.Close.' #目を閉じるボーンの名前(前方一致)
#目に関するボーンの名前を指定するのは、目を閉じたときの干渉対策のため
#閉じはじめのキー
#ボーンを取得しリストに格納すると同時にキーを打つ
for x in obj.pose.bones:
try:
if (x.name[:len(bone_name)] == bone_name) and (x.location[0] != 0.0):
bones.append(x)
obj.keyframe_insert('pose.bones["' + x.name +'"].location')
except:
pass
for x in obj.pose.bones:
try:
if x.name[:len(bone_name_eye)] == bone_name_eye:
bones_eye.append(x)
obj.keyframe_insert('pose.bones["' + x.name +'"].location')
except:
pass
#開く部分のキーを先に打つ
bpy.context.scene.frame_current += 3
for x in bones:
obj.keyframe_insert('pose.bones["' + x.name +'"].location')
for x in bones_eye:
obj.keyframe_insert('pose.bones["' + x.name +'"].location')
#閉じる部分
bpy.context.scene.frame_current += -2
for x in bones:
x.location[0] = 0.0
obj.keyframe_insert('pose.bones["' + x.name +'"].location')
for x in bones_eye:
x.location[0] = 0.4 #まばたき時の制御ボーンの最大移動値を入力
obj.keyframe_insert('pose.bones["' + x.name +'"].location')