GoodNight

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  4 Posts :: 2 Stories :: 16 Comments :: 0 Trackbacks

常用链接

留言簿(2)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

经过几个月的研究,终于搞定了我的导出插件...谈一点在学习过程中的一些心得与大家分享分享...

还是江湖规矩,先上个图吧...


这张是导出插件的简陋的不能再简陋的界面,哈哈...


这张是渲染器的简陋的不能再简陋的界面....

我使用的是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

posted on 2009-10-04 01:00 G++ 阅读(216) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理