API ガイド > Maya API の基礎知識 >

# 基礎知識

Autodesk® Maya® はオープン プロダクトです。つまり、Autodesk 社外の方でも、既存の機能の変更やまったく新しい機能の追加が実施できます。Maya は、以下のいくつかの方法で修正できます。

- MEL™ (Maya Embedded Language): パワフルで習得しやすいスクリプト言語です。ほとんどの一般的な操作は、MEL を使用して実行できます。
- Python™: パワフルで習得しやすいスクリプト言語で、Maya コマンドへのインタフェースを提供します。
- C++ API (Application Programmer Interface): MEL や Python よりもパフォーマンスがすぐれています。API を使用すると新しいオブジェクトを Maya に追加でき、そのコードは、MEL を使用して同じタスクを実行した場合より約 10 倍速く実行されます。また、API から MEL コマンドを実行することができます。
- Maya Python API: API をベースにしており、API を Python スクリプト言語を通じて使用できます。

MEL の紹介については、『MEL とエクスプレッション』マニュアル、Python の同等のインタフェースについては『Python』マニュアルを参照してください。これらのマニュアルでは、Maya API と Python API の技術的な面を紹介しています。

概要

Maya API は、Maya への内部アクセスを提供する C++ API で、Microsoft® Windows®、Linux®、Apple® Mac OS® X などのプラットフォームで使用できます。API を使用して、Maya の機能を拡張するプラグイン、または Maya モデルへアクセスし、操作するコンソール アプリケーションなどのスタンドアローンの 2 つのコード リソースを実装することができます。

プラグインは、以下の 2 つの方法で構築できます。

- 標準的なオペレーティング システムの機能を使用して、Maya にロードされるダイナミック ライブラリ、またはリロケータブル ライブラリとして構築します。プラグインは、ホスト アプリケーションである Maya のシンボル スペースにアクセスすることにより機能します。ロードされたその他のプラグインのシンボル スペースにアクセスすることはできません。
- Maya Python API を使用したスクリプトを記述します。

API 開発キットの例の多くは、C++ と Python の両方のソース コードで提供されています。両方のバージョンを Maya に同時にロードするために、Python プラグインのコマンドとノードの前には「sp」をつける規則を採用しました(たとえば、spHelix など)。ユーザが、この規則に従う必要はありません。

ダイナミック ライブラリを使用する場合、開発に使用したオペレーティング システムにより、プラグインの構築と名前付け方法にさまざまな制約が課されます。プラグインに使用するファイル拡張子は以下のとおりです。

- Linux: .so
- Windows: .mll
- Mac OS X: .bundle
- Python プラグイン(すべてのプラットフォーム): .py

また、プラグインと API アプリケーションの作成ルールは、プラットフォームによって異なります。その規則については、本書の後半で説明します。

開発キット

Maya API は、Maya インストール パッケージの開発キットに入っています。プラットフォームによっては、既定では Maya のインストール プログラムにより開発キットがインストールされません。したがって、インストール プロセスで、開発キットのインストールを指定する必要がある場合があります。開発キットには、インクルード ファイル、ライブラリ、サンプルの主要な 3 つのコンポーネントが含まれます。

インクルード ファイル

開発キットは、Maya とインタフェース接続するヘッダー ファイルを提供します。これらのヘッダー ファイルは、include/maya ディレクトリにあります。Maya のヘッダー ファイル名は、通常、接頭辞 M で始まります。特定の種類のヘッダー ファイルでは、M の後の 2 文字がヘッダー ファイルの種類を示します。Fn は関数セット、It はイニシエータ、Px はプロキシ クラスです。この命名規則については、後で詳しく説明します。

TinyXML

Maya では、現在、TinyXML バージョン 2.5.3 が使用されています。

ライブラリ

この API は、Maya のさまざまな機能領域に対応するライブラリのセットとしてパッケージ化されています。ライブラリは以下のとおりです。

OpenMaya: ノードとコマンドを定義してプラグインに組み立てるための基本的なクラスが含まれています。

OpenMayaUI: マニピュレータ、コンテキスト、ロケータなどのユーザ インタフェース要素を新規作成するために必要なクラスが含まれています。

OpenMayaAnim: デフォーマやインバース キネマティクス(IK)などのアニメーション用のクラスが含まれています。

OpenMayaFX: Autodesk® Dynamics™ のクラスが含まれています。

OpenMayaRender: レンダリング機能の実行に必要なクラスが含まれています。

これらのライブラリは共有ライブラリなので、多数のプラグインが同時に使用できます。ライブラリは、lib ディレクトリにあります。

例

Maya API のサンプルは devkit ディレクトリに保管されています。このディレクトリには、applications フォルダと plug-ins フォルダが含まれます。applications フォルダにはスタンドアローン API アプリケーションのサンプルが、plug-ins フォルダには Maya API プラグインのサンプルが入っています。スタンドアローンやプラグインの構築に使用される手法は、プラットフォームによって異なります。ほとんどの場合、Makefiles が使用されます。Windows と Mac OS X には、提供されているサンプルの大半を構築するための IDE ソリューションが用意されています。

Maya Python API のサンプルは、Maya 開発キットの plug-ins/scripted フォルダで見つかります。

Maya のインストール DVD にはコンパイル済みのプラグイン バイナリとアプリケーション バイナリは入っていません。ユーザがビルドする必要があります。開発キットのサンプルのビルドについて詳しくは「ビルド環境を設定する」を参照してください。

マニュアル

Maya API に関しては、さまざまなマニュアルが用意されています。提供されているマニュアルは以下のとおりです。

- Maya API の技術的な概要(本書)
- API クラスの説明

この Maya API の技術的基礎知識には、Maya Python API のセクションが含まれています。また、このクラス定義マニュアルは C++ と Maya Python API の両方の開発アプローチについての情報が含まれているので、両方の開発で使用します。

関連マニュアルには以下があります。

- 『MEL とエクスプレッション』マニュアル
- 『Maya MEL コマンド リファレンス』
- 『Maya ノード & アトリビュート リファレンス』(英語)。Maya ノードを操作することは、Maya API プログラムにおいて必要事項です。
- リリースごとに提供される『Maya の新機能』情報
- 開発者にとって興味のある情報を提供する『リリース ノート』

これらのリソースには、Maya ヘルプからアクセスできます。

その他の要件

Maya API は C++ API なので、以下を理解しておくことが最善でしょう。

- 仮想関数
- クラス継承(マルチを含む)
- ストリーム クラス
- オペレータ メソッド(Maya API にはさまざまなオペレータ メソッドがあります)

さらに、プラグイン、またはスタンドアローンを構築するときには、そのリリースに対して推奨されているコンパイラとリンカーを使用する必要があります。この情報は、『Maya の新機能』や本書のプラグインおよびアプリケーションの構築に関する基礎知識で参照できます。