2008年9月11日木曜日

blender - Freestyle

Blender.jp - ニュース
テストビルド : Soc 2008:Freestyle 統合の最終テストビルド
http://blender.jp/modules/news/article.php?storyid=2157



BlenderでNPRな線を描画できるようになりそうです。画像見てると、凄い良い感じですね~。
上記でも触れられていますが、Pythonスクリプトで、Freestyleで出す線の出し方を、詳細に設定できるようです。

どうやって指定するのかというと・・・・

/////// japanese_bigbrush.py より抜粋 ///////////
Operators.select(QuantitativeInvisibilityUP1D(0))
Operators.bidirectionalChain(ChainSilhouetteIterator(),NotUP1D(QuantitativeInvisibilityUP1D(0)))
## Splits strokes at points of highest 2D curavture
## when there are too many abrupt turns in it
func = pyInverseCurvature2DAngleF0D()
Operators.recursiveSplit(func, pyParameterUP0D(0.2,0.8), NotUP1D(pyHigherNumberOfTurnsUP1D(3, 0.5)), 2)
## Keeps only long enough strokes
Operators.select(pyHigherLengthUP1D(100))
## Sorts so as to draw the longest strokes first
## (this will be done using the causal density)
Operators.sort(pyLengthBP1D())
shaders_list = [
pySamplingShader(10),
BezierCurveShader(30),
SamplingShader(50),
pyNonLinearVaryingThicknessShader(4,25, 0.6),
TextureAssignerShader(6),
ConstantColorShader(0.2, 0.2, 0.2,1.0),
TipRemoverShader(10)
]
## Use the causal density to avoid cluttering
Operators.create(pyDensityUP1D(8,0.4, MEAN), shaders_list)
//////////////////////////////////////////////////////////////


適当に目に付いたものを太字にしてみました。
この太字の部分が、描画フローになっていて、
Freestyle: Style Module Documentation

に説明が書いてあります。

ちなみに、この描画フローは、この論文に沿ったものになっているようです。
Programmable Style for NPR Line Drawing


その他のメソッドの詳細は、Freestyle Class Hierarchy
(使えるのは、shaders.pyとかPredicatesU1D.pyとかに入ってるやつかな…?)


まぁ俺はリアルタイムに移行してしまったので、使うことは余り無いと思いますが・・・。
CompositeNodeでpyNode使ってビジュアルに設定できたりすると良さそうですねー。(とか適当に言ってみる。)

------

あと、どうでもいいんだけど、ソフトシャドウの論文にクラウドがいたww
http://artis.imag.fr/Publications/2005/AHLHHS05/

0 件のコメント: