blender の箱を消したら

blender を覚えたい蜂砂の発見や操作メモです。オブジェクトの動かし方は覚えたので中級者を目指したい。

絵が描けないのに手描きアニメーションをつくる

昔「グリー・スペンシル」だと思ってた

新しく出た v2.83 はグリースペンシルが1から作り直されたそうで、いい感じになってるらしいですね。でも、グリースペンシルで絵を描くには、絵を描かないといけないわけです!(当たり前)

でも、Blenderには昔から 3Dオブジェクトモデルの輪郭を描いてくれる Freestyle という機能がありました。これを使えば、絵が描けなくてもイラストちっくなものが描けてしまうわけです。すごい。

その Freestyle なんですが、これまた v2.83 から「レンダーパス」に単体で抽出できるようになったようです。つまり、オブジェクトの線画だけで出力できるようになったと。これを使ってみようと思います。

まずは、サルの周りに円形カーブをおいて、カメラがサルを撮りながらカーブに沿って1周するステージを作成。

f:id:beesand:20200606144214p:plain

Freestyleを設定していく 手描き風で

Freestyleを使うには、レンダープロパティの「Freestyle」左のチェックを入れる。

f:id:beesand:20200606144233p:plain

これでレンダリングしてみるとこうなる。モデルに線画がついているけど、この線画だけを抽出しようと思うと、今まではマテリアルを透明にするなどして調整が必要だった。これが、今回簡単になる。

f:id:beesand:20200606144242p:plain

次に、ビューレイヤプロパティで線画のスタイルを設定する。いろいろできること多くて、細かい設定方法は全然理解できてないので、またそのうち…。

手描き風にするために、ストロークの形状を変えてみる。Freestyle Line Style を開き、StrokeTextureのボタンが並んでる中で、Geometryを選ぶ。ここだけUIが他と違う感じでわかりづらいけども、これはタブみたいなもの。選ぶと下部にオプション設定が出てくる。

f:id:beesand:20200606144253p:plain

Add Modifierドロップダウンから、Bezier CurveSpatial Noiseを選んでみた。他のもいろいろおもしろい効果が出てくるので試してみるといい。Spatial NoiseAmplituは振れ幅。デフォルトの5.000だとちょっと大きすぎるので、3.000にした。

またレンダリングしてみる。

f:id:beesand:20200606144314p:plain

ランダム性のあるふわっとした線画になり、手描き風になった。むしろ手描きのほうが線がきれいなぐらいにw

ここまでは、今までのバージョンでもできた。ここから先が v2.83 からの機能。

レンダリングで線画だけを抽出する

レンダーパスに登場させるためのオプションをチェックする。ビューレイヤプロパティの「Freestyle」に As Render Pass というオプションが v2.83 から追加されているのでこれをオンにする。これで、説明にある通り、レンダリングが別のパスとして行われる。

f:id:beesand:20200606144327p:plain

では、レンダリングしてコンポジット画面を見てみる。Render Layers に今までなかった Freestyle という出力ができている。ビューアで見ると、(画像では見えづらいけども)ちゃんと線画だけが抽出されているのがわかる。

f:id:beesand:20200606144338p:plain

あとは好きにコンポジットすればいい。このままレンダリングすると、線画以外の部分は黒地で、ただのマックロ画像になってしまうので、Alpha Overで緑色の下地につないだ。

f:id:beesand:20200606144404p:plain

で、アニメーションレンダリングしてみたものがコレ。

f:id:beesand:20200606144421g:plain

モノの噂によると、TVアニメは24fpsで3フレームごとというのが多いらしいので、同じ設定にしてみた。なかなか手描き風アニメっぽい感じじゃないでしょうか(フリースタイルの線幅は 1px だと細すぎたので 2px にした)

比較用に、サルにsubdivかけてFreestyleのノイズなど消して24fpsフルフレームでも作ってみました。ぬるっとしてて、CG感がある。やっぱりアナログ感が残る方がいいな。

f:id:beesand:20200606144444g:plain