MEL合宿 -2日目-




MEL合宿の2日目は、MELがエラーしてしまった時にどうするといいか見ていきたいと思います!

エラーの箇所を素早く見つける

MELを実行したもののエラーしてしまうっということは、今後ずっとあり続けると思います、、、「エラーしてなんぼ!」くらいに思っていただいたほうがいいかもしれません!(`・ω・´)ゞ

エラーした箇所を素早く見つけるには、「Script Editor」のメニューから「History > Line numbers in errors」のチェックを「ON」にします。こうすることで、問題の箇所の行数がわかるようになります!

問題の箇所を間違い探しするのではなく、エラーした箇所の行数を元に修正するようにしましょう!

この状態で、前回の宿題のコードでミスがあると以下の様に問題の箇所を特定することができます。

エラーメッセージを読み取る!

次にエラーの原因ですが、「No object matches name : move」と書かれているので、「moveというノードがないからできないよ!」と言われています。「そんな事してないよー!」って感じですよね(;´∀`)

エラーの行数は3行目でしたが、2行目の末尾に「;」を入れ忘れているのにお気づきでしょうか?エラーの種類によっては、言われた行数の前に問題がある場合もあります。

;」を入れ忘れると、2行目と3行目のコマンドが一体化してしまい「scale 1.5 1.5 1.5 move 0 1.5 0;」というコードになってしまっています。これをわかりやすく言うと「moveを1.5倍にスケールする」という意味になります。

1日目でも書きましたが、コマンドの終わりには必ず「;」を入れ忘れないようにしましょう!

エラーが英語でも頑張って読むようにしましょう!

どうしても読めない場合は「Google翻訳」を使ってください。せっかく原因を教えてくれているのに、シカトしていては修正するのにすごーーーーーーく時間がかかりますよ!( ・ิω・ิ)

Cannot find procedure “ほにゃららら”

// Error: line 1: Cannot find procedure “polysphere”. // 」といったエラーが発生してしまった人もいると思います。これはコマンドのスペルミスです。大文字小文字を含めて、1文字でも間違えてしまうと、正しくコマンドを実行することができません。。。プログラムって融通が効かないんです(´・ω・`)

エラーの行数を参考に、スペルミスがないか確認してください!

Syntax error

// Error: Line 2.6: Syntax error // 」というエラーが発生してしまった人もいると思います。これは、「構文エラー」というもので、MELのルールを守っていない時に発生します。現段階では、半角スペースでないとダメなのに、全角スペースを使ってしまった場合に発生します。

下記のコードを実行すると、Syntax errorを体験することができます。

polySphere;
scale 1.5 1.5 1.5;
move 0 1.5 0;
 
polySphere;
move 0 3.5 0;

2行目でSyntax errorが発生しますが、全角スペースというのはとても見つけにくいものです。プログラムを書く時は、日本語入力にならないように最新の注意を払ってください(`・ω・´)ゞ

特に、日本語キーボードは、「半角/全角」を押すだけで切り替わってしまいます!ヽ(`Д´)ノウワァァァン

まとめ!!

  • 「History > Line numbers in errors」のチェックを「ON」にして、エラーの行数がわかるようにする!
  • エラーの内容をみて、修正方法を考える!
  • 「Cannot find procedure “ほにゃららら”」は、スペルミスが原因!
  • 「Syntax error」は、MELのルールを守っていない!

プログラムがワケワカメ」「エラーしたーもうやだー!」という人でも、エラーの原因、場所、修正方法がわかると、いくらか心が楽になるかと思います!落ち着いてエラー修正してみてください!!(*´ω`*)v

それでは、次回もお楽しみに!!(`・ω・´)ゞ







Maya x Pythonの技術書
たっきゅんのガチンコツール開発部 Maya Python 101
(CG Pro Insights)

もっとMayaを便利に使いませんか!?実用性のあるツールを例にPythonが学べるように、がんばって執筆させていただきました!是非、この機会によろしくお願いいたします!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です