株式会社デジタル・フロンティア-Digital Frontier

Header

Main

  • TOP
  • DF TALK
  • トラブルシュートのいろは(にほへと)

トラブルシュートのいろは(にほへと)

2016/4/12

Tag: ,,,

こんにちは。甘味部長のひらく[@horonig]です。

今回は、トラブルシュートに関してのTIPSをまとめてみようかと思います。
前にツイッターでこういう記事の要望を頂いたので。
(ついでに、社内の人間もこれ読んで少しやれるようになって欲しかったり 笑)

今回はmayaにポイントを置いて進めていきますが、どんなソフトでも基本的な思想は変わりません。
皆さんの一助となれば幸いです。

さて、参りましょう。

アジェンダ

トラブルシュートで重要なポイントやTIPSをずらずらと書いていきます。
以下、今回のアジェンダです。

① ログを見る
  ①-1: Script Editor
  ①-2: Output Window
  ①-3: MAYA_CMD_FILE_OUTPUT
② ググる
③ 再起動してみる
④ シーンデータの軽量化とデータの絞り込み
⑤ イテレーションの効率化
⑥ 依存性からのアプローチ
  ⑥-1: prefs (個人設定依存)
  ⑥-2: user account (アカウント依存)
  ⑥-3: machine (マシン依存)
⑦ アスキーで見る
  ⑦-1: レンダラのScene Description File
  ⑦-2: 差分を見る
■甘味紹介 #4 [エッグタルト at ナタ・デ・クリスチアノ]

 


① ログを見る

ログを見るというのは、トラブルシュートの基本中の基本です。
これをしない人はトラブルシュートは出来ないと言っても過言ではありません。

ここではmayaログの取得方法を3つほど紹介しておきます。

 

①-1: Script Editor

まずはscriptEditorを立ち上げましょう。
立ち上げ方は以下の二通り。

A. [Window] – [General Editors] – [Script Editor] メニューから立ち上げる

B. ボタンから立ち上げる

するとこんな感じのeditorが開くと思います。

これがScript Editorと呼ばれるもので、処理された内容や情報、警告、エラーがここに表示されます。

例えば、シーンを開いた時に以下のようなエラーが出たとします。

ここでScriptEditorを立ち上げれば・・

はい、エラー内容が一目瞭然ですね。
上記エラーは「mtoaがロード出来なかった(Pluginパス上に置かれてない)よ」、というエラーです。

なのでまずはここを見ましょう!
これを見ないで相談に来る人が意外といるんですよ・・。
一般のartistだとしても、ここは常に気にすべきです。

テクニカルに相談する際も、ここのエラーをコピペして送るなどしてあげて下さい。(必須です!)
エラーを見れば容易に想像がつくことも多々ありますので。

ちなみにWarningは警告で、「クリティカルではないけど何かおかしいので注意してくださいね」というものです。
かたやErrorは完全にエラーで、「クリティカルな何かが起こったよ!絶対にこれは潰してね!」的な意味となります。

 

①-2: Output Window

レンダリング時のログはOutput Windowに出力されることが多いのでこちらも注意して見ておいて下さい。
mayaとは別に立ち上がっている以下のwindowのことです。

 

①-3: MAYA_CMD_FILE_OUTPUT

Mayaには、ログファイルを指定して保存してくれる機能があります。
環境変数 [MAYA_CMD_FILE_OUTPUT] に、ダンプしたいパスを指定しておくだけです。

例えばbatでmayaを立ち上げるならば、以下のような行を先頭に入れてみて下さい。

set MAYA_CMD_FILE_OUTPUT=%TEMP%/maya_cmdFileOutput.log

 
そうしておくことで、「%TEMP%/maya_cmdFileOutput.log」にログが吐かれます。
後からログを見たい場合や、バッチモードで何かした時(UIが出ないため)に参考になるはずです。

 


② ググる

①の工程でログにエラーが吐き出されているとします。
内容の意味が分かる(もしくは少しでも調査対象が見える)場合は問題の解消に着手すべきですが、
どうしても理解出来ない場合があります。

そんな時は、まずググりましょう!!
大体の解決方法はそこに載っています!!
google先生は本当に偉大です。

英語だったとしても、見てるとなんとなく分かるものですよ。
慣れもあるとは思いますが、そういうことに慣れていくことも大切です。

そして、それでも分からない場合は③以降に進むか、テクニカルに強い人に相談してみましょう。
ただこうやって自分でエラーを潰したり、その内容をチーム内で共有することでトラブル耐性が出来上がってくるので、
自分で調べるという行為は極力怠らないようにして下さい。

 


③ 再起動してみる

まずmaya自体を再起動してから同じことを試してみましょう。
maya自体が何かおかしくなっている場合はこれで解決します。

それでもダメならマシン自体を再起動してから同じことを試してみましょう。
マシン自体が何かおかしくなっている場合はこれで解決します。

それでもダメなら何か違う明確な原因があるので、特定しないといけません。

 


④ シーンデータの軽量化とデータの絞り込み

さて、エラーも何も出ていない状況、もしくはエラーが出ているがそれでも原因が分からない時はどう進めていけば良いのでしょうか。

例えばmayaのとあるシーンで急にレンダリング出来なくなった(真っ黒の絵しか出ない)、もしくはレンダリング結果がおかしくなった場合を想定します。mayaでこういう状況が起こった場合、どこかのノード、もしくはアトリビュートがおかしくなっていることがエラーの原因だったりします。

ただ実際のアーティストが作るデータは大きく、そこをそのままエラー探索しても埒(らち)があかないことがほとんどです。
そのため、問題となり得る部分をどう絞っていくかというのは非常に重要なテーマです。

ポイントは2つ
1. シーンを軽量化し、デバッグしやすくする
  シーンデータが軽ければシーンロードやレンダリングが高速になるため、デバッグしやすくなります
2. エラーの原因要素を絞る
  エラーの原因にはならない部分をざくざく削っていくことで、エラーの原因に辿り着きやすくなります

そこで僕がよくやる方法は、「シーンデータを半分に削る」を繰り返すことです。
簡単に言うと、以下のような流れです。

[A] まずreferenceしているものがあれば全てimport (データの焼き付け)
[B] outlinerで約半分のノードを選択
[C] 削除 (エラー確認をするためのnodeやmeshは削除しないように気をつけて下さい)
  [B]→[C]の工程は以下の様なイメージです
  

[D] シーンをversion付きでsave (あとから簡単に戻れるようにするため)
  ※このプロセスは必須ではありません
[E] 同じエラーが出るか検証
  [E-1] 同じエラーが出たら、残ったノードの中から更に約半分を選択 → [C]へ
  [E-2] エラーが出なくなったら一個前の保存状態に戻り(undoが問題なく効けばundoも可)、逆の半分を選択 → [C]へ

この[C]~[E]のループを何度か行うと、エラーが再現出来る軽量なシーンデータが出来上がります。
ここからエラーの特定に向かうわけです。

要はあれですよ。紙を43回折ると宇宙に届くっていうやつです(実際にはそんなに折れませんが 笑)。
二倍、もしくは1/2にすることを繰り返すというのは非常に効率的なのです。
(あれ?ピンとこない?w)

更に言うと、mayaのoutlinerにはまだまだ隠れたノードが存在します。(デフォルト表示の場合)
outliner上で[右クリック] – [Show DAG Objects Only]のチェックを外してみて下さい。

出た(笑)

ここにも要らないノードが沢山あるはずなので、上記工程の削除対象となります。
但し、ここで関係性のあるノードを削除してしまうと、そもそものエラーチェックが出来なくなることもあるので、注意して進めて下さい。もし怖ければここは削除せずに進めても構いませんが、このようなノードに問題が潜んでいることもあるので必ずチェックしましょう。
(注: デフォルトで存在する削除不可能なノードも沢山あります)

 


⑤ イテレーションの効率化

イテレーションというのは「繰り返し(反復)処理」のことです。
トラブルシュートにおいて、イテレーションをいかに「早く」「楽に」こなすかということは非常に重要です(なんでもそうですけど)。そのぶん原因究明が早くなりますし、本人のモチベーションにも繋がります。

例えば、「シーンオープン時に特定のnodeが反応しない問題があるが、frameを移動すると反応する」みたいな場合を考えます。
シーンオープン時にしか問題が再現出来ないので、シーンオープンを繰り返して検証する事になります。
その時にシーンが重かったりするとやる気をなくしますよね。(ロードに数分掛かるシーンとか)
そして、「そんなの面倒だからTDに投げちゃえ」って思うと思うんですよ(笑)
でもそこは工夫次第でなんとかなるのです。

そして実は、④が出来ていれば既に半分以上達成されています。
シーンが軽くなってるはずなので。

ここでもう一つ言及しておこうかなと思ってるのは、シーンロードの簡略化です。

普通にmenuから[Open Scene…]を選び、ファイルを選択して・・なんてことを繰り返すのって結構面倒じゃないですか?
少なくとも僕にとっては面倒です。
そんな場合、最後に読んだsceneをopenするコマンドを、ショートカットに登録しておくとそこそこ効率が上がります。

[A] Hotkey Editorの立ち上げ
まずは以下の様に、Hotkey Editorを立ち上げて下さい。

[B] コマンド登録
[User]カテゴリを選択し、[new]ボタンを押します。
その後、[Name]や[Command]を以下のように入力し、[Accept]ボタンを押します。

コマンドは以下

buildFileMenu();
buildRecentFileMenu FileMenuRecentFileItems;
$menuItems = `menu -q -ia MayaWindow|mainFileMenu|FileMenuRecentFileItems`;
$evalString = `menuItem -q -c $menuItems[0]`;
eval($evalString);

ちなみに、最後の行の $menuItems[0] を $menuItems[1] にすれば二番目に最新のもの、$menuItems[2] にすれば三番目に最新のものも取れます。

[C] ショートカット設定
アサインしたいショートカットを設定します。
個人的にはAfterEffectsと同じ、Ctr + Alt + Shift + P にしてます。

[D] 保存
Hotkeyがアサインされた事を確認したら、[Save]を押します。

これにより、「Ctr + Alt + Shift + P」を押すだけでシーンの再読み込みが出来るようになりました。
はー楽ちんちん。

このネタだけは個人的な嗜好が大きいかもしれませんが(笑)、例えばこういう細かいショートカットや自動化が色々なところで効いてくるんだよ!という話です。うん、後悔はしていない。

 


⑥ 依存性からのアプローチ

いくら頑張っても問題が解決しない場合、解決の糸口を見つけるための手法が幾つかあるので紹介しておきますね。

 

⑥-1: prefs (個人設定依存)

prefsに余計なゴミが入ることが原因で問題が起こる場合があります。
なので一度prefsをクリアしてみましょう。
ちなみにprefsというのは、個人設定が保存されている場所です。

例えばmaya 2014の場合、mayaを落とした状態で以下のフォルダをrenameします。
C:\Users\%username%\Documents\maya\2014-x64

C:\Users\%username%\Documents\maya\2014-x64~
[2014-x64.backup] でもなんでも良いのですが、僕はよく~(チルダ)を使います。

renameにとどめておけば名前を戻すだけでまた復活出来るので、削除はしない方が良いでしょう。

そしてmayaを立ち上げると、defaultのクリーンな状態でmayaが立ち上がります。
その上で問題が起こらなくなれば、prefsが原因だったことが分かります。

prefsが原因と分かった上で更に突き詰めたい場合は、renameしたフォルダに入っている userPrefs.mel の中身を探ると良いでしょう。他のファイルに原因がある場合もありますが、ほとんどこいつです。

 

⑥-2: user account (アカウント依存)

まれですが、user accountに紐付いた問題という事もあります。
そんな場合は一度log offし、別のuser accountでログインしてから同じ工程を踏んでみて下さい。
そこでうまくいくようならば、user accountに紐付いた何かが原因だと分かります。

「アカウントに紐づくもの」に何があるかというと、
●Cドライブにあるprofile (explorerで%USERPROFILE%と打つと飛べる場所のことです)
●レジストリ
●ファイルサーバーやファイルへのアクセス権限
あたりですかね。他にもあると思いますが。

 

⑥-3: machine (マシン依存)

また、PCに依存した問題という事もあります。
そんな場合は、別のPCで同じ工程を試してみましょう。
別PCだと問題が出ないならば、PC依存の問題だと分かります。
そこからは、PCにインストールされているソフトやハード、ドライバなどの差異を調べていきます。

このように依存性から問題を絞り込むことで原因を追い込み易くなるので、是非頭に入れておいて下さい。

 


⑦ アスキーで見る

 

⑦-1: レンダラのScene Description File

Scene Description Fileとは、レンダラがレンダリングするためのシーン記述ファイルです。
mayaでいうmaみたいなもの、と言ったらピンときますかね?

例えばmentalrayの場合、mayatomrがmayaのシーン情報をmiというmentalray専用のScene Descriptionにコンバートし、mentalray(レンダラ)に渡します。arnoldのScene Description Fileは.assです。

そのため、レンダリングに関するトラブルシュートにおいて、このようなアスキーファイルを閲覧することは非常に重要です。
例えばmentalrayで何か挙動がおかしい場合は.miファイルを書き出しその中身を探ることで、値がちゃんとmentalrayに渡っているのかが分かります。

今回詳しくは書きませんが、export selection等で簡単にmiやassが吐き出せるので、興味のある人は是非試してみて下さい。

 

⑦-2: 差分を見る

例えば、「あることをして保存すると、そのシーンが開かなくなる」みたいなことがあります。
どういう工程を踏むと開けなくなるシーンが作れるかが分かっていても、その原因の詳細までは特定できないという事もまぁある話です。

そんなときは、アスキーで差分を見ることをおすすめします。
mayaの場合はmaで保存することで、メモ帳等のtext editorで見れるようになりますが、そういうことです。

[A] 問題の出ないシーンをmaとして保存する
[B] そのシーンをeditして問題のあるシーンを作成し、別のmaとして保存する

この2つのファイル差分を見ると色々と分かることがあります。
差分を見る方法ですが、以下の様なツールを使うと良いでしょう。

■DF (Digital Frontierの略じゃないですよw おそらくdifferenceの略です)
http://www.vector.co.jp/soft/dl/win95/util/se113286.html

このDFというツールに先ほど用意した2つのmaをドラッグ&ドロップすると差分を分かりやすく表示してくれます。

こういったものも是非活用してみて下さい。

 


 
ダラダラと書いちゃいましたが、こんなところですかねぇ。
他にもあるかな?まーもう疲れたし、こんなもんでいっか。

いずれにしても、どうしても分からない場合はTDに相談して下さい(ぁ


※免責事項※
本記事内で公開している全ての手法・コードの有用性、安全性について、当方は一切の保証を与えるものではありません。
これらのコードを使用したことによって引き起こる直接的、間接的な損害に対し、当方は一切責任を負うものではありません。
自己責任でご使用ください。

 


■甘味紹介 #4 [エッグタルト at ナタ・デ・クリスチアノ]

今回紹介するのはナタ・デ・クリスチアノの『エッグタルト』です!

ナタ・デ・クリスチアノ [HP]

こいつの存在を知ったきっかけは、現場アーティストからお土産に貰ったことでして。
食べてみたらまー美味いのなんの。皮はサクサク香ばしく、中は程よい甘みと濃厚な味わい。
久しぶりにお菓子で衝撃受けました。これは食べないと損しますよ。マジで。

場所はちょっと遠く代々木公園の方なんですが、会社から歩いて行けないことはないです。
24分くらいですかね(笑)

エッグタルトの正式名は「パステル・デ・ナタ」ですが、エッグタルトで通じます。元はポルトガルのお菓子だそうで。
ホールサイズもあるので、誰か僕に買ってきて下さい!なにとぞー。なにとぞー。

※社内の人はどこかで似たような記事を見たかもしれませんが、おそらく気のせいです

Pocket

コメント

コメントはありません

コメントフォーム

コメントは承認制ですので、即時に反映されません。ご了承ください。

*