[気になる]Fabric Engine

つい先日βテストが終わり、1.0が発表されたFabric Engine、個人的には非常に注目のフレームワークと見て注目しています。
Fabric Engine


詳細はHPにてご確認頂くとしてざっと説明します。

HPには以下のようにあります。

What is Fabric Engine?
Fabric Engine is a high-performance processing engine that integrates with dynamic languages (like JavaScript and Python) by exposing an interface for defining multi-threaded native code operations. Fabric Engine enables high-performance applications to be built using dynamic languages by providing an environment where processor-intensive tasks can be offloaded and processed using multi-threaded native code.

ざっくり訳すと以下のような感じになります。

Fabric Engineはマルチスレッドなネイティブコードの操作を定義するためのインターフェイスを公開することで、動的言語(JavaScriptやPythonのような)と統合された高性能処理エンジンです。Fabric Engineはプロセッサ集中型のタスクをマルチスレッドなネイティブコードで処理する環境を提供することで、動的言語で高性能なアプリケーションを構築することが出来ます。

つまりどういう事かというと、Pythonなどの動的言語を使いつつハイパフォーマンスなアプリケーションの開発が行えるということです。

百聞は一見にしかず、まずはVimeoのFabric Engine動画でもご覧ください。

Vimeo – Fabric Engine

これだけ見ると、なんだブラウザ上であれこれ動かすツール?って感じにみえちゃいますが、
実際にはそうではなく、Python(PyQt)でのテストもあります。

Pythonは比較的最近になってサポートされたのと、まだβの最中みたいなので、これしか動画がないようです。
今後ぼちぼちって感じでしょうか。

 
さていかがでしょうかFabric Engine。
全て動的言語で書かれています。C/C++などで書かれているわけではありません。
なのにこのスピード!!驚異的!!

ただしこれはPythonだとかJavaScriptで書いたコードが全部マルチスレッド化されているという事ではないです。
というかそれらは普通に今まで通り処理されます。特に高速化とかは無いです。
じゃあどこが、というと肝心の処理の部分はkernel language(KL)という独自言語が存在しており、それによって記述します。
Pythonだとかが活躍するのはUIだったり、データのやりとりだったり、ディペンデンシーグラフを作ったり、
まさにそういう周りの部分です。CPUほとんど使わない部分ってことですね。
でもそれだけでもかなり大きなアドバンテージですよね。

KLはJavaScriptライクな静的型付け言語です。
JavaScriptライクというか、ざっくり見た感じ大体いつもの感じですよ。Cっぽいというか。
KL Programming Guide

で、このKLがLLVMにJITコンパイルされるので、ネイティブコンパイルしたような速度が出、かつプラットフォーム非依存で動く、と。
あってますかねこの解釈で・・・?
なんかもうよく分からんけどもすごい(゜д゜)ギャボー
しかしほぼ自動でMT&SIMD化されるってことはやっぱり多少は制限とかあるんですかね?要調査。

余談ですがKLはpronounced kaleとあるので、「ケール」的な読み方が正しいんですかね?
Qtがキュートみたいなもんですかね。

 
その他詳しい全容に関してはこちらをご参照ください。
Technology Overview
Fabric Engine Overview
2個目は僕もまだ読んでないので、ぼちぼち目を通しておきたい。

あ、そうそう、デモにもある通り、Bullet使えるようになってる&Alembicの読み込み(書き出しも?)が可能です。
今後もあれこれ増えていくんですかね?
ここはもしかしたら拡張も可能かもしれないので要調査。
 

で、なぜ僕がこれを気になっているかというと、
やはりおれおれCGツール開発のプラットフォームとしてかなり有望なのでは、ということです。
例えば上に挙げた動画で、キャラクターアニメーションツールが見られると思うのですが、
これを見て考えたのが「データをダウンロードして、終わったらそのままパブリッシュしてしまうキャラクターアニメーションツール」です。

ブラウザ上で動いているのを見てそう思ったというのもありますが、
たとえばプロジェクト、シーン、カットを選んで、シーンを構築ボタンを押す。
その情報を元にサーバー側で適切なデータを集めてシーンを構築、それをユーザーの端末にダウンロードして作業開始。
で、アニメーションが出来たらユーザーはそれをパブリッシュ。
ボタンを押したらアニメーションデータがサーバーに向けてアップロードされる、みたいな流れです。

まぁこれは別に普通にプロダクションで行われてることですよね、スクリプトとかで。
サーバーがインターネットごしなのかそうでないのかという違いぐらいで。

じゃあなぜそんなのを考えたかというと、さっきのキャラクターアニメーションツールをみて
僕がその先に描いたのはサテライト型のスタジオ。ホントに妄想レベルなんですが。
スタジオと言いつつアーティストは一箇所に集まらない。せいぜいコアメンバーが集まるスペースぐらいでOK。
各アーティストは世界中好きなところにいて、やりとりは全てネットを通じて行う。
それだけなら別に既存の市販ツールでも出来るんですが、
それ用に都合の良いツールがあったらなー、というところが発想の大元でした。

実際サテライトだろうが何だろうがやることなんて一緒ですし、むしろ制作の外のほうが重要な問題な気もするんですが、
まぁ楽しいじゃないですかこう言うの考えるのって:)

で、その流れであれこれ考えてみたものの、自分がまさに今生業としているエフェクト分野に関しては
良いアイディアが一個も出せなかったんですよね、残念ながら・・・。
あるとして自前シミュレーションツール、サーバーサイドでキャッシュ計算&レンダリングして結果だけダウンロード、みたいな感じとか。
まぁそれも既ry

実際には商用ツールと同等の使い勝手を実現するなんてかなり事ですし、そんなに簡単じゃないんですけどね。

 
あとそれとは別に個人的に興味あるのがアニメ制作用のCGツールとか。
今はみなさんMayaとかMaxとかでプラグイン拡張したりしながらやってると思うんですが、
ホントはもうちょっと使いやすいツール作れるんじゃないの?とか思ってたりします。
これは結構前から思っていて。
アニメは日本が主導してんだから、それこそ現場主導でツール作れたら楽しいんじゃないかなーと。
100%完全に日本のアニメ制作に特化させたツールを。

まぁこれも一種の妄想なんで話半分で聞いてもらえばいいと思うのですが、
例えばタイムシートベースであれこれ出来るとか(ただのドープシートじゃんと言わずに・・・)、
作画も出来ちゃうとか(ペイントソフト作るの大変じゃんとか言わずに・・・)、
MayaとかMaxみたいに3次元空間ありきではなくてカメラ空間ベースでかなり処理が出来ちゃうとか、扱いやすくなってるとか、
リアルタイムでファイナルルック見れちゃうとか(ラインまでいけるかはわかりませんけども)。
とかね。

まぁとにかく自前でツール持てる時代になったら面白いよね、って所なんです。
自分らのスタイル、アイディアで仕事が出来ますからね。
ハリウッド大手はそれをやってるわけです。
規模は違えどそれが出来たらもっと豊かに楽しく仕事が出来るんじゃないかと。

でも予算がないから時間がないから人がいないからやれません、ではなくて。
C++書かなくて良いのに動作は速いし、UIはPyQtでもJavaScriptでも良い、ブラウザ上で動かしても良い。
これだけでも開発人数が大分人数削減出来そうな気がしませんかね。
プログラマがいないスタジオでも、小さなものならTDが手を動かして作れちゃったりとか!!

ツール作るのはプログラマの仕事だとしても、どういうツールが欲しいか考えるのはアーティストの仕事ですからね、
そこが上手く合致してみんな楽しく働けたらこれは素晴らしい未来!!!

「クリエイティブ」って言葉を、イコールモデリングだとかアニメーションだとか、
そういうのにしか適用されないと思ってる人もちらほらいるみたいですが、
いいものを作るためにいい道具を作る、ってすごいクリエイティブだと思うんですけど、どうですかね?:)

 
と、大分脱線しましたけど、Fabric Engineに戻りまして。
自分自身で何か作ってみたいなーと思いきやまだアイディアが固まってないですし、
具体的な使い方もまだいまいち把握しきれてないので、
Python版が正式リリースされて落ち着いてきた頃にオープンソースライセンスでちょっと試してみたいなと思っています。

じゃあの

 
 
— 追記 —
重要なことを忘れてました。
Fabric Engine社(でいいんですかね?)はカナダはモントリオールにあり、
カナダという土地から想像できる通り、元CGアニメーションツール開発者多数、
そしてその会社とはAutodeskでありSoftimageでありCATです。
在籍メンバー一覧

Philipさんは、Maxの標準のリグツールとなったCATの開発者であり、ICEの開発にも大きく貢献された方だそうです。
あとはHelgeさんといえば同じくカナダのExcortex社と共同で開発を行っている方(?)で、
Momentumや最近はAlembic周りの開発などでSoftimage的に有名な方。

つまりCG的にもかなり熱い会社で、実際UPされてる動画にはゲームパイプライン用のツールつくろうぜ!!ってのがあったり、
真っ先にBullet乗せてみたりしてたので、かなり展開に期待が持てるのではないか、と思っています。

過去の経歴が全てとは思いませんが、傾向として期待は出来るのかなと思います:)

「[気になる]Fabric Engine」への2件のフィードバック

  1. これは大変興味深いプロダクトですね。
    ざっくり紹介された資料を読む限り、以下のような理解だと思われます。

    – ベースになるのはKLといわれる新規独自言語
    – KLはC/C++などと同じく強い静的型言語でLLVMを用いて実装されている
    – KLはDAGやmap-reduceを用いてSIMD化、マルチスレッド化されてネイティブ実行する機能を提供する
    – このKLの上にJavascriptなどの動的言語を乗せることにより、動的の表現力と並列の計算能力を持つ
    – KLと動的言語レイヤの間にOpenGL/CLなどハードウェア・インタフェイスも挟める(Fabric Extension)
    – アプリケーション開発者は動的言語レイヤで開発するため直接KL上で開発は行わない (???)

    キモはやはりKLの部分だと思われます。
    静的言語で文法もCの系譜ですが、C/C++がシングルスレッドを前提でマルチスレッドの
    事をあまり考慮していないのに対して、マルチスレッド/SIMDを強く意識したのが売り
    なのでしょう。

    自分が気になるのは、動的言語から並列処理を活用する部分に関しては何らかの作法や
    形式が求められると思われ、その煩雑さや負荷がどの程度のモノなのかってところですね。
    (資料はもう提示されていると思いますが、ざっくりとしか読めてません)

    あと、Bulletによる物理やキャラクタ・アニメーションに関してはあくまでデモの一例であって、
    Fabric Engineのプロダクトとして提供されるモノでは無いと思います。
    しかしながら、こういったCG/Game分野の基幹技術になることを狙っているのは間違いないです。

  2. >mynzさん
    おひさしぶりです:)
     
    おお!あれこれ補足ありがとうございます!!
    こっちの知識はほとんどないので大変助かりますm(_ _)m
    KLに関しては型とか基本的な使い方覚えればそんなに難儀することもないのかなと、
    ぱっと見た印象で思ってたんですが、MT化させるのってやっぱり手動なんですかね?
    map-reduceというのがよくわかっていないのですが、
    やっぱりそのモデル(?)に基づいたデータの作り方や記述をしてやらないと
    だめってことなんでしょうか?
    勉強不足ですみません、調べてみます。ありがとうございますm(_ _)m
     
    あとbulletなんですが、Extensionのところをみるとドキュメントに組み込まれているので
    内包してリリースされるものだと思ってました。他にはOpenGLやOpenCV、Alembicなども!
     
    Extensions can be implemented using Fabric Engine’s EDK (Extension Developer Kit).
    とあるので、自前でのExtensionの開発も可能なんですかね。
    スゲーーーー!!
     
    あと先ほどこんなのも見つけました。
    http://fabricengine.com/2012/03/scene-graph-fbx-performance/
     
    ぱ、パフォーマンスが半端ない・・・!!
    シーングラフひとつでここまで変わるもの!?(シーングラフが良くわかっていないが・・・)
    驚きです!!
     
    いやーー、、、ほんとに興味深いフレームワークですこれは!
    時代が・・・くる・・・!?
     
     
    やはりこれは注意深く観察する必要がありますね・・・!!!!
    ィヤッホーーーイィィ!!!

コメントを残す

メールアドレスが公開されることはありません。