BLOG

RECENT ENTRY

ARCHIVES

MotionBuilderのスクリプト紹介

こんにちは!
新卒でアニマのDevelopment Div./リグDP 所属となり、
現在入社3年目のIと申します。

早いもので3月も中旬に差し掛かり、
4月から新生活が始まる方は色々な準備で
忙しい日々を過ごしているのではないでしょうか🌸

さて、今回のブログは【MotionBuilderのスクリプト紹介】がテーマです。
アニマのリグのワークフローは現在Mayaがメインですが、
MotionBuilderを使用することもあります。
※ちなみに筆者は学生時代MotionBuilderには一切触れたことがなかったので、
 入社後に一から教えてもらいました。

MotionBuilderのスクリプトを勉強しようと思ったきっかけは、
少し特殊なリグをセットアップしようとした際に
コンストレインを合計700個程作る必要があったことです。
これを手作業で行うと膨大な時間がかかってしまうため、
そこからMotionBuilderのスクリプトについて勉強を始めました。

MotionBuilderとMayaは言語がPythonという点では同じですが、
細かい部分がかなり違うと感じています。
何より、ネットで検索した際の情報量がMayaより断然少ないです…;

後ほど紹介するスクリプトも、日本語ではなく
英語ページから翻訳機能を頼って集めたものです。
とはいえ、使用頻度が高いものは概ね日本語でも揃っているので
検索すればいくつか有用なページがヒットすると思います💻

直近のプロジェクトでMotionBuilder2023を使用した際に
自作のスクリプトでエラーが出ることに気付きました💦
ソフトがバージョンアップした時にはよくあることだと思いますが、
まだまだ初心者なので結構堪えます😓

最後に、以前MotionBuilder用にPythonで簡単なツール作成をした際の
自作スクリプト作成時に必要だったコードとその説明を少しご紹介します。
※バージョン2019,2020で動作確認済みです

———————————————————–

# まずモジュールの呼び出しです
from pyfbsdk import *

# 1.タイムスライダの範囲を変更する
# 2つあるFBTime()にスタート位置とエンド位置をそれぞれ指定します
# FBTime()内の5つの数字ですが、(時間、分、秒、フレーム、フィールド)となっているので、
# 基本的に左から4番目の数字(フレーム)だけ変えれば大丈夫だと思います
# 5番目の数字は省略しても問題ないです。
FBSystem().CurrentTake.LocalTimeSpan = FBTimeSpan(
FBTime(0, 0, 0, 0, 0),
FBTime(0, 0, 0, 50, 0))

# 2.タイムスライダ上の現在フレームを変更する
# 上のものと同じようにFBTime()で時間指定します
t = FBTime(0, 0, 0, 1, 0)
FBPlayerControl().Goto(t)

# 3.選択しているノードに現在フレームでキーを打つ
lPlayer = FBPlayerControl()
lPlayer.Key()

# 4.フレームと値を指定してキーを打つ
# まずFBFindModelByLabelName()などを使ってキーを打ちたいノードを取得します
# (注)FBFindModelByLabelName()に入れる名前はネームスペースも込みです
target = FBFindModelByLabelName(“name”)
# FBTime()でフレーム指定し、そのあとの[]内でx,y,zのローカル値を指定します
# ↓移動にキーを打ちたい場合↓
target.Translation.SetAnimated(True)
target.Translation.GetAnimationNode().KeyAdd(FBTime(0,0,0,10), [45,45,90])
# ↓回転にキーを打ちたい場合↓
target.Rotation.SetAnimated(True)
target.Rotation.GetAnimationNode().KeyAdd(FBTime(0,0,0,10), [30,60,90])

———————————————————–
いかがでしたでしょうか?
ご興味のある方はスクリプトエディターにコピペしてご活用ください◎

それでは、また更新します*

PAGE
TOP