2011年2月6日日曜日

modo 501: SDK その1

前回の投稿からだいぶ日にちが空いてしまいましたが、今回はmodo 501で拡張されたSDKの機能の概要を解説したいと思います。

SDKの入手方法
modoのSDKは、Luxologyもしくはマーズの製品ダウンロードページから入手することが可能です。SDKの使用にあたっては特別なロイヤリティは発生しませんので、このSDKを使って開発したプラグインは自由に配布・販売することが可能です。modo 501のSDKのファイル名称はLXSDK_40017.zipです。40017はmodoのビルド番号を表しています。基本的にプラグインの上位互換は保持されていますが、新しいビルドで機能が追加される場合があります。


開発環境
SDKを使ってプラグインはC++言語を使って開発することができます。開発にコンパイラツールが必要になります。Windowsでは、Visual Studio、Mac OS Xでは、XCodeを使って開発することが可能です。サンプルコードには、Visual Studio 2008, Visual Studio 2010, XCodeのプロジェクトファイルが含まれています。Visual StudioのバージョンはExpressでOKですので、Windows版もMac OS X版も動作環境があればどちらも費用を掛けずに開発することができます。


SDKのディレクトリ構造
LXSDK_40017.zipを展開するとcommon, docs, include, sampleというディレクトリが現れます。基本的にLXSDK_40017.zipはどこで展開しても大丈夫です。各コンパイラのプロジェクトファイルには、コンパイルに必要なインクルードファイルのパスなどは相対パスで記述されています。

common
このディレクトリには、プラグインが自分のソースコードと一緒にコンパイルリンクするためのmodo SDKのソースコードが含まれています。基本的にプラグインはmodo内部の関数を公開されたAPIを通して起動しますので、ここでは最低限必要なソースコードや幾つかのユーティリティ関数が用意されています。

include
プラグインから呼び出すクラスなどが記述されたインクルードファイルが保存されているディレクトリです。

docs
SDKのHTMLドキュメントが含まれているディレクトリです。index.htmlをブラウザで開くと全てのページにアクセスすることが可能です。

samples
ここにはSDKのサンプルソースコードと開発環境のプロジェクトファイルが含まれています。


modo 501 SDKのインターフェイス
docs/interface.htmを見るとSDKが提供しているさまざまなインターフェイスの一覧を見ることができます。ここではSDKで拡張することが可能なサービスの種類とアクセス可能なインターフェイスが公開されています。

ILxLoader/ILxSaver
このインターフェイスはmodo 501以前から公開されているインターフェイスで画像やシーンファイルの入出力を拡張するための機能を提供しています。modoに含まれているほとんどのファイル入出力機能はこのプラグインで実装されており、ソースコードもサンプルとして公開されています。

ILxMovie
QuickTimeなどのムービーファイルの入出力のためのプラグインインターフェイスです。

ILxTextScriptInterpreter
modoは、Perl, Python, Luaなどのスクリプト言語をサポートしていますが、このスクリプトインタプリタ自身もプラグインとして実装されています。この機能を使えばRubyなど他のスクリプト言語をmodoに組み込むことが可能になります。

ILxColorModel
modo 501では、カラーピッカーの機能が大幅に拡張されています。このインターフェイスを使って独自のカラーモデルをカラーピッカーに追加することができます。

ILxValueTexture
新しく追加されたテクスチャプラグインを開発するためのインターフェイスです。BentleyのテクスチャやEnhance:modoテクスチャも全てプラグインで実装されています。

ILxCommand
コマンドを開発するためのインターフェイスです。モデリングコマンドなどさまざまな種類のコマンドを作ることが可能です。

ILxTool
SDKを使ってツールが作れるようになりました。3Dビュー上にハンドルを表示してインタラクティブなツールを開発することができます。

ILxPackage
アイテムを拡張するためのインターフェイスです。ギアアイテムなどのプロシージャルジオメトリアイテムやチャンネルモディファイヤを開発することが可能です。


サンプルのビルド
XCodeを使って実際に付属するサンプルをビルドしてみましょう。XCodeのプロジェトファイルは、samples/xcode_projectというディレクトリに入っていますので、ここにあるxcode_projext.xcodeprojというファイルをXCodeで開きます。私の使用環境はMac OS X 10.6.6, Xcode 3.2.5です。このプロジェクトファイルは全てのサンプルのプロジェクトファイルが含まれており、Xcodeのビルドメニューからビルドを実行するとサンプルをビルドすることができます。




LXSDK_40017のXcodeのプロジェクトが参照するインクルードファイルが幾つか不足しているようで、ビルドエラーが発生してしまいます。includesフォルダにある全てのヘッダーファイルを下図のようにドラッグアンドドロップしてプロジェクトの”グループとファイル”にあるinclude階層の下に追加してみてください。これでビルドができるようになるはずです。




サンプルの実行
サンプルプラグインがビルドできましたら。実際にmodoにいれて実行してみましょう。今回はArcツールを実行しています。

プラグインをmodoで使うには、まず、拡張子(.lx)がついたプラグインファイル(ダイナミックリンクファイル)とコンフィグファイルをmodoに読みこませます。標準プラグインはmodoアプリケーションのExtraフォルダに、標準コンフィグファイルはResrcフォルダに置かれています。ユーザーが拡張するプラグインやコンフィグは下記のユーザーごとに用意されているユーザーコンフィグフォルダがありますのでこちらにコピーするのが一般的です。素システムメニューのFileメニューにあるAdd Plug-in...から明示的に追加することもできます。

Mac OS X
~/Library/Application Support/Luxology/Configs
Windows 7
~/AppData/Roaming/Luxology/Configs

ビルドが成功するとxcode_project/Build/Debug/フォルダにarc.lxができあがります。このファイルをAdd Pluginで登録するか、ユーザーコンフィグフォルダにコピーするとmodoにプラグインが登録されます。実はarc.lxは、既に標準のExtraフォルダに入っていますのでここではsamples/tool_arc/arc.cfgだけをコピーするだけでOKです。このコンフィグファイルにはArcツールのアトリビュートをUIに表示するためのリソースが含まれています。

次にmodoを起動したらプラグインが登録されていることを確認するためにプラグインビューポートを表示してみましょう。プラグインリストは新規ウィンドウを開いてUtilityタブから選択すると表示されます。Toolカテゴリの下にprim.arcというツールが見つかればOKです。




ツールの起動は、tool.setコマンドで行います。ほとんどのツールはシステムメニューやフォームにボタンとして登録されていますが。ARCツールはまだ登録されていませんので、ここではコマンド履歴から直接tool.setコマンドを実行してARCツールを実行してます。コマンド履歴のテキストフィールドから下記のコマンドを入力して見ください。

tool.set prim.arc on

下記のようにARCツールが起動し、画面をドラッグすると円弧のプリミティブが作成されます。



コマンド履歴で毎回実行するのは面倒ですので、ショートカットに上記のコマンドを割り付けたり、フォーム編集でメニューやツールバーに登録して使用することができます。

下記はフォーム編集(Form Editor)に登録されているシステムメニュー(Menu Bar)に "tool.set prim.arc on"をArcという名称で登録した例です。システムメニューにArcツールが登録され、ここからツールを起動する事ができるようになります。


1 件のコメント:

  1. LXSDK_41321をXCodeでトライしてみましたが「lx_pretype.hpp」「lxhand3d.h」が無くてコンパイルできませんね。LXSDK_40017はもう手に入らないんでしょうか?

    返信削除

注: コメントを投稿できるのは、このブログのメンバーだけです。