トップページ > CG > 2016年05月22日 > QzPXg80A

書き込み順位&時間帯一覧

24 位/234 ID中時間01234567891011121314151617181920212223Total
書き込み数3000000000000000000000003



使用した名前一覧書き込んだスレッド一覧
名無しさん@お腹いっぱい。
続き
Blender ニュース速報 Part1 [無断転載禁止]©2ch.net

書き込みレス一覧

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() 文を削除する必要はないんだを感じていただければ幸いです。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。