Ogre中的人眼模型渲染

今天程序终于调试成功,记录一下实现的过程。

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

Ogre中的人眼模型渲染_第1张图片

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

/*
 * File:   PlyProcess.cpp
 * Author: zhuxiaoyang ([email protected])
 *
 * 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渲染时,我们会重新赋材质,不需要纹理。此时,显示如下:

Ogre中的人眼模型渲染_第2张图片

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

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

Ogre中的人眼模型渲染_第3张图片

注意眼睛的变化,是不是生动多了,呵呵。。。


你可能感兴趣的:(c,优化,String,File,include,output)