日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2009年12月22日火曜日

ELFコマンド(2)

 あれからELFコマンドとは何か色々調べてみたが、明確にこれだ!という解答は見つからなかった。
しかしながら、いくつかヒントとなる答えは見つけることができた。


Human Character Animation in 3D-Graphics:
The EMOTE System as a Plug-in for Maya

PDFファイル

Maya has an open architecture and can thus easily be extended by third-party developers. 

The two main ways to customize Maya are through the Maya Embedded Language (MEL) and the Maya Application Programmer Interface (API). 
MEL is an interpreted scripting language that runs within the Maya environment. It provides high-level access to Maya nodes and allows for easy creation of custom graphical user interfaces (GUIs) through its Extended Layer Framework (ELF) interface commands. 
While MEL supplies the user with commands that can control most of Maya’s features, it suffers from the performance disadvantage inherent to interpreted languages and also fails to offer important programming elements such as pointers. 
By accessing the Maya API, custom compiled shared objects (written in C++) can be added to Maya for low-level access to internal data structures. 
Compiled plugins also offer significantly faster execution times than MEL scripts.

(以下、訳)
Mayaはオープン・アーキテクチャーであり、従ってサードパーティーの開発者によって容易に拡張できます。
Mayaをカスタマイズする二つのメインとなる方法は、MELとMayaAPIです。
MELはMayaの環境内で実行できるインタープリター・スクリプト言語です。

それは、Mayaのノードへ高レベルなアクセスを提供し、Extended Layer Framework(ELF)インターフェイス・コマンドを通して容易にカスタムGUIの作成を可能にしています。

MELはMayaのほとんどの機能をコントロールできるコマンドをユーザーへ提供しますが、インタープリター言語固有のパフォーマンスの損失という問題に悩まされます。
そして、ポインターのような重要なプログラミングの要素を提供することに失敗しています。
MayaAPIにアクセスすることによって、内部のデータ構造へ低いレベルでアクセスするためにC++によって書かれコンパイルされたカスタム共有オブジェクトをMayaへ追加することができます。
コンパイルされたプラグインはMELスクリプトに比較してすばらしく早い実行速度を提供します。


----------------------------------------
notes day1(the Advanced Computing Center for the Arts and Design)のページより一部抜粋

Fundamental Concepts of Maya Architecture
 
            GUI <> MEL Command Engine <> Dependency Graph
                        MEL (Maya Embedded Language)
                        ELF (Extension Layer Framework)
                                    Commands added to MEL for interface elements
(以下、訳)
Mayaアーキテクチャーの基本コンセプト
GUI、MELコマンド・エンジン、ディペンデンシー・グラフ
MEL (Maya Embedded Language)
ELF (Extension Layer Framework)
インターフェイス・エレメントのためにMELに追加されたコマンド群



----------------------------------------
以上の資料から、ELFコマンドに関係するところを抜き出すと、

Extended Layer Framework(ELF)インターフェイス・コマンドを通して容易にカスタムGUIの作成を可能にしています。

インターフェイス・エレメントのためにMELに追加されたコマンド群


に2箇所が大体それを説明していると思う。
簡単に言えば「GUIの為のMELコマンド

----------------------------------------
もうすこし理解を深めるために、IT用語で各単語の意味をしらべてみた。

ExtensionsIT用語辞典):
機能拡張とは、一般的にはアプリケーションソフトなどで利用できる機能を後から追加することである。
他にもFirefoxなどのプラグインなどもエクステンションとよばれる。



Layer(アスキービジネス:今さら聞けないIT英語):
層、階層
現在のネットワーク通信構造を支える根幹的な考え方であるlayerとは、コンピュータやネットワークシステムに求められる機能やプロトコルを複数の階層によって分類するというものである。

このようにネットワーク構造に使われるlayerが一般化され、日本のIT業界でもさまざまな場面で使われるようになったのだろう。ここで注意したいのが、IT英語のlayerはあくまでも「階層状に役割が分離された構造」といった意味を表し、



FrameworkIT用語辞典):
フレームワークとは、枠組み、下部構造、構造、組織という意味の英単語。

ソフトウェアの世界では、アプリケーションソフトを開発する際に頻繁に必要とされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのこと。
開発にフレームワークを利用すると、独自に必要とされる部分だけを開発すれば済むため開発効率の向上が見込める。




----------------------------------------
結局、ELFコマンドに関する詳細な説明は以上のことを統合して考えるしかない。

元々のMelの設計ではGUIの部分はそれほど使い勝手が良くないか、十分でなかったので、後にMelコマンドが追加された。
それがMayaの正式リリース以前の開発段階でのことなのか、それともいくつかバージョンを経たものなのかははっきりわからない。
一番最初に紹介したEMOTEというプラグインのドキュメントでは、Maya3.0のスクリーン画像がでていうるので、少なくともそれ以前ということになる。

機能を拡張するだけならExtensionだけですむはずだが、
Layer Frameworkと続くので、この機能拡張が通常とは異なるものだということがわかる。

Frameworkというところから、このGUIに関する部分は、乱発的につくられた拡張機能ではなく、組織的にまとめられた物だとわかる。
ようするに設計段階から、よく考えられて一つの機能群としてまとめられていると言うことだと思う。


またLayerとつくところから何らかの階層構造に関係していると思われるが、その階層構造というのがMelでの事なのかAPIレベルでのことなのか、どんな設計思想なのかとうことは現時点ではわからない。


また「ELFコマンド」という表記を見る限りGUIに限定していたものではないのかもしれない。
それは、オンラインヘルプの「ELFコマンド」にある下記の記載からも推測できる。
ELF コマンドの大半は、UI 要素の作成と変更に使用されます。
 
大半」といっているが「全て」とは言っていない。

しかしあえて、「Melコマンド」とは言わないで、「ELFコマンド」と言うのは、(憶測だが)ELFコマンドに共通する独自の(通常のMelには見られない)Melのルールがあるのかもしれない。
オンラインヘルプの「ELFコマンド」にそれが書いてあるかもしれないと読んでみたが、まだ知識不足でちゃんと理解できず、通常のMelとの違いを明確にすることはできなかった。
どちらにしても、使い勝手から言ってもその差は最小限に抑えられているだろう。 

----------------------------------------
<<結論>>
1)ELFコマンドはMELコマンドである。
2)ELFコマンドは特殊なグループに分けられたMELコマンド群である。

3)ELFコマンドの大半はGUIのためのMELコマンドである。

0 件のコメント:

コメントを投稿