autodesk crosswalk 4.1 sdk collada向け新機能 …autodesk crosswalk 4.1 sdk collada...
TRANSCRIPT
Autodesk Crosswalk 4.1 SDKCOLLADA向け新機能紹介
オートデスク株式会社 梅澤 孝司
アジェンダ
Autodesk Crosswalk とは? Crosswalk の特長をご紹介
Autodesk Crosswalk 4.1 SDK COLLADA 向け新機能Autodesk Crosswalk 4.1 SDK に含まれる COLLADA向けのバージョンアップ内容をご紹介
Autodesk Softimage 2010 と Autodesk Crosswalk を使ったパイプラインのデモツール間コンテンツの共有を行うデモ
Autodesk Crosswalk とは?
Softimage で作成したリアルタイム向けのコンテンツを3Dパイプラインへ入出力する為の製品
無償にてダウンロード可能
http://www.autodesk.com/softimage-crosswalk 最新バージョンは4.1 対応製品
Autodesk 3ds Max Autodesk Maya Autodesk Softimage
対応フォーマット COLLADA (Softimage のみ) dotXSI (3ds Max、Maya、Softimage) FBX (Softimage のみ)
Maya や Max のCOLLADAプラグインは → http://www.opencollada.org/
Autodesk Crosswalk SDKとは?
dotXSI ファイルフォーマットとCOLLADAファイルフォーマットの読み書きを実装するためのカスタマイズ機能を提供
メインになるコンポーネントは2つ I/O レイヤ ファイルパーサによるデータへのアクセスを提供
Semantic Layer I/Oレイヤの上にあり、データへの構造的なセマンティックなアクセスを提供
Autodesk Crosswalk 4.1 SDK COLLADA 向け新機能
旧バージョンではSemantic Layer から だけCOLLADA の読み書きが可能 CSLScene::Write() の呼び出し前のCOLLADA xml データは編集不可能 Write() の呼び出し内で COLLADA xml データが生成されていた
4.0では Crosswalk SDK の Semantic Layer から COLLADA の xml コンテンツの追加や修正が 可能に Write() の呼び出し前に、別のトリガーで COLLADA xml データを生成し、直接テンプレート情報を編集可能に
COLLADA のカスタマイズの流れ
1 – COLLADA xml エレメントの生成を呼び出し: CSLCOLLADAScene::Synchronize()
2 – カスタマイズを実行 – 下記のサンプル参照 dotXSIConverter\src\cnv_COLLADA_IO.cpp
3 – Write() 関数を呼ぶ COLLADA xml エレメントの自動生成フラグをオフにする: CSLCOLLADAScene::Write("file name", false)
COLLADA のカスタマイズの制限
先に紹介したSynchronizeを呼び出してもアクセスしたり編集することができないノードが存在 transforms CustomPropertySet Instance animaiton
しかし、別のコールバックを使ってカスタマイズが可能
transforms → COLLADATransformWriteCallback Custom Property Set → COLLADACustomPropertySetWriteCallback Instance animtation → COLLADAInstanceAnimatioNWriteCallback
Tips : Crosswalk プラグインをコンパイル
下記のようなバッチファイルを使用すると便利
例 2010 SP1 32 ビット用の例
@echo off
call "C:\Softimage\Softimage_2010_SP1\Application\bin\Setenv.bat“ call "C:\Program Files\Autodesk\Crosswalk4.1\SDK\setenv.bat"
set PATH set XSISDK_ROOT="C:\Softimage\Softimage_2010_SP1\XSISDK“ set CROSSWALKSDK_ROOT="C:\Program Files\Autodesk\Crosswalk4.1\SDK"
call "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86
"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\devenv.exe" /useenv
COLLADA カスタマイズ用のSDKの便利な機能
GetRootTemplate() CCOLLADATemplate* CSLCOLLADAScene::GetRootTemplate();
FindNestedTemplateByName CCOLLADATemplate* FindNestedTemplateByName ( CCOLLADATemplate* in_pParent,
SI_Char* in_szName, int in_iNth = 0, bool in_bSearchNodeOnly=false);
FindNestedTemplateByID CCOLLADATemplate* FindNestedTemplateByID ( CdotXSITemplate* in_pParent, SI_Char*
in_szID);
FindNestedTemplateBySID CCOLLADATemplate* FindNestedTemplateBySID ( CdotXSITemplate* in_pParent, SI_Char*
in_szSID);
COLLADA カスタマイズ用のSDKの便利な機能
GetLibrary CSLCOLLADALibrary* CSLCOLLADAScene::GetLibrary( const SI_Char* in_szLibrarySuffix );
ResolveTemplateURL CdotXSITemplate* CXSIParser::ResolveTemplateURL ( const SI_Char* in_szLibrary, const
SI_Char* in_URL );
FindByType CdotXSITemplate * CdotXSITemplates::FindByType( CSIBCString in_name );
CreateCOLLADATemplate CCOLLADATemplate* CreateCOLLADATemplate(CdotXSITemplate* in_pParent = NULL, const
SI_Char* in_szName = NULL);
COLLADA カスタマイズ用のSDKの便利な機能
AddAttribute CdotXSIParam * CCOLLADATemplate::AddAttribute(const SI_Char* in_szName, const SI_Char*
in_szValue);
AddParam CdotXSIParam * CCOLLADATemplate::AddParam(const SI_Char* in_szName, int in_iType, const
SI_Char* in_pStringValue = NULL); CdotXSIParam * CCOLLADATemplate::AddParam(const SI_Char* in_szName, int in_iType,
SI_Float in_fValue); CdotXSIParam * CCOLLADATemplate::AddParam(const SI_Char* in_szName, int in_iType, SI_Int
in_lValue); CdotXSIParam * CCOLLADATemplate::AddParam(const SI_Char* in_szName, int in_iType,
SI_Short in_sValue); CdotXSIParam * CCOLLADATemplate::AddParam(const SI_Char* in_szName, int in_iType,
SI_Bool in_sValue);
AddExtra CCOLLADATemplate* CCOLLADATemplate::AddExtra ( const SI_Char* in_szName );
ありがとうございました。
Thank you