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])

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

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

Game Div. アニメーターの1日@金沢スタジオ

初めまして!
入社4年目の、Game Div.所属アニメーターのHです。

寒かったり暖かかったり体調を崩しやすい気候ですが、
皆さまお変わりありませんか?
お互い体に気を付けて過ごしましょう🌸

さて、今回はGame Div.に所属する筆者のとある1日をご紹介いたします。

■ 主な業務内容 ※プロジェクトにより異なります
キャラクターアニメーションを担当しており、
ゲームに使用されるキャラクターの動きを作っています。

■ 1日のスケジュール ※一例です
(金沢スタジオでは出社をして作業を行っています)

                      金沢オフィスの様子
======================================

9:00~【業務開始】
連絡・メールの確認を行い、内容を整理して
1日の作業予定を立ててから業務を開始します。
納期を守るためにはスケジュールの管理が大切!

13:00~14:00【お昼休憩】
金沢スタジオの近くは観光地なので、美味しいお店が沢山あります◎
毎日頑張る自分へのご褒美に、たまに外食をして気分転換…*
写真は会社近くにあるお店のカレーです↓

14:00~【業務再開】
1つのモーションごとにディレクターからフィードバックを受けます。
フィードバックはオンラインで行い、
画面共有を活用して丁寧に教えていただきます。

18:00【業務終了】
======================================

Game Div.では、週に1回アニメーターの定例会があります。
定例の内容は主に進捗報告ですが、
コミュニケーション促進のため後半は雑談会になります。
雑談会での内容は各々の好きなものや趣味、
最近話題の作品の話など様々!

東京-金沢は物理的な距離があるため、
どうしても東京本社のスタッフと会話をする機会は少なくなりがちですが、
この雑談会がお互いのことを知る良い機会となっています:)

以上、Game Div. 金沢スタジオのアニメーターの1日でした。
最後まで読んでいただきありがとうございました*

またの機会にお会いしましょう~✋

祝!ビアフライデー再開

寒さが身に染みる日が続いていますね🥶
もうすぐ訪れるであろう春のポカポカ陽気が楽しみな今日この頃🌸
(花粉が怖い…)
皆さまいかがお過ごしでしょうか?

さて今回は、昨年末にXでポストした「ビアフライデー」に関する記事です🍺
コロナの影響で約4年ぶりの開催ということもあり、とても盛り上がりました♩

4年前に開催した際は、
”たまには会社でお酒を飲んだりピザを食べたりしながら
皆でワイワイしよう!”というテーマでしたが、
テレワークが主となった現在は、
”久しぶり皆で集まって直接話そう!”というテーマに変わり、
普段なかなか直接顔を合わせる機会が減っているスタッフが
一堂に会する貴重な機会になりました◎

仕事後にふらっと参加できるように出入りは自由スタイル。
飲みたい派、食べたい派、話したい派…
それぞれの目的に合わせて自由に楽しめるところが
社内開催の良いところですね:)

会場の準備は元気な若手スタッフ達とベテランのディレクターが
手分けして手伝ってくれました!
若手に野菜を食べさせようと…?サラダはディレクターのお手製🥗
カリカリ感が欲しい!とのことでカリカリオニオンが乗っています🤡

入社して間もないスタッフや
久しぶりに顔を合わせるスタッフ達が
終始和気藹藹とした賑やかな雰囲気で
仕事の話、趣味の話、近況報告等…
遅くまで楽しそうに話し込んでいました☽

この様な賑やかなイベントが
また開催出来るようになったのは本当に嬉しい限り✨
時期を見て、また開催したいと思います🎵

それでは、次回の更新もお楽しみに*