Marmalade SDKで3Dに飛び込む

ご挨拶、ワークショップの兄弟、モバイルプラットフォームと3Dグラフィックスに興味がある読者のみなさん。 以前の投稿 (およびHackerマガジンの5月号)で、AirplaySDK(現在はMarmaladeと呼ばれています)の使用を開始する方法について既に書いています。プラットフォーム:iOS、Android、Windows Mobile、Bada、Symbianなど。HelloWorldアプリケーションは既に何かありますが、私たちは栄光にとどまることを好まないため、この記事では小さな3D-アプリケーション。 説明されているSDKには優れたドキュメントがあるため、3Dモデルを作成し、モバイルアプリケーションにアップロードし、カメラアングルを変更してシーンを表示するという小さな例に限定します。 さあ、始めましょうか?



仕事の準備



そのため、まずはMayaで通常のボックスを作成し、青くペイントします。







あなたの許可があれば、Mayaでのボックスの作成に関するマニュアルで記事をいっぱいにしません。これは今日の会話の主要なトピックではなく、Mayaでの作業の専門家ではないからです。



そのため、ボックスが作成されます。 次に、プラグインをインストールして、モデルをMarmalade SDKの特別な形式にエクスポートする必要があります。 これを行うには、次のファイルコピー操作を実行します。



<SDKインストール> /Tools/Exporters/Maya/ASMaya212Exporter.mll-> <Maya2012Location> / bin / plug-ins

<SDKインストール> /Tools/Exporters/Maya/ASExpUI.dll-> <Maya2012Location> / bin /プラグイン

<SDKインストール> /Tools/Exporters/Maya/exporter.txt-> <Maya2012Location> / bin /プラグイン

<SDKインストール> /Tools/Exporters/Maya/metabase.txt-> <Maya2012Location> / bin /プラグイン

<SDKインストール> /s3e/bin/libeay32.dll-> <Maya2012Location> / bin



<SDK install>SDKがインストールされているフォルダーへのパス、 <Maya2012Location>はMaya 2012のインストールフォルダーです。インストールプロセスはMayaのバージョンによって異なることに注意してください。 詳細については、 ドキュメントをご覧ください(Mayaだけでなく、3dsMaxのインストール手順にも注意してください)。



Mayaを開き、 Windowsメニュー> [設定 ] > [設定]> [プラグインマネージャー]でASMaya212Exporter.mllの反対側にあるロード済みおよび自動ロードの チェックボックスをオンにします。



プラグインがインストールされます。 作成したボックスでプロジェクトを開き、MELコンソールでASMayaExporterコマンドを入力します。



輸出モデル



ASMayaExporterのコマンドで、モデルをエクスポートするためのウィンドウが表示されます。







最初に、 プロジェクトデータディレクトリパラメータをプロジェクトのデータディレクトリに設定します。 前回の投稿でこのディレクトリが何であり、どのディレクトリで使用されるかを整理しました。 3Dモデルが保存されます。 また、 アセット名フィールドも必要です。ここでは、モデルの名前を指定する必要があります。 FirstBoxと呼びましょう。もっと便利になります。



次に、オプションですが、それほど重要ではないパラメーターについて説明します。 ジオメトリスケルトンアニメーションという言葉自体が語っていますが、私はすでに自分のスキンでoneGeoパラメーターをテストしました。 モデルが複数のコンポーネントで構成される場合は、このボックスをオンにして、モデルプリミティブごとに数十個ではなく、モデルの単一のGEOファイルを取得してください。



[ エクスポート ]ボタンをクリックすると、モデルがデータディレクトリに表示されます



コードを書く



繰り返しになりますが、前回の記事では、SDKを操作するためのプロジェクトの作成方法について書きました。 したがって、プロセス全体を新しい方法で説明することはしません。



最初に、メイン関数main()を持つ単一ファイルのソースを提供します。



#include "IwGx.h" #include "IwGraphics.h" #include "IwResManager.h" int main() { IwGxInit(); IwGraphicsInit(); IwGetResManager()->LoadGroup("FirstBox.group"); CIwModel* pModel = (CIwModel*)IwGetResManager()->GetResNamed("FirstBox", "CIwModel"); IwGxSetLightType(1, IW_GX_LIGHT_DIFFUSE); CIwSVec3 dd(0xFF, 0xFF, 0xFF); IwGxSetLightDirn(1, &dd); IwGxSetPerspMul(0xAF); while( !s3eDeviceCheckQuitRequest() ) { IwGxClear( IW_GX_COLOUR_BUFFER_F | IW_GX_DEPTH_BUFFER_F ); IwGxLightingOn(); CIwMat view = CIwMat::g_Identity; view.tz = -80; view.ty = 80; view.tx = -60; view.LookAt(view.GetTrans(), CIwVec3(0, 0, 0), -CIwVec3::g_AxisY); IwGxSetViewMatrix(&view); CIwMat modelMatrix = CIwMat::g_Identity; IwGxSetModelMatrix(&modelMatrix); pModel->Render(); IwGxFlush(); IwGxSwapBuffers(); s3eDeviceYield(0); } IwGraphicsTerminate(); IwGxTerminate(); return 0; }
      
      





コードは、経験の浅いプログラマーにとっても非常に簡単です。 しかし、私はいくつかのポイントを説明します。



モデルをエクスポートすると、 FirstBox.groupファイルがデータフォルダーに表示されます。 次の行にロードします。

 IwGetResManager()->LoadGroup("FirstBox.group");
      
      





リソースファイルを読み込んだ後、Mayaで作成したモデルを直接読み込みます。

 CIwModel* pModel = (CIwModel*)IwGetResManager()->GetResNamed("FirstBox", "CIwModel");
      
      





IwGxSetPerspMul(...)関数にも特別な注意を払う必要があります 。 これは、魚眼効果の度合いを設定する一種です。 このパラメーターをデフォルトのままにすると、画面の端に沿ったシーンは、 トイレの穴からボトルの底を見ているような印象を与えます。



ビューオブジェクトは、シーンのビューです。 パラメータxy、およびzを持つフィールドtは、空間内のカメラの位置を定義します。 LookAtメソッドは、視線の方向を決定します。最初のパラメーターは前の3行で設定された位置(from)、2番目は視線が向けられるべき空間内のポイント、3番目のパラメーターは上方向です(つまり、たとえば、 -CIwVec3 :: g_AxisYの代わりにCIwVec3 :: g_AxisY 設定した場合 、「逆さま」のシーンを見ることになります)。



modelMatrixは、モデル変換マトリックスを定義します。 このような退屈な言葉を頭から投げ出したので、より簡単に説明します。このオブジェクトを使用して、モデルの回転や空間内の位置などのパラメーターを設定します。



もちろん、結果のシーンのスクリーンショットを投稿する価値があります。





おわりに



もちろん、この記事では、Marmalade SDKで3Dを使用するすべての可能性について説明するという目標を設定しませんでした。 シーンは非常に原始的ですが、残りはツールキットのドキュメントから学ぶことができます。読者がトピックに興味を示した場合は、このトピックに関する記事をさらに書くことにします。 それで、あなたのフィードバックと私の記事の続編を書く理由があるという事実に期待します。



UPD。 しばらくの間、Airplay SDKはMarmalade SDKに改名されました。



All Articles