【MotionBuilder】Python SDK 入門 第1回 『導入』

2024/07/25に公開

はじめに

連載記事の第1回に訪れていただき、ありがとうございます。私は都内の学生で、MotionBuilderを所属サークルでの制作で使用しております。まずは今回の記事の作成に取り組んだ背景とその目的について説明いたします。

記事の背景・目的

MotionBuilderが他ソフトと比べて学習を難しくさせる(と思う)要因として、一般ユーザーの日本語の解説記事・およびネットへの投稿の少なさは致命的であるように思えます。私のような学生ライセンスで習得の機会を得た学生も、やさしい日本語の解説記事の少なさや公式ヘルプの難解さを前にほとほと手を焼いているのではないでしょうか。とりわけSDKに関しては、特定の機能に焦点を当てた記事は存在するものの執筆時期が古く、「一般ユーザーの書いた比較的新しい包括的なチュートリアル」のようなものが存在しない気がします。

そのような中で、たとえ内容が良くなかろうが一般ユーザーとしてお手製のチュートリアル記事を世に出したい、また所属サークルでの開発ツールの保守のために知識を引き継ぎたい、というところが、今回「Python SDK 入門」という題で記事を執筆した背景になります。

今後の記事で紹介できる内容には偏りがあり、知識不足ゆえに見苦しい記述をお見せしてしまうかもしれません。誤謬等ございましたら遠慮なくご指摘いただけますと幸いです。また、この記事が少しでもどなたかの学習の一助になればと思います。

記事の構成

今後変更の可能性が大いにありますが、以下の流れで進める予定です。

第1回 導入
第2回 サンプル・ドキュメントの活用
第3回 Python関連のシステム
第4回 MotionBuilder内部の概念
第5回 スクリプト例と解説
第6回 VScode拡張機能の活用
第7回 UI・ツール開発-基礎編
第8回 UI・ツール開発-応用編
第9回 UI・ツール開発-実践編

内容の大きなくくりとしては、第1回・第2回が「入門」、第3回・第4回が「応用」、第5回以降が「実践」となっています。第7回以降では『UI・ツール開発』をテーマに、SDKのみで完結する方法、Qt(PySide)を利用する方法、PySideの使用例を解説します。また、読者の方がPythonを触れたことがあることを前提としているため、SDK以外のPythonに関する解説はあまり行わないのでご了承ください。

それでは、本編に入ります。

第1回 導入

1. MotionBuilder SDKについて

SDKとは「Software Development Kit」の頭文字を取ったもので、ユーザーがそのソフトウェア内で動作する独自の機能を作成できるよう、ソフトウェア開発側が一連のプログラムやサンプルコード、ドキュメントなどをまとめて提供しているものです。

MotionBuilder SDKにはOpenReality SDK(C++ SDK)Python SDKがあります。

出典:Autodesk MotionBuilder Python Programming - MotionBuilder SDK Training WebCast 1

この図から読み取れるのは以下の通りです。

  • MotionBuilderの一部の機能はSDKで公開されていないこと
  • OpenReality SDKもPython SDKも、主に「機能の自動化」と「独自の機能の追加」という目的で用いられること
  • Python SDKはOpenReality SDKのラッパー(wrapper)であること、OpenReality SDKで提供されているクラス・関数にはPython SDKで公開されていないものがあること

OpenReality SDKは プラグイン(dllファイル) として主に新たなアニメーション評価の機能(独自のfilterやconstraintなど)や外部デバイスとのリアルタイム連携(モーキャプシステムとの接続など)の開発に使用し、Python SDKではその場での短かいプログラム(スクリプト)の実行や簡単なツール作成に用います。


2. 手元に用意するもの

MotionBuilderのPython SDKを学ぶ上で、すぐ見られるようにしておきたい4つの資料を紹介します。

  1. Python Reference Guide
  2. MotionBuilder SDK Programmer’s Guide
  3. Python Scripting in MotionBuilder - Alex Forsythe
  4. MotionBuilder Developer Help

Python Referene Guide

公式ドキュメントの最新版です。開発の際には常に参照することになります。
最新版であることが何よりのメリットである一方、クラス名やメソッド名しか検索にヒットしないために「"model"と入力してモデルに関する内容を調べる」ような抽象的な検索ができないのは少々不便ではあります。

右上の「Search」欄よりクラスやメソッドの検索が可能

MotionBuilder SDK Programmer’s Guide

2012年版の公式ドキュメントです。
最新版のドキュメントと違って、ドキュメント内の文章ほぼ全てが検索対象であるため、クラス名やメソッド名が分かっていなくても適当な語句で検索をかければ大抵の情報が見つかるのが強みだと思います。もちろん、2012年版なので情報は古いです(現在使われていないものは一部なので大体は問題なく使用できますが)。また、一度に大量の情報がヒットするため、欲しい情報がすぐ見つからない場合があります。


左上の「Search」欄より、同様に検索が可能

Python Scripting in MotionBuilder

Alex Forsytheという方がYoutubeに投稿された一連のチュートリアル動画です。
Python Scripting in MotionBuilder - 04 - Accessing Components: FBSceneより

余分な音が無く、入力は早送りになっており、無駄な情報を極限まで削ぎ落した良質なチュートリアル動画となっています。内容(SDKやPythonの記述)が古いことと説明の速さ・英語に耐えられるのであればPythonスクリプトの入門としてはこのチュートリアルでほぼ事足りると思っています。

動画内で解説している内容はAlexさん自身が以下のサイトにまとめています。https://awforsythe.com/tutorials/pyfbsdk-1
動画の解説が早いと感じる方はこちらも参照するとよいでしょう。

MotionBuilder Developer Help

公式ヘルプにおいて開発者向けの内容を記載している項目です。

Developer Helpと各概念やクラスの説明
上記のReference Guide等とは異なり、スクリプトの詳細ではなくSDKの各概念とクラス・メソッドについて説明されています。はじめから順番に読むのは少々大変ですが、SDKの構造について理解を深められるので、スクリプト開発を本格的に始める前にこの資料に必ず目を通すことをおすすめします。通常のヘルプは日本語も対応していますが、このセクションだけはいつも英語版しかありません。


3. MotionBuilderでの準備

Pythonスクリプトに関しては特別な環境構築は何も要りません。
スクリプトの実行には、MotionBuilder内のPython Editorという機能を用います。


Python EditorとScripting Layout

画面左上Layoutより「Scripting」を選択、またはCtrl + Shift + 2を押すと、上画像のような表示に画面が切り替わるはずです。画像赤線で囲んだウィンドウがPython Editorと呼ばれるもので、ここでスクリプトを書きます。Python Editorの上側は所謂pythonの対話モードでの入力場所なのですがこちらは私は基本使わず、下側にスクリプトを書いて普段は実行しています。


character内のボーン名とそのLocal Rotation座標を表示

ここで、重要なスクリプトの実行方法を書きます。

例えば、上画像の例では、実行したいスクリプトをshift + 上下方向キーで部分的に選択、またはCtrl + Aで全選択し、Enterキーを押します。すると該当箇所のスクリプトが実行されます。


スクリプトの選択と実行

また、Viewer上にPythonファイルをドラッグアンドドロップし、表示されたメニューのうち「Execute」を選択することでもスクリプトを実行できます。


サンプルをViewerにドラッグアンドドロップして表示されたメニュー


次回

今回は導入ということで、MotionBuilder SDKについての説明と、Pythonスクリプトの実行方法を紹介しました。次回はPythonスクリプトとその実行に慣れるためにサンプルを使い、またサンプルを中心にしたSDKの学習方法やドキュメントの活用の仕方について解説します。
https://zenn.dev/nadegata_memo/articles/e06fa6ee32ee60
それでは、今回はここまで。最後までお読みくださりありがとうございました。

Discussion