2010年2月19日金曜日

久々にビルドしてみた。

Freestyle統合版の更新に合わせて久しぶりにビルドしてみた。
透明度を持ったストロークがサポートされたとのこと。

ついでにいつもの倉庫にもアップ。Intel Mac、OSX10.5以上で動作のはず。
blender250-Freestyle_svn26980_gcc.tbz


新機能については全然試せていないけど、起動時のスプラッシュスクリーンが
Alpha1のものに変わってて驚く。
It is remarked that the latest revision 26980 of the Freestyle branch has incorporated all changes included in the Blender 2.5 alpha 1 release.
 ってことらしいので納得。


早いなぁ。もうalpha1かー。
2.5らしい新機能ってまだ殆ど触れて無い気がするw

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

2010年2月14日日曜日

なかなか良さげ。

あいかわらずFreestyleのスタイルモジュールでいろいろ。

以前シェーダを自前で実装するサンプルのコードを使って、線の太さを変えられるように
なりましたがその後さらに進展。

サンプルのシェーダでは線が徐々に太くなる方向でしか変化させられなかったので
入り〜抜きにかけて、

細い→太くなってく→太い→細くなってく→細い

という線は描けなかったわけです。

が、bigbrush.pyを参考にしつつ、shadersモジュールをあさりつつ試行錯誤してたら
良さげな感じになってきた。

まずは普通にblenderでレンダリング、エッジ無しの場合。



次がblenderの標準エッジの場合。



で、Freestyleだとこんな感じに。


こう比べてみると簡単に線の強弱がでるのはでかい。
特に顎とか口の輪郭で線の調子が変わるのが効果的。鼻の線が拾えるのも便利。

Freestyleのストローク描画部分だけを抜き出してみると線の状態がわかりやすいかも。



この線に眉毛とまつげのベタの部分と瞳を乗せてみた。
瞳はテクスチャで済ましてるのでノードでグレースケールに変換。



これがレンダリング一発で出せるのはおもしろい。

グレースケールを2値のトーンにできそうなので次はその辺をいじってく感じで。
あといい加減デコッぱちのままだとあれなんで、そろそろ髪をw

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

2010年2月11日木曜日

blender2.5向けLuxBlendについて調べてみた

この前書こうとしてたのはこれだった。思い出したのでメモ。


公式フォーラムのblender2.5向けエクスポータに関してのスレッドでは、ほとんどポストが
ないので、最初のアナウンス以降特に進捗は無いのかと思っていたわけです。
が、久しぶりにLuxRenderの開発版リポジトリを見てみるとluxblend25なるものを発見!


というわけで、早速ダウンロードしていろいろ試してみました。


ただ、結果としては動かすことすらできなかったわけですが。orz

問題としては
・レンダに必要と思われるpyluxモジュールが手元にない
・luxblend25のpythonスクリプトの導入の仕方がわからない。
の2点で全然歯が立たない状況なのが致命的。


luxblend25は2.4系の時みたいにLuxRender形式にファイルを一度エクスポートしてから
LuxRenderを起動して読み込ませるという流れではなく、blenderのpython実行環境を
利用してpyluxモジュール経由でLuxRenderのレンダリングAPIにアクセスするという
感じの流れになるらしい。

なのでluxblend25のpythonスクリプトだけでなくpyluxのモジュールも必要らしい。

というわけでpyluxもリポジトリから入手してみたもののうまく使えず。

自分の環境に合わせてリビルドするためのシェルスクリプトが用意されていたけれど
それでもうまく行かない。LuxRenderのソースコードに含まれるCMakeLists.txtを見ると
pyluxに関する設定らしきものはあるので、自前でビルドすれば自分の環境で動作する
pyluxモジュールは手に入るのかも。


さらに仮にpyluxがどうにかなったとしても、肝心のluxblend25のスクリプトの使用法が
分からない状況。2.4系はscripts以下に入れてメニューからluxblendを選択で良かったけど
2.5系ではそもそもどこにluxblend25のファイルを置いたらいいのかさえよくわからず。
しかもファイルが複数ありフォルダにいろいろ分かれているので、何をどう扱ったら
いいのかもよく分からず。

とりあえず公式wikiを参考にmodules以下に突っ込んでpythonコンソールからいろいろ
試してみたもののUIさえロード出来ず。luxblend25に関しての情報そのものが、そのwikiの
1ページ以外に見つけられなかったので使い方や導入のための設定も調べようがない感じ。


blender.jpのニュースで取り上げられていた2月7日付デベロッパミーティングノートの中の
LuxRenderに関する記述でも、"Blender への適切な拡張・統合作業は、夏以降になると予想
される"とのことなので、まだ開発者本人以外が気軽に試せる状況ではないのかも。
残念。

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

2010年2月9日火曜日

Freestyleのpythonモジュールに含まれる関数の調べ方。

公式ページのサンプルギャラリーではそのスタイルモジュールで出力された画像と
そのスタイルモジュールのソースコードを参照することができる。

で、そのソースコード中でpythonモジュール名がリンクになっている。

そのリンクをクリックするとpythonモジュールそれぞれの中身が表示されるので
モジュールに含まれる関数がわかる、という手順。

おとなしくテキストエディタでpythonモジュールの*.pyを見たほうが早いかも知れない。

ただ、

1. サンプルの絵を見る
2. その絵を出力するためにスタイルモジュールがどんな感じで何をやってるか確認する
3. そのためにはどのモジュールのどんな関数を使うか知りたい

という流れで見ていけるので、逆に自分でスタイルをモジュールを書く際の思考として
"コレをやるにはあの関数が使えそうで、そのためにはあっちのモジュールが必要だな"
的な発想がしやすくなったり、スタイルモジュールの処理の流れみたいなものが理解
しやすいかも知れない。

また、サンプルギャラリーのURLを見ていると、例えばshaders.pyを表示している場合は

http://freestyle.sourceforge.net/GALLERY/python.php?filename=shaders.py&headerfilename=pythonheader.txt
という感じなのでURLに適宜モジュール名を与えてあげれば中身を表示してくれるっぽい。

ちなみにshaders.pyの中には名前の通りそのままshader_listに追加してcreateに使える
シェーダがいろいろ含まれているので、手軽に試せて楽しい。

Freestyle統合版blenderにはスタイルモジュールがいくつか標準で添付されているので
おそらく殆どの人は初めにそれらのスタイルモジュールを試すんだろうけど、いまいち
イメージと違ったり、満足出来なかったり、標準のに飽きてきたりするんじゃないかと。

そんな時こそ以前紹介したような簡単なスタイルモジュールを書いてshaders.pyの中の
シェーダを試して行くとfreestylerとして活動を始めるいいきっかけになるかと思われます。

公式ページにFreestyleユーザーのこと(だと思う)をfreestylerと書いてあって、すごく自由な
感じが良さげなので使ってみたw


今日のわかったこと
・QuantitativeInvisibilityUP1D()は引数が1で陰線、0で見えている線を選ぶ。
今更こんなことに気づいたという。orz。


Freestyle以外にもLuxRender関連で何か書こうと思ったんだけど、だめだ。
今日暖かかったせいかやたら眠いし頭が回らない。花粉症はまだ早いだろうし。
なにか有ったはずってことだけ書いておけば思い出すかも知れないんで、
明日の自分、まかせた。

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


2010年2月2日火曜日

スタイルモジュールとかのメモ

少しずつ勝手がわかってきたのでチュートリアルから脱線して、いろいろ試行錯誤中。
勝手気ままにいろいろ試してるとはまることも多くなるのでちょっとメモ。



-スタイルモジュール編集はblender内蔵でない別のテキストエディタを使った方が良さげ

最初はモデルいじってレンダしつつスタイルモジュールのコード編集ができるので
内蔵テキストエディタをつかってたけど、Freestyle統合版は開発版ということもあり
たまに落ちる。特に当てずっぽうで変なコードを書いてそれを読ませてレンダすると
blenderごと落ちることが多い。

編集中のスタイルモジュールでレンダするにはレンダ前にコードを保存する必要が
あるので、『blenderが落ちたせい』で未保存の編集内容が失われるという自体は
今のところ発生してない。

何が問題かというと、内蔵テキストエディタは自動的にスワップと言うかバックアップ
ファイルを作るらしい。そこまではいいんだが、落ちたあとにblenderを再度起動すると
レンダ前に保存済みの本ファイルでなくスワップの方を開いた状態でテキストエディタを
表示していることがある。

で、スワップの内容は保存した状態よりもだいぶ過去の内容であることがほとんどなので
"あれ、あの関数を追加したとこが消えてる?おかしいな保存に失敗してた?"と思って
同じ作業を繰り返したり、さらに古い内容のスワップファイルで最新の変更内容が正しく
保存されていたであろう本ファイルを上書きしたり・・・orz。

面倒がらずにテキストエディタ起動しとけ<自分



-公式のチュートリアルが作成された時点からモジュールの構成に変更があった?っぽい

最初にやったチュートリアルではモジュールの読み込みを
from Freestyle import *
の一文で済ませている。そのファイルに追記しつつ色々試していると関数が見つからない
という旨のエラーに遭遇。エラーメッセージを見るとNotUP1D()が見つからないらしい。

その関数を使用するスタイルモジュールのサンプルがFreestyle統合版blenderに含まれて
いたので正しくレンダ出来るか試してみるとエラーもなく普通にレンダ開始&終了。
レンダ画像を見てもその関数を利用している部分は正しく機能している感じ。

サンプルのコードを確認してみるとモジュール読み込み部分がチュートリアルと違ってた。

from freestyle_init import *
from logical_operators import *
from PredicatesB1D import *
from shaders import *
from PredicatesU0D import *
from math import *

と言う感じ。
mathはPythonの標準モジュールのはずだけど、その他はFreestyleのモジュールだよなぁ。
from Freestyle import *でFreestyleモジュールを読めば、間接的に他の必要なモジュールは
すべて読み込まれたと思ってたんだけど変更が有ったのかも。
もしくはFreestyle単体版と統合版でモジュール構成がちがう?
ちなみにNotUP1D()はlogical_operatorsにありました。

モジュール関連の情報がないかとFreestyleの公式ページを見てみたらFreestyle File Listって
いうページを発見。そこに各モジュールにどんな関数が含まれるか書いてあるかと思いきや
Cのヘッダファイルのリストでした。

残念。

前にpythonのチュートリアルだかリファレンス的なハンドブックを読んでいたときに
どのモジュールにどんなクラスや関数があるのかを表示する方法を目にした記憶が・・・。
どこで見たっけなぁ。最悪ファイルをエディタで開いて確認してけばいいんだろうけど。

Freestyleのモジュール内容一覧みたいなのがあると便利そうなので調べてみるかな。


今日の進捗はこんな感じ。



ドーナツの内側、手前と奥のラインがそれぞれ3つずつに分かれてたのを1本に、とまでは
行かなかったけど比較的長いストロークにまとめることはできた感じ。
ただ、chain系の操作で接続処理の終了を判定させるための条件を指定するのに、何を
どう指定すればいいのかがわかっていないので、とりあえず繋がったというレベル。

外側の長いストロークを分割する方は手付かず。

---------------------------------------------------------------

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