2010年4月23日金曜日

sphinx-buildでリファレンスをpdf形式で出力してみた。

前回にひきつづき、sphinxでblenderとfreestyleのpythonモジュールの
リファレンスを出力してみた。

sphinx-buildが動くようになっていればHTML形式だけでなくpdf形式でも
リファレンスを出力できるそうな。これは便利。

pdflatexが追加で必要になるので、無ければportでインストールしておく。
$sudo port install texlive
で、sphinx-buildはこんな感じで実行。
$sphinx-build -b latex ./sphinx-in ./sphinx-out-pdf
エラーなく終われば./sphinx-out-pdf以下にリファレンスがtexの
ソースファイルとMakefileとして出力されているので
$cd sphinx-out-pdf
$make
でpdf作成が完了。

問題なくmakeが終われば、contents.pdfというのが作成されているはずです。
ファイルを開くと中はこんな感じ。



普通のPDFなので検索ももちろんOK。目次、見出しからリンクで飛べたりもします。
内容は昨日のものと同じですが、とりあえずまたこちらにアップしてみたり。

---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

2010年4月22日木曜日

sphinx-buildを試してみた。

最近のblender2.52の開発版ではpythonのドキュメントを自動的に作成する
為の仕組みに対応しているそうでbpyとかのリファレンスドキュメントを
ソースコードから生成できるらしい。

FreeStyle統合版もその仕組みを利用してスタイルモジュールのリファレンスを
自動的に出力できるようになったそうなので早速試してみた。


上記のリンク先のFreeStyle統合版の公式ブログでも触れられているように
sphinxというpythonのプログラムを使用するらしい。
基本的な手順はblenderの公式wikiにまとめられているのでそちらを参照して
作業を進めていけばOKなはず。

ただし自分の環境では幾つか上記の手順通りには行かなかったのでメモ。

まずは、最初にblenderで実行するsphinx_doc_gen.pyが公式wikiの場所でなく
./source/blender/python/doc/sphinx_doc_gen.py
にあるのでその辺は読み替えてすすめる。

あとsphinxをインストールする際に
easy_install -U Sphinx
とした場合、異なるバージョンのpythonのsitepackageにインストールされてしまう
ことがあるので「今使っているpythonのバージョン」を確認しておく方が良さげ。

この手順で使用するblender、python、sphinx、どれもpython31である必要がある
っぽいんだけどOSXはデフォルトでpythonがインストールされているおかげで
何がどのバージョンで、いまどれが使用されているのかよくわかってないところが
あったのでかなり戸惑った。

portでpython関連をごにょごにょいじってたら気づいたらできるようになってたという
感じなのでちょっと後味が悪いというか、未だに良くわかってない。orz。
LuxRenderの話になるけどこの辺をちゃんとできればluxblend25で必要なpylux.soの
ビルドもうまく行くんだろうけど・・・。

とりあえずhtml版のリファレンスドキュメントの生成は成功したようなのでzipで固めた
ものをこちらにアップしてみました。展開後のフォルダの中のcontents.htmlが目次です。
FreeStyleのスタイルモジュール以外にもbpyのリファレンスもまるごと全部入ってます。

開発版のソース(svn28296)を元に生成されたリファレンスなので、内容はもちろん
暫定的なものですが、FreeStyle公式ページのドキュメントが幾分現状に比べて古く
なっているので目を通しておいて損はないかと。




---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

2010年4月20日火曜日

看板を追加してみた。

先日まで作りかけだったやつがひとまず単体で完成したものの
やっぱり首から看板をさげてるのも欲しいな、というわけで看板追加。

こんな感じ。



無地だと寂しいんで適当に落書きしてみる。



適当に書いたのに、なんかちょっとガラ悪い感じにw

本業?としてはやっぱこれかな。軽音部的な意味で。



ただ、看板持たせるとウェイト設定に悪戦苦闘したした腕の付け根辺りや
丸みとか影の入りを結構調整したお腹とか、看板に隠れて見えないのね。orz

看板持たせたついでに壁紙向けサイズにしてみた。解像度は1280x800。
ダウンロードはこちら -> 無地のやつ適当にガラ悪いやつ軽音部的な本業のやつ
よかったら使っておくんなまし。


とりあえずネットブックで試しに作り始めたものの、骨を入れてポーズ付けは
画面が狭くてたまらなかったのでメインマシンで作業。最終レンダリングを含めて
その他の工程はネットブックで寝る前にベッドでちょこちょこと作業して完成。

気軽かつお手軽モデリングにはネットブックも良さげ。

---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

2010年4月17日土曜日

ネットブックでもblenderとかFreeStyleとか。

今更ながらネットブックを買ってみた。

ブラウザとテキスト編集用として、キーボードが普通に打てるサイズでなるべく小さめのものを
探していたら、ASUSのT91MTというのがタッチパネル付きの液晶で面白そうなので購入。
Z系のAtom 1.33GHzなのもそうだけど、内蔵グラフィックのGMA500が945GMとかの半分位の
3D性能だったりということもありかなり非力。

ファンレスだったり、小さいわりにバッテリーが4時間くらいは持つのはいいところ。
で、だめもとでFreeStyle統合版のblenderをいれたら意外にちゃんと動いたので驚く。

wikipediaで見てみるとAtomは同クロックのPentium4のモバイル版とほぼ同じ性能らしい。
XPの頃に使ってたA4サイズのでかくて熱いノートがそのCPUの1.2GHzとかだったはずなので
あれと同じかそれ以上の性能でファンレスかー。内蔵グラフィックの性能は下手するとこっちの
GMA500の方が良さげかも。

さすがにサクサクというわけではないけれど、それなりのポリゴン数であれば普通にモデリング
くらいはできそうな感じだったので試しに作ってみた。



レンダはblenderのToonとFreeStyle。
FreeStyleもメインマシンから持ってきたスタイルモジュールがそのまま使えた。
中身はPythonのスクリプトだから当然だけどマルチプラットフォームで使えるのはこういう時便利。

タッチパネルがタブレット替わりに使えるので、これくらいのちょっとしたテクスチャを描くには十分。
ベッドの上でも使えるくらいほとんど熱くならないのはいいんだけど力尽きるまでblenderをやれて
しまうのは、なかなか危険かも しれないw


GMA500でも、だいたい5、6万ポリゴンくらいまでなら結構つかえそう。
骨入れて動かすのは厳しいかなー?骨とポーズはまた明日試してみる感じで。


 ---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

2010年4月13日火曜日

LuxRenderのblender2.5対応エクスポータを試してみた、の続き

というわけでengine_render_lux.pyを試してみます。


1. スクリプトファイルのダウンロード

公式フォーラムのこちらのスレッドからengine_render_lux.pyをダウンロードしてきます。
最初の投稿にあるリンクからダウンロードしたものを使いました。


2. スクリプトファイルのインストール

ダウンロードしたファイルをいつものように.blender/scripts以下にコピーします。
ただし、2.5系ではサブディレクトリが幾つか存在しており、今回のような外部レンダラへの
出力に関するようなファイルはio以下にコピーしておくようです。

というわけで.blender/scripts/io/engine_render_lux.pyという感じにコピーできたら次へ。


3. スクリプトファイルの編集

従来のエクスポータのluxblendでもluxrenderが存在するパスを設定する必要がありました。
今回もパス設定が必要ですが、スクリプトに設定のGUIが無いためファイルを直接編集します。

289行目にある
lux_binary = "/home/daniel/svn/lux/luxrender"
を環境にあわせて書き換えます。OSXでインストーラーの標準設定でインストールした場合は
lux_binary = "/Applications/LuxRender/LuxRender.app/Contents/MacOS/luxrender"
という具合になるかと。
パッケージのLuxRender.appでなく実行ファイルのluxrenderを指定するので要注意です。

また、手元のOSX10.6.3、blender2.52FreeStyle統合32bit版 SVN28134という環境では

71行目の
me = ob.create_mesh(scene, True, 'RENDER')
が引数不一致のエラーになったので
me = ob.create_mesh(True, 'RENDER')
と書き換えました。


4. レンダリング

以上の手順が問題なければ、blenderを起動すると一番上のinfoウインドウのメニューの中で
いつもは"Blender Render"が選択されているドロップダウンリストにLuxRenderという項目が
追加されているはずです。




レンダリングしたいファイルを開いたら、ドロップダウンリストのLuxRenderを選択します。
あとはいつものようにF12キーを押すなりしてレンダリングを始めるとLuxRenderのシーンの
読み込みを示すダイアログが表示され、LuxRenderが起動してレンダリングが始まるはずです。


5. 結果

とりあえず前回のindirect lightingのテストに使ったシーンをレンダしてみました。

が、ここまででLuxRenderを使っている方はお気づきかと思いますが、LuxRender側の設定
(マテリアルや環境光など)を何もしていない、というか出来ない状況です。なので出力結果は
間違って設定を何もせずにレンダした時によく見かける真っ青なものになってしまいます。

30分レンダをまわしてもこんな感じ。




それでもなんとなく画面奥の方に5つの立方体の様なものと、画面中心に四角い台にのった
suzanneらしき物体が確認できるかと思います。一応blenderのメッシュオブジェクトから
LuxRenderのジオメトリへの変換は成功してはいるようです。

ちなみにレンダの進捗状況はblenderのウインドウでも確認することができます。



いつもはLuxRenderのウインドウで見ているレンダの進捗をblenderのウインドウで見るのは
変な感じがしておもしろい。レンダリングの停止や出力画像の保存もblenderのウインドウの
GUIで内蔵レンダラを使用している時と同様に出来ます。

今回使用したスクリプトの中身を見るとLuxRenderをレンダラとして選んだ場合、blenderの
標準のワールドやマテリアルの設定パネルからLuxRender向けに変更しているようなのですが、
設定した値がLuxRenderに渡っていないのかもしれません。

71行目の書き換えはジオメトリデータの書き出し処理への影響だけ(のはず)なのでワールドや
マテリアル設定には影響ないかと思っているんですが・・・。

pythonも一回まじめにやったほうが良さげかも。FreeStyleのスタイルモジュールもpythonだし。


比較のため同じシーンをblender2.49bとluxblendでちゃんと設定して30分レンダするとこんな感じ。



ついでになんとなくレンズエフェクトをいじってみた。
が、少々やりすぎたようで、何かが召喚されてしまいそうな雰囲気にw。特に青が反応しすぎです。





というわけでengine_render_lux.pyのテスト結果はいまいちでしたが、ジオメトリの扱いに
ついてはうまくいっているようです。先行のluxblend25がマテリアルやシーン設定に関して
作業が進んでいるのであれば、お互いに補完してよりよいものができてくれればと思います。

冒頭のスレッドでの開発者のやりとりを見ていると、あとでちょっと体育館裏来い
IRCで情報交換しよう的な流れになっていたので今後の開発状況の加速に期待したいところです。


---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

LuxRenderのblender2.5対応エクスポータを試してみた

blender2.5系に対応のLuxRenderのエクスポータはluxblend25の名称で現在開発中です。

従来のluxblendと異なりファイルを書き出すのではなく、LuxRenderの機能をpythonの
モジュールを経由してblenderのレンダリングエンジンとして利用するような形になる模様。
また、この目的のためにLuxRenderのような外部レンダラをblenderから利用するための
汎用的なフレームワークもあわせて開発中という状況のようです。

blenderとのより緊密な統合やエクスポータ本体と並行しての汎用フレームワークの開発と
いうように、規模や目標が大きいため開発状況は今年中に形になればいいかな?という感じ。

開発版は存在するものの今のところ詳細なドキュメントは用意されておらず、以前試して
みたときもエクスポータの起動はおろかインストールの仕方も分からずという結果に。


が、ここにきて公式フォーラムのこちらのスレッドで第二のblender2.5対応エクスポータ、
engine_render_lux.pyが登場するという意外な事態が発生しています。


このエクスポータは従来のluxblendと同様にジオメトリやマテリアルをLuxRender形式の
ファイルに書き出して、別プロセスとしてLuxRenderを起動してレンダリングを行うという
アプローチで作成されているようです。

また上記スレッドによればluxblend25の開発は現在マテリアルやシーンの設定等についての
作業が中心となっており、blenderからのジオメトリデータのエクスポートに関しては、まだ
未着手のようです。それに対してengine_render_lux.pyはジオメトリデータの書き出しには
成功している様子。


というわけで早速試してみました。
長くなったので分けました。

あまり期待を煽るのもあれなので先に結果を伝えてしまいますが、従来のエクスポータの
完成度にはまだたどり着けていないという状況でした。

ただ今後には非常に期待したくなる、といったところ。

というわけで、それでも結果が気になるとか、自分で試してみたいという方は続きをどうぞ。


---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

2010年4月12日月曜日

たまには内蔵レンダラも使ってみる

まだまだ実装されるのはしばらく先かと思っていたIndirect Lightingも
気づけばsvn版で使えるようになってるみたいなので試してみた。

光源はマテリアルでemitを設定した5個の立方体のみ。ワールド設定で
Indirect Lightingを有効に。AO、環境光も併用できるので全部有効にして
レンダしてみるとこんな具合。



こんな感じのシーンを試してみたいという場合にはまずはIndirect Lighting
のみを有効にして調整して、その後にAOや環境光を追加していくと良さげ。

これまでも間接光の表現はラジオシティでもできたけど、事前に処理が
必要だったりメッシュ分割を調整しないといけない場合があったりと
ちょっと面倒なところもあり、あまり使ってませんでした。

それに比べるとIndirect Lightingはとてもお手軽で使い勝手が良さそう。
最近の内蔵レンダラは以前のスキャンライン専用の頃と比べるとかなり
高機能になってて同じblenderとは思えないw

光学的な正確さ、写実的な表現みたいなところはまだしばらくLuxRenderの
独壇場だろうけど、それなりにつじつまが合っていて見栄えがする結果を
早く欲しい時にはblenderの柔軟性とレンダスピードの早さが有利なところ。

ただ、blenderの内蔵レンダラはリアルな品質や結果を求めようとすると
レンダ設定以外にもマテリアル設定の方もあれこれトライ&エラーを繰り
返さないといけないのが普段使い慣れていないと面倒。

例えばガラスをガラスらしくレンダリングしたい、みたいな時とか。

LuxRenderはマテリアルをガラスに設定してやれば大概それらしい結果になる。
けどblenderはガラスのマテリアル設定以外に、ライトの設定や周囲に存在する
その他のオブジェクトの影に関する条件の設定なども調整しないとそれらしい
結果にならない。速度と品質の兼ね合いで難しいところなんだろうけど。

そうは言っても今回の結果を見る限りblenderの内蔵レンダラもかなり強力に
なってきているのは間違いないのと、sintelの進捗に合わせて今後もいろいろと
改善がありそうなので内蔵レンダラの扱いも慣れておきたいところ。

---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手