經過幾個月的研究,終于搞定了我的導出插件...談一點在學習過程中的一些心得與大家分享分享...
還是江湖規矩,先上個圖吧...

這張是導出插件的簡陋的不能再簡陋的界面,哈哈...

這張是渲染器的簡陋的不能再簡陋的界面....
我使用的是D3D的SHADER渲染
其實導出插件的資料說多不多,說少也不少...
個人強烈推薦的看的資料是潘李亮的那篇文章,(做導出插件的話這篇文章必看!!!!不懂就多看幾遍!!!)以及他的開源的導出插件的代碼(代碼口味比較重...)
還有OGRE1.6源代碼里有個導出插件的代碼,是基于IGAME的,其實也有一定的參考價值...
還有DXSDK2007FEB版本里有個源代碼,也是基于IGAME的...
我的EXPORT沒有用到IGAME,其實原理都差不多,GOOGLE一下還是有一些東西可以看一下的...
說幾個我遇到的問題:
1. 3DMAX中的面分頂點幾何數據面還有紋理數據面...face和tface,在遍歷整個mesh求頂點索引的時候,可以使用一個MAP表把幾何頂點和紋理頂點進行關聯...
2. 3DMAX中面得索引和D3D中的頂點索引的順序是相反的...
3. 其實我花的時間比較多的都是再渲染器上,如果你是用的頂點索引混合的方式來導出的話,一定要記得檢查一下設備是否支持,當然用SHADER的話就另當別論了...
4. 3DMAX中的坐標必須要進行轉換
//把Matrix3轉換為Matrix4
void FunkTreeEnum::Matrix3_To_Matrix4(Matrix3& Mat3,Matrix4& Mat4)
{
Mat4._11 = Mat3.GetRow(0).x;
Mat4._12 = Mat3.GetRow(0).z;
Mat4._13 = Mat3.GetRow(0).y;
Mat4._14 = 0.0f;
Mat4._21 = Mat3.GetRow(2).x;
Mat4._22 = Mat3.GetRow(2).z;
Mat4._23 = Mat3.GetRow(2).y;
Mat4._24 = 0.0f;
Mat4._31 = Mat3.GetRow(1).x;
Mat4._32 = Mat3.GetRow(1).z;
Mat4._33 = Mat3.GetRow(1).y;
Mat4._34 = 0.0f;
Mat4._41 = Mat3.GetRow(3).x;
Mat4._42 = Mat3.GetRow(3).z;
Mat4._43 = Mat3.GetRow(3).y;
Mat4._44 = 1.0f;
}
本來想說的東西還是有很多...只不過這會兒想不起來了...
如果說有朋友在做導出插件的話可以和我交流...
QQ: 147449184