【MotionBuilder】Python SDK 入門 第6回 『VScode拡張機能の活用』
この記事は、Python SDK 入門の第6回目の記事です。
今回はMotionBuilderのVScode拡張機能について書きます。
MotionBuilder Utilsの概要
MotionBuilder Utilsは、Nils Söderman氏が開発されたVisual Studio Codeの拡張機能です。公式の拡張機能ではありませんが、非常に使い勝手がよく、スクリプト・ツール開発に役立ちます。
下記の機能が実装されています(market placeより)。
機能 | 内容 |
---|---|
Execute Code | VScodeのEditorから直接コードを実行 |
Code Compeltion | コードの補完 |
Debugging | デバッグ |
Browse Documentation | ドキュメントの検索と参照 |
Browse Examples | サンプルの検索と参照 |
拡張機能の導入・コード補間の有効化
Visual Studio Codeをインストールしていない方はこちらより導入してください。
VScodeを起動後、画面左側のActivity Barから拡張機能を選択(またはCtrl + Shift + x
)、検索欄で「MotionBuilder」と入力して見つかるMotionBuilder Utilsにて「インストール」を選択します。
VScodeの画面と拡張機能の検索
インストール後はまずコード補完機能を有効化します。
-
コマンドパレットでの機能の検索
コマンドパレット(デフォルトのショートカット:Ctrl + Shift + P
)にて「>MotionBuilder」と入力し、表示される検索結果より「Setup Code Completion」を選択してください。
コマンドパレットでの入力結果 -
Stubファイル保存場所の選択
特に指定したい保存場所が無ければデフォルトのままでよいのでEnterを押します。
Stubファイル保存場所の選択画面 -
使用するバージョンの選択
MotionBuilderのバージョンを選択します。
バージョンの選択画面
「Updated stub files in ...」のメッセージが表示されたら完了です。
各機能の利用
補間の利用とコード実行
補完を有効化した後、まず適当なファイルを作成し、補間が効くか確かめます。
入力時に表示された補間の候補
次にMotionBuilderを起動します。VScodeのコード実行を起動しているMotionBuidlerに伝えるので、何も起動していない場合はエラーが出るので注意してください。
コード実行のショートカットは、Ctrl + Enter
です。Python Editorと同様に実行したい部分を選択状態にし、Ctrl + Enter
を押します(何も選択していない場合はコード全体が実行)。出力はPython Editor上ではなく、VScodeのEditor下に表示されます。
VScodeからのコードの実行と出力
実行後何もViewerが変わらない場合
実行後何もViewerが変わらない時は、Scripting Layoutで表示されるProfiling Center Windowにて「Always Refresh Viewer」にチェックが入っているか確認してください。
ドキュメント・サンプルの検索
拡張機能を検索した時と同様に、コマンドパレットから機能を選択します。
コマンドパレットで「>MotionBuilder」と入力
ドキュメントとサンプルのどちらを検索する場合も、クラスや関数・サンプルファイル名を入力して候補から目的のものを選択します。
ドキュメントの検索
サンプルの検索
ドキュメント検索の場合は選択した項目のPython SDKのドキュメント(webサイト)が起動し、サンプルの場合は<user>\AppData\Local\Temp\VSCode-MotionBuilder-Utils
ディレクトリに生成されたサンプルのコピーが表示されます。
デバッグ
これまでと同様に、コマンドパレットから機能を選択します。
"Attach"を選択
エラー:"Python module 'debugpy' is required for debugging"
「Install」を選択します。
以下のようなデバッグビューに切り替わります。
デバッグビュー
簡単にデバッグの方法を説明します。
-
ブレークポイントの設定
「その手前で実行を一度止めたい箇所」の左側をクリックし、赤色印のブレークポイントが設定されたのを確認します。
ブレークポイントの設定 -
Ctrl + Enter
で実行
設定したブレークポイントより上の行までが実行されます。 -
部分的に順次実行
中央上部のアイコンにカーソルを合わせると、それぞれの名前とショートカットが確認できます。- ステップアウト(
Shift + F11
):現在実行している関数の呼び出し元まで実行 - ステップオーバー(
F10
):現在の行を実行して、次の行で実行を停止する - ステップイン(
F11
):現在の行が関数なら、その関数に突入して実行を停止
基本はステップオーバー、慎重に確認したい所や関数・メソッドに出会った時はステップイン、大きく進めたい所はステップアウトを用いて、各部の実行時の挙動を確認していきます。
- ステップアウト(
-
エラー箇所の特定
簡単なスクリプトの場合はデバッグしなくてもTracebackを見ればエラーの原因が分かるのですが、例えば実行するとMotionBuilderがError Reportを出して落ちてしまう場合は原因の特定が難しいです。そんな場合は、まず落ちる直前の実行箇所を特定します。
落ちる直前のデバッグ状況上画像において、
vbox.Add(Label1, 30)
を実行すると落ちてしまうことが判明しました。少なくともAdd
関数の使い方とLabel1
の定義に問題は無さそうです。少し前に戻ってvboxの定義を見ても問題は無さそうですが、15行目をよく見ると、SetControl
関数の第一引数が「MainRegoin」になっており、12行目のAddRegion
関数の第一引数「MainRegion」と一致していません。
詳しくは次回以降で解説しますが、この2つの関数の引き値の文字列は同じものを使用しなければなりません。ただの入力ミスなどによって起こるこの問題は一見して原因がすぐ特定できないので、Tool作成では要注意のエラーです。
次回
今回はVisual Studio Codeの拡張機能を紹介しました。次回からはUI・ツール作成について解説していきます。
それでは、今回はここまで。最後までお読みくださりありがとうございました。
Discussion