您的位置:首页 > 其它

Ogre中的人眼模型渲染

2011-08-05 11:16 281 查看
今天程序终于调试成功,记录一下实现的过程。

(一)首先就是眼睛模型的提取。完整的头部模型用ply文件表示,用MeshLab读取后,显示顶点数为6292,面片数为12280:



在ply文件中有眼睛顶点和面的参数信息,可以通过一个小程序来单独提取。为了后面顶点变换的方便,我把除眼睛外的顶点用“0 0 0”代替,并将其写入新的ply文件。在我的例子中,眼睛的顶点在5832-6173。

/*
* File:   PlyProcess.cpp
* Author: zhuxiaoyang (cgnerds@gmail.com)
*
* Created on Aug 5th, 2011, AM 11:00
*/
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
// The file name to be converted
string fileName = "C:\\Users\\ZhuXiaoYang\\Desktop\\havokHead2.ply";
ifstream in( fileName.c_str() );
ofstream out( "C:\\Users\\ZhuXiaoYang\\Desktop\\out.ply");
string s;
long long num = 0;
while ( getline(in, s) )
{
num++;
if( (num-13) >= 0 && (num-13) <= 6291 &&
( (num-13)<5832 || (num-13)> 6173) ) // 21635 22548
{
s = "0 0 0";
}
out<<s<<"\n";                 // Save to the output file
}
cout<<"Converting sucess!"<<endl;
system("pause");
return 0;
}
(二)此时,用Meshlab打开文件,会显示两个眼睛,顶点数和面片数没有变化,将其转换为Maya能够读取的obj格式,并用MeshLab打开。转换时保留Normal选项,取消TexCoord选项。保留Normal是为了Maya读取时模型能够比较平滑,取消TexCoord是因为在Ogre渲染时,我们会重新赋材质,不需要纹理。此时,显示如下:



可以看到顶点数依然为6292,面片数为616。转换过程中MeshLab已经做了优化处理,把没有意义的面去掉了。

(三)用Maya打开该文件,并用插件将其导出为OGRE所需的mesh格式。导出时,只需要勾选Mesh标签下的Export mesh,Use shared geometry和Include vertex normals这三个选项,然后就可以渲染了。渲染时,注意给眼睛模型赋予动态环境映射的贴图,OGRE有相应的例子,我这里就不赘述了。渲染效果如下:



注意眼睛的变化,是不是生动多了,呵呵。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: