經(jīng)過(guò)幾個(gè)月的研究,終于搞定了我的導(dǎo)出插件...談一點(diǎn)在學(xué)習(xí)過(guò)程中的一些心得與大家分享分享...
還是江湖規(guī)矩,先上個(gè)圖吧...

這張是導(dǎo)出插件的簡(jiǎn)陋的不能再簡(jiǎn)陋的界面,哈哈...

這張是渲染器的簡(jiǎn)陋的不能再簡(jiǎn)陋的界面....
我使用的是D3D的SHADER渲染
其實(shí)導(dǎo)出插件的資料說(shuō)多不多,說(shuō)少也不少...
個(gè)人強(qiáng)烈推薦的看的資料是潘李亮的那篇文章,(做導(dǎo)出插件的話這篇文章必看!!!!不懂就多看幾遍!!!)以及他的開(kāi)源的導(dǎo)出插件的代碼(代碼口味比較重...)
還有OGRE1.6源代碼里有個(gè)導(dǎo)出插件的代碼,是基于IGAME的,其實(shí)也有一定的參考價(jià)值...
還有DXSDK2007FEB版本里有個(gè)源代碼,也是基于IGAME的...
我的EXPORT沒(méi)有用到IGAME,其實(shí)原理都差不多,GOOGLE一下還是有一些東西可以看一下的...
說(shuō)幾個(gè)我遇到的問(wèn)題:
1. 3DMAX中的面分頂點(diǎn)幾何數(shù)據(jù)面還有紋理數(shù)據(jù)面...face和tface,在遍歷整個(gè)mesh求頂點(diǎn)索引的時(shí)候,可以使用一個(gè)MAP表把幾何頂點(diǎn)和紋理頂點(diǎn)進(jìn)行關(guān)聯(lián)...
2. 3DMAX中面得索引和D3D中的頂點(diǎn)索引的順序是相反的...
3. 其實(shí)我花的時(shí)間比較多的都是再渲染器上,如果你是用的頂點(diǎn)索引混合的方式來(lái)導(dǎo)出的話,一定要記得檢查一下設(shè)備是否支持,當(dāng)然用SHADER的話就另當(dāng)別論了...
4. 3DMAX中的坐標(biāo)必須要進(jìn)行轉(zhuǎn)換
//把Matrix3轉(zhuǎn)換為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;
}
本來(lái)想說(shuō)的東西還是有很多...只不過(guò)這會(huì)兒想不起來(lái)了...
如果說(shuō)有朋友在做導(dǎo)出插件的話可以和我交流...
QQ: 147449184