虚拟现实与仿真技术-实验报告樊娇 2013211625
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
合肥工业大学
计算机与信息学院
实验报告
课程:虚拟现实与仿真技术
专业班级:计算机科学与技术13-1班
学号:2013211625
姓名:樊娇
实验一
一.实验名称
从3Dmax8中导出mesh并添加mesh到场景
二.实验过程或实验程序(增加的代码及代码注解)
根据实验指导书步骤将导出的文件添加进文件夹再更改相应的文件内容;
添加代码如下:
ent1 = m_pSceneManager->createEntity("Sphere","Box01.mesh");//获取实体对象,第一个参数是实体的名字,第二个参数是要导入的mesh文件
node1 = m_pSceneManager->getRootSceneNode()->createChildSceneNode();//创建节点
node1->translate(Vector3(-50,-10,-10));//设置实体的位置
node1->attachObject(ent1);//将实体附在场景上
ent1->setMaterialName("01_-_Default");//设置实体材质
上述代码所做更改有:
导入的mesh文件名、实体位置、实体材质以及将cbj.material中ambient 0 0 0 1处改为ambient 1 1 1 1
三.实验结果(包括必要的截图)
添加结果:
四.实验体会
通过此次试验,不但初步了解了3dmax模型的创建过程,我还知道了对模型的导出,以及如何添加到ogre模型库中有了一定了解,并能通过看代码,自
己添加实体模型到场景中,更改模型的位置等。另外,我对orge也有了一定的了解,知道了在VS里面配置库目录,能够把场景转到orge里面展示。为后续实验打下坚实的基础,有利于后续实验开展。这只是实验的开始,我希望随着后面的学习能够对其有进一步的掌握。
实验二
一.实验名称
键盘输入控制摄像机的移动
二.实验过程或实验程序(增加的代码及代码注解)
1添加按键消息响应
2在OnKeyDown()消息响应函数中,添加按键控制
Vector3 trans = Vector3::ZERO;
switch(nChar){
case'A'://实现按下a键向左移动
trans.x -=10;
m_pCamera->moveRelative(trans);
break;
case'D'://实现按下d键向右移动
trans.x +=10;
m_pCamera->moveRelative(trans);
break;
case'G':
trans.y -=10;
m_pCamera->moveRelative(trans);//向下移动
break;
case'T':
trans.y +=10;
m_pCamera->moveRelative(trans);//向上移动
case'W':
trans.z -=10;
m_pCamera->moveRelative(trans);//向前移动
break;
case'S':
trans.z +=10;
m_pCamera->moveRelative(trans);//向后移动
break;
}
三.实验结果(包括必要的截图)按下A键:
按下D键:
按下G键:
按下T键:
按下W键:
按下S键:
四.实验体会
本次实验主要是通过修改实验代码改变摄像机的视角,使之可以左右、前后、上下移动。实验前要对代码结构有个整体的了解,其次需要对其坐标的情况掌握,掌握一定基础然后才能修改代码。此次实验对于该实验项目有了更深层次的了解对于后续实验起到了良好的铺垫作用,通过此次实验我对ogre以及其下的编程有了更进一步的把握,对于该项目下的代码结构也有了初步的了解将会为后面的
实验打好基础。
实验三
一.实验名称
添加动画
二.实验过程或实验程序(增加的代码及代码注解)
void CMFCOgre1View::CreateAnimation(Ogre::String MyAnimation)
{
//判断动画是否存在,如果动画存在,删除已有的动画
if (m_pSceneManager->hasAnimation(MyAnimation))
{
m_pSceneManager->destroyAnimation(MyAnimation);
}
//使用sceneManager来创建一个animation,同时指定动画的名字和帧的长度Animation *myTest = m_pSceneManager->createAnimation(
MyAnimation,Real(8));
//设置该段动画的关键帧间帧的插值方式,这里使用线性
myTest->setInterpolationMode(Animation::IM_SPLINE);
//使用animation创建为每个要驱动的node创建一个track,比如这里我们只想让一个结点(node,比如它上面挂着摄像机)运动,就只为他创建一个track就行了,第一个参数是这个track的编号
NodeAnimationTrack *myTrack = myTest->createNodeTrack(0,node1);
//对于每个track创建它的每个关键帧/*
TransformKeyFrame *myKeyFrame = NULL;
//设置该帧的时间点
myKeyFrame = myTrack->createNodeKeyFrame(0);
//设置该帧处这个结点的位置和其他几何状态
myKeyFrame->setTranslate(Vector3(-20,0,30));
myKeyFrame = myTrack->createNodeKeyFrame(1);
myKeyFrame->setTranslate(Vector3(-16,4,40));
myKeyFrame = myTrack->createNodeKeyFrame(2);
myKeyFrame->setTranslate(Vector3(-12,8,50));
myKeyFrame = myTrack->createNodeKeyFrame(3);
myKeyFrame->setTranslate(Vector3(-8,12,60));
myKeyFrame = myTrack->createNodeKeyFrame(4);
myKeyFrame->setTranslate(Vector3(-4,16,60));