Factorio

Blender2.81リリースの事を書こうと思いましたが、待望のLibrary Overrideの実装が思ったもんでなく、ちょっと先送りです。フローベースのパーティクルシステムも今回のリリースで実装されると思ってましたがまだ先か…

なことはさておき、久しぶりに起動したFactorioがVer.0.17.79になって、Ver.1.0正式リリースが来年9月末に決定との事。アーリーアクセスから約4.5年ってところですね。

2年ほど前のVer.0.15でも完成していると感じてましたが、まだあと1年。たまに集中して遊ぶのでバージョンアップに伴うレシピ変更だけは勘弁。いちから始めるとロボットネットワークの構築まで40時間くらいかかるし、バージョン上がるたびに資源は遠くに配置されるようになってるし、8時間クリアの実績ってどうやって達成できるんでしょうね。

そんなFactorioのスプライトはBlenderで作られています


Blender2.8 spherical Plexus

先日までの連休ゲーム三昧はさておき、Youtube用動画のテスト録画とか、Wordpressへの埋め込みテストとか。

内容はよくあるPlexusをAnimationNodeで再現するヤツ。

ナレーションが無いとナンノこっちゃよく分かりませんね。せめてBGMくらい入れないとね。あと録画時間が気になってテンパる。

開くにはBlender2.8とAnimation Nodes v2.14 test build for Blender 2.8が必要です。


Blenderで3D Stroke

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

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

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


Sverchok

Animation nodeのモデリング版「Sverchok」、建物を量産できないかと挑戦してみましたがなかなか慣れることができず。データの組み立て方はRhinocerosのGrasshopperと似ているような気がします、こちらも使いこなせていないので自信はないですが。

内部的にはリストを複雑に組み合わせてジオメトリを作っていく感じなのですが、その構造やそこから必要なデータの取り出し方がなかなか理解しづらい。

お盆休みの宿題にします。


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)