Blenderで3D Stroke

Blender+AnimationNodesでTrapcode 3D Strokeっぽいものを作ってみた。

オフセットでループさせるのが難しい。さらにテーパーをかける、BlenderではBevel Objectを追加すると上手く再現できないとか、Animation Nodesでは無くsverchokの仕事かもしれません。

Blender2.79bとAnimationNodes2.0.4で作成: AN2_Strokes.zip


Animation Nodes:アニメーションの取得

Animation nodesでアニメーション(FCurve)を取得する場合、チャンネルを指定して取得はできませんが、FCurves from ObjectノードでFCurveのリストを簡単に取得可能です。ただしリストのインデックスは位置・回転・スケールそれぞれ固定されたものとはなりません。位置のアニメーションが無い場合はリストの先頭はオイラー回転xから始まりますし、Insert Single Keyframeで各軸ごとにキーを打つ事も考えられます。AN2_SimpleSplineTrail

Animation nodesと名付けられた割にはちょい残念なところですが、Scriptを通して特定のFCurveを得ることはできます。

上はアニメーションの軌跡をスプラインオブジェクトにする例です。位置アニメーションを取得し過去の位置をリストにしスプラインとして出力します。ローカル位置をスプラインにするだけでペアレントしたオブジェクトでは期待通りには動かないので、今のところあまり実用性はありませんが、位置アニメーションが無いオブジェクトを入力しても問題無いようにしたかったので確実に位置アニメーションのFCurveを得られるようにしました。

で、そのスクリプトノードの内容が以下です。

if Object.animation_data is None:
    return

FCurveList = [f for f in Object.animation_data.action.fcurves if f.data_path == 'location']
for f in FCurveList:
    if(f.array_index == 0):
        FCurve_x = f
    if(f.array_index == 1):
        FCurve_y = f
    if(f.array_index == 2):
        FCurve_z = f

オブジェクトのFCurveから「location」というデータパスを取得して後はarray_indexを見てX/Y/Zどの情報なのかを評価しています。array_indexはちょっと勘違いしそうですが、配列のインデックスという意味ではなく、rna_array_indexと呼ばれるものです。この場合Xなら0、Yなら1といった具合の定数になっているようです。

AN2_SimpleSplineTrail.zip(Blender2.87c+Animation nodes2)


Cython版Animation Nodes – FlipFace

Autodeskのメンテナンスプランは今後段階的に値上げ、Modo11も発表されましたが、こちらのプランも機能の割になんだか納得出来ない価格に思えます。

さて、Cython版Animation Node1.7.5用に以前のものを組みなおしました。

ポリゴン単位の操作が随分変わりましたね。

ANc_TransformPolygons

重いのでEmptyの位置か描画サイズの更新で評価されるようにしてあります。


Animation Nodes – FlipFace

ポリゴンをパタパタするやつ。

変形後のデータを同じトポロジーを持つオブジェクトデータにコピーするってところ、ちょっとメンドい。モディファイア感覚では使えないようです。

filpFace.blend(Blender2.77a+AnimationNodes1.6.0)

ところで組んだノードグラフを使いまわすにはいったいどうすれば、、、そもそも標準のMaterialやCompositeのノードグラフも書き出す方法が無いよーな。

Appendで他のblendファイルから持ってくるにしても「Interpolation from Curve Mapping」ノードが再現されません。同じファイル内であればグラフ全体をコピペ可能です。

あと仕様なのかCyclesのリアルタイムプレビューを使用すると、AnimationNodesの変更がリアルタイムでアップデートされなくなりますね。