- Blender ニュース速報 Part1 [無断転載禁止]©2ch.net
420 :名無しさん@お腹いっぱい。[sage]:2016/05/22(日) 00:24:41.68 ID:QzPXg80A - ★Blender の Python コードでログの伐り出し
https://code.blender.org/2016/05/logging-from-python-code-in-blender/ ----- 本稿では Blender にある伐採作業をちょっとみていきたいと思います。 動きが想定外の方向へ舵が切られたときに、皆さんいつもやっていることですが、 この優れた GUI と使いやすいオペレーターで何が起きているか把握することが大切です。 Python の標準ライブラリには柔軟性に富んでかつ拡張性豊かな伐採用品が揃ってます。 伐採作業に慣れてない方は Vinay Sajip 氏のこの記事がオススメです。 https://docs.python.org/3/howto/logging.html それでは皆さん自前の Python モジュールで伐採作業をしていきましょう。 よくある伐採のやり方ではモジュール名を伐採者にしてますので、先頭に次のコードを追記します。 import logging log = logging.getLogger(__name__) 伐採者は、点を打つことで権力構造を効かせられます。 副伐採者を従えたいときには(例えばオペレーター内部で伐採してもらいたいときなんかは)このようにします。 log = logging.getLogger(__name__ + '.my_sublogger') 何かを伐採したときには、エラー、警告、通知、デバッグいずれかの儀式を取り仕切ってください。 (詳細は API ドキュメントを参照してください://docs.python.org/3/library/logging.html#logging.Logger) これらから1つを選択するわけですが、ご注意頂きたいのは、エラーとワーニングはコンソールに表示されます。 つまり誰もが閲覧可能でエンドユーザーにも見られるのでそこは慎重かつ遠慮ぎみにお願いします。
|
- Blender ニュース速報 Part1 [無断転載禁止]©2ch.net
421 :続き[sage]:2016/05/22(日) 00:25:52.11 ID:QzPXg80A - 標準設定
Blender 内蔵の Python はその標準状態を最大限維持するようにしています。 なので Python のチュートリアルをご覧になればそれが Blender にも応用できて、想定どおりの結果が得られるはずです。 伐採設定の標準状態は本当にフツーです。以下、標準使用時のポイントです。 1. 伐採者の名前は表示されません 2. 致命的エラー、エラー、警告のみ表示されます ポイント1. は伐採時に情報を連携するのに重要です; 前後関係を知らなくても理解できる文章を書かないといけません(どっちみち良いことです) ポイント2. は伐採した木材の種類を示すもので、開発者/デバッグでは INFO や DEBUG、アーティスト向けには WARNING 以上となります。 しかしながら、重要なことは、使用者みんなが積み込まれた丸太に目を通していることを前提にしないでくださいということです。 使用者とのコミュニケーションは GUI を通して行うようにしてください。
|
- Blender ニュース速報 Part1 [無断転載禁止]©2ch.net
422 :続き[sage]:2016/05/22(日) 00:27:13.91 ID:QzPXg80A - 設定変更
どの丸太をご覧になりたいか否かは人それぞれ必要に応じても変わります。 Python 標準の他に皆さんが納得するような Blender の標準設定を設けないというのはそういうことです。 なのでアドオンでの伐採用品の設定変更はオススメしません。 ニーズに合わせて伐採用品を設定するやり方ですが、次のファイルを作成してください。 $HOME/.config/blender/{version}/scripts/startup/setup_logging.py (これは Linux 上での話ですが、開発者ならこのディレクトリがどこにあるか言わずもがなですね) フォルダーが無い場合は作ってください。私がよくやるのはこんな感じです。 import logging logging.basicConfig(level=logging.INFO, format='%(asctime)-15s %(levelname)8s %(name)s %(message)s') for name in ('blender_id', 'blender_cloud'): logging.getLogger(name).setLevel(logging.DEBUG) def register(): pass レジスター関数についてはアドオン等をスキャンするときの小姑のような小言からただただ逃げるためです。 最後に 以上、logging の使い方と Python の logging モジュールの設定方法でした。 アドオン公開前に print() 文を削除する必要はないんだを感じていただければ幸いです。
|